Разработка игр

Игровые движки: Unity, Unreal, Godot

Цели урока

  • Понимать архитектурные различия Unity (GameObject+Component), Unreal (Actor+Component) и Godot (Node tree)
  • Ориентироваться в лицензионных моделях трёх движков
  • Применять критерии выбора движка к конкретному типу проекта
  • Знать где каждый движок реально используется в индустрии

Предварительные знания

  • Введение в разработку игр

2005 год: трое датских разработчиков делают движок для Mac, потому что писать игры с нуля невыносимо. 2008: они добавляют поддержку iPhone - и случайно изобретают индустрию мобильных игр. К 2024 году больше половины всего, что запускается на телефонах мира, создано в их инструменте. Выбор правильного движка сегодня определяет, с каким комьюнити, инструментами и лицензионными ограничениями придётся работать годами.

  • **Unity:** Hollow Knight, Cuphead, Among Us, Pokemon GO, Beat Saber - от инди до мобильных хитов
  • **Unreal:** Fortnite, Final Fantasy VII Remake, The Matrix Awakens - передовая графика в реальном времени
  • **Godot:** Cassette Beasts, тысячи game jam проектов - open-source революция после Unity Runtime Fee

Три движка: параллельная история

Unity основан в 2005 году Николасом Фрэнсисом, Йоакимом Антэ и Дэвидом Хелгасоном - тремя датчанами, которые хотели сделать разработку игр доступной. Прорыв - поддержка iPhone в 2008 году. Unreal Engine создан Тимом Суини в 1998 году для шутера Unreal - движок использовался внутри Epic Games, пока в 2004 году не стал лицензироваться сторонним студиям. Godot - иная история: начат Хуаном Линиецки и Арьелем Манзуром в Аргентине в 2007 году, открыт как MIT в 2014. Три движка представляют три бизнес-модели: корпорация (Unity), экосистема (Epic/Unreal) и community-driven проект (Godot).

Unity

**50% мобильных игр и 60% AR/VR-приложений работают на Unity.** Hollow Knight, Among Us, Pokemon GO - всё это Unity. Движок выиграл массовый рынок не графикой, а доступностью: C# как основной язык, Asset Store с готовыми решениями и документация на каждый edge case.

Архитектура Unity построена вокруг **GameObject + Component**. Каждый объект в сцене - это GameObject, к которому прикрепляются компоненты: Transform (позиция), MeshRenderer (отображение), Collider (физика), пользовательские MonoBehaviour-скрипты. Нет GameObject без Transform - это фундаментальное ограничение дизайна.

Unity DOTS (Data-Oriented Technology Stack) - новая подсистема с настоящим ECS. Прирост 10-100x для массовых объектов за счёт Burst compiler и Jobs system. Но стиль программирования кардинально другой: struct-based, no inheritance, явный scheduling. Два движка внутри одного - выбирать нужно осознанно.

Сильные стороны: зрелый 2D-pipeline, Asset Store с тысячами готовых решений, огромное комьюнити. Слабые стороны: графика по умолчанию уступает Unreal, исторический GC в C# создавал hitches - хотя il2cpp и incremental GC существенно улучшили ситуацию.

Какой язык программирования является основным в Unity?

Unreal Engine

**Fortnite генерирует несколько миллиардов долларов в год - и работает на Unreal Engine.** Epic открыл исходный код движка не из альтруизма: больше разработчиков знают Unreal - больше игр выходит в Epic Games Store. Бизнес-стратегия превратилась в технический стандарт для AAA-индустрии.

Unreal предлагает два языка: **C++** для производительного кода и **Blueprints** - визуальный скриптинг (нод-граф). Blueprints позволяют дизайнерам создавать геймплей без программирования, что ускоряет прототипинг. Типичный pipeline: Blueprints для прототипа, C++ для оптимизации горячих путей.

Лицензия Unreal: бесплатно до 1 млн долларов выручки, затем 5% royalty. Для публикации в Epic Games Store - 0% royalty. Исходный код движка открыт для чтения и модификации (не open-source по лицензии, но доступен).

Unreal 5 (2022+) поднял планку: **Nanite** позволяет использовать модели с миллиардами полигонов без LOD (система автоматически управляет деталью), **Lumen** даёт динамическое глобальное освещение в реальном времени без запечённых лайтмапов, **World Partition** автоматически стримит открытые миры. Цена - высокие системные требования и долгая компиляция C++.

Сильные стороны: лучшая графика «из коробки», зрелый AAA-pipeline, Blueprints для быстрого прототипирования. Слабые стороны: долгая компиляция C++ (hot reload нестабильный), высокий порог входа, тяжёлый для мобильных платформ.

Что такое Blueprints в Unreal Engine?

Godot Engine

**Сентябрь 2023: Unity объявляет Runtime Fee - платить за каждую установку игры.** За 48 часов Godot получил 10-кратный рост загрузок. Среди компаний, объявивших о переходе, были Mega Crit (Slay the Spire), Re-Logic (Terraria), Innersloth (Among Us). Страх перед vendor lock-in материализовался в реальные миграции.

Основной язык - **GDScript**, специально созданный для Godot. Синтаксис похож на Python, но оптимизирован для геймдева: статическая типизация опциональна, встроенная интеграция с нодами. Также поддерживается C#, C++ (через GDExtension) и визуальный скриптинг.

Архитектура Godot - **дерево нод (nodes)**. Каждый объект - нод с типом (Sprite2D, CollisionShape2D, AudioStreamPlayer). Ноды объединяются в сцены, сцены вкладываются друг в друга. Сцена может быть переиспользована как нод - это близко к React-компонентам, но для игр.

Godot 4.0+ получил Vulkan-рендерер, улучшенный 3D-движок и GDExtension для C++-плагинов. Размер дистрибутива около 40 MB (Unity установщик ~2 GB, Unreal ~40 GB). Для game jam-а это критично: скачать и начать за 5 минут.

Сильные стороны: MIT-лицензия, малый размер, отличный 2D-pipeline, встроенный редактор анимаций и UI. Слабые стороны: 3D уступает Unity/Unreal, маленький asset marketplace, меньше корпоративной поддержки и готовых интеграций.

Какая лицензия у Godot Engine?

Сравнение движков

Нет «лучшего» движка - есть лучший движок для конкретной задачи. Astroneer и Rocket League сделаны на Unreal, хотя оба могли бы работать на Unity. Hollow Knight сделан на Unity, хотя сегодня команда, вероятно, выбрала бы Godot. Решение принимается в контексте команды, бюджета и целевой платформы.

ПараметрUnityUnrealGodot
ЯзыкC#C++ / BlueprintsGDScript / C# / C++
ЛицензияБесплатно (условия)5% после 1 млн доходаMIT (полностью свободная)
2DХорошоВозможно, но не фокусОтлично
3DХорошоЛучший в индустрииБазовый, растёт
МобильныеСтандарт отраслиТяжёлый для мобилокХорошо, легковесный
Кривая обученияСредняяВысокаяНизкая
Asset StoreОгромныйMarketplace (большой)Маленький, растёт
Размер дистрибутива~2 GB~40 GB~40 MB

**Для мобильных и 2D игр** - Unity или Godot. Unity даёт зрелый pipeline и Asset Store, Godot - простоту и свободу от royalty. **Для AAA и фотореалистичной графики** - Unreal. **Для инди и обучения** - Godot. **Для AR/VR** - Unity (широкая поддержка устройств: Quest, HoloLens, ARKit, ARCore).

Навыки переносятся между движками. Понимание game loop, ECS, шейдеров, физики, AI - универсально. Конкретный API изучается за недели, а фундаментальные концепции - за месяцы и работают везде.

Тренд 2024-2026: рост Godot и появление новых движков (Bevy на Rust, Stride на C#). Open-source движки набирают силу, а крупные движки конкурируют за AI-интеграцию: генерация ассетов, NPC-диалоги на LLM, процедурный контент.

Unreal Engine подходит только для AAA-проектов

Инди-разработчики успешно используют Unreal для стилизованных и небольших проектов. Примеры: Astroneer, Octopath Traveler, Rocket League.

Unreal бесплатен до 1 млн дохода, имеет Blueprints для быстрого прототипирования и зрелый инструментарий для любого масштаба. «AAA-only» - стереотип, основанный на маркетинге Epic.

Какой движок лучше всего подходит для инди-2D игры с нулевым бюджетом?

Ключевые идеи

  • **Unity** - C#, лидер в мобилках и AR/VR, огромный Asset Store, средняя кривая обучения
  • **Unreal** - C++/Blueprints, лучшая 3D графика (Nanite, Lumen), высокий порог входа
  • **Godot** - GDScript, MIT-лицензия, 40 MB, лучший 2D, идеален для инди и обучения
  • **Выбор зависит от проекта**, а фундаментальные знания (game loop, ECS) переносятся между движками

Связанные темы

Выбор движка определяет инструменты, но не меняет базовые концепции:

  • Введение в разработку игр — Game loop, ECS, input - концепции, которые реализованы в каждом из трёх движков
  • 2D рендеринг — Спрайты, тайлмапы, анимации - следующий шаг после выбора движка

Вопросы для размышления

  • Как скандал с Unity Runtime Fee повлиял на индустрию? Стоит ли делать ставку на open-source движки?
  • Если бы начинался новый проект сегодня, какой движок выбрать и почему?
  • Blueprints в Unreal vs GDScript в Godot - какой подход к «доступному программированию» лучше?

Связанные уроки

  • gd-01 — Game loop и ECS из первого урока - фундамент для понимания архитектуры движков
  • gd-03 — 2D-рендеринг следующий шаг после выбора движка
  • cg-01 — Компьютерная графика объясняет что происходит под капотом Nanite и Lumen
  • se-01 — Паттерны ПО - ECS, Component, Observer - прямо применяются в архитектуре движков
  • arvr-01 — AR/VR разработка строится на Unity как стандарте платформы
  • mob-01 — Мобильная разработка игр: Unity - стандарт de facto для iOS/Android
  • arch-04-cpu
Игровые движки: Unity, Unreal, Godot

0

1

Войти