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

в 14:16, , рубрики: c++, Gamedev, геймдев, длиннопост, игровая индустрия, разработка игр, создание игр

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

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

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

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

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

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

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

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

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

Как мы сделали движок и игру на нем за полтора года - 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: BlitzTeam

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js