RU

Разработка игр, а все ли так просто?

Говоря про разработку игр сегодня, довольно часто мелькают мнения, что это довольно легко и просто. Достаточно взять готовый игровой движок, немного его освоить и вперёд к реализации игры своей мечты.

Готовые игровые движки, вроде Unity, Unreal Engine или CryEngine — это фактически конструкторы, не требующие глубоких знаний языков программирования. Они предоставляют разработчикам широчайшие возможности, вплоть до автоматической интеграции рекламных сервисов для мобильных игр. Таким образом, «порог вхождения» довольно низкий, а это означает, что большинству начинающих проще взять такой движок и работать с ним, чем годы изучать С++ в связке с OpenGL. Более того, чтобы разрабатывать приложения под разные мобильные платформы, нужно еще больше знаний, которые невозможно получить за пару месяцев без серьёзной подготовки. На рисунке 1 представлен скриншот редактора Unity.


Редактор Unity
Рисунок 1 — Редактор Unity

Что же по факту предоставляет большинство готовых движков? Например:

  • Рендер (графическая подсистема);
  • Звук;
  • Физика;
  • Сетевое взаимодействие;
  • Поддержка скриптовых языков;
  • Кроссплатформенность конечных приложений.

А, самое главное, по моему мнению — правильную архитектуру. Одному/двум людям понадобятся годы времени, чтобы на приемлемом уровне реализовать этот список вручную. Здесь уместно возразить, что существует множество готовых решений для каждого из пунктов по отдельности и это так, но опять же, имея под рукой все детали конструктора, его еще нужно правильно собрать.

Здесь можно сделать простой вывод: чтобы сделать игру много ума не нужно, нужен только готовый инструмент и немного терпения. Но обо всём по порядку.

Рынок мобильных игр сегодня под завязку забит приложениями, созданными в готовых игровых движках. Каждый школьник может за несколько часов создать клон Flappy Bird, напичкать его рекламой за пару кликов и выложить на просторы интернета. Хорошо ли это? С точки зрения того, что это будет некоторый, возможно, полезный опыт для него — да, а с точки зрения игрового рынка — нет. Потому что среди горы подобных произведений быстро теряются реально уникальные и качественные проекты, которые так же могли быть созданы в конструкторе, таким же школьником, но в них было вложено гораздо больше времени и сил.

Отсюда выход только один — реклама и пиар, студии, разрабатывающие игры, просто вынуждены вкладывать ресурсы в рекламу не только, чтобы «победить» своих прямых конкурентов, но и чтобы просто быть замеченными.

Но, тем не менее, готовые движки, в умелых руках действительно сокращают время и, соответственно, стоимость разработки. Отсюда можно сделать простой вывод: проблема не в том, что существуют готовые решения, а в их доступности, в совокупности с тем, как просто сейчас выложить игру в открытый доступ при помощи онлайн магазинов.

Остаётся один вопрос, почему многие студии продолжают разрабатывать игры на С++? Во-первых, на изучение готовых решений необходимо время, которого у большинства студий с хорошо налаженной разработкой просто нет. Во-вторых, готовое решение не значит идеальное решение, поскольку довольно часто можно упереться в определенные ограничения, которые, либо сложно, либо вовсе невозможно обойти. Довольно часто это связано с производительностью, поскольку в готовом движке очень сложно делать какие-либо низкоуровневые оптимизации (в том числе специфические под разные платформы).

Теперь вспомним приведенный выше список возможностей, предоставляемых готовыми движками. Для разработки уникального продукта, для которого не достаточно возможностей и/или производительности готового решения, понадобиться реализовывать это всё вручную и кое-где подключать готовые библиотеки. Здесь нужны специалисты с хорошей подготовкой в различных направлениях, от программирования графики до работы с сетью, и чаще всего это разные люди. Стоимость разработки, естественно выше. Однако каждый раз всё с нуля никто не пишет и у каждой студии есть собственный движок. Да, вполне вероятно, что с точки зрения широких возможностей готовых решений — это «велосипеды», но они четко выполняют свои функции, чаще гораздо лучше, чем готовые решения в тех же ситуациях.

Подводя итог, остаётся вспомнить о тех людях, которые разрабатывают эти самые готовые движки, ведь их тоже кто-то разрабатывает. Всё идёт к тому, что отрасль «расслаивается», часть специалистов уходит в разработку инструментов, а другая часть будет эти инструменты использовать. И в первую очередь, затрагивая разработку игр, нужно вспоминать именно первых, поскольку в настоящем игровом движке десятки тысяч строк кода и большая его часть — это код низкого уровня, отвечающий за те самые рендеринг, сеть, звук и так далее. Ездить на автомобиле могут практически все, спроектировать его с нуля — единицы.

Дополнительные материалы:

  1. Ошибки новичка в сфере разработки игр
  2. Провал длинною в год, или опыт разработки игры под Android