Дневники GoF-2: Часть 1. Хорошие новости

Опубликовано 13 Апр 2010 в GoF2, Дневники Разработчиков, Новости игр | Нет комментариев

Недавно завертелась мельница слухов, и нам часто задавали вопросы, будет ли, и, если да, то когда выйдет Galaxy on Fire™ 2 для iPhone. Ну во-первых, хорошая новость: да, мы и правда переносим GoF2 на iPhone и мы трудимся над ней с октября прошлого года. Но нам все еще нужно время, так как GoF2 представляет собой невероятно комплексную и развитую игру — а наши стандарты качества относительного того, что мы хотим вам предоставить, как всегда высоки. Чтобы облегчить ожидание и дать вам почувствовать насколько невероятную работу нам надо проделать и какие моменты проработать, мы будем регулярно описывать это в нашем дневнике разработчика, пора начинать. Чтобы повествование стало максимально близким к разработчикам, мы решили оформить его в виде интервью с наиболее ответственными членами команды.

Начнем, пожалуй, с Ханса-Кристиана Кюля (Hans-Christian Kühl), так же известного как HCK, ведущего разработчика Galaxy on Fire™:

Как возникла идея серии GoF [Galaxy on Fire]?

После того, как мы завершили работы над менее крупными играми, такими как Motoraver и Robot Alliance, у меня возникла идея. Я подумал: «Посмотрим, как это могло бы выглядеть», после чего начал складывать техническую демку, которую позднее доработал. Затем ей заинтересовались пара ребят из отдела Графики и Дизайна, и, фактически, проект был оформлен.

Трудно ли было уговорить руководителей Кристиана Лора (Christian Lohr) и Михаэля Шаде (Michael Schade) рассмотреть концепт, или же они моментально заинтересовались?

Полагаю, они сразу поняли, что идея хороша, особенно, учитывая, что мир был таким открытым и свободным, в отличие от Motoraver или Cloud Commander, которые были ограничены до одной дороги и каньона соответственно. В GoF 1 же у нас уже было 500 различных планет в 100 системах, о которых и мечтать не могли, рассуждая о мобильных играх тех лет.

… при этом был сделан шаг от линейных уровней к макету «песочницы», открытому миру?

Да. Изначально было лишь 13 миссий, которые надо было пройти. После этого, когда системы становились доступными, а вы могли полететь куда угодно — этот момент стал грандиознейшей инновацией того времени.

Играя в GoF, вспомниаешь классические игры тех лет, особенно серию Origin’s Wing Commander и ее продолжение — Privateer. Влияли ли эти игры на разработку GoF?

«Privateer» был по сути клоном «Wing Commander» с добавлениями в виде системы торговли и большей свободы. «Freelancer» был, пожалуй, первой игрой, которая содержала в себе се лучшее от своих предшественниц – действительно хороший сюжет, громадная галактика с несколькими фракциями, система торговли, пользовательская модификация корабля, добывание руд, автопостроение миссий и уйма всего для исследования. Это скорее нас вдохновило. Другим источником вдохновения, имея ввиду производство продукции по чертежам, была «Eve Online».

Над чем ты сейчас работаешь в GoF 2?

На данный момент, мы прорабатываем 3D-модели кораблей, орудий, астероидов, а так же различные сценарии в ангаре и область получения новых заданий. В то же время, Марк Нагель (Marc Nagel), наш старший художник, разрабатывает 2D-концепты для новых моделей космолетов. А затем я пытаюсь собрать все это воедино. Потом Марк и другие ребята помогут мне с этим, работая над шейдерами, чтобы все выглядело как надо. И, естественно, нам нельзя забывать о звуковом сопровождении. Нас ожидает куча работы.

Что надо переделать для портирования GoF 2 на C-платформы? (использующие язык Си — прим.)

Самая таинственная часть, безусловно, это графика. Но для меня как кодера, главный момент — это переход с Java на C. Увы, нет такого инструмента, где можно было бы нажав кнопку, получить все в новом формате. Сами концепты надо построить заново. А с такой огромной игрой как GoF 2, это было нелегким делом еще для Java-версии. Java-версия GoF 2 основана на предшественнице, игре Deep — подводной игре, основанной, в свою очередь, на GoF 1. Значит уже имеем как минимум два шага от развития до переделки. Портировать все это на C было очень сложно. Так как у нас уже есть GoF 1 в C для iPhone, передо мной встал вопрос, переделать ли GoF 1 на C в GoF 2 или взять Java-версию GoF 2 и портировать ее на C. Мне потребовалось около 2 недель лишь чтобы принять это решение. Я предпочел конвертировать Java-проект в C-версию, и это было правильным решением. Конечно же, это лишь техническая сторона программерской деятельности. С учетом новой графики, придется переписать практически каждую строку, пока не останется неучтенных моментов.

Сделает ли работа над GoF 2 работу над другими проектами хоть немного проще?

Еще бы, польза есть всегда. В случае GoF 2, например, мы много работаем над геометрией мира и шейдерными текстурами под OpenGL ES 2.0, которые мы , естественно, сможем использовать в других проектах. Прочие элементы игры, такие как описание космоса с туманностями и рандомным позиционированием множества небольших объектов, так же можно будет применить позднее. Но в основном, мы получим наибольшую пользу, создав сиквел к существующему тайтлу или интегрировав адд-оны через Платежи-Из-Приложения (ПИП — прим), что будет открывать новые уровни или оборудование.

Портация GoF 2 так же привела к переводу переменных из разряда integer во float. Почему? В чем преимущества последнего?

все достаточно новые аппараты используют обработчик величин с плавающей запятой (floating-point processor). Математические основы операций над такими числами заложены в аппаратную начинку. В случае более старых Java-устройств, мы выпускали проекты, используя целочисленные величины, потому что так все работало быстрее, а те устройства не имели собственно обработчика чисел с плавающей запятой на борту. Это упрощает построени е игры: к примеру, нам больше не приходится высчитывать что-то крупное, а затем пересчитывать это в меньшем масштабе, чтобы получить меньшие числа в некой последовательности. На самом деле, мы теперь можем ужать игру сильнее, так как величины стали меньше. Раньше корабль должен бьл быть 1000 единиц размера, чтобы его движение отрисовывалось плавно на фоне других объектов. Теперь же, теоретически, корабль может быть лишь единицей в размере. на деле это скажется на том, что объекты больше не будут трястись при поворотах камеры и навигации.

Уменьшает ли применение формата float необходимый труд программиста?

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

Что еще вызвало затруднения на данный момент?

Управление памятью в Java и C реализовано абсолютно по разному. Непредвиденные проблемы всплывают то там, то тут. Ты можешь прогонять демку несколько часов к ряду, а потом она вдруг падает, и по-началу ты недоумеваешь, отчего — вероятн, от того, что кто-то на определенном этапе не выдал какое-то значение в какой-то области, в то время как в Java все происходит автоматически. В добавок, у нас теперь намного больше текстур, а всем хочется, чтобы результат выглядел изумительно. Но у нас есть ‘всего’ 10 – 20 MB текстурной памяти. Для сравнения, в Java нам приходилось оперировать 512-байтными текстурами. Каждый в команде воскликнул: «Ой, да тут целый вагон всего влезет, вот где раздолье!» Теперь они подходят и говорят: «Вот теперь будет выглядеть неплохо, всего-то надо запихнуть пяток 1024-байтных текстур…!» В конце-концов, нам приходится сидеть и просчитывать, не упаковали ли мы чересчур много графики в игру.

To be continued…