Начало работ: декабрь 2007
Окончание: июнь 2009
Команда: 5-9 человек
Платформа: Nintendo DS
Как все это было.
Не буду растекаться мюслей по тарелке, долго говорить о планировании, процессах, AGILE и прочей тоске. Я просто расскажу – как все было. Но, прежде всего, с чего все началось. Точнее – с кого. Началось все с Миши «ЗАВХОЗ» Федорова, который в 2005 году убедил меня попробовать сделать нечто презентабельное для DS. Спасибо Миша. А так, конечно – все небо начинается с земли.
Именно. Прежде всего, нам нужно было придумать – как реализовать землю в «нашем штурмовике». Существовало несколько рабочих вариантов на базе предыдущих демоверсий 2005-2006 годов:

Но как уже видно – ни один из них не годился для того, что бы организовать более-менее презентабельное «рабочее» пространство размером в 100х100 километров на данной платформе.
Поэтому пришлось написать все с нуля, используя некоторые трюки с компрессией/декомпрессией данных и в общем проблема решилась успешно, не считая практически неизлечимой тряски ближайших к камере объектов и нестыковки тайлов по швам. Тряску мы так и не вылечили и из за этого пришлось отказаться от симпатичной динамически освещаемой внутренности кабины на верхнем экране

а также вида крыльев с визуализированной механизацией и хвостового оперения. Стыковку тайлов подлечили скайдомом с согласованной текстурой ниже уровня земли.
Путем нехитрых манипуляций с LOD-ами, удалось увеличить обзорность до 8 км. Можно было бы и больше, но уже не успевали оптимизировать алгоритм для этого.
Постараюсь теперь объяснить – для чего нам понадобилась в DS такая большая игровая площадка. Первопричина – единое игровое пространство существенно экономит размер данных, хранимых на картридже. Т.е. нам для полного счастья необходимо создать одно такое пространство и дальше использовать только лишь его участки для игровых миссий. Участки, к слову сказать, получились по 25х25 километров (6х6 клеток), что давало 5-10 минут разнообразного геймплея в каждой миссии, без учета того, что из участка можно вылетать и находиться где душе угодно.

Второй существенный момент – оптимизация времени производства миссий в игре. Гораздо удобней планировать дизайн миссий в едином игровом пространстве, чем в массе разрозненных и мелких. К тому же это прекрасный задел для развития игры в целом.
И последний момент – следование оригинальной игре с ее огромными пространствами для маневра. Вообще, в процессе придумывания и производства, мы постоянно руководствовались тремя принципами – «как в Ил-2», «как в Ил-2» и «как в Ил-2». Потому что это Ил-2. Если не получалось следовать принципам – придумывались различные трюки и в конце концов получалось как в Ил-2. Да, каждый шаг, приближающий игру к необходимому нам образу, отнимал и без того скудные запасы производительности платформы. Облака, тени под ними, коллизия объектов, реалистичная физика полета, динамическое освещение самолета игрока, трассы выстрелов и расчет попаданий – почти каждый из этих шагов, в конце концов приводил к необходимости остановиться и оптимизироваться, прежде чем следовать дальше, благо РС-версия игры всегда работала идеально быстро.
Да, мы изначально использовали в разработке кросс-платформенный двигатель, позволяющий отвязать работу гейм-дизайнеров, артистов, мап и левел дизайнеров от целевой платформы, точнее от DevKit-а. Это даже не в Ил-2 началось, а гораздо раньше. Фактически 99% работ по созданию текстур, моделей, эффектов, настройке и балансу миссий, скриптованию основного меню – все производились на экране компьютера.
Это основная программа для разработки игры:

Да, пусть в ней нет (и никогда не будет) звука, FOG-а и с пикселями проблемы, но она позволяла коллективу спокойно трудиться месяцами, создавая контент игры и не прибегая к постоянной заливке всего этого добра в картридж. В плане игровой механики РС версия была 100% идентична DS версии. Особенно она помогала при настройке полетной модели для каждого самолета, да и вообще – при любой тонкой настройке какого либо игрового объекта, когда приходилось действовать «методом научного тыка» обойтись без нее было бы не то что сложно, просто очень долго. Но, в любом случае, по нескольку раз в день – свежие правки попадали в приставку (программисты работали над своими задачами и проверки на целевой платформе были необходимы постоянно). Команда использовала один CVS репозиторий и при возможности все свежее всегда оценивалось артистами и игровыми дизайнерами, которые помимо основной программы использовали еще редактор миссий,

просмотрщики тайлов и самолетов, что очень помогало при настройке кабин, лодов, расстановке координат дымов, пушек и пулеметов.

Что касается ресурсов, работы с ними – широко использовался Perl для обработки и конвертации данных, Collada как основной формат экспорта и хранения промежуточных результатов, ресурсные упаковщики собственного производства (их история идет с 2002 года) и система «активных каталогов», где каждый файл уже является элементом системы ресурсов, без прописывания его в каких либо ресурсных базах. Т.е. для добавления какой-либо текстуры – ее всего лишь необходимо разместить в нужном каталоге в виде TGA файла с управляющим префиксом и суффиксом в имени файла и пересобрать ресурсный файл, после чего она становилась доступна в игре. Это позволяло существенно экономить время, да и повелось так еще со времен BREW-игр. Упаковщики же позволили существенно (компрессия до 65%) сократить размер картриджа – практически до минимума.
Вернусь к аспектам производства. Отлаженный изначально, процесс работы с РС версией позволил уже через месяц после начала работы выдать приблизительную картинку игры (январь 2008), без какой либо физики и прочего,

после чего команда углубилась в суровые будни доделок, доводок, запиливаний и выпиливаний разных фич в игре. Да, в январе 2008 все выглядело страшненько, DS проект у команды первый (дошедший до издателя), издатель нервничал. В разное время над игрой работали от 5 до 9 человек, дважды менялся продюсер со стороны издателей (по разу на каждого). Сложности, с которыми мы столкнулись в производстве – это прежде всего ИИ пилотов. Нужен был короткий и действенный алгоритм, позволяющий роботам летать, сбивать и выживать в воздушном бою – и, естественно, делать это в 100% свободном режиме. А полеты по WayPoint-ам мы освоили достаточно успешно и быстро с помощью нехитрого алгоритма:
* «угол крена» равен углу места WP относительно вектора движения самолета в горизонтальной плоскости;
* «угол тангажа» равен углу места WP в вертикальной плоскости;
* раз в квант пересчитываем и элеронами устанавливаем новые углы крена;
* рулем высоты постоянно удерживаем нужный тангаж;
* не выходим за рамки по крену, тангажу и скорости;
Это позволяет самолету самостоятельно идти на WayPoint до тех пор, пока он в нем не зарегистрируется. Да, самолет сам развернется по всем правилам, если что. Как нас ЭТО удивило в первый раз.
Второй немаловажный компонент – физика полета. Ведь все самолеты разные, какие-то лучше, какие-то хуже и для полноценного мультиплеера, не вызывающего рвотные позывы, существовала острая необходимость научить самолеты летать. Ну или сделать так, что бы было видно, что они летают. Путем введения и настройки 15 параметров для каждого самолета удалось создать видимость и ощущение настоящего полета. Хотя конечно же – пиксели летать не умеют и штопор мы, разумеется, никакой не делали.
Все это происходило на фоне как незначительных так и значительных переделок разных элементов игры. К слову сказать – концепцию и арт главного меню игры (уже готового) мы полностью меняли «по требованию» в августе 2008, так как возникла необходимость приблизить DS меню к более-менее общему виду с остальными консолями (первая версия с алгоритмом «One click» оказалась весьма своеобразна), и только к весне 2009 буквально сделали его заново, с чистого листа. Тайлы земли, их визуальную концепцию – полностью изменили в процессе в августе-сентябре 2008 ввиду оптимизации текстурной памяти. Также в процессе фичеката (иногда странного, про физику я так и не понял маневра западного издателя) в небытие ушли – за месяц до отправки на LOT Check полностью готовая и отлаженная физика полета для игрока (у ботов она, разумеется осталась), на 90% готовый «музей техники» используемой в игре, около 50% фраз радио-переговоров, русский язык, шасси, закрылки (у игрока полностью и их визуализация у ботов), 60% опций настроек игры и мультиплеер (мультиплеер, впрочем, ушел раньше – летом 2008). Так что, к лету 2009, после финальных изменений «по требованию» собственно и нарисовалась готовая игра – аркадная и хорошая, как и задумывалось. Пришло время начинать процесс прохождения Nintendo LOT Check.
Про LOT Check скажу, что мы еще в 2008-м начали к нему готовиться. То есть все основные тест-кейсы изначально были заложены в работу и не сходили с карандаша. Да, после некоторых изменений в игре (а они как уже говорил ранее – происходили постоянно), как то – добавление облаков и окраска земли тенью от них в процессе загрузки, неприемлемо (для успешного прохождения LOT Check) увеличилось время загрузки миссии и пришлось спешно придумывать Loading Screen. Но это рабочий процесс, повторю – никаких непредвиденных сложностей при подготовке к LOT Check не возникло. Количество багов во внутреннем тестировании тоже не сильно впечатлило – наших и внешних набралось порядка трехсот (даже учитывая сложности с выпиливанием физики полета игрока и сразу возникших после этого крешах в достаточно сложном двигателе игры). Сам LOT Check проскочили достаточно быстро, со второго раза.
В завершении своего короткого обзора «как все было» пройдусь по банальной теме – что было гут а про то, что не очень – не буду.
Итак:
* реализованы три ключевые (на мой взгляд) фичи оригинальной игры: большое пространство маневра, беспрецедентная для платформы физика полета, гибкая настройка сложности игры (от аркады до… продвинутой аркады). Да, почти все это выпилилось западным издателем в конце концов, но было задумано и успешно реализовано именно так как и задумывалось;
* использование кросс-платформенного двигателя позволило более сосредоточенно работать над игровой механикой и настройкой различных компонент игры;
* личный опыт сотрудников, увлекающихся авиацией (пусть даже R/C) существенно упрощал коммуникации при обсуждении ключевых механизмов игры;
В общем тут все. Если возникли какие-то вопросы – пишите на dmitry (at) dipinteractive.com