~4 мин чтения

Стек Godot и его экосистема

Версии Godot 4.x, GDScript vs C#, рендер-пайплайны и ключевые пакеты.

Версии Godot

Godot работает в ветке 4.x с 2023 года (релиз 4.0 — март 2023). На май 2026:

  • Godot 4.6.3текущий stable (вышел 20 мая 2026). Минорная ветка 4.6 релизнута в январе 2026, патчи 4.6.1 (фев), 4.6.2 (апр), 4.6.3 (май) — стабилизация Jolt physics, фиксы редактора. Главные новинки 4.6: Jolt стал default-физикой для 3D, IK вернулся как нодовая система (TwoBoneIK3D, FABRIK3D, и ещё 5 солверов), новая editor theme (Modern), unified docking, переписанный SSR, LibGodot (движок как embedded-библиотека).
  • Godot 4.7 — в beta с апреля 2026, stable ожидается летом 2026. HDR-output на десктопе/iOS, AreaLight3D, VirtualJoystick для мобильных, ray-tracing improvements, wasm64 для веб-экспорта, встроенный Asset Store в редакторе.
  • WebGPU backend — в mainline 4.6 отсутствует / остаётся experimental на уровне proposal. Существует community-fork godotwebgpu от David Walter (база — 4.6.2, март 2026), включающий собственную WebGPU-имплементацию для Mobile renderer и compute shaders. Это не Godot Foundation проект. Производственный mainline WebGPU ожидается в 4.7+ или позже.
  • Godot 5 — будущее. Публичной даты нет; ломающий мажор традиционно “через годы”.
  • Godot 3.6 — последний релиз ветки 3.x, в режиме LTS (только багфиксы). Используйте, только если поддерживаете legacy-проект; для нового — 4.x.

Shader Baker (введён в 4.5, не в 4.6) — отдельная фича для precompile shaders при экспорте, снижает stutter при первом запуске сцены до 20× на Metal/D3D12. Действует прозрачно — настройка включения находится в Project Settings.

Политика версий проще, чем у Unity

Godot использует семвер. LTS — только предыдущий major (сейчас 3.x). Внутри 4.x минорные релизы идут вперёд, “сидеть на 4.4 вечно” не получится — кроме case’ов, когда вы шипите и замораживаете версию проекта.

Языки

GDScript — родной язык

Похож на Python синтаксически: отступы, def-style функции (но через func), динамическая типизация. Главные особенности:

  • Опциональная статическая типизация: var hp: int = 100, func attack(target: Enemy) -> void. Type-check на parse-time, ускоряет код на 28–59% за счёт пропуска Variant-диспетчера.
  • Typed arrays / dictionaries: Array[Enemy], Dictionary[String, int] (typed dictionaries появились в 4.4).
  • Аннотации через @: @export, @onready, @tool, @export_range, @export_enum, @export_file, @export_node_path.
  • Lambda-функции: var add = func(a, b): return a + b.
  • await вместо yield для асинхронности.
  • class_name MyClass extends Node — глобальная регистрация класса (виден в редакторе и из любого скрипта).
class_name Enemy extends Node3D

@export_range(1, 100) var max_hp: int = 50
@onready var sprite: Sprite3D = $Sprite3D

signal died(by: Node)

var hp: int

func _ready() -> void:
    hp = max_hp

func take_damage(amount: int, attacker: Node) -> void:
    hp -= amount
    if hp <= 0:
        died.emit(attacker)
        queue_free()

C# — для опытных .NET-разработчиков

Поддерживается, но с оговорками:

  • Нужна отдельная сборка редактора (“Godot .NET edition”). Скачивается с сайта или через Steam как отдельный SKU.
  • Требуется .NET 8 минимум (с Godot 4.4).
  • На веб-таргет не экспортируется — давнее ограничение, в работе через NativeAOT/.NET 10.
  • Поддерживает NativeAOT-экспорт для нативных платформ.
  • Объявлена долгосрочная стратегия “вынести .NET в плагин”, но сроков нет — TODO verify на момент чтения.
using Godot;

public partial class Enemy : Node3D
{
    [Export(PropertyHint.Range, "1,100")]
    public int MaxHp { get; set; } = 50;

    [Signal]
    public delegate void DiedEventHandler(Node by);

    private int _hp;

    public override void _Ready() {
        _hp = MaxHp;
    }

    public void TakeDamage(int amount, Node attacker) {
        _hp -= amount;
        if (_hp <= 0) {
            EmitSignal(SignalName.Died, attacker);
            QueueFree();
        }
    }
}

GDExtension — нативные плагины

Аналог Unity native plugins, но удобнее:

  • Динамическая библиотека (.dll/.so/.dylib) + манифест .gdextension. Не требует пересборки движка.
  • Официальные C++ биндинги — godot-cpp.
  • Зрелые сторонние биндинги: godot-rust (gdext) для Rust, godot-python — для Python.
  • Классы из GDExtension в редакторе неотличимы от core-узлов.
VisualScript удалён

Аналога Unity Bolt в Godot 4.x в core нет. VisualScript присутствовал в 3.x, в 4.0 удалён как малоиспользуемый (вынесен в отдельный модуль без поддержки). Если нужна визуальная логика — есть Visual Shader (для шейдеров), а для геймплея — community-плагины.

Рендер-пайплайны

В отличие от Unity, где выбираете один из трёх SRP при создании проекта, в Godot три рендерера переключаются в Project Settings, можно менять и в процессе (но материалы могут требовать адаптации).

RendererAPIКогда выбирать
Forward+Vulkan / Metal / D3D12Десктоп, консоли, hi-end. Clustered forward+, SDFGI, volumetric fog, SSR, SSAO.
MobileVulkan / Metal / D3D12Мобильные и desktop VR. Single-pass forward, лимит источников света.
CompatibilityOpenGL ES 3 / WebGL 2Слабое железо и единственный полностью рабочий путь для веба.

Compatibility в 4.3 объявлен feature-complete для нужд большинства проектов: lights, shadows, GI (lightmaps), GPU particles работают (с ограничениями).

Веб — это Compatibility

Если цель — браузер, выбирайте Compatibility renderer с самого старта. Forward+ и Mobile в WebGL не работают в полном объёме; mainline WebGPU-бэкенд пока отсутствует (community-fork godotwebgpu — отдельная история, см. секцию выше).

Ключевые системы и узлы

Vocabulary Godot, который понадобится:

  • Scene tree — главное дерево узлов в работающей игре.
  • Node — атомарный объект, обычно с одним скриптом. У всех узлов одинаковые жизненные колбэки (_ready, _process, …).
  • PackedScene (.tscn) — сериализованная сцена. Аналог Unity Prefab + Scene в одном файле.
  • Resource (.tres / .res) — data-only ассет, рефкаунт. Аналог ScriptableObject.
  • Signal — встроенный pub-sub, объявляется на любом узле.
  • Group — лейбл для категории узлов. Заменяет Unity-теги в задачах “найти всех врагов”.
  • NavigationServer3D, PhysicsServer3D, RenderingServer, AudioServer — низкоуровневые синглтоны, на которые опираются высокоуровневые узлы.

Tooling и экосистема

  • Встроенный script editor в редакторе Godot — приличный для GDScript: LSP, autocomplete, multi-cursor, debugger с remote scene tree.
  • Внешние редакторы:
    • VS Code / Cursor через расширение godot-vscode-plugin (LSP + DAP-дебаг).
    • JetBrains Rider — first-class для C#-проектов; для GDScript конфигурируется тем же LSP.
  • Asset Library в редакторе (вкладка AssetLib) — старый, фактически deprecated.
  • Asset Library (встроена в редактор 4.6 — вкладка AssetLib) — старая система, через которую ставятся community-плагины (Phantom Camera, Dialogic, Terrain3D и др.). Остаётся актуальной в 4.6.
  • Godot Asset Store (анонс 2025, развитие 2026) — новый внешний портал с аккаунтами, рейтингами, планируемой поддержкой платных ассетов. Интеграция в редактор намечена на 4.7. На 4.6 это отдельный сайт, не AssetLib-замена.
  • Version control через .gitignore (Godot сам генерирует при включении в настройках). Игнорируйте .godot/, export/, build/. Коммитьте *.tscn, *.tres, *.gd, *.gdshader, *.import, project.godot.
`.import`-файлы коммитим, не игнорируем

Каждый ассет в Godot получает рядом .import-файл с настройками импорта (compression mode для текстуры, scale для модели и т.д.). Эти файлы важно коммитить — иначе при клонировании репозитория на другой машине настройки потеряются.

Главные плагины из Asset Store

В дополнение к встроенному:

  • Phantom Camera — Cinemachine-аналог для 2D и 3D: follow, look-at, host-system, triggers. Если нужна сложная работа с камерой — это первый stop.
  • Dialogic — система диалогов и квестов.
  • Terrain3D — нативный terrain (Godot core не имеет встроенного terrain).
  • Beehave или LimboAI — behavior trees / state machines для AI.
  • GUT — unit-testing.
  • gd-plug — менеджер плагинов через plug.gd.

В следующей главе — главный материал: всё про 3D-разработку в Godot.