Многие игры, созданные в наши дни, имеют собственную систему достижений, которая поощряет игроков / пользователей за выполнение определенных задач. Система бейджей здесь в stackoverflow точно такая же.
Хотя есть некоторые проблемы, для которых я не мог найти хорошие решения.
Системы достижений должны постоянно следить за определенными событиями, придумать игру, которая предлагает от 20 до 30 достижений, например, для боя. Сервер должен будет проверить эти события (например: игрок избегал x атак противника в этом сражении или игрок прошел x миль) все время .
- Как сервер может обрабатывать такое большое количество операций без замедления и, возможно, даже сбоев?
Системы достижений обычно нуждаются в данных, которые используются только в основном движке игры, и в любом случае они не понадобятся, если бы не было этих неприятных достижений (подумайте, например, как часто игрок прыгал во время каждого боя , вы не хотите хранить всю эту информацию в базе данных.). Я имею в виду, что в некоторых случаях единственным способом добавления достижения является добавление кода, который проверяет его текущее состояние, в ядро игры, и это обычно очень плохая идея.
Как системы достижений взаимодействуют с ядром игры, в котором содержится ненужная информация? (см. примеры выше)
Как они отделены от ядра игры?
Мои примеры могут показаться "безвредными", но подумайте о 1000+ достижениях, доступных в настоящее время в World of Warcraft и о многих, многих игроках онлайн одновременно, например.