Что нужно знать о разработке игр

Что нужно знать о разработке игр

Как связаны языки программирования, физика и игровые движки.

За последние 30 лет игры из платформеров превратились в искусство. Зарплаты game-девелоперов конкурируют с доходом энтерпрайз-разработчиков. Но порог вхождения в профессию у первых выше. Если вы задумывались о разработке собственной игры, одного желания недостаточно.

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

Что учить, кроме языка

Разработчик игр — прежде всего инженер. Помимо программирования, он должен знать математику и физику. Все игры в разной степени отражают предметы реального мира, а их взаимодействие подчиняется законам. Например, для программирования простой физики отскока мяча вам нужно понимать, что такое коэффициент восстановления. Язык разработки менее важен — написать игру можно на любом.

Источник: gamemag.ru

Также девелопер должен уделять внимание оптимизации и производительности. Нужно учитывать, что игра может запускаться на системе с требованиями, далекими от рекомендуемых. Хорошее понимание алгоритмов и учет системных ресурсов — в приоритете. Например, работая в свободном игровом движке Unreal Engine, нужно учитывать, что при старте модуля загружаются все его зависимости и съедают ресурсы. Игра должна поддерживать стабильный фреймрейт.

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

Код или визуальное программирование

Сейчас игровым разработчикам доступно намного больше инструментов, чем 20–30 лет назад. Если для Wolfenstein Джон Кармак сам писал свой игровой движок, то коммерчески успешная Super Hot разрабатывалась на свободном Unity Engine.

Wolfenstein 3D
Источник: old-games.ru

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

Unity Engine
Источник: unity3d.com

Ограничение на выбор движка накладывает язык программирования — у каждого движка свой основной язык. При этом у движков есть инструменты для скриптового (визуального) программирования: Bolt у Unity и Blueprint — у Unreal. Пользуясь только визуальными инструментами, вы столкнетесь с ограничениями. Например, при работе с физикой объектов — реалистичная физика всегда пишется руками.

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

Инструмент для визуального программирования от Unreal Engine
Источник: answers.unrealengine.com

На инструменты разработки влияет и рынок. По данным App Annie, потребительские расходы в мобильном гейминге на 50% выше, чем в консольном или ПК. Поэтому создатели свободных движков начали упрощать разработку мобильных проектов. Свободных движков много, но большинство из них (Construct, Cocos2D, RPG Maker) предпочтительны для разработки аркад, квестов, hidden objects жанров. Также нужно учитывать, что часть функций бесплатных движков может быть доступна только в платной версии. Например, возможно ограничение количества программируемых действий у объектов, а это подталкивает рефакторить код.

Шедевр можно создать и на простом движке — например, Hotline Miami сделали на Game Maker. Любая разработка в небольших студиях сводится к противостоянию Unity Engine и Unreal Engine. В противовес этому, компании, которые разрабатывают ААА-тайтлы, стараются создавать собственные движки.

Unity Engine или Unreal Engine

Это самые крупные продукты для разработки игр (от казуальных до шутеров). Движки похожи с точки зрения подходов, инструментов и интерфейса, но Unity использует C#, а Unreal — С++. С помощью неофициальных плагинов можно подключить поддержку и других языков (например, Python).

У каждого движка — своя модель для коммерческой разработки. Например, если вы выбрали Unreal Engine, нужно будет платить 5% роялти после выхода на $1 млн выручки от игры.

Unreal лучше подходит для разработки игр с фотореалистичной графикой и выигрывает по производительности, но у Unity больше дополнительных ресурсов (ассетов), и он поддерживает большее количество платформ. Ассеты позволяют разрабатывать игры без найма художников и 3D-моделлеров. Вы просто находите и используете пак моделей. У Unreal для них есть Marketplace, а у Unity — Assetstore. Они содержат бесплатные продукты, но такие служат скорее для рекламных целей более продвинутых пакетов. Например, пак с бесплатными моделями цветов демонстрирует качество платного пака с набором деревьев от того же моделлера. Для серьезной разработки придется потратиться на сторонние ассеты.

Оба движка конкурентоспособны. Какой использовать — решает разработчик.

Ещё статьи
Как упростить разработку.
Data science, web development, gamedev и не только.