ТЕКСТ: АНДРЕЙ ГРУДКИН (FLYGAMES). Все началось одним воскресным утром при просмотре очередной подборки свежих flash-игр. Анализ чужого творчества всегда полезен, как и поиск новых идей, оригинальных решений, свежих механик или интересного уникального сеттинга. Все это откладывается в памяти и в нужный момент может стать хорошим подспорьем при реализации нового проекта. Ну и конечно, красивые, интересные работы всегда подталкивают к тому, чтобы не просиживать штаны и создать что-то свое.
I. Идея проекта
Если хотите придумать отличные идеи,
знайте: лучшие из них вы можете позаимствовать
– Томас Едисон
В этот раз среди различных игровых flash-проектов на глаза попалась SteamBirds, новая разработка от небезызвестной Armor Games. Конечно, нас как разработчиков и игроков зацепила ее простая, но эффективная концепция. Особенно обратило на себя внимание управление: оно идеально подходило для touch-интерфейсов. Анализ App Store не выявил ни одного проекта, использующего подобную игровую механику (на момент создания игры еще не было iPhone-версии SteamBirds).
Оригинальная Steam Birds
Следующий день прошел в обсуждениях, тестировании игры на «подопытных кроликах» и сборе мнений. Всё сводились к одному – нужно делать. Интересная и новаторская игровая механика, идеальное для touch-интерфейсов управление, хорошие возможности для масштабирования и ввода новых фич.
Вот так и был дан сигнал на старт для нового проекта. Увлеченные SteamBirds, мы жаждали создать свою игру, в которой бы смогли реализовать похожую игровую механику, дополнив ее своими идеями и новшествами.
Мы видели простую, но увлекательную игру, в которой пользователь сталкивается с различными тактическими ситуациями. Сюжет как таковой отбрасывался сразу же – мы не хотели добавлять в игру излишнюю глубину, желая оставить самый «сок» – сражения, особые возможности юнитов, грамотное использование которых, позволило бы выйти победителем.
II. Выбор сеттинга и первые эскизы
Первая задача, с которой мы столкнулись сразу же – выбор оптимального сеттинга для игры. Использовать воздушную тематику по аналогии со SteamBirds не было никакого желания – ведь мы хотели сделать свой проект, а не скопировать существующий. Главная особенность сеттинга – инертная среда, в которой юниты должны быть постоянно в движении, это один из самых значимых элементов игровой механики: вы не можете остановить движение своего корабля, а значит, вы должны постоянно подстраиваться под траектории перемещения как своих, так и юнитов противника.
Исключив экстравагантные варианты (как например, живые организмы в какой-либо биологической среде), которые бы были сложны для понимания игроком, мы, в итоге, пришли к двум вариантам: космос и подводные глубины.
Все начиналось с таких примитивных скетчей
Увы, но с космосом не сложилось. Визуальный ряд получался ужасным – юниты выглядели мерзко, туманности и планеты – еще хуже.
Продолжили экспериментировать, и перешли ко второму варианту – подводный мир. Здесь все оказалось гораздо интереснее, и уже первые наброски получились вполне сносными.
Наброски будущей игры
III. GDD и первые результаты
Получив первые эскизы от художников и определившись с сеттингом, можно было приступать к детальной проработке GDD (Game Design Document). Конечно, может возникнуть сомнение, правильным ли был выбор именно такой последовательности действий: первые эскизы – а только потом детализация GDD. В нашем случае мы хотели придерживаться именно такой очередности, так как первые скетчи наглядно показывали потенциал выбранного сеттинга в визуальном плане.
На самом GDD я не хочу подробно останавливаться – он достаточно банален и любой человек, имевший дело с созданием игр, прекрасно представляет, что это такое. Пожалуй, только перечислю основные его составляющие:
- Детальное описание игровой механики
- Описание юнитов с характеристиками и особыми возможностями
- Описание механизма набора очков и премирования игроков
- Описание GUI как игрового поля, так и различных неигровых экранов
Постепенно, по мере разработки, в GDD добавлялись описания нововведений, уточнения, детализация некоторых аспектов игрового процесса и прочая информация, необходимая для разработки.
Первую рабочую демку удалось получить уже через две недели. Она, конечно, была без графики и AI, но уже можно было управлять ярко-желтыми квадратами, которые весело расстреливали красные :)
IV. Редизайн – это не страшно
Вдохновленные первыми результатами, мы продолжили двигаться дальше. Достаточно быстро были готовы первые анимации и спрайты юнитов, которые мы планомерно стали добавлять в игру.
Первый вариант оформления юнитов
Где-то через месяц от начала разработки мы уже имели на руках готовую демку со всеми юнитами, фонами, анимациями и примитивным AI. На основе нее провели первое тестирование с привлечением сторонних игроков и сотрудников компании.
Результаты тестирования оказались положительными, за исключением оценки визуального оформления. Из-за ярких тонов и нарочито простой стилистики юнитов, игра показалась «фокус-группе» слишком мультипликационной, несерьезной.
Оценив трудозатраты и обсудив сложившуюся ситуацию с художниками, было принято решение о редизайне этих элементов, что прошло достаточно быстро и безболезненно. И как результат, юниты стали выглядеть на порядок лучше, добавились незначительные, но весьма эффектные детали, фоны стали более глубокими и реалистичными – игра стала взрослее, что совпадало с ожиданиями целевой аудитории.
Финальный вариант оформления юнитов
Были переработаны и многие анимации: взрывы, выстрелы, особые способности юнитов. Картинка ожила и стала выглядеть более эффектно.
IV. Несколько слов о программировании
С точки зрения программирования – это был первый серьёзный игровой проект для iOS в нашей компании. В нем мы активно использовали графический движок Cocos2D и физический движок Chipmunk. С Cocos2D мы были уже знакомы, и поэтому для этого движка у нас есть свой наработанный инструментарий – надстройки, утилиты и опыт.
Первые проблемы начались, когда художники нарисовали фоны. Пожелание было простое – полноформатные и полноцветные (1024х1024 png 24) иллюстрации. Реалии показали, что производительность iPhone все же не безгранична (fps упал до неиграбельного), и началась серьёзная работа по оптимизации. В итоге было найдено решение, а именно – использование сжатого формата изображения PVR TC, который поддерживается OpenGL.
Таким образом, мы получили прирост, как по памяти хранения, так и по оперативной памяти, ну и само собой – производительность стала приемлемой, а качество спрайтов практически идентично оригиналам. Однако не забывайте, что не всегда результат сжатия может оказаться визуально приемлемым.
Едва мы успели разобраться с одной проблемой, возникла новая: большое количество эффектов и мелких объектов привело к тому, что в процессе игры стала проявляться фрагментация памяти и производительность снова резко снизилась.
В сжатые сроки был разработан собственный аллокатор объектов со встроенным гауч-коллектором. Результат – получили большое количество объектов, которые можно реюзать, а также задавать различные ограничения на количество объектов, одновременно отображаемых на экране.
Не все оказалось безоблачным и с физическим движком Chipmunk. Во-первых, выбирали между Box2D и Chipmunk. Провели множество тестов производительности, по итогам которых были получены интересные результаты: оказалось, что Chipmunk эффективнее Box2D при малом количестве физических объектов, а это как раз подходило под наши задачи. Несколько проблем проявили себя при выгрузке объектов – один и тот же объект одновременно используется в 2-х движках, соответственно, выгружать надо одновременно отовсюду, а т.к. физические объекты удаляются на «специальном тике» (в определенный момент времени), а графический объект удаляется в любой момент времени – возникала проблема ресинхронизации. Решили проблему своим гауч-коллектором, который упоминался выше.
VI. Финишная прямая
Поддержка Game Center не вызвала особых проблем, были только изрядно удивлены, что стандартная нотификация (например на получение достижения) не предусмотрена в API и пришлось её реализовывать самостоятельно.
А вот IAP изрядно потрепал нервы разработчикам. Много известных багов – их не трудно найти в интернете, главное, помнить про них и учитывать при реализации.
В целом, гейм-дизайн игры был средний по сложности реализации, и первая версия игры была готова еще в конце 2010 года, но по многим причинам (в основном из-за возникновения более приоритетных проектов) решили перенести дату издания, и игра на некоторое время была заморожена. Возродив работу над проектом, добавили большее количество уровней и юнитов. Архитектура игры позволила без особых усилий реализовать эти нововведения. Более того, рефакторинг со свежим взглядом позволил выявить узкие места и исправить большое количество завуалированных багов.
Конечно, удалось реализовать далеко не всё – были идеи и об уникальном юните-герое (с элементами прокачки и апгрейда), и о древе технологий (позволяющее открывать новые юниты) и о многом другом. Возможно, все эти мысли найдут свое воплощение во второй части Hidden Wars, а может и в других, совершенно новых проектах.
Hidden Wars
Вчера игра появилась в App Store. Очень надеемся, что она вам понравится.
Цена: Free [iTunes link]
10 комментариев
Форум →очень красивая )
идея очень интересная-затягивает.скачал с айтюнса только что.начиная с четвертого уровня приходится пораскинуть мозгами чтобы пройти
очень хотелось бы увидеть версию для ipad
спасибо разработчикам
@rom0307, Игра прекрасно смотрится и на iPad.
Developer: Okrujnost’
© Flygames
Вы как компания или как самостоятельный девелопер зарегины в эппл?
Флайгеймс – ваш паблишер?
Всё отлично, но никогда не догадался бы, что это океанские глубины, если бы вы не написали об этом. ;)
@FiLunder_7, а рыбки по небу летают?
@alefut, ТБС для айфона? НАКОНЕЦ-ТО!
опробовать смогу в понедельник. сейчас разглядываю скрины и рыбок не вижу. зато вижу мерцающие реактивные сопла – но в воде более привычно винтами отталкиваться, а винты обычно не светятся.
ни в коем случае не придираюсь. просто наблюдения. спасибо разрабам за красивую БЕСПЛАТНУЮ игру. скоро либо поставят ценник, либо будет ин-апп.
забыл важный пункт: спасибо разрабам за красивую БЕСПЛАТНУЮ игру на РУССКОМ языке.
Ретину держит?
Прикольна
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как заблокировать контакт в iOS 10?
Можно ли перенести переписку Viber и WhatsApp с Android на iOS?
Как включить ночной режим на Apple Watch
Как отличить обычный iPhone от айфона с двумя SIM-картами
Экран iPhone постоянно меняет яркость. Как исправить?
Как восстановить заметки на iPhone без iCloud
Куда уходит трафик на iPhone?
Почему в iOS 12 в режиме CarPlay не появились Яндекс.Карты