Спойлеры: наверное, нет!

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

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

Время отказа от ответственности: я не эксперт по разработке игр - я опубликовал ровно ноль игр, хотя, должно быть, я сделал более сотни ужасных, сломанных прототипов игр. Я, однако, совершенно невротичен, когда дело касается принятия любого долгосрочного решения, и выбор правильного инструмента развития может быть долгим обязательством. Я потратил бесчисленные часы своей жизни (например, целых пять часов) на эти выборы, так что вам не обязательно! Теперь я достаточно занизил ваши ожидания, давайте попробуем.

Что, черт возьми, за игровой движок?

Есть два способа думать об игровых движках, и от того, какое определение вы подпишетесь, вероятно, будет зависеть, стоит ли вам пытаться создать его с нуля или использовать один из многих коммерческих движков, представленных на рынке.

Игровые движки - это инструменты

В случае движков общего назначения, таких как Unreal, Unity или CryEngine, движок, по сути, представляет собой набор инструментов, выходящих за рамки простого языка программирования, которые, вместе взятые, могут серьезно ускорить процесс создания игры. Конкретный набор инструментов сильно различается между движками, но обычно включает в себя такие вещи, как редактор уровней / сцен, конвейер контента для обработки изображений и звука, а также набор инструментов для решения общих проблем, таких как обнаружение столкновений, анимация таблицы спрайтов и т. Д. Многие из этих движков родились из конкретной игры во время ее разработки - Crysis породила CryEngine; Unreal породил Unreal Engine.

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

Если вы хотите узнать больше об игровых движках как об инструментах, я рекомендую посмотреть это отличное видео от TheHappieCat.

Игровые движки - это игры

В былые времена, до появления движков общего назначения, игры создавались в основном без промежуточного программного обеспечения, кодировались непосредственно из графических API.

Разработчики не начали возиться с инструментами, они просто начали создавать игру, а инструменты и подсистемы, выросшие в результате ее разработки, сформировали движок. Эти системы иногда повторно использовались в более поздних проектах, но так же часто этого не происходило. И это нормально; Если вы не создаете одну и ту же игру снова и снова (глядя на себя, Ubisoft / Warner Bros / Activison / ладно, я думаю, это все студии AAA), потребности каждого проекта будут очень разными.

Если вы хотите узнать больше об этой философии, прочтите классический пост Пишите игры, а не движки.

Итак, делать собственный двигатель или нет?

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

Если вы хотите создать и опубликовать игру как можно быстрее, будь то для получения прибыли или в качестве портфельного проекта, вам почти наверняка следует использовать проприетарный движок. Предоставляемые ими инструменты могут значительно сократить время разработки и упростить многие из более сложных аспектов программирования графики. (Редкое) исключение из этого правила будет, если ваша игра имеет определенные требования к производительности, выходящие за рамки / возможности универсального движка.

Если ваша цель - развить свои навыки программиста и углубить понимание базовой игровой архитектуры, то создание собственного движка может оказаться чрезвычайно полезным. Кроме того, если у вас есть дополнительное время и необходимые навыки, использование собственного двигателя может принести практическую пользу. Вы будете контролировать логику игры на каждом уровне - ничто не будет запутано или закрашено в черный ящик, как во многих коммерческих движках. Вам не придется беспокоиться о лицензировании, распределении доходов или дополнительных затратах на платформу. Не будет никаких сомнений в том, будет ли поддерживаться ваш движок через пару лет. Наконец, если вы все построили сами, то выявить ошибки и проблемы с производительностью будет намного проще. Это, конечно, при условии, что вы сделаете свой двигатель хорошо… плохо спроектированный, неэффективный двигатель может не запустить Pong со стабильной частотой кадров.

Надеюсь, это ответит на некоторые ваши вопросы об игровых движках - если нет, дайте мне знать в комментариях!

Мо работает в Microsoft, пишет документацию по API для разработчиков приложений Windows. В свободное время он проводит ужасные видеоигры, ужасную музыку и скучные статьи, подобные этой. (Хотя он довольно хорошо насвистывает.)