Часть 1: Лебедь - идеальный мир геймдева
Часть 2: Рак: когда вместо рук клешни
Большинство из нас привыкли видеть игровой мир с его радостями и разочарованиями со стороны пользователя. Нас раздражают багоюзеры, игровые ошибки и нерасторопность разрабов. Попробуем взглянуть другими глазами на багоюз, читерство и прочие непотребства. Как разработчики справляются с нечестными игроками и бесконечными попытками «сломать систему»?
Прежде всего, тут важно понять, что борьба с нарушителями начинается на самом старте разработки, когда программисты продумывают общую организацию системы. Если на этом этапе «дыры» остаются большими, то заделывать их придется постоянно. Разработчики, как правило, преследуют главную цель: оставить как можно меньше данных в клиенте. Но все не так просто – если на каждый чих клиенту придется запрашивать информацию у сервера – будет уходить очень много времени на обработку запросов, и игра будет тормозить.
Так почему же игроки поголовно не ботоводят, не дюпают шмотки и золото в огромных количествах и ежечасно не подменяют пакеты?
С простыми багоюзерами все очень просто – гейм-мастера банят незадачливых геймеров, а разрабы в срочном порядке разбираются, где ошибка и следующим хотфиксом ее исправляют.
Ярким пример такой реакции – баг с ларцами в «Аллодах онлайн», просуществовавший всего-ничего, до следующего хотфикса (ларцы открывали, находясь в инстансе, а после выхода персонажа из пождземелья, предметы снова оказывались закрытыми в сумке + с игрокам оставалось то, что выпало из ларца). Естественно все надюпаное отняли, ни одного хомячка не пострадало.
Более сложную работу проделывает команда разработчиков, когда вступает в борьбу с ботами, читами и прочими небогоугодными делами.Тут, конечно, есть несколько этапов защиты. Во-первых, еще на стадии разработки игры программисты стараются создать такую систему, где в клиенте остается минимум инфы об аватарах и игровом окружении. Как раз самое время вспомнить про цитату знакомую нам из предыдущей статьи: "Первое и главное правило разработки сервера: клиент в руках."
Во-вторых, существуют специальные программы, встроенные в клиент игры, которые отслеживают процессы, запущенные на игровом компьютере. Blizzard, например, используют систему Warden, которая непрерывно анализирует фоновые программы игрока; а чит-аналитики уже принимают решение о бане, если какой-то процесс нечестно взаимодействует с игрой. Кроме того, существует защита, которая блокирует запуск игры или выбрасывает из нее, если античит система находит в списке запущенных программ кликеры и прочее ПО, запрещенное лицензионным соглашением. Одни из самых известных примеров: X-Trap, выкидывающий из игры по самым странным поводам, например, запущенный антивирус; такая же гадская StarForce. Однако лучше всего научить сам клиент детектить запрещенное ПО.
В-третьих, все современные игры устроены так, что «общение» между клиентом и сервером кодируется в несколько потоков. Кроме того, «ключ» для дешифовки данных генерируется каждый раз новый. Кроме того, клиент не посылает конечных данных о содержимом сумки. Он передает серверу информацию только о действиях, все расчеты производит сервер и сам отправляет новые параметры клиенту, который просто отображает произошедшие изменения. Плюс все эти данные закодированы. Помните историю про почтового голубя? А теперь представьте, что вместо записки он везет сейф на кодовом замке, внутри которого лежит зашифрованное послание. А дешифровщик прилетит только со вторым голубем. Вот примерно так работает система передачи данных. Очевидно, что подмена пакетов как таковая почти неосуществимая затея, и дюп, в большинстве случаев, существует как игровая ошибка, которую разрабы просто исправляют одним из хотфиксов.
__________________________________________________________________________
Получается, разработчики и пользователи с одной стороны очень нужны друг другу, а с другой – стоят по разные стороны баррикад. Разумное взаимодействие двух сторон может пойти только на пользу любимым играм. И только на вопрос: "Как объяснить это рядовому геймеру, который больше всего на свете хочет выиграть у всех?" - я не смог найти ответа.
__________________________________________________________________________

Fusroda Есть такие геймеры, которые от использования багоюза и стороннего ПО только и получают удовольствие от игры. Их надо просто отделять от остальных.
Fusroda Не поможет, я думаю. Если только сажать в реале.) А так проще отделить и пусть себе резвятся. Сделать какую-нибудь технологию, которая их незаметно отделяет от нормальных игроков. Они же не для того этим пользуются, чтоб нормальных игроков доставать, им просто нравится играть с ПО и багами, вот пусть и играют сколько влезет, тогда может и надоест, когда рядом все такие будут.