Игровой движок — это программная платформа, которая берёт на себя низкоуровневые задачи:
Разработчик сосредотачивается на логике игры, а не на том, как нарисовать пиксель на экране.
| Критерий | Godot 4.4 |
|---|---|
| Лицензия | MIT — полностью бесплатный и открытый |
| Язык скриптов | GDScript (похож на Python), C#, C++ |
| Платформы экспорта | Windows, Linux, Android, iOS, Web (Аврора — через community-плагин) |
| Размер движка | ~70 МБ (против гигабайтов у Unity/Unreal) |
| 2D-поддержка | Полноценный 2D-движок (не надстройка над 3D) |
Godot — отечественно-дружественный инструмент: открытый код, нет привязки к зарубежным сервисам, активное русскоязычное сообщество.
При запуске Godot открывается Менеджер проектов (Project Manager). Здесь можно создать новый проект или открыть существующий.
После открытия проекта вы видите:
Вьюпорт (Viewport) — центральная область. Здесь отображается сцена. Сверху можно переключаться между режимами: 2D, 3D, Script, AssetLib.
Дерево сцены (Scene Tree) — слева вверху. Показывает иерархию узлов текущей сцены. Здесь вы строите структуру игры.
Инспектор (Inspector) — справа. Показывает свойства выбранного узла. Здесь настраиваются позиция, размер, текстура и другие параметры.
Файловая система (FileSystem) — слева внизу. Показывает файлы проекта: сцены, скрипты, текстуры, звуки. Корневая папка проекта обозначается res://.
Панель вывода (Output) — внизу. Сюда выводятся сообщения print() и ошибки.
Узел — базовый строительный блок в Godot. Каждый элемент игры — это узел:
Каждый узел имеет:
Узлы организованы в дерево — иерархическую структуру. Верхний узел называется корневым (root). Все остальные — его потомки.
GameLevel (Node2D) ← корневой узел сцены
├── Background (Sprite2D) ← фон
├── Player (Node2D) ← контейнер для игрока
│ ├── Sprite (Sprite2D) ← изображение игрока
│ └── Collision (CollisionShape2D)
├── Obstacle (StaticBody2D) ← препятствие
│ ├── Sprite (Sprite2D)
│ └── Collision (CollisionShape2D)
└── UI (CanvasLayer) ← слой интерфейса
└── ScoreLabel (Label)
Ключевой принцип: дочерний узел наследует трансформацию родителя. Если переместить Player, его Sprite и Collision переместятся вместе с ним.
Godot содержит сотни типов узлов, но для 2D-игр основные:
| Узел | Назначение |
|---|---|
Node |
Абстрактный контейнер, не имеет позиции |
Node2D |
Базовый 2D-узел с позицией, поворотом, масштабом |
| Узел | Назначение |
|---|---|
Sprite2D |
Отображает текстуру (изображение) |
AnimatedSprite2D |
Спрайт с покадровой анимацией |
Camera2D |
Камера, определяющая область обзора |
CanvasLayer |
Отдельный слой отрисовки (для UI поверх игры) |
| Узел | Назначение |
|---|---|
StaticBody2D |
Неподвижный физический объект (стены, платформы) |
RigidBody2D |
Объект, управляемый физическим движком (мяч, ящик) |
Area2D |
Зона-триггер (обнаруживает пересечения) |
CollisionShape2D |
Форма столкновения (дочерний узел физ. тел) |
| Узел | Назначение |
|---|---|
Control |
Базовый UI-узел |
Label |
Текстовая надпись |
Button |
Кнопка |
TextureRect |
UI-изображение |
| Узел | Назначение |
|---|---|
Timer |
Таймер с сигналом timeout |
AudioStreamPlayer |
Воспроизведение звука |
Sprite2D)Узел появится как дочерний к текущему выделенному.
Сцена — это сохранённое поддерево узлов. Файл сцены имеет расширение .tscn.
Примеры сцен:
main_menu.tscn — главное менюlevel_01.tscn — первый уровеньplayer.tscn — персонаж (переиспользуется на каждом уровне)coin.tscn — монета (создаётся много копий)Инстанцирование — это размещение копии (экземпляра) одной сцены внутри другой.
Как это сделать:
obstacle.tscn и сохраните еёlevel.tscnobstacle.tscn из панели «Файловая система» прямо на вьюпорт или в дерево сценыКаждый экземпляр — независимая копия. Можно менять позицию, масштаб. Но если изменить саму сцену obstacle.tscn, изменения отразятся во всех экземплярах.
Ресурс — любой файл, используемый проектом:
.png, .jpg, .svg).wav, .ogg).ttf).tscn).gd)Все ресурсы хранятся в папке проекта и адресуются через res://:
res://sprites/background.svg
res://scenes/level_01.tscn
res://scripts/player.gd
Чтобы назначить текстуру спрайту:
Sprite2DК любому узлу можно прикрепить скрипт — файл с кодом на GDScript (.gd).
Как прикрепить скрипт:
Godot создаст шаблон:
extends Node2D
# Вызывается один раз при добавлении узла в сцену
func _ready() -> void:
pass
# Вызывается каждый кадр (обычно ~60 раз в секунду, зависит от монитора)
func _process(delta: float) -> void:
pass
extends Node2D — указывает, от какого типа наследуется скрипт_ready() — вызывается при появлении узла в сцене_process(delta) — вызывается каждый кадр, delta — время между кадрами в секундахПодробнее GDScript будем изучать на следующем занятии.
| Понятие | Определение |
|---|---|
| Узел (Node) | Базовый элемент, выполняющий одну функцию |
| Дерево сцены | Иерархия узлов, определяющая структуру игры |
| Сцена (.tscn) | Сохранённое поддерево узлов, переиспользуемый компонент |
| Инстанцирование | Размещение копии сцены внутри другой сцены |
| Ресурс | Файл проекта (текстура, звук, скрипт) |
| Скрипт (.gd) | Файл с кодом, прикреплённый к узлу |