Для создания системы статистики в игре можно следовать таким рекомендациям:
Реализовать тип статистики и тип модификатора. 1 Статистическое значение имеет базовое значение и текущее значение. 1 Базовое значение нужно задавать при создании статистики, а к ней можно добавлять и удалять модификаторы, а также получать уже применённые к ней модификаторы. 1 Текущее значение — это базовое значение, изменённое применёнными модификаторами. 1
Использовать скриптовый объект как контейнер для статистики. 3 Это позволит отделить данные от логики, которая их использует. 3 Кроме того, каждый контейнер статистики — это ресурс, к которому может иметь доступ любой объект, если ему нужен доступ к статистике. 3
Хранить статистику в словаре. 3 Для ключа нужно использовать перечисление, а для значения — значение статистики. 3 Чтобы получить доступ к определённой статистике, достаточно одной публичной функции, которая принимает тип статистики и возвращает значение. 3
Сохранять статистику в базу данных Steam. 4 При запуске игры нужно вытащить все связанные достижения и статистику с серверов Steam для локального пользователя. 4 Для этого следует вызвать функцию ISteamUserStats::RequestCurrentStats, а когда данные будут готовы — обратный вызов ISteamUserStats::UserStatsReceived_t. 2 Затем нужно использовать функции ISteamUserStats::GetStat и ISteamUserStats::GetAchievement для итерации данных и инициализации состояния игры. 2
Выбор метода зависит от конкретной платформы разработки игры.