Kitabı oxu: «Математическое руководство по созданию компьютерных игр. Справочник»
© Алексей Патрашов, 2016
ISBN 978-5-4483-2283-9
Создано в интеллектуальной издательской системе Ridero
3-я редакция, переработанная и дополненная
Разработчик:
Алексей Сергеевич Патрашов, дипломированный бакалавр технических наук, дипломированный магистр технических наук, кандидат технических наук.
Рецензент:
Кирилл Викторович Орлов, дипломированный кандидат технических наук.
С использованием материалов:
«Искусство программирования» ― 3-е издание, Дональд Кнут. Вильямс, 2007.
«Алгоритмы: построение и анализ» ― 2-е издание. Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн. Вильямс, 2005.
«Как стать создателем компьютерных игр. Краткое руководство» ― В. В. Касихин. Вильямс, 2006.
«Компьютерные игры. Мимо вечности в забвение.» ― А. С. Патрашов. 2009.
«О, рандом! Или мракобесию от программирования посвящается.» ― А. С. Патрашов. 2010.
«USB-flash или маленький конец большого пиратства» ― А. С. Патрашов. 2010.
«Последний день пирата, или интернета, интернета…» ― А. С. Патрашов. 2010.
«Создание концепт-документа игры» ― С. Валиуллин. 2009.
«The art of game design. A book of lenses» ― Jesse Shell. Carnegie Mellon University, 2008.
Если хочешь что-то сделать ― лучше сделать это самому.
Народная мудрость
Не доверяй павиану.
Африканская народная мудрость
Лучший способ в чём-то разобраться до конца ― это попробовать научить этому компьютер.
Дональд Кнут
Математику уже за то любить следует, что она ум в порядок приводит.
М. В. Ломоносов
Математические формулы не могут «принадлежать» кому-либо! Математика принадлежит Богу.
Дональд Кнут
Компьютерная игра это ожившая математика.
Примечание автора
Предисловие
На сочинение данного руководства меня подвигла унылая тоска в области компьютерных игр, царящая последнее время, похоже, во всех жанрах. Старые игры, безусловно, радуют, но ни толкового продолжения, ни хотя бы работы над ошибками я пока что не увидел и при нынешнем положении в игростроении не увижу ещё долго. Делается всё, что угодно, кроме того, что в каждом конкретном случае нужно. Вместо грамотных ремейков делаются безграмотные продолжения и новоделки, вместо разнообразия производится клонирование, вместо продолжений изготавливают независимые вариации, вместо оригинальных инноваций создают убогие компиляции, а после успешных релизов пытаются продать совершенно провальные продолжения или сиквелы.
Если вы решили изготовить хотя бы приличную, не говоря уже про культовую, компьютерную игру, то данное руководство должно вам помочь. Среди многочисленных провалов разработчиков игр подавляющее большинство произошли ещё на этапе разработки. Разработчик только предполагает, что будет происходить в игре, а игроки располагают и бесполезно потом говорить, что планировалось нечто совершенно иное, что игровой процесс должен был идти совсем не так, как пошел на самом деле и объяснять почему он зашел совершенно не туда.
По дизайну компьютерных игр написаны целые шкафы книг, так что сам дизайн я затронул только косвенно. Основные гибельные явления происходят не в определённой области работы, а на стыке разных областей. Дизайнер не обязан разбираться и не всегда разбирается в программировании, а художник не обязан разбираться в звуке или скриптах. Проблема заключается в том, что задачи из одной области любят переползать в другую во-первых и не всегда нужный специалист присутствует в нужном месте в нужное время во-вторых. В итоге начинается решение дифференциальных уравнений гуманитарным способом или сочинение диалогов на языке программирования высокого уровня, а в тяжёлых случаях всё сразу и одновременно.
Представленное руководство посвящено большей частью решению возникающих при разработке компьютерных игр математических задач и математическим способам решения некоторых задач из области игрового дизайна. Это позволит применять технический подход к гуманитарной области при отсутствии соответствующих гуманитарных способностей и компенсировать этот недостаток с минимальным ущербом для работы.
Есть такое утверждение, что кашу маслом не испортишь. Хорошую игру тоже испортить сложно ― надо сильно постараться. Но одно дело портить, а другое ― улучшать. И на почве очередной попытки улучшения часто происходит такое, чего ни один вредитель при всём своём желании, при всём своём воображении и всей своей квалификации не смог бы достигнуть. А чтобы разработка не превратилась в откровенное вредительство надо сначала разобраться в предстоящей работе и начать это делать лучше всего с изучения взаимодействия игрового мира с рыночным.
Я составил это руководство из разнообразных статей в разное время и по разным поводам написанных. Для лучшей читаемости я добавил некоторые связки между статьями, чтобы достигнуть некоторой связанности для превращения сборника статей в некое руководство. Полностью изготовить компьютерную игру по этому руководству не получится, но его можно использовать как справочник. Предназначен этот справочник для желающих либо не вникая в математические подробности решать задачи по математике, либо для не желающих менять подход к решению задач с математического на какой-либо ещё. Соответственно не следует рассматривать его как догму и собрание непреложных истин, которых нет и, скорее всего, не будет.
Хоть данное руководство и не претендует на полноту, но в конце приведены примеры его использования для создания компьютерных игр и решения некоторых связанных с этим задач. После разработки по этому руководству можно спокойно продолжить разрабатывать игру по любым другим или наоборот. Также ничего не мешает использовать несколько руководств или учебников одновременно. На этом переходим к изучению изготовления компьютерных игр.
Вступление
Приступая к изготовлению компьютерной игры надо в первую очередь помнить, что вы производите её не для себя, а для потребителя, так что в первую очередь надо учитывать мнения покупателей, то есть игроков, а не своё собственное. Это не значит, что надо отказаться от своего мнения вообще или слушать рассуждения каждого неграмотного пользователя, не отличающего мышь от клавиатуры, но каждое своё действие надо уметь обосновывать так, чтобы у игроков не оставалось сомнений в правильности выбора изготовителя.
Естественно, не может не возникнуть вопрос о качестве игры и что под этим понимать. Какую игру можно считать качественной, а какую нет? Можно ли определить качество игры ещё до начала её продаж? Что больше влияет на качество игры и какую игру можно назвать хорошей и качественной? Нравится или не нравится, но единственной оценкой после выхода игры будет общий доход с её продаж, учитывая украденное пиратами. В игре будет оценивается качество исполнения, графика, художественная составляющая, драматургия, интерфейс и его удобство, механика, баланс, звук, литературная ценность текста и можно найти ещё много чего. И на каждый из этих аргументов у потребителей будет своя реакция, а на основе множества реакций надо получить одну.
И снова приходится признать, что только деньги позволяют произвести оценку на основании функции потребления с множеством аргументов потому, что являются значением функции спроса, аргументом которой является функция оценки от вышеназванного множества аргументов. Деньги объединяют множество субъективных и объективных оценок в единую цифру статистики дохода от продаж игры и позволяют понять, что игра получилась успешной или провальной.
Можно считать верным утверждение, что какова бы ни была игра, всегда найдутся те, кому она очень понравится, и те, кому она очень не понравится. Разница будет только в количестве. Это очень старинное и близкое к абсолютно верному наблюдение. Сразу же вспоминается другое высказывание, что всё есть яд и всё есть лекарство, а разница только в количестве. Так вот, на рынке именно количество проданных копий вместе с ценой определяет доход от продаж и если это количество можно пересчитать по пальцам, то провал обеспечен. Так что делать абы что в надежде, что хоть кто-нибудь да купит, экономически невыгодно.
Но всё это относится к оценке уже сделанного и проданного, а что же делать, если игра ещё только разрабатывается? А делать то же самое, но вместо полученных доходов учитывать предполагаемые. Проводить опросы, делать анонсы и собирать отзывы пока не появится достаточной ясности в том, чего же хотят в основной игровой аудитории от новой игры и за что готовы заплатить хоть и небольшие, но деньги. Тут даже не надо лишний раз напоминать о пользе демонстрационных материалов и раздаче на растерзание кратких демоверсий.
Можно, конечно, идти по пути реставрации и модернизации и обновлять уже имеющуюся игру в соответствии с техническими достижениями времени. Этот путь приносит не ошеломительный, хотя бывают и нередкие исключения, но достаточно прочный успех и заслуженно пользуется популярностью и спросом у игроков, но не у производителей, точнее не у всех производителей. Опасения, что второй раз перечитывать книгу только потому, что у неё обложка покрасивее и бумага побелее, никто не будет, перевешивают у производителей ожидания спроса. Правда в другой отрасли издатели то и дело книги хоть столетней давности переиздают и пока на отсутствие доходов не жалуются ― есть чему поучиться.
Вообще, понятия устаревших игр не существует. Если игра сделана правильно и не на один день, то устаревает она только для тех, кто в неё уже играл и наигрался. Через пять, в крайнем случае десять, лет вырастет новое поколение игроков, которые будут воспринимать её как новую. То, что новое это хорошо забытое старое, подходит и к компьютерным играм. Heroes of Might and Magic II не уходят с мониторов уже пятнадцать лет и не уйдут ещё не одно десятилетие.
Некоторые игры создают такое впечатление, что игроки будут их проходить под строгим надзором только неизвестно кого. Выполнить надо сначала это, а только потом вот это, а поставить препятствие против того, чтобы сделать наоборот, ни у кого руки не дошли. Или в игре не удосужились подумать над всеми вариантами прохождения, рассчитывая, что когда о них все узнают, игра будет уже пройдена и дело с концом. А ещё к игре мысленно приложено авторами руководство, что в игре можно делать, а что нельзя и почему. Вот как-то так.
Одной из широко распространённых ошибок в разработке игр является сокрытие всевозможных недоработок. Начинающие игроки про дырки в игровом сценарии ещё не знают, а окончательное мнение об игре создаётся как раз после долгой игры в неё, то есть после обнаружения всех скрытых недостатков. И хотя сначала игра была любима и пользовалась успехом, но после окончания игрового периода о ней сложится такое мнение, что больше ни одной игры у этого производителя уже долго никто не купит.
Если отвлечься от вариационного исчисления и принципа Лагранжа, то игровой процесс всегда идёт по пути наименьшего сопротивления. Начиная играть каждый игрок ставит перед собой определённую задачу и всё остальное он делает уже для выполнения этой задачи, а очень часто способ её выполнения сильно отличается от предполагаемого. А что мы часто получаем в итоге?
Игра, рассчитанная и заявленная на сто часов игрового процесса, проходится за три дня часов за десять, а повторять совсем не хочется. После достижения какого-то уровня играть или невозможно, или слишком просто, несмотря на установленный в предельное положение регулятор уровня сложности. Нужно долго и упорно ждать, пока выпадет единственная для успешного прохождения вещь, без которой дальше в игре делать уже нечего. Из всего представленного в игре многообразия брони, оружия и много чего ещё можно пользоваться только каждой десятой вещью, причём из числа вещей, предназначенных именно для данного класса игрового персонажа. И продолжать перечисление причин провала можно очень долго.
Работа над сделанными предшественниками ошибками при создании аналогичных игр неизбежна и необходима, а теперь от перечисления того, как не надо делать, переходим к тому, как надо делать. Обычно от просчётов разработчиков страдают RPG, но элементы RPG присутствуют и в тактических и в стратегических играх, принося в них те же беды. Так что за образец для работы мы возьмём RPG. Это не значит, что всё изложенное применимо только к RPG, но просто с RPG легче работать потому, что в них ярче выражены всевозможные просчёты и ошибки.
Порядок разработки новой игры или ни шагу без бумаги
Кто бы и что бы ни говорил, но компьютерная игра это в первую очередь программа и разработка программы это проект, а на разработку проектов уже давно придумали почти всё, что только можно. Если бы мы разрабатывали конструкторскую документацию, то нам бы понадобился ГОСТ 2.103—68 на стадии разработки проекта, но этот же ГОСТ подойдёт нам и для разработки проекта программы. Правда есть ещё ГОСТ 19.102—77, который предназначен уже непосредственно для разработки программ, но он только для программ и предназначен, а у нас будет ещё предостаточно задач кроме программирования. Итак, что нам предписывают в помощь.
Этап первый: замысел игры. Или техническое предложение по ГОСТу. На этом этапе описывается замысел игры, её основные черты, время и место действия, действующие лица и прочие ключевые положения, которые лягут в основу следующего этапа. Правильно изложенный замысел игры занимает не больше одной страницы или 4000 знаков. Если замысел не укладывается в этот объём, то либо он неправильно изложен, либо это уже не замысел, либо удалось придумать что-то выдающееся, что бывает крайне редко и обычно не встречается.
На этапе замысла игры над проектом работают приблизительно от одного до десяти человек в течении примерно до десяти дней. В работающей над замыслом игры группе могут или должны присутствовать сценарист, дизайнер, художник, программист, писатель, специалист по звуку, моделист, аниматор, маркетолог, руководитель проекта и экономист. Этот состав может меняться в зависимости от размеров и сложности запланированной игры или при необходимости возможно совмещение нескольких обязанностей или специальностей. Обычно трудозатраты на замысел игры укладываются в промежуток от 1 до 100 человекодней. Завершенный замысел игры представляет собой примерно страницу печатного текста без рисунков с достаточно полным для общего представления об игре описанием. По виду замысел игры напоминает её краткое описание на упаковке. Если подобный результат не получен, то этап надо повторять до тех пор пока не получится.
Этап второй: содержание игры. Или эскизный проект. На этом этапе описывается игровая и художественная части проекта. Определяется кто и чем будет заниматься из игровых персонажей, будет ли меняться игровой мир и так далее. Разрабатывается графический интерфейс игры. Определяются списки характеристик персонажей и мобов. Задаются размеры игрового пространства и способ передвижения. Устанавливается тип и класс будущей игры.
Независимо от количества участников предыдущего этапа на этапе содержания игры над проектом работают всё так же от одного до десяти человек, но уже в течение от 10 до 100 дней. Состав рабочей группы может быть и тот же, что и во время работы над этапом замысла игры. Трудозатраты на содержание игры находятся уже в пределах от 10 до 1000 человекодней. После того, как определены все свойства игроков, род их занятий и выбрано взаимодействие пользователя с окружением, а также состав окружения, можно переходить к следующему этапу.
Этап третий: дизайн игры. Или технический проект. На этом этапе составляется подробный перечень всего, что будет находиться в игре и рассчитывается вся механика взаимодействия. Рисуются планы, схемы, пишутся диалоги, рассчитывается баланс, распределяются роли действующих героев и просчитывается весь игровой сценарий. Предварительно прорисовываются эскизы, текстуры, ландшафты, модели, оружие, броня, одежда, растения и животные, мобы, окружающие предметы мебели, строения, транспортные средства и прочее, а также пишутся диалоги.
Технически это самый сложный этап в разработке игры. Количество участников возрастает и становится приблизительно от 10 до 100, но работа над дизайном ведётся столько же, сколько и над содержанием. Состав работников проекта расширяется и некоторые специальности требуют несколько исполнителей. Участники предыдущих этапов могут войти в этот этап уже руководителями направлений разработки. назначение их руководителями целесообразно с точки зрения лучшего понимания поставленной задачи, а также их более длительного участия. Трудозатраты на дизайн игры составляют уже от 100 до 10000 человекодней. После того, как дизайн игры будет готов, можно переходить уже к непосредственно изготовлению игры.
Этап четвёртый: изготовление игры. Или рабочий проект. На этом этапе начинается изготовление рабочих моделей и программирование. Каждое действие выполняется в соответствии с дизайном игры. Это один из самых трудных и самых длительных этапов разработки, он включает уже не столько творческую, сколько механическую работу. В конце этапа изготовления должна получиться готовая для тестирования игра.
Практически специалисты из предыдущих этапов не задействованы в последнем этапе, но на этапе изготовления количество исполнителей возрастает и становится от 100 до 1000. Для мелких проектов это количество может быть значительно меньше и доходить до нескольких или вообще одного человека. Также возрастает и продолжительность этапа и становится уже от 100 до 1000 дней. И опять же следует заметить, что для мелких проектов это время может сокращаться до нескольких дней или часов. Таким образом трудоёмкость изготовления игры становится от 10000 до 1000000 человекодней и является самой дорогой частью производства игры.
Переход к следующему этапу должен осуществляется только после окончательного завершения рабочего этапа. Если нарушить это правило, то работа над игрой превратится в непрерывное переделывание недоделанного проекта. Трудоёмкость по мере перехода между этапами стремительно возрастает и прошедшая в следующий этап ошибка будет обходиться по мере продвижения разработки всё дороже. Дополнительной сложностью может стать необходимость непрерывного исправления содержащихся в самом задании ошибок.
Переход к следующему этапу раньше времени возможен также в порядке выполнения НИР (научно-исследовательской) или ОКР (опытно-конструкторской) работ. В этом случае следующие этапы выполняются только частично, а не полностью, с целью выявить возможность выполнения или поиска ошибок предыдущих этапов разработки.
Мы рассмотрели процесс изготовления игры за один проход, но не менее хорошо себя показывает и многопроходный метод разработки, когда все этапы повторяются по нескольку раз, пока не будет достигнут желаемый результат. Этот подход удобно применять, когда цель проекта и состав участников меняются по ходу его развития и конечный результат нельзя определить заранее.
Этап 1. Концепция ― текстовое и графическое описание ключевого замысла проекта. Может быть практически чем угодно от одной фразы или набора особенностей, до полноценных коммерческих предложений, с предполагаемыми прибылями, альбомами художественного представления и тому подобных демонстрационных материалов. Сильно зависит от необходимости привлечения капитала и трудовых ресурсов. Лично заинтересованные участники могут вступить в проект и за возможность добавить в игру собственную фразу или целый набор игровых особенностей.
Объем документации на данном этапе составляет от 1 строки, до сотен страниц и содержит в себе в основном описание проекта игры и почему вообще стоит им заниматься. Для получения сотен миллионов долларов или евро надо будет писать огромные пакеты документов, со статистикой почему этот проект окупится, анализом спроса, положения на рынке и так далее. Этап выработки концепции может повторяться несколько раз при отказе от текущей концепции с выработкой новой или сразу переходить на следующий этап.
Этап 2. Прототип ― проверка концепции, чаще всего заканчивается провалом вне зависимости от объема первоначальных инвестиций. Друзьям или знакомым ведущего разработчика надоедает или им кажется что идея непригодна для разработки, инвесторы уходят в более доходные другие отрасли и происходят прочие тому подобные разрушения команды. Прототип оказывается совершенно скучным или не удается достичь никакого интересного графического представления. Для создания прототипа используется все, что можно из доступных средств, так как прототип не продают, а исключительно оценивают с его помощью идею игры. Иногда используется разработка прототипа с нуля некомпетентными в разработке или при наличии избыточного финансирования.
Объем документации на данном этапе составляет от нескольких до сотен страниц и содержит в себе описание ключевых игровых моментов, предназначен чтобы убедиться, что проект стоит продолжать. Повторение этапа разработки прототипа обычно происходит несколько раз и показывает участникам проекта что его можно продолжать или прекратить.
Этап 3. Разработка ― создание игры, по отработанному отображаемому материалу. Разработчик после изготовления прототипа понимает, какая у него выйдет игра. Далее или пишется план разработки, или, чаще всего, делается все путем угадывания направления. Разработка игры проходит в несколько подэтапов, когда инвестор или сами разработчики оценивают, получается у них что-то приемлемое или нет, и что с делать с результатами разработки.
Объем документации составляет от нескольких до сотен страниц и содержит в себе описание всего понадобившегося команде для разработки текущей итерации, как то описание художественной части, игрового процесса, интерфейса пользователя и прочего. В зависимости от типа и объема финансирования проекта и прибыльности текущей итерации данный этап может повторяться несколько раз до получения готовой игры.
Этап 4. Полировка ― доводка отдельного функционала и художественного наполнения до состояния готовности к коммерческой реализации. Для не сетевых проектов обычно полировка всеми возможными способами откладывается на предшествующие реализации сроки. Для сетевых проектов реализуется игровой функционал в минимально пригодном для продажи виде. В зависимости от того, как игроки по статистике использовали каждый из всех заложенных в игру замыслов, соответствующий фрагмент замысла дорабатывают и ставят в параллельную полировку со следующей итерацией разработки. Если какая-то часть заложенных в игру замыслов не используется игроками, то её после обновления удаляют из игры.
Объем документации составляет от нескольких до сотен страниц. Этап полировки повторяется после каждого нового функционала для сетевых игр до двух раз. Для не сетевых проектов полировка обычно смешивается с доработкой проекта вообще и поэтому, особенно при отсутствии четких планов, может продолжаться очень долго и хаотично.
Этап 5. Коммерческая реализация ― заработок на проекте. Для не сетевого проекта ― продажи, для сетевого ― выход в открытое бета тестирование. Приложение выглядит цельно, обычно отдаленно похоже на раннюю концепцию или полностью отрабатывает фокус потребительской аудитории. Но от соответствия проекта концепции его успех практически не зависит. Вообще от разработки коммерческий успех проекта зависит приблизительно на 40 или 50 процентов, при условии, что в разработке не было допущено откровенных ошибок. Объем документации складывается от описания реализации, руководства пользователя и, обычно, сайта игры. Для не сетевых игр данный этап не повторяется, но часто выпускаются скачиваемые платные или бесплатные дополнения к проекту и пакеты исправления ошибок. Для сетевых проектов, в зависимости от сложности разработки, выходы новых версий бывают в диапазоне от двух недель, до полугода и реже.
Этап 6. Поддержка ― помощь игрокам остаться в игре. Для не сетевых игр это этап после завершения продаж, когда делается все чтобы игрок и дальше продвигал игру, среди друзей или в многопользовательской среде. Для сетевых игр это параллельный разработке, полировке и коммерческой реализации этап. Объем документации состоит из инструкции, сайта поддержки и прочих подобных средств. Повторение этапа происходит после каждой реализации.
Мир игры или сюжет и вселенная
Создавая замысел игры авторы создают иногда целый мир, который начинает иногда жить уже по своим, а не по придуманными авторами законам. Здесь хорошо подходит известная восточная мудрость, что привести лошадь к водопою может и один человек, но даже сорок не смогут заставить её пить. И первое, с чем придётся бороться в созданном новом мире это борьба с заложенными в него противоречиями вида: задан треугольник с пятью углами, найдите длину стороны равного данной фигуре квадрата. Вообще, противоречий быть не должно изначально, только в больших мирах они всё равно появляются потому, что за всем и сразу не уследишь.
Очевидно, что следующей важной задачей становится поиск внутренних противоречий игрового мира. Каждый, кто хоть час играл в RPG, знает, что утверждение: тяжело в учении ― легко в бою, есть непреложная истина. Так что если в игре у игрового персонажа есть возможность пройти обучение, то игроки ей непременно воспользуются и на последующие задания для новичка с рогаткой выходит ветеран с пулемётом. Это особенно касается, как правило, тех игр, где засчитывается применение умений. Способы, как можно поднять все характеристики до предела, находятся обычно чрезвычайно быстро. Не менее странно будет выглядеть рост умений при повторении одного и того же умения по одной и той же цели несчётное количество раз. Очень часто разработчики сами оставляют дырки в заборах, а потом сами же удивляются, что их за это ругают.

Рисунок 1. Наёмник компании «Коготь». Они бывают и такими обаятельными.
Прежде чем что-либо придумывать, надо определиться с основами устройства будущего игрового мира и ответить на несколько важных вопросов. Какие ресурсы будут в игре? Каким будет соотношение между возобновляемыми и невозобновляемыми ресурсами? Будут ли места с ограниченным числом посещений? Какое будет развитие персонажа? Будет ли развитие на основе получаемого опыта или на основе используемых умений? Как их применение будет перерастать в его уровень и почему будет или не будет и каким образом засчитываться или нет. Какая будет балансировка игрового процесса? Будут ли неубиваемые персонажи или невыбрасываемые вещи? И это ещё не все вопросы, а только некоторые. Дальше будет ещё хуже и сложнее.
На выбор устройства игрового мира влияет очень многое: время внутри игрового процесса, происхождение каждого предмета или ресурса, размер игрового мира, сценарий игры и многое другое. Если действие происходит в замкнутом пространстве короткое время, то появление новых предметов будет смотреться странно, так же как и отсутствие в огромном игровом мире на протяжении длительного времени возобновления возобновляемых ресурсов. Особенно сильно заметны такие погрешности при недостатке опыта или нехватке объектов для применения умений. Тогда в ход идёт уже истребление всего, что только можно, что портит впечатление от восприятия игрового мира, или применение в бою самого худшего из оружия и умений чтобы увеличить число ударов или использования умений, что проделывает дыру в сценарии.
Борьба с читерством и манчкинством заслуживает особого внимания. Многие игры позволяют полностью сохраняться и загружаться, что делает некоторые возможности просто находкой для прорывов. Это не относится к серверным играм и только частично к играм, сохранённые файлы состояния которых находятся на компьютере, но сохраняется игра только при выходе. Но ничего не мешает выйти из игры и сделать копию файла, чтобы потом начать заново после провала. При наличии в игре азартных игр или возможности выиграть что-то особенное эта возможность будет использована. Одна из причин всех бед том, что к игре предъявляются сразу два взаимоисключающих требования: с одной стороны игра должна длиться долго, а с другой ― каждое задание должно проходиться как можно быстрее. Приходится искать необходимое решение где-то посередине и всегда есть риск от неё отклониться, чему есть много примеров.
В своё время Morrowind прославился своей всепобеждающей алхимией, а также и Oblivion вместе с предшественником отметился возможностью достигать невероятных уровней путём попадания в тюрьму на самых ранних уровнях и понижения основных характеристик с последующим их повышением. Приём хоть и длительный, но действующий. Справиться с этим явлением было бы предельно просто: достаточно зафиксировать максимальное значение характеристики с реагированием повышения уровня только на него, но этого вовремя не сделали.

Рисунок 2. Наёмник компании «Коготь». Они бывают и такими красивыми.
Мелочи в сценарии могут доводить до изнеможения, но нет ничего важнее мелочей. Промах сценариста может испортить игру больше, чем всех остальных вместе взятых. В Dungeon Lords один король угрожал другому королю всей своей армией, стоял перед шатрами рядом с городом, только армия его куда-то делась из шатров и оставила своего короля одного. В Fallout 3 в убежище 87 появился полковник Отем и его солдаты. Как ему удалось пройти через область смертельной для человека радиации осталось без объяснений, тем более, что выход из убежища был только через пещеры и можно было спокойно встретить Одинокого Странника там. Учитывая беспринципность Анклава непонятно, как уцелели дети в этих пещерах. И если особо выдающиеся игроки сумели дойти до входа убежища 87, то не могли в него войти потому, что дверь не действовала. Да ещё и в месте проникновения полковника осталась дверь с дырой в бездну.
Не менее странно и скомкано выглядела и концовка, когда пришлось лезть к пульту управления очистителем. Причина провала сцены была единственная: на сцене оказалось слишком много действующих лиц и возникла неопределённость. Если бы в зале управления оказалось только двое, то сцена выглядела бы естественно, а создатели игры не добавили бы себе работы в продолжении. А ведь решить вопрос могли два слова: «Оставим твоих друзей снаружи, чтобы они прикрыли нас с тыла и пошли в зал управления.» и тогда концовка была бы вполне уместная.
Уделяя внимание деталям надо помнить о том, что детали должны быть существенные. RPG игру не надо превращать в подобие тамагочи, где надо всё время помнить о сне, еде, воде и всём остальном. Однообразные действия очень быстро надоедают, если не привязаны к игровому сюжету. Если в игре будет затруднительно добывать воду и еду, то есть смысл превратить их добычу в одну из сопутствующих задач, например, как добывание запчастей и боеприпасов. Если выполнить задачу очень просто, то не надо тратить на неё время.
Игровой мир должен быть не только непротиворечив, но и не пуст. Если игра посвящена только истреблению противников, то о прочем наполнении можно забыть, но есть и другие эффективные приёмы заполнения игрового времени. В серии Fallout были многочисленные компьютеры с историей и повествованиями о событиях, а в Morrowind и Oblivion целые шкафы книг всевозможного содержания. Более того: в TES 3 и TES 4 были целые религии, которые способствовали проникновению в дух игры и поглощению её процессом. Создавая основу игры нужно помнить, что кроме необходимых занятий игроку можно добавить ещё и развлечения.

Рисунок 3. Среди солдат Анклава встречаются иногда очень симпатичные.
Занимаясь разработкой компьютерной игры полезно использовать для разработки и компьютер, который предназначен не только для игр. Для построения рядов характеристик бывают удобны рекуррентные соотношения. Для стабилизации игры и борьбы с положительными обратными связями удобно использовать асимптотические зависимости. Есть такое наблюдение при создания компьютерных программ, в частности игр: если всё сложное сделать в начале, то будет легко в конце, а если всё лёгкое сделать начале, то в конце будет сложно.
Враждебные персонажи или птичку жалко
Изысканная графика имеет и оборотную сторону, когда в игре приходится убивать всё подряд и это всё иногда убивать становится просто жалко. В итоге пережитой драмы настроение может испортиться надолго. Похожая история случается, когда приходится исправлять недобор опыта истреблением всего и вся, но это уже крайний случай. Да, подобные переживания бывают не у многих, но бывают достаточно часто, чтобы их игнорировать. Не так давно Besethda в своём Fallout 3 допустила тот самый досадный промах, когда разнообразие для истребления имеется, а хоть немного настроить его нельзя. И это при том, что все типы лиц для всех безымянных обитателей не меняются и возможность выбора была бы кстати, но этого не сделали, а в итоге могут возникнуть игровые драмы. На рисунках 1—3 показаны примеры. В данном случае речь идёт о впечатлениях только одного игрока, но у каждого игрока свои вкусы и надо уметь их учитывать.
Юридический взгляд тоже приходится часто учитывать. Всё тот же самый Fallout 3 пострадал от мнений критиков, что в нём полно неубиваемых персонажей, а все дети просто бессмертны. А на все эти нововведения пришлось пойти по одной единственной причине: если можно стрелять по детям из пулемёта, то разработчикам и распространителям игры могут предъявить судебный иск о подготовке теракта или ещё чего-нибудь похуже. И хотя законы нельзя нарушать, но под их действие лучше не попадать. Те же самые дети из пещер могли спокойно стать жертвами Анклава, запустившего в пещеры несколько когтей смерти. Более того, особо опасные с юридической точки зрения сцены можно оставлять за кадром и показывать только их последствия.
Но перейдём от юридических вопросов к художественным. Возможность выбирать внешность врагов позволяет игре выйти на более высокий качественный уровень. Если раньше игрок убивал множество совершенно незнакомых ему противников, то введение редактора внешности для разнообразных врагов позволит каждому расправляться с врагом с внешностью любовника жены, офисного менеджера или ненавистного системного администратора, перекрывшего на работе доступ в интернет, например, такого, как на рисунке 4. Резко выросшее количество получаемого от игры удовольствия благоприятно сказывается на её продажах, оценках, отзывах и популярности. В большинстве случаев можно применять хорошо себя зарекомендовавший генератор внешности параметрического типа FaceGen или его аналоги, но это уже вопрос реализации.

Рисунок 4. Усатый гад из бывших охранников достаточно беспристрастно выглядит.
Точно такая же ситуация может произойти не только с внешностью окружающих, но и с общественным поведением в игре. Так до сих пор можно услышать вздохи, что в Fallout 3 нельзя вступить в Анклав или присоединиться к наёмникам компании «Коготь». А почему в игре не предусмотрели такой возможности? Скорее всего просто сэкономили, не удосужились, поленились или не сочли нужным. А зря! Такое разнообразие пошло бы игре на пользу ведь в игре Fallout 2 можно было присоединиться чуть ли не к десятку игровых сообществ, за исключением враждующих между собой, когда вступление в одно исключало вступление в другое или для вступления в одно надо было непременно полностью истребить другое.
Кстати, о взаимоисключающих вступлениях. А кто сказал, что в игре нельзя вступить сразу во все объединения? Да, Анклав, компания «Коготь», Братство Стали, рейдеры или Рейнджеры Рейли не всегда ладят, но тем интереснее скрывать своё членство во враждующей организации. Каждое действие через какое-то время становится известно и придётся хорошо постараться, чтобы игрока не раскрыли, а можно и нарочно себя раскрыть, чтобы каждый думал, что на него работает шпион из враждебной организации. Тогда придётся уже вести себя гораздо осторожнее.
Действующий персонаж может и сам оказаться враждебным по отношению ко всем прочим его окружающим персонажам, если будет неправильно себя вести. Раньше это правило старались соблюдать, но теперь оно почти забыто. И напрасно! В серии Gothic стоило только вытащить оружие или приготовить магию, как все готовились к нападению. В Fallout 2 нельзя было даже близко подойти к водителю каравана с оружием в руках, чтобы не возмутилась охрана, да и в некоторых городах ещё с Fallout 1 хождение с оружием не допускалось, а в Fallout 2 не пускали с некоторыми вещами во внутреннюю часть Города. Зато в Fallout 3 можно было ходить по Цитадели с гранатомётом наперевес и никого это не беспокоило. В Morrowind и Oblivion ещё можно было позволять такие вольности, но в Fallout 3 это было уже недопустимой небрежностью. И после этого короткого обзора мы плавно подходим к следующему вопросу поведения.
Внешний вид персонажа или по одёжке встречают
Никому не показалось странным, что к Цитадели в Fallout 3 можно спокойно подойти в силовой броне Анклава? А что будет если войти в город в броне рейдеров? Вот именно, что ничего не будет, а надо чтобы было. Форму и знаки различия придумали не просто так, а чтобы можно было отличать своих от чужих на расстоянии. А часто создаётся впечатление, что героя все знают в лицо ещё до его появления в игре. Кстати, узнавание в лицо можно добавить после появления, причём на какое-то время. Есть хороший пример в игре Morrowind, где без униформы с представителями некоторых из своих организаций даже не поговоришь или даже их разозлишь, а в более старой игре Fallout 2 итог встречи или разговора мог зависеть от одежды. В Gothic 2 с дополнением Ночь Ворона одежда вообще местами определяла характер встречи местным населением.
Но вернёмся от одежды разных объединений к её обладателям. Очень часто единственный способ выполнить поставленную задачу это уничтожить где-то какую-то организацию или её руководство. Безусловно, что если помощник руководителя компании наёмников требует, чтобы герой отпилил при нём кому-то голову, то другого выхода просто нет, а вот если посылает далеко и ещё дальше найти неизвестно кого да ещё и того, кого никто в глаза не видел, то появляется широкий простор для выбора действий. Можно просто и не задумываясь выполнить всё как сказали, а можно и выкрутиться, причём выкрутиться может оказаться гораздо выгоднее, чем сделать всё как приказали. Это самый распространённый вариант предоставления выбора.
Само собой понятно, что внедриться куда-либо можно и выдав себя за своего. Раз уж мы берём за один из образцов для подражания серию Fallout, то в третьей части мы можем получить маску гуля, в которой на нас перестают нападать дикие гули. Точно так же можно было поступить и с рейдерами, чтобы на достаточном расстоянии рейдеры не узнавали Одинокого Странника в броне рейдеров и принимали за своего, а на близком расстоянии узнавали и нападали. И с Анклавом и компанией «Коготь» можно было проделать то же самое. Добавляя в игру такие повороты надо следить за тем, чтобы сама одежда не заменяла всё остальное. В том же самом Fallout 3 дикие гули не нападали на Одинокого Странника в маске гуля, но как будто не замечали с ним его помощников, которые не были гулями и масок не носили.
Теперь задачу можно и усложнить. Если мы вместо головы шерифа принесли рейдерам хорошо отмытую голову безымянного рейдера, а шерифа отправили в самый дальний от тех, кто заказал его убийство, город, то наш обман может раскрыться либо сразу, либо через какое-то время и реакция на этот обман может быть самая разнообразная. Если мы очень ценные люди для рейдеров, то и пропади она эта голова вместе с её владельцем и шерифом, а что наврали при вступлении, так на то мы и рейдеры, чтобы правду не говорить. А если у нас отношения с рейдерами не складываются, то нам припомнят каждый наш проступок и оплошность. И таких ветвлений и вариантов должно быть много потому, что они придают реалистичности, что очень важно.
Единицы измерения расстояний или необъятные просторы
Внутри игры нет физических расстояний как таковых, а есть только координаты. В связи с этим возникает закономерный вопрос: а как быть с понятием расстояния? Понятия времени в игре и вне игры достаточно хорошо совпадают, но с расстояниями всё обстоит гораздо сложнее. Можно привязать расстояния к сеткам координат, но это будет внутреннее расстояние и увидеть его будет никак нельзя. Более понятно выглядит понятие расстояния между двумя точками из расчёта времени перемещения между ними в игре с эталонной скоростью.
С учётом постоянства эталонной скорости перемещения можно было бы взять за единицу измерения расстояния такое расстояние, которое проходится в игре предметом с эталонной скоростью за единицу времени. Но мы можем для упрощения исключить постоянную скорости и принять за единицу расстояния в игре единицу времени, подразумевая при этом, что под расстоянием между любыми двумя точками в игре мы будем понимать время перемещения в игре между этими точками объекта, движущегося по прямой с эталонной скоростью.
Каким бы ни был игровой мир, но по нему можно перемещаться. И сразу же возникает вопрос: а как долго? Размер игрового мира имеет далеко не самое последнее значение и скрывает в себе серьёзное противоречие. Если игровой мир слишком большой, то игра может проходится медленно, а если наоборот, то слишком быстро. Правильный выбор где-то посередине потому, что играть хочется достаточно долго, а игру пройти хочется достаточно быстро.
Что понимать под размером игрового мира? В чём измеряется площадь игрового мира? И если измеряется, то как? Ответим на эти вопросы. Ранее мы приняли, что расстояния в игре измеряются секундами, минутами или часами. Точно так же площадь игрового мира измеряется в часах или квадратных часах или минутах и квадратных минутах. Если игровое пространство больше похоже на поле, то его размер измеряется в квадратных часах, а если больше напоминает лабиринт, то в часах. В случае трёхмерного игрового пространства его размер будет измеряться в кубических часах. За длину ширину и высоту игрового пространства принимается время преодоления каждого размера его протяженности с эталонной скоростью.
По игровому пространству можно не только перемещаться, но его можно ещё и полностью исследовать. Иногда это можно делать в целях поиска, иногда это нужно для выполнения задания, а иногда это делается просто из любопытства и для созерцания местных красот. Зададимся условием, что полностью исследовать игровое пространство или игровой мир это переместиться по нему столько раз, что в нём не останется ни разу не осмотренных точек. Тогда на исследование у нас уйдёт какое-то минимальное время в зависимости от эффективности алгоритма обхода.
Кроме размера игрового мира введём ещё и так называемое экскурсионное время, то есть время за которое можно увидеть всю его протяженность, площадь или объём. В одномерных мирах за экскурсионное время можно принимать их размер. Хорошим примером одномерного мира являются коридор или последовательность комнат. В экскурсионное время не включаются время обратного пути из тупика или время повторного прохода, если при этом не происходит открытия нового пространства. Экскурсионное время удобно использовать для оценки размеров игрового мира, если мир имеет сложную структуру и много недоступных областей.
В двухмерных и трёхмерных мирах для расчёта экскурсионного времени введём понятие радиуса обзора, то есть радиуса в котором игрок увидит все подробности устройства мира независимо от расстояния, если оно меньше радиуса обзора. Таким образом игровое пространство будет открываться либо полосой определённой ширины, либо сферой определённого радиуса и определённой площадью проекции. В таком случае экскурсионное время в зависимости от размерности игрового мира будет определяться по формулам.

для двухмерного и

для трёхмерного мира.
В трёхмерном мире приходится вводить сложные коэффициенты заполнения для того, чтобы охватить каждую точку пространства потому, что ближайшей по форме к окружности, которой является проекция сферы на плоскость, фигурой с полным заполнением плоскости является правильный шестиугольник. Краевые неточности заполнения при вычислении экскурсионного времени не учитываются и считаются допустимой погрешностью.
Влияние числа игроков или мало нас
Игра может быть предназначена для одного, нескольких или множества игроков. В зависимости от этого игру принято называть однопользовательской, многопользовательской или MMO. Многопользовательский режим может быть обязательным или необязательным. Чаще всего встречается необязательный многопользовательский режим при котором в игру можно играть как одному, так и вместе с другими игроками. Многопользовательский режим в игре может присутствовать, а может и отсутствовать. Способов применения многопользовательского режима может быть много.
Рассмотрим несколько способов применения многопользовательского режима. Первый режим предусматривает единое игровое пространство для всех игроков, что позволяет им непосредственно взаимодействовать друг с другом. Второй режим позволяет использовать по желанию общее или отдельное игровое пространство для одиночной игры. Третий режим позволяет играть только в отдельном игровом пространстве, но сохраняет возможность передачи предметов между игроками. В игре могут сочетаться несколько игровых режимов одновременно как для всей игры, так и для некоторых её мест. Порядок их сочетания может быть обязательным или необязательным.
В многопользовательском режиме игроки могут свободно перемещаться по игровому миру, что может приводить к их скоплениям в одних местах и отсутствию в других. Скапливаться игроки могут по уровням, заданиям, поиску ресурсов, местам наличия мобов и прочим признакам. Но если задаться некоторыми принципами распределения, а именно, чтобы игроки находились друг от друга на определённом расстоянии, то при заданных размерах игрового мира в нём при соблюдении заданного условия может поместиться ограниченное количество игроков при максимальном наполнении игры, то есть существует максимальная плотность игроков. Для удобства и определённости мы примем за минимальное расстояние радиус обзора.
К счастью для нас задачу с плотностью объектов и взаимным их расположением уже давно решили в другой области. Для кристаллических решеток давно придуманы понятия точечных групп, решеток Браве, пространственных групп и сингоний. Чтобы не запутаться в кристаллографии мы просто представим себе, что у нас игроки расположены в вершинах правильных треугольников для плоского случая задачи и в вершинах правильных тетраэдров для объёмного случая. Таким образом в плоском случае у нас получаются равные шаги трансляций под углом 120° и ромбовидная элементарная ячейка, а во втором случае мы не будем использовать углы, а просто сразу по характеристикам правильного тетраэдра вычислим объём элементарной ячейки. На рисунках 5а и 5б показаны примеры для обоих случаев размерностей задачи.
После того, как в многопользовательском режиме определены максимальные протяженность, площадь или объём на одного игрока, которые определяется отсутствием других игроков в радиусе обзора R мы можем получить формулы плотности игроков на единицу размерности игрового пространства. Для миров с разными размерностями формулы существенно различаются. Самая простая формула связывает радиус обзора и плотность в одномерном мире. В двухмерном мире мы применили построение игроков по треугольной решетке с ячейкой в виде ромба из двух равносторонних треугольников. Самый сложный случай представляет объёмная плотность с решеткой расстановки по вершинам тетраэдра. Её элементарная ячейка определяется равным шагом трансляций по трём направлениям и равными углами между направлениями. Ниже приведены формулы соответственно для линейной, распределённой и объёмной плотностей игроков.

линейная,

распределённая и

объёмная
Во всех случаях мы использовали наиболее плотные решетки размещения игроков по игровому пространству. Если бы мы применили прямоугольное размещение, то получили бы отличающиеся в какое-то число раз формулы соответственно для каждого случая, кроме первого.

линейная,

распределённая и

объёмная
Сам многопользовательский режим может влиять или не влиять на сложность игры. Решить этот вопрос достаточно сложно и решение получается неоднозначным. Также возможны и разные способы решения с разным объяснением каждого подхода. Простейший способ это просто никак не влиять на уровень сложности, а также на получаемый опыт, если таковой в игре имеется. Недостатки этого режима очевидны: или слишком легко всем, или слишком тяжело одному. Деление опыта и усиление противников по числу игроков в игре помогает, но порождает следующую проблему: десять игроков играют в игре и девять из них в одном месте, а один где-то далеко и получает он меньше опыта в десять раз, а играть ему тяжелее в десять раз.

Рисунок 5а. Элементарные ячейки для плоского случая.

Рисунок 5б. Элементарные ячейки для объёмного случая.
Если опыт можно привязать к нанесённому урону и в соответствии с ним поделить, то уровень сложности игры делить гораздо сложнее. Первое, что напрашивается, это вычислить плотность игроков и привязать уровень сложности к ней или вычислить количество игроков в определённом радиусе от каждого противника и привязаться к нему или к функции от их количества и уровня. Но при таком подходе мы не можем заметить разницу между одновременным боем всеми с одним противником или каждого с индивидуальным.
Хорошего решения можно достигнуть, если учитывать не просто всех игроков подряд, а только тех, кто ведёт бой с противником. Таким образом разделение и вычисление происходят автоматически по мере вступления в бой с каждым противником новых игроков. Чтобы окончательно выровнять баланс, надо вести учёт получаемого опыта для каждого отрезка боя между вступлением в него новых участников, иначе начинающие бой будут в проигрыше.
Всё вышеизложенное может касаться как всех находящихся в игре игроков, так и на объединённых в один отряд. Ведение боя отрядом порождает дополнительные трудности, если в отряде существует разделение выполняемых задач. Так некоторые участники боя могут вообще не наносить урона противнику, а другие просто сдерживать противника, но тогда опыт либо придётся делить между всеми равномерно, либо вводить зависимость от выполняемой задачи. Также надо учитывать уровни членов отряда иначе опыт может распределиться поровну на участников разных уровней или неравномерно на участников одного уровня.
На перечисленных примерах влияние многопользовательского режима не заканчивается. В некоторых случаях, когда игра заранее ориентирована на многопользовательский режим, особые ухищрения вообще могут оказаться не нужны и достаточно просто позаботиться о правильном распределении опыта и добычи.
Перезагрузки и переигрывания или прохождение перезагрузками
Игра тем и отличается от суровой действительности, что в ней всё можно переиграть столько раз, сколько захочется. Только способы переигрывания существенно различаются в разных играх в зависимости от способа сохранения игры. Если игра сохраняется на компьютере у игрока да ещё и в любой момент, то переигрывать можно хоть каждую минуту. Если игра может сохраняться только в определённых местах, то переигрывать становится сложнее, а если игра сохраняется только при выходе, то переигрывание с начала невозможно только формально потому, что файл сохранения можно скопировать и при необходимости восстановить. Это всё относится к локальному сохранению потому, что сохранение на сервере уже для копирования недоступно.
Если что-то не получилось в игре с первого раза, то часто можно попробовать со второго и так далее до бесконечности. Расположенные на сервере игры такого счастья не предоставляют, но почти все локальные игры даже с ограничением сохранения хранят файлы настолько доступно, что их ничего не стоит скопировать и повторять любое действие со случайным исходом до получения успешного результата. Естественно, что возникает вопрос об эффективности такой стратегии прохождения, а также об эффективной встречной стратегии противостояния ей.
Некоторые приёмы использования случайности могут оцениваться двояко. Так хорошо известные вероятности вскрытия замков и успешных уговоров бывают полезны, когда надо придать неопределённость игровому процессу, но чаще всего при наличии возможности сохранения и загрузки игры в любой момент они становятся бесполезными потому, что рано или поздно желаемое событие наступает. С одной стороны это расширяет возможности прохождения, а с другой наоборот делает препятствия бессмысленными в виду лёгкости их преодоления. Если событие с вероятностью p проверяется n раз, то вероятность того, что оно произойдёт хоть раз, определяется простой формулой с экспоненциальной зависимостью.

Если последовательности действий для вскрытия замков иногда меняются, если разработчики удосужились это сделать, то каждый разговор можно повторять до бесконечности, загружаясь каждый раз после провала. Последовательности действий для вскрытия замков с одной стороны могут быть постоянными, что логично, учитывая повторяемость игрового мира или меняться с каждой попыткой, что выглядит странно, учитывая, что замок остался прежним. В любом случае толку от закладывания в игру элемента случайности в таком виде будет мало.
В играх Fallout 1 и 2 существовало такое явление, как случайная встреча в пустыне. Всё было прекрасно за исключением хорошо построенного на основе этих встреч мошенничества через перезагрузки: после нехорошей встречи можно было загрузиться и попробовать пройти ещё немного, а потом сохраниться и так до точки назначения. Точно так же легко можно было невероятно быстро обогатиться при посещении мест столкновения караванов с кем угодно или нейтральных группировок с враждебными: прошел, встретил, подобрал и сохранился, а потом снова прошел и если не повезло никого встретить, то загрузился и прошел по новому кругу. Таким образом затрачивая очень мало времени внутри игры можно было очень хорошо разжиться всем, чем только богата пустыня и весь игровой баланс немедленно разрушается.
Борьба с повторами может вестись разными способами. Если сохранение игры сделать возможным только в определённых местах, то это значительно усложнит процесс повторения. У этого способа есть существенный недостаток, когда при сбое в игре или случайной гибели приходится проходить большой кусок заново да и выглядит такой подход часто противоестественно за редким исключением. И это мы ещё не учли необходимость вдруг внезапно сохранить и прервать игру, которая возникает иногда достаточно часто. Существует ещё и оценка затрат времени на поднятие нужного навыка для достижения приемлемой вероятности успеха и простого использования этого же времени для нужного числа перезагрузок для нужного числа повторов.
Простейшим способом борьбы с многократными перезагрузками является увеличение времени загрузки сохранённой игры, но это весьма порочный приём. Бывают необходимости частой перезагрузки, а также работает долгая загрузка только при большом количестве попыток. Гораздо более эффективным приёмом будет приравнять затраты времени на выполнение задачи через повторы к затратам времени на развитие нужного навыка. Таким образом ускорить прохождение игры путём перезагрузок уже не получится и возникает необходимость повышения навыков потому, что потратить время и получить повышение навыка и выполнение задачи выгоднее, чем просто потратить время на одну единственную задачу.
От возможности продавливать продвижение через повторы пострадали такие известные игры как Gothic 1 и 2, Fallout 1—3 и Oblivion. Для примера мы рассмотрим два способа борьбы с повторами перезагрузок для диалогов. Обычно пишется вероятность успешного уговаривания, но действие выполняется всего одно и сразу же видно успех уговора. Уже при тестировании можно определить, сколько времени уходит на развитие каждого навыка до каждого уровня. Можно было бы применить ограничения по уровню умения, но это выглядело бы не так естественно, как попытка выполнения задачи без ограничений. Если мы введём перебор множества вариантов диалога через простой выбор хотя бы одного из двух вариантов ответа достаточное количество раз, то вероятность угадывания правильного ответа при низком уровне навыка уговора будет крайне мала и процесс перебора наугад станет неэффективным.
Этот приём может использоваться как подбор синонимов одного или нескольких слов одного предложения или просто выбор из нескольких предложений. Лучше всего суть этого приёма отражает подбор меняющегося кода на замке. Можно потратить очень много времени на перебор всех вариантов или за то же время найти код, выполняя другие задачи. Таким образом, если в игре требуется произвести десять успешных убеждений с уровнем убеждения для достижения которого потребуется десять часов, то каждое убеждение должно занимать не меньше часа при полном отсутствии навыков убеждения.
С повторением из второго примера бороться уже сложнее: у нас не происходит какое-то событие сколько-то раз, а просто проходит какое-то непрерывное время в игре. Для решения задачи попробуем представить её следующим образом. Пусть у нас некоторое событие происходит со средней частотой λ и за время t происходят в среднем λ⋅t событий. Тогда у нас за период T произойдут в среднем λ⋅T событий, а вероятность попадания в интервал t, вложенный в интервал T, при равномерном распределении событий по длине интервала T будет t/T. Вероятность принадлежности k событий интервалу t будет тогда определяться выражением.

и

Мы получили распределение Пуассона, чего и следовало ожидать. Теперь нас интересует вероятность того, что за время t событие не произойдёт ни разу, то есть произойдёт ноль раз. Вычитая эту вероятность из единицы мы получим вероятность того, что событие произойдёт за указанное время хотя бы один раз и более. Получаем следующее выражение.

Полученная вероятность имеет асимптотическую зависимость с отрицательной экспоненциальной степенью, на основании которой теперь можно сделать соответствующие выводы. Первый вывод заключается в том. что вероятность хотя бы одной встречи на протяжении заданного периода времени очень быстро стремится к единице. Второй вывод следует непосредственно из первого и заключается в том, что вероятность встречи в игре должна быть привязана ко времени, прошедшему с момента предыдущей встречи в соответствии с полученным выражением. Это не единственно возможный способ решения, но зато самый простой и быстрый. После того, как событие один раз произошло, отсчёт времени начинается заново с нуля. Такой подход вполне обоснован потому, что в данном случае используется схема испытаний Бернулли при которой вероятность успеха каждого следующего испытания не зависит от исхода предыдущего испытания.
Теперь если вероятность встречи задаётся полученным нами способом, то спустя некоторое время игры избежать нежелательной встречи или несколько раз повторить полезную встречу будет уже невозможно потому, что вероятность встречи уже будет зависеть от времени в игре. Если игрок попытается повторять загрузки чтобы пройти по карте дальше в несколько приёмов, то через некоторое время нежелательная встреча будет происходить практически мгновенно и продвижение прекратится. Точно так же нельзя будет непрерывно повторять одну за другой и полезные встречи, когда вероятность повтора будет иметь приемлемое значение только по прошествии определённого времени. Осталось только привязать время к местности, а также к реальному времени.
Первое, что мы сделаем, это привяжем счётчики времени каждого события к нахождению в определённой местности. Таким образом у нас будут происходить в каждой местности только соответствующие именно ей события, а таймеры остальных будут без изменений. Вторым действием будет ещё учёт просто времени нахождения в каждой местности. Теперь после длительного пребывания, например лечения или отдыха, в какой-то точке пустыни таймеры соответствующих местности встреч изменятся и придётся выбирать между полным излечением и неизбежным следующим столкновением или попыткой пройти как есть в расчёте на везение.
Есть и не очень эффективные средства борьбы с повторами, например превращение игры на локальной машине в игру как бы на сервере через манипуляции с файлами. Такое решение возможно, но имеет множество недостатков и первый из них это как раз полная невозможность повторить игру с нужного момента. Самый лучший способ борьбы с повторами это вообще исключить из игры возможность их использования для выигрыша во времени, как это было показано выше через перебор множества вариантов или таймеры вероятностей событий.
Pulsuz fraqment bitdi.