Хабрахабр

[Из песочницы] Как мы сделали движок и игру на нем за полтора года

Всем привет, дорогие друзья! Вот сижу, смотрю на бесконечную простыню кода, провожу ревью с баночкой ред була. Прошел год. Год, блин, всего лишь год — так много и так мало одновременно. На этот год у нас были наполеоновские планы, и сейчас кажется, что мы мало что успели. С другой стороны — нам удалось сделать кое-что, что достойно войти в анналы айти с пометкой «Слабоумие и отвага». Я бы назвал эту историю «Как запилить свой движок с тулзами и рендером с нуля всего за год». Издание выйдет на несколько томов, но куда деваться, надо с чего-то начинать. Так что погнали!

С высоты полученного опыта могу смело заявить: это одна из самых рискованных и амбициозных штук, которую мы когда-либо затевали. Ровно год назад мы стартовали с проектом, о котором я теперь планирую писать во всех подробностях. Последние 5 лет занимаюсь разработкой коммерческих движков. Думаю, опыт нашей команды будет полезен другим гейм-разработчикам, ну а игроков он как минимум повеселит.
Тут надо бы представиться: меня зовут Иван, я технический директор молодой, но амбициозной компании. Ну и до того на всех предыдущих местах работы создавал либо движки, либо игры целиком. В прошлом 7 лет работал в крупной игровой компании, там трудился над движком для сессионной мультиплеерной кросс-платформенной игры. И важное уточнение: так сложилось, что почти весь мой опыт по разработке движков связан с мобильными платформами.

Потом был движок для казуальных игр, где нашими заказчиками выступали Electronic Arts, Chillingo, Big Fish Games и другие именитые и не очень именитые компании. Первый проект, в котором я участвовал, заключался в разработке OpenGL совместимого 3D движка для мобильных устройств, для компании Motorola. Впоследствии этот движок был использован на большом игровом проекте.

Это была open source технология, и мы начали разрабатывать ее, когда компания, под эгидой которой мы делали игры для наших клиентов, была еще совсем небольшой. Вообще движок, над которым я работал, эволюционировал на протяжении многих лет. Мы продолжили его допиливать, в итоге выпустили на нем одну из первых шутерных MMO на iOS / Android, совершив своего рода прорыв на еще только зарождающемся рынке мобильных шутеров.

Было непросто, я долго сомневался, но накопленный опыт и полученные за годы работы знания подсказывали, что весь мой багаж можно упаковать во что-то не менее, а может и более крутое. Около года назад я набрался духу и решил покинуть компанию, оставить столь любимый и дорогой сердцу проект, чтобы отправиться в свободное плавание. Но, как известно, fortune favours the brave, и у нас получилось. Я даже примерно представлял, как это можно сделать, но не был уверен, что мы справимся силами небольшой команды, что сможем в сжатые сроки сделать качественную и востребованную на рынке технологию. Довольно быстро мы собрали команду профессионалов, движимых единым стремлением — сделать новую, совершенно уникальную технологию, которая покажет рынку, как выжать максимум из железа современных мобильных устройств.

Уже через месяц существования нашего игрового стартапа сформировался план. И вот тут началось самое интересное. Звучит весьма амбициозно и круто, да? Нечто абсолютно новое и совершенно уникальное, превосходящее все существующие решения. Но были и риски. Так и есть! Мы поставили себе цель — воплотить нашу нескромную идею всего за год, и уже через полтора года запустить свою первую игру.

Но — неожиданно — у этой безумной идеи в нашей команде нашлось много сторонников (и это еще раз доказало, как важно при попытке свернуть горы заручиться поддержкой таких же авантюрных единомышленников). Знаю-знаю, на этом моменте начинает звучать абсурдно. Многие вспоминали давнюю историю 4A Games, где разработчики, покинув GSС, создали с нуля движок для нашумевшей игры Metro. Чего греха таить, идея запилить свой собственный движок очень мотивирует программистов на подвиги. Мне кажется, успех ребят из 4A замотивирует еще не одну команду прогеров так же, как он вдохновил нас.

Об этом и будет моя история. В общем, мы решились. Я в хронологическом порядке поведаю вам историю создания Blitz Engine с самого первого дня разработки до финального релиза. В нашем блоге я вместе с коллегами буду рассказывать, в каких муках рождалась наша технология, через какие тернии мы пробирались к звездам и почему принимали именно те решения, которые в итоге приняли. Без всяких приукрашиваний внутренней кухни, только чистая правда.

Что ж, вопрос вполне логичный и правильный. Первый вопрос, который вы наверняка зададите: «почему не Unity или Unreal?».

Собственно, и тот, и другой имеют свои плюсы и минусы, но почему же они не подошли нам? Вообще, выбирая движок мечты — тот самый, на котором будет сделана та самая игра, которая заработает миллионы, все инди-разрабы в итоге становятся перед выбором: Unity или Unreal.

Вопросов к ней мало, за исключением одного: это C#, а мы пилим на C++. Начнем с Unity. Если вы хотите посоветовать нам Unity, потому что это прекрасная технология, позволяющая при большом желании в том числе писать на C++, то давайте все-таки будем честными: это не полноценный C++. Соответственно, Unity отпадает. Вторая проблема то, что несмотря на долгие старания разработчиков Unity это не самая быстрая по производительности технология. А мы не C#-разработчики и становиться ими пока не планируем. Принятые решения налагают ограничения в том числе и на производительность.

Но движок начали писать около 10 лет назад. Unreal — вроде, и на ++, и ребята толковые писали. Но мир поменялся, и за 10 лет появилось много новых и прогрессивных идей. Архитектурные решения, которые там используются, это state of the art решения того периода. Мы решили сделать ставку на эти новые архитектурные решения и подходы. Возможно не настолько оригинальных чтобы писать UE5, но достаточных чтобы сделать приличный прорыв.

Безусловно, это так. «Да Unreal Engine классный, он написан на C++ профессионалами своего дела», — скажет внимательный читатель. Unreal Engine — движок общего назначения, и это не плохо, это дает плюс к универсальности. Но напомню: наша цель — выжать максимум из мобильных устройств и продвинуть индустрию вперед. А мы еще на старте планировали рушить границы и стереотипы, а не вписываться в них. Такие технологии рассчитаны на игры в разных жанрах, и это преимущество несет с собой архитектурные ограничения для разработчиков движка.

В итоге: выбрать Unity — выбрать чужеродную для нас среду, выбрать Unreal — сделать среднестатистический проект.

У EA есть DICE и движок Frostbyte, у Activision и Ubisoft — свои технологические решения, 4A Games тоже соорудили свой движок, в id Software есть id Tech. Всем известно, что топовые современные шутеры на PC делаются на собственных студийных движках. Да, безусловно, труда, времени, денег и всего остального при таком раскладе уходит больше. Так поступают и разработчики топовых шутеров на консолях. Вся фишка, по сути, в кастомизации: ты решаешь, что для тебя важно, и делаешь на это упор. Но зато ты имеешь полный контроль над технологией: ты можешь выбрать решения, которые будут быстрее и эффективнее уже готовых решений «для всех». А это ведь то, что нам нужно, только не от консолей, а от мобилок! Эксклюзивы для консолей устроены так, чтобы выжать из супермощного консольного железа максимум.

Мы учли их характеристики и стали искать технологии, которые позволили бы нам запуститься на этих устройствах в высоком качестве. Но мы решили пойти от обратного: не пытаться создать решение для топового железа, а для начала посмотреть на самые слабые устройства, которые мы точно должны поддержать. И да, естественно, решения должны были быть такими, чтобы потом мы могли легко без ограничений улучшать их для топовых мобильных устройств, вплоть до уровня качества консолей и PC. То есть выжать максимум крутого визуала из минимума характеристик.

Вы уже все поняли про наши амбициозные планы перевернуть индустрию, поэтому для вас не станет сюрпризом тот факт, что мы решили внедрять инновации уже на этом этапе. Практически все современные мобильные шутеры — на Unity или Unreal. Мы проигнорировали традиционную дилемму Unity vs Unreal, и стали пилить свой движок.

Это то, что получилось за год. Для начала — покажу вам видео. Собственно, как я уже говорил, наша главная цель, как бы пафосно это ни звучало, — сделать мобильные игры намного лучше и продвинуть индустрию вперед. Мы сделали все возможное, чтобы выжать из мобильных устройств максимум и создать продукт, способный если не посоревноваться с десктопными игрыми, то хотя бы приблизиться к ним по качеству.

Есть такое правило “know your hardware”. Его важность сложно переоценить. Мы не раз видели, как топовые команды делают что-то невозможное для консолей — потому что знают, от чего отталкиваться, и заранее решают, что попытаются переплюнуть. Мы вот всегда хотели делать шутеры, но трезво оценили свои силы: на сегодняшний день рынок шутеров на консолях и PC огромен и переполнен высококачественными продуктами. А мобильный рынок при этом незаслуженно обделен вниманием, хотя там многое можно сделать. В общем, все сошлось: мы решили исправить ситуацию.

Резюмируя, мы сформировали вот такое общее направление:

  • Своя технология
  • Консольный уровень качества на мобильных платформах
  • Основной фокус — на шутерах
  • Сетевой движок для сессионных игр
  • Инфраструктура для оперирования игры
  • И, собственно, крутая игра.

Все это мы планировали реализовать за 1.5 года.

Нам предлагали огромное количество готовых решений, на которых уже кто-то что-то делал. Естественно, от коллег по цеху мы постоянно слышали, что делать свой движок при наличии Unity и Unreal — это слабоумие (причем без особой отваги). Мы решили попробовать, и сейчас я с гордостью могу сказать — у нас хорошо получается. Но у нас было категорически другое мнение. Ровно такой, как мы хотели. Движок уже есть, и он очень перспективный. Над нашей новой игрой мы активно работаем, запускать ее планируем уже в этом году.

Но все меняется, когда мы достаем iPad и показываем наработки и трейлеры. Не буду скрывать, люди по-прежнему скептично относятся к нашей идее, когда при знакомстве мы делимся своими планами. Мы показываем графику нашей игры на собеседованиях новых сотрудников, и они не верят, что это продукт для мобилок. Люди понимают, ради чего все это затевалось. Революционный продукт требует нестандартных решений. Иногда уточняют по три раза, не шутим ли мы. Но теперь у нас есть революционный движок, отличная игра BattlePrime и забавная история, которая будет интересна многим разработчикам. Да, этот год был тяжелым, нам приходилось очень много работать.

Обычно после просмотра этого видео нам говорят, что не верят. Что наверняка в финальном релизе все будет иначе. Вообще в нашей индустрии не принято верить трейлерам… Но вы уж поверьте. И расскажите в комментах, как вам!

Мы хотим рассказать, как мы разрабатывали Blitz Engine, и для этого я выпущу целую серию статей про год нашей разработки.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть