Разработка игр, а все ли так просто?
Говоря про разработку игр сегодня, довольно часто мелькают мнения, что это довольно легко и просто. Достаточно взять готовый игровой движок, немного его освоить и вперёд к реализации игры своей мечты.
Готовые игровые движки, вроде Unity, Unreal Engine или CryEngine — это фактически конструкторы, не требующие глубоких знаний языков программирования. Они предоставляют разработчикам широчайшие возможности, вплоть до автоматической интеграции рекламных сервисов для мобильных игр. Таким образом, «порог вхождения» довольно низкий, а это означает, что большинству начинающих проще взять такой движок и работать с ним, чем годы изучать С++ в связке с OpenGL. Более того, чтобы разрабатывать приложения под разные мобильные платформы, нужно еще больше знаний, которые невозможно получить за пару месяцев без серьёзной подготовки. На рисунке 1 представлен скриншот редактора Unity.
Что же по факту предоставляет большинство готовых движков? Например:
- Рендер (графическая подсистема);
- Звук;
- Физика;
- Сетевое взаимодействие;
- Поддержка скриптовых языков;
- Кроссплатформенность конечных приложений.
А, самое главное, по моему мнению — правильную архитектуру. Одному/двум людям понадобятся годы времени, чтобы на приемлемом уровне реализовать этот список вручную. Здесь уместно возразить, что существует множество готовых решений для каждого из пунктов по отдельности и это так, но опять же, имея под рукой все детали конструктора, его еще нужно правильно собрать.
Здесь можно сделать простой вывод: чтобы сделать игру много ума не нужно, нужен только готовый инструмент и немного терпения. Но обо всём по порядку.
Рынок мобильных игр сегодня под завязку забит приложениями, созданными в готовых игровых движках. Каждый школьник может за несколько часов создать клон Flappy Bird, напичкать его рекламой за пару кликов и выложить на просторы интернета. Хорошо ли это? С точки зрения того, что это будет некоторый, возможно, полезный опыт для него — да, а с точки зрения игрового рынка — нет. Потому что среди горы подобных произведений быстро теряются реально уникальные и качественные проекты, которые так же могли быть созданы в конструкторе, таким же школьником, но в них было вложено гораздо больше времени и сил.
Отсюда выход только один — реклама и пиар, студии, разрабатывающие игры, просто вынуждены вкладывать ресурсы в рекламу не только, чтобы «победить» своих прямых конкурентов, но и чтобы просто быть замеченными.
Но, тем не менее, готовые движки, в умелых руках действительно сокращают время и, соответственно, стоимость разработки. Отсюда можно сделать простой вывод: проблема не в том, что существуют готовые решения, а в их доступности, в совокупности с тем, как просто сейчас выложить игру в открытый доступ при помощи онлайн магазинов.
Остаётся один вопрос, почему многие студии продолжают разрабатывать игры на С++? Во-первых, на изучение готовых решений необходимо время, которого у большинства студий с хорошо налаженной разработкой просто нет. Во-вторых, готовое решение не значит идеальное решение, поскольку довольно часто можно упереться в определенные ограничения, которые, либо сложно, либо вовсе невозможно обойти. Довольно часто это связано с производительностью, поскольку в готовом движке очень сложно делать какие-либо низкоуровневые оптимизации (в том числе специфические под разные платформы).
Теперь вспомним приведенный выше список возможностей, предоставляемых готовыми движками. Для разработки уникального продукта, для которого не достаточно возможностей и/или производительности готового решения, понадобиться реализовывать это всё вручную и кое-где подключать готовые библиотеки. Здесь нужны специалисты с хорошей подготовкой в различных направлениях, от программирования графики до работы с сетью, и чаще всего это разные люди. Стоимость разработки, естественно выше. Однако каждый раз всё с нуля никто не пишет и у каждой студии есть собственный движок. Да, вполне вероятно, что с точки зрения широких возможностей готовых решений — это «велосипеды», но они четко выполняют свои функции, чаще гораздо лучше, чем готовые решения в тех же ситуациях.
Подводя итог, остаётся вспомнить о тех людях, которые разрабатывают эти самые готовые движки, ведь их тоже кто-то разрабатывает. Всё идёт к тому, что отрасль «расслаивается», часть специалистов уходит в разработку инструментов, а другая часть будет эти инструменты использовать. И в первую очередь, затрагивая разработку игр, нужно вспоминать именно первых, поскольку в настоящем игровом движке десятки тысяч строк кода и большая его часть — это код низкого уровня, отвечающий за те самые рендеринг, сеть, звук и так далее. Ездить на автомобиле могут практически все, спроектировать его с нуля — единицы.