Статья прислана на конкурс Летний АвторRUN!


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

Мысли о том, какой должна бы быть в идеале та или иная игра, рано или поздно появляются в голове любого геймера. При этом один неплохо знает программирование, другой в свободное время рисует в 3DMAX'е, а третий придумывает сюжеты и забрасывает их в пыльный ящик письменного стола.

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

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


Зри в корень!

Итак, что же представляет собой на данный момент отрасль игростроения изнутри? Наверное, ни для кого ни секрет, что существует тандем разработчик-издатель. Первый, как понятно из названия, занимается непосредственно созданием игры, второй - рекламой и спонсорством первого (кроме того, издатель, как правило, "наставляет на путь истинный" разработчиков, корректируя дизайн игры, чтобы она вышла достаточно интересной для покупателя, но при этом её разработка не выбилась из бюджета). Поскольку те, кто до сих пор не закрыл эту страницу, явно метят в разработчики, о них мы и будем говорить.

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

Дальше необходимо причислить себя к одной из групп людей, умеющих что-то делать лучше всего. Обычно девелоперы делятся на программистов и дизайнеров, или "технарей" и "художников" – тех, кто занимается созданием кода, баланса и внедрением сюжета, а также тех, кто пишет сценарий, создаёт концепты персонажей, мира и рисует текстуры. Средняя команда разработчиков составляет 10-30 человек, подавляющее большинство которых - программисты и дизайнеры.


Кто нам нужен?

Программистов можно условно разделить на специалистов по графическому движку игры, по физическому движку, звуковому и отдельным специфичным модулям, например блокам ввода-вывода, основанным на DirectInput (программисты меня поймут) или вышеупомянутым сетевым интерфейсам.

Что такое движок? Многие (и я когда-то) ошибочно полагают, что движок игры и графический движок это одно и то же. На самом деле движок игры - это комплекс механизмов, обеспечивающих работу игры, а графическое её отображение - лишь один из многих аспектов. Ведь в играх есть еще и звук, и физика, и возможность управлять происходящим на экране действом (иначе какая же это игра, это же ролик), и на каждый такой аспект есть свой специализированный движок, являющийся частью общего кода.

С дизайнерами тоже все не так просто, как кажется на первый взгляд. Пока команда маленькая (менее 10 человек), то действительно каждый и швец, и жнец, и на дуде игрец. У кого-то получается лучше что-то одно, у другого другое, и в итоге дизайнеры делятся на моделеров (3D-дизайнеров, которые рисуют в 3DSMax, Maya или других популярных пакетах. Не путать с модельерами!), текстуровщиков (эти люди занимаются созданием для моделеров текстур) и аниматоров, которые управляют движением объектов.

Все объекты в 3D-графике состоят из полигонов - пространственных треугольников, из которых строится каркас объекта, и текстур - двухмерных рисунков, которые "обволакивают" объект, чтобы мы его видели. После этого модели анимируют (приводят в движение).

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

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

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

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

Желательно, чтобы сценаристом был отдельный человек, и еще кто-то (обязательно не сам сценарист) корректировал его работу замечаниями вроде "А зачем он туда побежал?" или "Почему они друг друга ненавидят? Об этом в предыстории ничего не было!" (так называемый гейм-дизайнер или лид-гейм-дизайнер).


Контакт с издателем

Проект начинается не с рабочего движка, готовых моделей, или написанного сценария. Все начинается с идеи, и если её нет, лучше присоединится к уже существующей команде. Причем идея должна быть не "мы сделаем шутер от первого лица как Call of Duty, только круче". Идея как раз и должна включать в себя это "круче", то, чем проект будет выделяться из бездны подобных ему. Вариант "мы делаем просто ещё одну игру о "xxx" в стиле "yyy"" отметайте сразу. Если вы собирались сделать как качественный, так и количественный прорыв в графике, физике, звуке (за него у нас будет отвечать тот самый Вася Пупкин) и революционный геймплей, а за плечами нет даже удачного релиза тетриса, то стоит ли говорить, какую судьбу ждет проект? Если же не пытаться выделиться, проектом банально не заинтересуется ни один издатель. Я слышал о случае, когда глава команды разработчиков, в которой работает мой знакомый, приехал в Киев в издательство фирмы XYZ с технодемкой, диздоком и концепт-артом, а всё это отодвинули к краю стола, даже не взглянув, и доверительно сообщили: "Все это очень хорошо, но не могли бы вы на словах осветить вкратце жанр проекта и его отличительные особенности". Иными словами, что может заставить их обратить внимание на проект и спонсировать его в расчете на прибыль.

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

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

Диздок – дизайн-документ, в принципе, краткое описание игры, написанное самими разработчиками.

Концепт-арт - работа дизайнеров, показывает общий стиль оформления игры.


Кто нам нужен-2

Расширим и углубим свои знания о структуре команды.

Итак, кто нужен проекту: геймдизайнер, сценарист, программисты, дизайнеры, и какой-то контакт с музыкальной группой. Это по минимуму. Кто-то из программистов (вероятно, самый опытный) впоследствии должен будет руководить остальными (как минимум, контролируя качество кода, ведь программисты – народ ленивый). По аналогии, дизайнеры тоже должны иметь своего руководителя (не гейм-дизайнера, тот занимается совсем другими вещами и некоторые называют его идеологом проекта, а концепт-дизайнер или, что одно и то же, главный дизайнер).

И этим дело не ограничивается: кто-то поедет договариваться с издателем и проводить на КРИ презентацию для прессы (у него язык хорошо подвешен), кто-то (дизайнеры, рисующие игру или другие, если эти заняты) нарисуют красивые пререндереные ролики.

Итак, что мы имеем? Геймдизайнер в роли режиссера-постановщика (сознаю, что термин из кинематографа, но ко многим функциям геймдизайнера так и липнет это слово), сценарист и концепт-дизайнер руководят проектом. К технической стороне это не относится, там безраздельно правит великий и ужасный главный программист. Именно эти люди контролируют весь процесс создания игры. Но этот процесс имеет место уже после старта проекта. А что же делать тем, кто загорелся идеей начать карьеру в игростроении, но не знает с чего начать?


С чего начать?

Как правило, такое желание работать в гейм-индустрии сопровождается идеей игры, проще говоря, концепцией. Но вся загвоздка в том, что, как считают большинство людей на форумах, расположенных на бескрайних просторах рунета, цена идеям – гривна за дюжину. Идея без реализации, мол, ничего не стоит. Попробуем разобраться с позиции здравой логики. Когда вы в последний раз видели по-настоящему оригинальную игру? Не с новым словом в графике, как "Doom 3" (с этим, кстати, тоже можно не согласиться). Не с большим количеством возможностей умерщвления врагов, как в "Dark Messiah" (хотя геймплей – это тоже один из самых главных аспектов). Не с бешеным драйвом серий "Need For Speed" и "Burnout", заставляющих игрока судорожно калечить клавиатуру, а с подлинной оригинальностью или новым игровым жанром?

То-то и оно, что сложно их найти. Можно привести в пример "Мор.Утопия" или "Defcon", но это скорее оригинальный антураж, а не другой жанр. Тот же "Defcon", например, можно описать как современный аналог шахмат. Поэтому создать оригинальную игру на стыке жанров невероятно сложно, и, как мы с вами убедились, нынешние разработчики в большинстве своем страдают кризисом, нет интересных идей. Все пытаются "выехать" на графике, но поверьте, для любителя стратегий совершенно не важно, какая там графика. Лишь бы 3D, и не слишком бросающаяся в глаза угловатость. У вас мега игра с десятками тысяч прорисовываемых юнитов одновременно? Не беда. Не можем увеличить детализацию – просто поднимем повыше камеру. И всё! Лишь бы игра увлекала. Я, например, люблю стратегии, играю в Warcraft, но когда я установил недавно вышедшею C&C: Tiberium Wars, она резко оттолкнула меня своей излишней тормознутостью. Необходимо сразу отмечать такие мелкие моменты: если у игрока тормозит курсор, его будет это раздражать, и он просто сотрёт игру, вместо того чтобы пройти её.


Жанр

Конечно же на идее отпечатывается жанр. Если вы делаете action, то на кой вам сдался баланс? Куча врагов, и вперед, покорять новый игровой мир. RPG должна порадовать сюжетом и разветвленными диалогами. Причем на меня лично оказывает гнетущее впечатление тот факт, что во многих RPG, пройдя до финала разговора, я отбрасываюсь на его начало, и часто могу сказать то же самое снова, а электронный болванчик будет раз за разом повторять мне навсегда заложенный в его уста текст. Так нельзя, товарищи! На дворе третье тысячелетие! После 3-го повтора меня должны отправить учиться читать, иначе все погружение в игру спадает на нет.


Сюжет

Что можно сказать о сюжете? Сюжет важен (исключение – action). Сюжет – это то, ради чего вы покупаете книги, ходите в кинотеатры и играете в игры. Во всех случаях человек, как правило, обособляет себя с главным героем (во время игры многие говорят "меня убили", хотя убили-то персонажа!), проходит с ним через все сложности по сюжету, и переживает катарсис, собственно то, ради чего вы и проходите игру до конца (или дочитываете книгу, или досматриваете фильм – разницы нет). Идеальный сюжет - это если после финала игрок либо безмерно счастлив, либо хочет плакать, сочувствуя своему герою. Сделать так, вдохнуть жизнь в игру, сделать героев личностями – в первую очередь задача сценариста.


Звук, графика

В нашем случае техническая сторона – далеко не самый главный аспект. Если ваша оригинальная идея найдет себе издателя – сделаете соответственную качественную "начинку". Если нет – что ж, может идея, вовсе не так хороша?


Игровой интерфейс

Зайдя в игру, игрок видит пока ещё не саму игру, а только меню. Поставив игру на паузу – тоже наблюдает элементы интерфейса. И даже находясь в игре, в 95% случаев наблюдает интерфейс. Исключение – игры в жанре action построенные по новомодной тенденции "убрать с экрана всё лишнее". Приятно играть, когда экран не забит всякими менюшками. А если уж они нужны (например, в стратегии) – постараться сделать их компактными и удобными. Например, для современной стратегии нельзя делать меню в стиле Warcraft 3. Никому не хочется отнимать у себя треть экрана. К тому же всё большую популярность набирают широкоформатные мониторы. Представьте, как отреагирует владелец такого монитора на то, что разработчик игры "украл" у него треть монитора (по высоте).


Физика

Определяется жанром. Думаю понятно, что речь не о примитивной физике, определяющей силу тяжести и т.п., что должно быть в каждом проекте, если там есть к чему притягиваться и есть кому прыгать. Имеется ввиду продвинутая физика, и если уж вы задумали сделать в игре аналог гравипушки из HalfLife 2 – ради бога, возьмите качественный и бесплатный физический движок. Их сейчас много. То же самое, кстати, можно сказать и про движок графический, но не забывайте, что все серьёзные игры пишутся на C-подобных языках (я не знаю, как пишутся игры на консоли, но вот под Linux портировать писишную игру будет попроще, чем игру на Delphi).


Анимация

Я не случайно отделил анимацию от графики. Графику можно наблюдать и по скриншотам, в статике. Но при этом встречаются ещё в играх такие убогие анимации, что и смотреть противно. Делаете анимацию человека – делайте её качественно, и пусть она будет одна, но хорошая, а не двадцать плохих.


Вывод

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


Несколько полезных ссылок для начинающего игростроителя:

gameworld.com.ua – форум украинских разработчиков компьютерных игр;
gamedev.ru – крупный портал по разработке компьютерных игр;
i2r.ru - несколько интересных материалов по разработке;
gamesanatomy.ru - отличный ресурс, особенно полезный для начинающих программистов под DirectX.