Поскольку уже существующие люди добавили хорошие ответы, позвольте мне ответить на непокрытые ситуации.
Если вы вообще находитесь в положении, когда вы завершили кодирование своей игры и теперь начинаете кодировать достижения и обнаруживаете, что очень сложно поддерживать слишком много переменных и счетчиков и очищать их при определенных событиях и тому подобном.
Вы всегда можете создать один класс (предпочтительно синглтон) для получения всех событий. Теперь перечислите все ваши достижения. Затем перечислите все игровые события, которые необходимо отслеживать. Например, мой текущий список выглядит так
KILL ENEMY - ходьба, пули, смерть игрока - падение, здоровье, ENTER_ROOM, EXIT_ROOM и т. Д.
Эти дополнительные детали, такие как ходьба, пули, могут быть параметрами. Теперь есть одна функция с именем fireEvent в этом классе отслеживания достижений. Поиск всех мест в коде, где вам нужно fireEvents и вызвать эту функцию. Теперь сделайте всю грязную работу в классе достижений. Это самый безопасный способ не нарушать существующий код и его достижения. Это сработало довольно быстро для меня.