Разработка компьютерных игр. Часть 2

Уф-ф, конечно, хотелось бы побыстрее приступить к технической практике, к чему призывают некоторые читатели… но, давайте все делать планомерно. Давным-давно во французском городе Шартр строился собор. Тогда спросили у рабочих, чем же они занимаются? Первый ответил, что замешивает раствор, второй — носит кирпичи, третий — воздвигает леса, и только один сказал: "Я строю Шартрский Собор!" Каждая современная игра в переносном смысле — это Шартрский собор, а для его постройки необходим точный план. Впрочем, создание подробного плана также является серьезным техническим этапом, которым, к сожалению, очень часто пренебрегают. Об этом мы поговорили в прошлой части, но есть смысл продолжить беседу и сегодня.

На самом деле, создателям кинопродукции гораздо легче, потому как в качестве руководства им может служить сценарий. За исключением фантастики, где нужно дополнительно качественное отображение и представление множества деталей. В играх же все еще сложнее, потому как подразумеваются целые виртуальные миры с множеством интерактивных связей, и они должны быть органичными.

Микро- и макроуровни

Сегодня все игровые жанры смешиваются, поэтому единственное ключевое разбиение, которое имеет смысл вводить — микро- и макроуровни. Большинству специалистов и просто геймеров эти понятия знакомы. Под "микро-" подразумевается уровень одного или нескольких героев, управления им или ими. К данному случаю относятся все RPG, квесты, шутеры, симуляторы и тому подобное. А "макро-" обозначает управление сразу множеством персонажей или объектов. То есть это относится ко всем стратегиям, как военным, так и экономическим. В обоих случаях предусмотрена различная методология по расстановке целей. И даже если микро- и макро- смешиваются, что бывает удачным очень редко за исключением Warcraft III и некоторых Sims'ов, все равно есть тяготение к той или иной модели. О расстановке целей мы сейчас и поговорим…

Расстановка целей

Большинство современных игр имеют ограниченные миры. То есть пользователям предлагается в глобальном смысле поуровневое движение "от ролика к ролику". Помимо этого, на каждом уровне разработчиками вносится определенная система ограничивающих условий — например, из пункта А в пункт Б можно добраться только по одному или по нескольким путям, но если в Б есть дверь, которую нужно открыть ключом, который находится в ветке В, то игрок пойдет и туда. В стратегических играх, хоть мы и подразумеваем достаточно свободные миры с большими игровыми пространствами, цели можно расставлять и по-другому. Самый очевидный пример: нужны люди -> требуется больше пищи, для производства которой необходимы еще люди. Получается замкнутый круг или взаимосвязь.

Пример с Dune II

Игра Dune II очень хорошо знакома старому поколению геймеров, хотя новички без особых усилий разберутся в этой военной стратегии, а фанаты данного жанра даже проведут с ней несколько дней. Наряду с очень немногими другими играми в начале 90-х Dune II явилась во многом базисом для современной продукции в жанре RTS, точно так же, как Doom повлиял на шутеры. Меняются технологии (аудио, видео), но внутренняя структура сохранена. Популярность Dune в те времена объяснима и тем, что сама игра сделана по мотивам очень популярной одноименной саги в жанре фантастики — ею зачитывался широкий круг любителей этого литературного направления, снималось популярное кино и т.п. То есть одно из главных условий — великолепный сценарный базис — уже было априори.

Сюжетная линия такова: есть три враждующих расы, которые борются за господство на определенной планете, где имеется уникальный природный ресурс — спайс. Разработчики Dune II идентично использовали данный сюжет и в рамках своей игры запланировали три расы, у каждой из которых имеются свои типы вооружений. При этом учтите: если на данном этапе современные разработчики, видя какой-либо сюжет, примерно понимают, как его соотнести с одним из игровых жанров, опираясь на уже существующие примеры, то в то время такого не было, очень многое изобреталось с нуля. Dune II — прекрасный пример расстановки целей, и именно эту игру мы взяли для описания, потому как в ней все очень хорошо сбалансировано. На самых первых уровнях перед игроком не (!) ставится задача создания мощной армии и победы над противником — ему нужно обучиться азам, а именно как и что строить, понять взаимосвязь между сооружениями. Честно сказать, события ваш покорный слуга восстанавливает по памяти, поэтому могу перепутать этапы, но это не так важно в рамках нашего обсуждения. Игроку дается начальный капитал и ставится множество промежуточных задач: первая — построить завод по добыче спайса (этот ресурс является денежным эквивалентом), организовать добычу. После этого возникает (! — обратите внимание на слово "возникает") необходимость в постройке электростанции, которая питает все здания.

То есть до момента появления такой проблемы игрок и не знает о существовании электростанций, и это очень правильно! Вариант решения проблем по факту их поступления гораздо выгоднее по сравнению с тем, если бы вы предоставили все возможности для игрока сразу. Практически все популярные игры это предусматривают. Причем давайте рассмотрим ситуацию, когда в рамках миссии стоит задача добычи 2.000 единиц спайса, пользователь построил необходимые сооружения и даже ускорил процесс добычи, и что ему остается: наблюдать за процессом накопления? Как заставить его строить казармы и тратиться на производство армии? Правильно, создать трудности или условия для этого. Например, предусмотреть небольшую атаку со стороны противника. По существу, хронология развития и появления целей вплотную взаимосвязана с возникновением новых ситуаций. Таким образом, дерево развития предусматривает некую интерактивность между игроком и виртуальной средой. Это есть во всех игровых жанрах.

Эволюция технологий

Эволюция технологий, или дерево технологий, в рамках игровых сюжетных реализаций обычно вращается вокруг трех основных моментов:
. Развитие инфраструктуры.
. Развитие вооружений.
. Модернизация технологий.
Первый пункт очень важен при проектировании стратегических игр любой направленности, где предусмотрено строительство сооружений и т.п. А последние два вы можете увидеть практически во всех жанрах. То есть это развитие навыков, получение более мощного оружия, возможность модернизации и т.д. Dune II в нашем примере является примитивом — всего один тип добываемого ресурса, некоторые здания могут быть построены при условии уже возведенных определенного типа, модернизация технологий происходит после нажатия кнопки Upgrade. Но, по существу, на таком же базисе держатся все современные игры, правда, с усложнениями и дополнениями.

За всем должна быть математика

Помимо создания деревьев целей и развития, планирования эволюции технологий, вы должны определиться со шкалой стоимости, создать таблицу, в которой должно учитываться все. Например, если мы говорим о военных RTS, то это, прежде всего, касается юнитов. А именно броня (защита) и огневая мощь (атака). Помимо этого дополнительно стоит учитывать ряд дополнительных факторов. Например, техника передвигается быстрее пехоты, тяжелые юниты медлительнее по сравнению с легкими и так далее. Другими словами, вам нужно создать таблицу, в которой все будет расписано от и до. Особенно это важно, если вы создаете несколько рас, и необходимо рассчитать баланс сил. И еще не получив данные в виде программной реализации, вы уже можете себе представить, какие соотношения будут в рамках игры. Даже более того, такая математическая модель описаний позволит скорректировать дерево целей для каждого уровня. Да и вообще позволит сделать игровой процесс более динамичным. Например, в Starcraft Broodwar имеются уровни, где игроку не позволяют создавать воздушные войска. Следовательно, он сможет развиваться только по определенным логическим ветвям и т.д. Что касается экономических стратегий, то в их основе зачастую используются реальные экономические математические модели. Причем на различных уровнях: торговли, транспортной логистики, инфраструктурного развития и взаимодействия.

Введение ограничений

Помню, когда военные RTS приобрели огромную популярность, и спрос на них стал значительно превышать предложение, появилось очень много второсортной продукции данного жанра. Играть в нее было уже неинтересно после прохождения двух-трех уровней. Я не буду говорить названия в силу их большой раскрутки в то время, но все было предельно тупо и сводилось к добыче ресурсов, постройке и модернизации некоторых зданий, а после — формированию огромной армии и победе. Причем, как потом оказывалось, соперник был явно слабее и малочисленнее, а его атаки были предсказуемы (например, враги приходили только по одной дороге). Очень часто, особенно в разработках среднего звена, можно было увидеть варианты, когда на игрока сразу сваливается множество возможностей, не предусмотрена логическая структура следования по сюжету и развития. И, по существу, пользователь не понимает, за что браться в первую очередь. Это также ошибка, которую мы рассматривали выше. Поэтому ограничение количества юнитов — необходимый минимум. И вообще, во всех хороших стратегиях, будь то RTS или TBS (пошаговые стратегии), игрок никогда не должен расслабляться, особенно на начальных этапах миссий. Отдых должен быть заслуженным. Поэтому в рамках составления кампаний искусственному игровому интеллекту нужно следить за развитием игрока, всячески мешать ему, а при планировке задач необходимо соблюдать баланс сил.

В Warcraft III вообще было введено очень интересное ограничение. При достижении определенной численности ресурсы начинают добываться с потерями в 30%, а если армия разрастается, то и всех 60. Поскольку само количество ресурсов ограничено, игрок должен выбирать между большой армией и малым количеством добываемого либо искать некий баланс. Этот момент сделал игру гораздо динамичнее. В Gothic3 каждый уровень опыта игрока приобретается при получении определенного количества очков, они начисляются при выполнении миссий, сражений с врагами и дикими животными. Но… при достижении определенного уровня требуемое количество очков для перехода на следующий увеличивается на 500. Сначала это не так заметно, а когда вы достигнете, к примеру, 52 уровня, то вам уже нужно будет набрать около 25.000 очков, чтобы перейти на 53-й, и здесь уже приходится выполнять более трудные квесты, сражаться с сильными животными и т.д. Введенное таким образом ограничение является прекрасной мотивацией.

Упрощение

Примерно три года назад к вашему покорному слуге обратились знакомые российские разработчики, которые хотели создать интересную игру по сюжету, связанному с национальными историческими темами. Любыми — был даже объявлен небольшой конкурс сценариев. В принципе, основу для сюжета я искал долго, но потом остановился на корабельном путешествии Крузенштерна и Лисянского к берегам Аляски. Таким образом, предполагалась смесь RTS и квеста с элементами экономики. При этом можно было включить морской юмор, морские сражения с пиратами и американцами, наземные с индейцами, осаду городов и т.п. В качестве бонуса предусматривалось абсолютное отсутствие движения от ролика к ролику, то есть большой и свободный для передвижений виртуальный мир, сделанный по морским картам тех лет. Но разработчики, ухватившись за эту идею, решили иначе, а именно, захотели создать на ее базе симулятор управления парусным судном плюс RPG-квест. Как вы понимаете, все это (морская навигация большим парусным судном) подразумевает целую науку, которая нашему современнику слабо известна, причем есть много непонятной терминологии хотя бы на уровне названий парусов. Помимо этого, нужно качественно эмулировать физику, что можно сделать только при содействии людей, которые хорошо разбираются в данном вопросе и имеют опыт хождения под парусом, а также учитывать все течения, ветра и их направления, которые есть в Атлантическом, Индийском и Тихом океанах. Таким образом, проект из достаточно простого превращался в мегасложный.

Я не был сторонником такого развития ситуации, хотя решил поучаствовать. После столкнулся с проблемой: проект мегасложный для разработчиков, но они никак не хотели его упрощать для игрока. Терминология на понятный для современника язык не расшифровывалась, интуитивное обучение не предусматривалось, направления ветра, течения и т.п., — все показывалось множеством стрелок-векторов, для самого управления была задействована чуть ли не вся клавиатура, то есть все стало напоминать управление болидом космической Формулы-1. Соответственно, появилось много ошибок. Мало того, к технической реализации приступили сразу на сыром материале, то есть очень многое стало додумываться в процессе, что скорее мешало, чем помогало. В результате всего этого я просто попросил гонорар за идею и вышел из команды, потому как без качественного изначального планирования и учета пользовательской эргономики не видел будущего у данного проекта, как, впрочем, не вижу и у многих других. Кстати, оказался прав, поскольку, хоть на него быстро нашли издателя, он так и не был закончен к сроку, а после трансформировался во что-то другое. Переходя к другим примерам, стоит отметить, что все должно быть понятно для игрока, и даже если используется непонятная терминология, например, в рамках фантастических виртуальных миров, пользователь должен знать, что, как и для чего.

Психология

Классический пример из психологии, учитывающейся в играх — система начисления очков. В большинстве случаев в ней не используется разряд единиц, а оперируют десятками, сотнями и тысячами. Это один момент из многих. Учет психологии необходим и при построении дерева целей, о котором мы говорили выше. Также это важно при построении уровней и карт для них. Например, из озвученных нами ранее исследований, в которых приводились результаты сравнения поведения обычных игроков в шахматы, очевидно, что в 70% человек поступает интуитивно. И, например, нужно, чтобы игрок в определенной ситуации пошел направо, а не налево. Помимо введения ограничений это можно сделать и на психологическом уровне.

В завершение

Все, вводная часть закончена. В следующих материалах мы приступим к практике технической реализации проекта. На самом деле вам пригодится имеющийся математический базис, что, кстати, чем-то пересекается с недавней серией материалов в КГ, посвященной великолепному программному пакету MATLAB. Но мы это обсудим со своих позиций, то есть нам как минимум нужны знания в области векторов, матриц и тому подобного. Объяснение будет производиться на базе языка С++ с подчеркиванием только ключевых моментов, а в качестве основного технологического пакета мы будем использовать DirectX SDK. То есть общего назначения.

Продолжение следует.

Кристофер, christopher@tut.by


Компьютерная газета. Статья была опубликована в номере 26 за 2008 год в рубрике технологии

©1997-2022 Компьютерная газета