Когда захотелось дойти "Тиграми" до Ла-Манша
Меня зовут Игорь, я руковожу небольшой командой инди-разработчиков StarniGames. Кроме непосредственно менеджмента, также занимаюсь программированием, проектированием и гейм-дизайном (да, команда у нас очень небольшая). Свой первый продукт мы запустили в 2014 году, это была браузерная ММОRPG "Звездные Призраки". Благодаря самым современным (на тот момент) техническим решениям нам удалось реализовать полноценное 3D и риалтайм-мультиплеер в браузере. Следующие два года мы расширяли игру, дополняли ее новым контентом и механиками. После того как игра вышла на достаточный уровень по геймплею и доходности, я принял решение о разработке новой игры – но уже в другом жанре, с другой моделью монетизации и для другого рынка.
Наша новая игра — Panzer Strategy — пошаговая стратегия о Второй мировой войне. Или, если точнее – варгейм. Игра воспроизводит события на Западном и Восточном фронтах, в Атлантике и Северной Африке. Ключевое слово здесь «воспроизводит» — особенное внимание уделено исторической достоверности сценариев. Все миссии мы создали на основе реальных физических карт и атласов боевых действий. Даже запланированные, но не реализованные операции (как, например, "Морской лев") разрабатывались на основе планов генштаба Вермахта. Словом, никакой самодеятельности, все согласно архивам.
Еще одна важная особенность — новые для жанра механики. Например, реалистичная система снабжения войск. Она совершенно прозрачна для игрока, но если он позволит противнику перерезать его тыловые коммуникации — это приведет к краху всей армии.
И, конечно, от других варгеймов Panzer Strategy отличает технологичная графика и использование Unreal Engine 4. "Внешность" была одним из приоритетных направлений разработки, ведь у конкурентов зачастую — устаревшая картинка.
Panzer Strategy — нишевая игра в жанре, который сегодня не пользуется особой популярностью у больших компаний (возможно, успех новых XCOM это изменит). Почему же мы выбрали именно этот тип игр? Во-первых, сейчас в жанре практически нет новых достойных продуктов — значит, насколько нишевой игра бы не была, рынок для неё есть. Во-вторых, я люблю пошаговые стратегии, наиграл много часов в Panzer General II, с детства мечтал сделать свою версию. В-третьих, в сеттинге WWII хватает готового контента (танки, самолеты, пехота и т.д.), весь он есть в 3D-стоках за вменяемые деньги. Это позволило существенно снизить стоимость разработки. И, в конце концов, после нового XCOM захотелось дойти "Тиграми" до Ла-Манша. Чтобы все это выглядело не хуже, чем в XCOM, и сопровождалось не менее прекрасными кат-сценами.
Panzer Strategy использует Unreal Engine 4. Сейчас, перед релизом, этот выбор кажется единственно возможным. Но так было не всегда. Два года назад, когда я только начал думать о создании игры, выбор движка долго оставался открытым вопросом. Кандидатов было два: Unreal и Unity. Ни у меня, ни у моей команды не было опыта работы ни с одной из этих технологий. Поэтому мы могли без предубеждений их сравнить и определится с тем, что именно нам нужно. После исследований выяснилось:
- Unreal нативно поддерживает C++, что позволяет без проблем использовать код из наших предыдущих проектов;
- С Unity в Киеве работает просто несопоставимо больше людей, поэтому набор команды под Unity будет быстрее и дешевле, чем под Unreal.
С точки зрения стоимости и времени разработки преимущества у обоих движков, по моей оценке, были одинаковы. Демки обоих движков также давали вполне сопоставимый результат по картинке. Для наших целей, конечно — все-таки речь не о шутере от первого лица. Я долго не мог определиться, пока все не изменил доклад Алексея Савченко на конференции 4С в Киеве. Он сказал очень простую вещь (перевод вольный): "Epic Games берет процент от ваших продаж, потому вы — наши партнеры. Мы заинтересованы, чтобы ваша игра стала хитом, и чтобы вы (и, соответственно, мы тоже) заработали как можно больше денег". Когда большая компания говорит тебе: "Давай станем партнерами" — звучит убедительно. Это было, пожалуй, самое интересное бизнес-предложение, которое я слышал за последние лет пять.
После доклада Алексей пообещал помочь с персоналом и контактами с издателями. И он сделал все, что обещал. Более того, быстро. Затем его задачи перешли к Роману Горошкину и инициативы Epic Games получили продолжение — если у вас хороший продукт, Epic дает вам бесплатный брендированный стенд и билеты на крупные конференции. Словом, компания серьезно поддерживает своих разработчиков.
Но речь не только о бизнесе — мне бы хотелось вкратце рассказать, что, по моему мнению, хорошо, а что — плохо (и как мы с этим боролись) с технической стороны.
Итак, ХОРОШО:
- Unreal использует С++. Это позволяет подключать множество различных библиотек, а для нас — ещё и вновь использовать код из других продуктов. Например, подключение sqlite заняло всего пару часов.
- BluePrints позволяет перенести всю простую работу в духе «флаг должен колыхаться на ветру и всегда смотреть в камеру» на ваших 3D artist (да, даже не на tech artist, а на простых моделлеров). То есть вы снимаете со своих программистов всю мелкую и неинтересную для них работу.
- В движке все хорошо с профайлером, также можно использовать родные средства профилирования MS VC++.
- Великолепную картинку с привязанной к ней физикой — с ней даже инди-разработчики могут сделать игру, которая будет выглядеть как ААА-продукт.
Что ПЛОХО:
- Система UI-компонентов (виджетов). Вот прямо совсем никуда не годится. У нас в игре довольно серьезный интерфейс (по объему сопоставим со StarCraft II) и мы потратили пару недель, пытаясь что-то собрать на встроенных компонентах. В итоге отказались от этого и портировали библиотеку виджетов с "Звездных Призраков", и скорость разработки UI резко возросла.
- Скорость компиляции и перезапуска совсем медленная. Совершенно “нормальна” ситуация, когда, написав одну строку кода, можно ждать 2 минуты, пока все соберется и запустится. И да, это на топовом SSD, i5 седьмого поколения и так далее. В общем, это все съедает много времени. Мы решили эту проблему просто — вынесли из движка все, что можно вынести: модель данных, UI и AI. А в самом UE4 мы написали прослойку, которая принимает команды на визуализацию в стиле "поставь здесь юнит", "этот юнит должен поехать туда-то" и так далее. Получился такой себе MCV (model-control-view) с дополнительным View в виде UE4. В итоге у нас всего порядка 20% кода требует для компиляции UE4, все остальное собирается, тестируется и настраивается вообще без Unreal. Это здорово ускорило разработку.
В целом, с технической точки зрения, я выбором доволен. Да, есть проблемы, но движок (даже без ковыряния в исходном коде) позволяет их решить малой кровью. Сейчас проект находится в завершающей стадии — релиз состоится 1 сентября 2018 года, сама игра уже почти полгода в раннем доступе и, в дополнение к победе в номинации Best Unreal Game на конференции Games Gathering в прошлом году, мы получили очень положительные отзывы от игроков — как по качеству картинки, так и по геймплею и AI. Это подтверждает правильность выбранного пути и принятых решений.
Что дальше? Я хочу поделится с сообществом накопленными знаниями и опытом в разработке игр в целом и под UE4 в частности. Поэтому в следующих статьях мы копнем гораздо глубже как техническую сторону (прежде всего — физику, работу физики совместно с анимацией, настройку физических колайдеров, оптимизацию производительности и т.д.), так и организационную часть (сколько и каких людей вам понадобится для разработки игры, на что вы потратите больше всего времени, где ожидаются риски и т.д.). Примерно через месяц после релиза я поделюсь цифрами продаж и методами маркетинга нашей игры.