На чём создавать игры: что есть что в мире геймдева
Так много разных инструментов для создания игр, что голова идёт кругом. Разбираемся, что это вообще такое и что выбрать для себя.
vlada_maestro / shutterstock
Сохранитесь и подпишитесь: наш Telegram-канал «Чекпоинт» — уютное место, где мы рассказываем об играх и о том, как они создаются.
Unity, Unreal Engine, Godot, Game Maker Studio, Source, RPG Maker, CryEngine, Creation Engine, C++, C#, JavaScript, Swift, Java, Objective-C, Lua, Python, PyGame, PHP, Scratch, DirectX, PhysX, OpenGL, Havok, Cocos2D…
Большой список, не правда ли? Это только часть технологий, которые используются для создания игр. Если вы очень хотите войти в геймдев, но пока ещё ничего не знаете, сам этот список может вас отпугнуть. Или же по чьему-нибудь совету вы что-то выберете, а потом, освоившись немного, поймёте, что это не совсем то, что вам нужно.
Эта статья — смесь энциклопедии и дорожной карты, которая поможет вам выбрать инструментарий для себя.
Что есть что
Движки для разработки игр
Игры создаются с помощью движков — набора инструментов, который позволяет работать с графикой, физикой, скриптами и прочим.
Вот скриншот интерфейса движка Unity:
В левом верхнем углу — игровая сцена, на которую можно добавлять объекты, двигать их, убирать и так далее. Ниже расположено игровое окно — в нём можно увидеть, как будет выглядеть готовая игра. Можно даже нажать на кнопку Play и поиграть.
Дальше можно увидеть иерархию объектов на сцене, файловый менеджер и вкладку Inspector — в ней есть разные настройки для выбранного объекта. Кроме того, можно зайти в настройки проекта и указать желаемые показатели для гравитации, освещения, теней, качества графики и всего прочего.
Также у движка есть поддержка скриптов и API. Скрипты помогают вам писать команды, которые будут выполняться игрой всё время или после каких-то действий игрока. API же помогает упростить написание скриптов. То есть вы не проводите сложных математических расчётов, чтобы изменить положение или вращение объекта, — вы просто пишете команду вроде «Юнити, поверни объект А на 5 градусов по оси X».
Вы либо используете готовый движок, либо пишете свой — у обоих вариантов есть плюсы и минусы.
Плюсы
Готовый движок
- Всё уже сделано за вас — вам нужно только использовать готовые инструменты, чтобы реализовать свои идеи.
- Есть сообщество — другие разработчики, которые пользуются этим же движком, могут вам помочь. Кто-то пишет статьи или снимает ролики для YouTube, ну и просто на StackOverflow можно задать вопрос.
- Большинство движков позволяют в пару кликов портировать игру на другую платформу. Иногда нужно повозиться — например, адаптировать управление под тачскрин или геймпад.
- Есть бесплатные варианты — скачал, и сразу в бой.
- У многих движков есть магазины с готовыми скриптами, моделями, эффектами и прочими полезностями.
Самописный движок
- Максимальная свобода.
- Заточенность под ваши нужды: вы сами решаете, что будет в вашем движке.
- Хорошая оптимизация: отсутствие лишних модулей делает игру легче.
- Интуитивность: вы будете ориентироваться в движке с закрытыми глазами.
Минусы
Готовый движок
- Иногда вам могут попасться баги, с которыми ничего нельзя сделать — только ждать, пока авторы движка что-то исправят.
- Меньше свободы.
- Вы соглашаетесь с лицензией — иногда приходится делиться частью прибыли.
- Авторы могут бросить или переделать ваш любимый движок.
- Много того, что вам никогда не потребуется, — а это раздувает размер игры.
Самописный движок
- Долго.
- Дорого.
- Требует больших знаний.
- Ошибки в проектировании могут похоронить не только игру, но и сам движок.
- Дополнительные затраты на портирование.
Список современных движков:
- Unity;
- Unreal Engine 4;
- CryEngine 3;
- Source, Source 2;
- Creation Engine;
- Godot;
- Cocos2D;
- Game Maker Studio 2;
- RPG Maker и другие.
Впрочем, вы можете обойтись и без движка, если игра очень маленькая, вроде браузерки или небольшого платформера.
Языки программирования
Дальше идут языки программирования — с их помощью вы будете писать для компьютера условия и команды: если А, сделай Б, а если В, сделай Д. Несмотря на то что движки берут на себя огромную часть работы, программировать придётся много.
Перемещение по меню, переход между локациями, управление персонажем, движение камеры, смена музыки, диалоги, система квестов — всё это и многое другое нужно будет запрограммировать. Не говоря уже об игровом искусственном интеллекте.
Если вы уже выбрали какой-то конкретный движок, то и язык нужно выбирать подходящий. Например, в Unity поддерживаются C# и JavaScript
(его модификация, которая называется UnityScript), а в UE4 — С++.
Список языков:
- C#;
- C++;
- Java;
- Python;
- Swift;
- Objective-C;
- JavaScript;
- PHP;
- Lua и другие.
Фреймворки
Вы можете использовать язык, чтобы написать игру без движка. Например, на JavaScript создаются браузерные игры, на C++ или C# — игры для компьютеров, на Java — для устройств на Android, и так далее.
Для этих языков есть либо библиотеки для работы с графикой, либо целые фреймворки для создания игр. Фреймворк — это каркас, почти готовое приложение. Разработчик просто дописывает для этого каркаса какие-то дополнительные функции, подгоняя его тем самым под свои нужды.
Разработчики игры Celeste решили отказаться от движков в пользу фреймворка XNA от Microsoft для языка C#. В итоге у них получился платформер с очень крутым управлением.
Использование библиотек или фреймворков, наряду с написанием собственного движка, даёт максимальную свободу. Но у вас пропадает возможность пользоваться графическим интерфейсом, а все настройки и параметры приходится писать с помощью кода.
Список фреймворков:
- XNA и MonoGame для C#;
- PyGame для Python;
- Pixi.JS и Babylon.JS для JavaScript;
- SceneKit и SpriteKit для Swift.
Библиотеки
Библиотеки, в отличие от фреймворков, не дают почти готовое приложение, но предоставляют определённые инструменты. Самый простой пример — библиотека Math (математика), которая есть практически в каждом языке программирования.
Использование Math позволяет вам без проблем возводить числа в степени, находить корни, искать модули, высчитывать синусы, косинусы и так далее. Вы не реализуете всё это самостоятельно, а просто вызываете нужную функцию и передаёте ей параметры.
В геймдеве используют более сложные библиотеки, которые позволяют работать с графикой или физикой. Например, графические библиотеки позволяют растрировать игровые объекты.
То есть разработчик не пишет для видеокарты инструкцию, какие пиксели ей выводить. Вместо этого он добавляет в игру спрайты (изображения)
или 3D-модели, а графическая библиотека сама высчитывает, как это должно выглядеть на мониторе.
Физические библиотеки берут на себя работу (сюрприз!) с физикой: ускорение свободного падения, закон сохранения энергии, импульсы, векторы — самые безобидные примеры.
Аналогичные библиотеки есть и для работы со звуком и другими аспектами игровой разработки.
Список графических библиотек:
- OpenGL;
- WebGL;
- DirectX.
Список физических библиотек:
- Havok;
- PhysX.
Впрочем, если вы используете какой-нибудь движок, то особо задумываться об этом не нужно.
Что из этого выбрать
Если вы новичок, то стоит начать с движка — это поможет лучше понять, как вообще строится процесс создания игр. Выберите один движок и создайте несколько проектов. При этом постарайтесь понять, что происходит под капотом. Если у вас есть опыт в программировании, всё равно начните с движка — причина та же.
Критерии выбора движка следующие:
- Сообщество — чем больше людей пользуются движком, тем активнее его будут развивать и тем больше по нему обучающих материалов.
- Вышедшие игры — по ним можно оценить возможности движка.
- Сложность — простота интерфейса, используемый язык.
- Поддерживаемые платформы — если вы собираетесь делать мобильные игры, убедитесь, что выбранный вами движок поддерживает такое портирование.
- Направленность — по названию Cocos2D понятно, что он рассчитан на двумерные игры.
Если хотите, почитайте отзывы, но они могут вас запутать. Так, многие не любят Unity, но разработчиков на нём становится всё больше.
Source
Например, на Source сделаны практически все игры от Valve вроде Half-Life и Portal.
Шутеры на Source получаются очень приятными, но и для других жанров он тоже подходит. Например, на нём была сделана Dark Messiah of Might and Magic.
Минус этого движка в том, что на самом деле вы будете создавать не игры, а моды на уже существующие игры от Valve. Также вы не сможете портировать игры на мобильные устройства или приставки, а обзор возможен только от первого лица (о вариантах обзора можно почитать здесь: «Камера в играх: как рассказать историю и показать мир»).
Unity
На Unity сделаны почти все современные мобильные игры, а также некоторые компьютерные. Выделить можно следующие:
- Mario Kart Tour;
- Life is Strange: Before the Storm;
- Superliminal;
- Mobile Legends: Bang Bang;
- Outlast и другие.
Большое преимущество движка — поддержка C#. Это мощный, но простой язык, поэтому вы достаточно быстро сможете заскриптовать первые проекты. Сам движок тоже несложный, поэтому его используют многие инди-разработчики.
Существует мнение, что в Unity невозможно сделать хорошую графику. За последние годы разработчики движка доказали, что это не так:
Godot
Многие считают его серьёзным конкурентом Unity: он поддерживает те же платформы, а также позволяет разрабатывать игры в 2D и 3D. Выбор языков в нём больше: C#, C++, Python, Nim, D и GDScript (напоминает Python).
Также большим плюсом является то, что у движка открытый исходный код, что говорит в пользу его оптимизации и безопасности.
Пока список игр, созданных в Godot, небольшой и крупных или нашумевших в нём очень мало.
Этот движок лучше пробовать тем, у кого есть опыт в программировании, — сообщество Godot ещё невелико, поэтому количество обучающих материалов удручает.
Unreal Engine 4
Первая игра на Unreal Engine появилась ещё в 1998 году. С тех пор их выходило ещё очень много — от первых игр из серии Harry Potter до Star Wars: Jedi Fallen Order.
Вот лишь некоторые примеры:
- Fornite;
- Mortal Kombat Mobile;
- Gears of War 4;
- Batman: Arkham City, Arkham Asylum и Arkham VR;
- DmC: Devil May Cry.
Также на UE4 идёт разработка S.T.A.L.K.E.R. 2. С полным списком можно ознакомиться здесь.
Минус этого движка в том, что он поддерживает в качестве языка скриптов только C++, который новичкам может показаться слишком сложным. Компенсируется это тем, что спрос на специалистов по Unreal Engine 4 больше, чем на разработчиков на других движках.
Стоит отметить, что 2D-игры на UE4 делать достаточно сложно, так как он предназначен для 3D.
Заключение
Надеюсь, эта статья помогла вам понять, какие технологии используются разработчиками и как выбирать инструменты для себя. Главное в первое время — сосредоточиться на чём-то одном. Это будет сложно, потому что вы часто будете натыкаться на холивары о том, что лучше.
Какого-то очевидного лидера здесь нет — каждый движок хорош там, где другие уступают. Поэтому в первую очередь нужно ориентироваться на то, что важно вам.
И если вы выбрали Unity или Unreal Engine 4, то у нас по ним есть отличные курсы с кучей проектов, челленджей и общением с другими студентами.