Аллен Джексон (Allen Jackson) Origin Systems



Аллен Джексон (Allen Jackson), Origin Systems

Аллен Джексон, сотрудник Origin Systems с многолетним стажем, работал инженером по программному обеспечению в ряде интересных и неплохо продаваемых игровых проектов, включая серии Crusader и Wing Commander. Он внес свой вклад в главу по программированию (глава 8), а здесь приводится его обширный очерк о создании игр и всех тех трудностях, которые сопутствуют этому нелегкому процессу. Итак, усядьтесь поудобнее и приступайте к чтению.

Инструменты и редакторы

Создание игры включает три основных задачи: проектирование, программирование и художественное оформление. Частенько каждому из участников проекта приходится заниматься понемногу всеми этими вопросами, причем это особенно верно для малочисленной либо ведущей группы разработчиков.

Во всех трех задачах огромную роль играет набор инструментальных средств, применяемых для разработки игры. Программистам необходимо решить, какой компилятор и системный инструментарий они будут использовать (под системным инструментарием понимаются диспетчеры памяти, средства экспорта и библиотеки программ для разработки игры). К примеру, если игра разрабатывается под Windows 95, программист должен быть хорошо знаком с интерфейсом Microsoft DirectX.

В идеале 70% игры должны создавать разработчики. Они формируют данные, которые обрабатываются игровым движком и выводятся игрокам в процессе игры. Все крупные игры должны быть основаны на наборе данных, причем большая часть работы над игрой должна сводиться к использованию стандартного набора редакторов, инструментария и программ экспорта, настроенных на конкретный игровой движок. Самой программе совершенно не обязательно знать что-либо о конкретной игре, она обрабатывает информацию в общем виде, что позволяет игре стать расширяемой и «долгоиграющей».

Следует помнить, что разработчику потребуется определенней алгоритмический язык для создания базовой системы искусственного интеллекта, различных сценариев и меню. Существует множество таких языков, включая Python и JavaScript. Когда разработчики описывают сцену, они используют игровые объекты в последовательности диалогов, которые поясняют какой-нибудь из элементов сюжета на одном из алгоритмических языков. Затем программист претворяет сценарий в жизнь с помощью языка программирования, и игра начинает функционировать. Таким образом программный код может быть изолирован от создания собственно игры.

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

Аллен Джексон утверждает, что разработчик не может начинать проект, пока не выяснит, каким инструментарием пользуются программисты. Скриншот из игры Wing Commander: Prophecy. (Приводится с разрешения компании Origin Systems, Inc.)

В настоящее время существует не так уж много приличных приложений для создания игр, поскольку игры очень разнообразны и никому не хочется выпускать похожие продукты. Так как идея игры должна быть как можно более оригинальной, приходится каждый раз заново разрабатывать технологию ее создания. К примеру, если вы вдруг захотите клонировать Quake, то сможете воспользоваться рядом 3D-движков, которые предоставят набор инструментов, предназначенных для создания динамичных шутеров вроде самого Quake. С другой стороны, если вы решите сделать компьютерный футбол, используя тот же движок, программистам придется заново написать инструментарий для этого проекта. Далее, основное программное ядро игры тоже придется несколько переделать, чтобы оно подходило для того жанра, в рамках которого создается новая игра.

Никогда не следует недооценивать художественное оформление игры. Даже для простейшей 2D-игрушки необходим приличный генератор двухмерных спрайтов. Словом, и здесь первостепенную роль играет художественный инструментарий. Было бы весьма удобно, если б такие инструменты предоставляли возможность использовать метки, указывающие на различные оформительские элементы - анимационные кадры, активные точки и команды сценария. К примеру, если художник работает над анимацией ходьбы и хочет поместить в кадр команду «проиграть звук шагов», то возможность сохранить эту команду внутри графического файла значительно ускорила бы разработку и программирование игры. Графический инструментарий должен также обеспечивать возможность создания временных эскизов. Конечно, на фоне общего комплекса задач эта проблема не столь серьезна, но программисту было бы весьма удобно ускорить работу над программой за счет импорта различных графических объектов непосредственно в игру.

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

Суть игры и ваша аудитория

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

Прежде всего создателю игры следует задуматься, для какой аудитории она предназначена. Развитие структуры игры ведется таким образом, чтобы привлечь максимально возможное число потребителей и в то же время сохранить стержень проекта.

Чтобы изучить влияние аудитории, сравним две игры с одинаковыми предпосылками, но различной реализацией. В Diablo и Fallout есть главный персонаж, с помощью которого игрок взаимодействует с вымышленным миром. Поклонников Diablo привлекает динамичность игры. Им нравятся простые в освоении игры с непрерывным действием и возможностью играть через Интернет. Diablo - экшен-игра с динамичной анимацией и сюжетом, основанная на интуитивном интерфейсе; ее действие происходит в подземельях, создаваемых случайным образом. Когда тролли, гоблины и горгульи врываются в пещеру, которую исследует игрок, ему достаточно щелкнуть монстра мышью, чтобы атаковать его. Система снаряжения упрощена за счет снятия ограничений на максимально допустимый вес и отказа от всяких сложностей вроде вложенных друг в друга рюкзаков. Игрок размещает предметы на простой сетке. Если какой-либо предмет не помещается на сетку, это значит, что персонаж не может держать его у себя.

А вот почитатели Fallout уделяют больше внимания персонажам и развитию сюжета; игра протекает неторопливо, спокойно, и через Интернет в нее играть невозможно. Разработка такой игры основывается на характеристиках и свойствах персонажей, а также на общем сюжете игры и элементах виртуального мира, который исследует игрок. Хотя интерфейс у этой игры тоже не отличается сложностью, число способов взаимодействия игрока с виртуальной реальностью гораздо больше и они куда разнообразнее.

Обе игры очень хороши, и вполне возможно, что один и тот же пользователь будет с удовольствием в них играть, находя в каждой что-то привлекательное для себя. Но несмотря на то что они весьма похожи, а интерфейс использует одни и те же действия мышью, каждый проект преследует свою цель. Следует помнить, что многочисленные элементы игры ни в коем случае не должны портить изначальный замысел.

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

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

Внешний вид игры

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

Очень важно выбрать подходящий графический движок. Осмелюсь утверждать, что двухмерная графика еще не умерла. Если в процессе игры по экрану бегают двухмерные спрайты, это не так уж и плохо. Раскрою «секрет»: многие игры основаны на 2D-спрайтах, в том числе такие хиты, как Crusader, Ultima Online, Fallout, Diablo, Civilization 2 и StarCraft. Двухмерные спрайты выглядят, как трехмерные, но они представляют всего лишь двухмерное спрайтовое воспроизведение трехмерного объекта.

Видеоплаты с аппаратными 3D-ускорителями в персональных компьютерах появились не так давно. И некоторые игровые жанры в буквальном смысле слова расцвели с введением этой технологии - Thief: Dark Project, Tomb Raider, Wing Commander: Prophecy, Quake... Следует добавить, что уже написано немало хороших трехмерных движков, которые используют все преимущества драйверов OpenGL, Glide и DirectX.

Внешний вид игры - это еще и ее звуковое оформление. Яркие аудиоэффекты, правильно подобранная музыка - все это играет немаловажную роль в представлении игры. Выбор графического движка - ответственный шаг, а вот для работы со звуком, если, к примеру, вы трудитесь в Windows 95, единственным выбором является DirectSound. Это не означает, что звуковая технология менее важна, чем графическая. Грядет следующее поколение трехмерных звуковых плат, и спустя некоторое время аудиоплаты ISA совсем исчезнут из употребления.

Работая над внешним видом игры, уделите особое внимание сильным сторонам вашей команды. Если ваши художники способны рисовать только 2D-спрайты, постройте игру на их основе. А если в группе есть специалист по звуку, который к тому же сочиняет музыку, не бойтесь потратить дополнительное время и усилия на создание выразительного музыкального оформления, которое значительно оживит игру. Не забывайте и о «пристрастиях» своих программистов: если у них есть опыт работы с сетями, включите в проект игры многопользовательские возможности.

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

Аллену Джексону были заданы еще два вопроса: нужно ли начинающим разработчикам покупать лицензию на уже существующий игровой движок или стоит создавать собственный? Возможно ли в принципе сделать игру при полном отсутствии денег? Аллен отвечает на эти вопросы по порядку.

Лицензионные игровые движки

Мой совет тем, кто просто хочет сделать игру: используйте существующие трехмерные разработки. Может быть, вашему программисту интереснее построить собственный ЗВ-движок, но следует помнить, что задача эта не из легких. Сказать по правде, без достаточно серьезного опыта работы с трехмерной математикой и сложной архитектурой программирования создание трехмерной структуры превращается в независимый проект - такого огромного зверя не одолеть в одиночку.

Для начала посетите веб-страницу www.cg.cs.tu-berlin.de/~ki/engines.html. Большинство представленных там 3D-движков бесплатные, а некоторые даже приводятся вместе с исходным текстом программы. На сегодня почти все 3D-движки «заточены» под эффективную передачу последовательностей многоугольников и текстур в 3D-видеоплату. Можно также подыскать программы для звука и графики, которые упростят и ускорят процесс создания игры. На том же веб-сайте, кстати, вы найдете множество советов по работе с трехмерными приложениями.

Что делать, если нет денег

Если у вас уже есть компьютер, компилятор и доступ к Интернету, вам вовсе не обязательно тратить деньги на что-либо еще. Хотя вполне возможно, что вам захочется приобрести уже существующий «конструктор игр». Многие игровые компании покупают трехмерные разработки у внешних производителей. Почему? Все просто: фирмы-разработчики вложили в свои технологии уйму времени и средств, гарантируя определенное качество, и если оно вас устраивает...

«И наконец, - говорит Аллен Джексон, - если фирма-разработчик выпустила ряд неплохих редакторов и вспомогательных приложении, приступить к созданию самой игры вам будет значительно легче».



- Начало - - Назад - - Вперед -