Многие игры, созданные в наши дни, имеют собственную систему достижений, которая вознаграждает игроков/пользователей за выполнение определенных задач. Система значков здесь в stackoverflow точно такая же.Реализация систем достижений в современных сложных играх
Есть некоторые проблемы, хотя я не мог найти правильные решения.
Достижения системы должны постоянно следить за определенными событиями, подумать о игре, которая предлагает от 20 до 30 достижений, например, в битве. Серверу пришлось бы проверять эти события (например: игрока избегали x нападений противника в этой битве или игрок шел x миль) все время.
- Как сервер может обрабатывать это большое количество операций без замедления и, возможно, даже сбой?
Системы достижений обычно нуждаются в данных, которые используются только в основном движке игры, и в любом случае от них не потребуется, если бы не были эти неприятные достижения (подумайте, например: как часто игрок прыгал во время каждого боя вы не хотите хранить всю эту информацию в базе данных.). Я имею в виду, что в некоторых случаях единственным способом добавления достижения было бы добавление кода, который проверяет его текущее состояние на ядро игры, и это обычно очень плохая идея.
Как системы достижений взаимодействуют с ядром игры, которая содержит более позднюю ненужную информацию? (см. примеры выше)
Как они отделены от ядра игры?
Мои примеры могут показаться «безвредные», но думать о достижениях 1000 + в настоящее время в Мир Warcraft и много, много игроков онлайн в то же время, к примеру.
Это очень хороший вопрос и быть геймером, о чем я думал об этом с тех пор, как я получил приличное программирование.Я знал, что события определенно связаны с этим, но я все еще удивляюсь об одном: есть старые игры, которые не были построены с достижениями в уме, и я полагаю, что они не излучают эти события. Тем не менее, эти игры иногда получают достижения, когда они переиздаются на таких платформах, как Steam. Означает ли это, что Valve сделал некоторые изменения в ядре? – MarioDS
Я уверен, что вы ищете: [Как создать гибкую структуру для обработки достижений?] (Http://gamedev.stackexchange.com/questions/908/how-can-i-set- до-а-гибкому-каркасный для-разгрузочных-достижений). Эти ребята предлагают очень хорошие решения. –