Калининградская компания HeroCraft продолжает делиться с App2Top историей о том, как, несмотря на потерю лицензии на известный бренд Disciples, вела работу над игрой Lords of Discord (Лорды Раздора).
Как мы уже рассказывали в предыдущей статье, разработка игры по бренду Disciples началась 5 лет назад. Игра проделала долгий путь, прежде чем была запущена в App Store (а сейчас уже доступна для открытого бета-тестирования в Google Play). В этой заметке пойдет речь о программной составляющей проекта.
Движки
Для разработки игры на iOS и Android было выбрано кроссплатформенное SDK Marmalade. В качестве графического движка взяли Ogre 3D – он отвечает за построение трехмерной сцены.
Пример 3D-сцены из игры Lords of Discord
Пример 3D-сцены из игры Lords of Discord
Почему выбрали эти два движка, а не, скажем, Unity?
Во-первых, Ogre, в отличие от Unity, имеет открытый исходный код, что, как известно, развязывает программистам руки. Мы расширили в Ogre поддержку форматов текстурного сжатия, и это позволило повысить производительность.
Во-вторых, Ogre имеет низкоуровневые возможности: в нем можно управлять процессом отрисовки на всех этапах – начиная с расстановки 3D-моделей, до работы с выводимыми треугольниками и написания вертексных и фрагментных шейдеров (кстати, было замечено, что на некоторых видеокартах шейдеры работают так странно, что способны поколебать материалистическое мировоззрение).
У Ogre довольно активное комьюнити: с ним работает большое количество разработчиков, на форуме этого движка легко можно найти ответы на свои вопросы. А еще он бесплатный. Ну и не стоит забывать, что дело было 5 лет назад.
Серверная часть игры разработана внутри компании: игра использует тот же игровой сервер, на котором работают и другие игры HeroCraft.
Значительную часть времени заняла работа не над игрой, а над редактором ресурсов для нее. Хотя в начале рассматривались варианты использования какого-нибудь существующего 3D-редактора, который позволил бы расширить его функциональность в нужную нам сторону (например, 3D Max или Blender), но быстро выяснилось, что предоставляемой ими гибкости недостаточно. Поскольку задачи были в основном узкоспециальные, мы поняли, что для их решения оптимальнее будет написать редактор самим.
Сейчас наш собственный редактор позволяет рисовать ландшафты для уровней, расставлять на них персонажей, настраивать анимации, редактировать карту высот и проходимости.
Скриншот из редактора Lords of Discord
Скриншот из редактора Lords of Discord
Скриншот из редактора Lords of Discord
Как в любом большом проекте, мы подключали сторонние библиотеки, которые добавляли недостающий функционал: GUI, систему звуков или систему частиц. Несмотря на то, что это значительно ускорило разработку, по поводу выбора некоторых из них мы льем горючие слезы до сих пор, но назад дороги уже нет.
От чего отказались
Напомним: в Disciples у игрока есть замок и отряд, которым он ходит по карте, открывая новые территории. Вражеские здания можно и нужно захватывать и делать своими. Встречаются и отдельные враги, с которыми игрок проводит бой. Враги действуют так же: перемещаются по карте, нападают на здания и отряды игрока, захватывают землю.
Когда мы лишились лицензии на Disciples, помимо прочего, было принято решение изменить концепцию игры, а потому и часть кода пришлось убрать. Много всего было пересмотрено и много передумано. Отсюда, кстати, родилась наша местная шутка: когда программисты проекта общаются с гейм-дизайнером, на лицах всех троих читается выражение, получившее название «морды раздора».
В частности, мы отказались от красивого терраморфинга, представляющего собой перекрашивание ландшафта под цвет расы, которая его захватила.
Пример терраморфинга
Пример терраморфинга
Пришлось отказаться от ИИ для управления отрядами врагов, ведь это тоже выпало из концепции. Изменения коснулись и захвата зданий противника – их тоже решили убрать.
Сложные и интересные задачи
Особенно много различных вариантов программистам пришлось перебрать при разработке системы отрисовки ландшафта и деревьев. Пока думали, как рисовать ландшафт, выбирали между заранее подготовленной 3D-моделью и тайловый ландшафтом со специальным механизмом слияния тайлов. В итоге был выбран гибридный метод, включающий полигональную сетку с переменной детализацией, общую цветовую карту, смешиваемые детальные фактуры и дополнительные 3D-объекты.
Для рисования деревьев программисты и 3D-моделлеры перебрали полтора десятка разных алгоритмов в поисках самого красивого и эффективного. Выбранный способ позволяет рисовать кусты и деревья и изображать их покачивание на ветру. Кстати, во время работы над деревьями пришли к выводу, что елки делать предпочтительней: они устроены проще и быстрее выводятся. Часть этого кода была написана в плацкартном вагоне поезда “Калининград — Москва”, где ехал один из программистов, глядя на бесконечные заснеженные леса Беларуси.
Елки из игры Lords of Discord
Елки из игры Lords of Discord
Много времени было потрачено на подключение различных рекламных и аналитических SDK, окончательный выбор которых стоит за нашими менеджерами и аналитиками. А поскольку мы пользуемся Marmalade, то некоторые из них приходилось еще и специально адаптировать.
Заключение.
Несмотря на то, что разработчики Marmalade SDK собираются прекратить его поддержку, мы готовы вносить нужные нам изменения своими силами. У команды много планов по дальнейшему развитию игры: введение системы гильдий, новых рас, а также синхронных онлайн-боев.
При написании этой статьи дважды отключался свет в районе и один раз упал сервер Skype, но ни одной елки не пострадало.
Комментарии
Ответить