Основы разработки игр на Godot: от установки до первого проекта

Практический курс для начинающих, охватывающий установку движка, основы языка GDScript и создание первой 2D-игры. Программа построена на базе актуальных рекомендаций по архитектуре узлов и сцен [startoria.ru](https://startoria.ru/blog/the-first-godot-game/) и настройке окружения [habr.com](https://habr.com/ru/amp/publications/991516/).

1. Введение в Godot: установка движка и настройка рабочего окружения

Введение в Godot: установка движка и настройка рабочего окружения

Добро пожаловать в курс по разработке игр. Вы поставили перед собой отличную цель — научиться создавать игры, имея лишь идею и желание. Мы начнем с фундамента: разберемся, что такое Godot, как его установить и подготовить к работе.

Почему именно Godot?

Выбор игрового движка — это первое важное решение разработчика. Godot Engine за последние годы стал одним из самых популярных инструментов как для новичков, так и для инди-студий. Главное его преимущество — он полностью бесплатен и имеет открытый исходный код (Open Source). У него нет скрытых платежей, подписок или роялти: всё, что вы создадите, принадлежит вам на 100%.

Согласно официальной документации: > Godot — это универсальный 2D и 3D игровой движок, спроектированный для поддержки всех видов проектов. Вы можете использовать его для создания игр или приложений, которые можете затем выпускать на настольных или мобильных платформах, а также web. > > docs.godotengine.org

В отличие от других гигантов индустрии, Godot весит очень мало (менее 100 МБ) и не требует сложной установки. Он работает по принципу «скачал и запустил».

Шаг 1: Загрузка и выбор версии

Первым делом перейдите на официальный сайт godotengine.org в раздел загрузок. Вы увидите две основные версии движка. Важно выбрать правильную, чтобы избежать проблем в будущем.

Godot Engine (Standard) vs .NET (C#)

  • Godot Engine (Standard) — это стандартная версия. Она использует встроенный язык программирования GDScript. Этот язык специально создан для Godot, он очень похож на Python и идеально подходит для новичков. Он прост в изучении, но при этом достаточно мощен для создания сложных механик.
  • Godot Engine .NET — эта версия предназначена для тех, кто хочет писать код на языке C# (C Sharp). Если вы профессиональный программист и уже знаете C#, выбирайте этот вариант.
  • Рекомендация для курса: Мы будем использовать Standard версию и язык GDScript. Скачивайте именно её.

    Шаг 2: Установка (которой нет)

    Godot уникален тем, что он является портативным (portable) приложением.

  • Скачайте ZIP-архив с сайта.
  • Распакуйте его в удобную папку (например, C:\Games\Godot или D:\Dev\Tools). Избегайте папок с кириллицей в пути, чтобы исключить возможные ошибки.
  • Внутри архива находится один исполняемый файл (например, Godot_v4.x.x-stable_win64.exe).
  • Запустите этот файл.
  • Поздравляю, движок установлен!

    Шаг 3: Менеджер проектов и создание первой игры

    При первом запуске вы увидите Менеджер проектов (Project Manager). Это окно, где хранится список всех ваших игр. Изначально он пуст.

    Нажмите кнопку «New Project» (Новый проект). Откроется окно настройки:

  • Project Name: Придумайте название (например, MyFirstGame).
  • Project Path: Укажите пустую папку, где будут лежать файлы игры. Кнопка «Create Folder» создаст папку с именем проекта автоматически.
  • Renderer (Рендерер): Это важный технический момент. Godot 4 предлагает три варианта:
  • * Forward+: Для современных ПК. Лучшая графика, но требует мощной видеокарты. * Mobile: Оптимизирован для мобильных устройств, но работает и на ПК. * Compatibility: Поддержка старых устройств и веб-браузеров (OpenGL 3).

    Совет: Для обучения и простых 2D-игр выбирайте Compatibility. Это гарантирует, что проект запустится практически на любом компьютере без графических артефактов.

    Нажмите «Create & Edit».

    Шаг 4: Знакомство с интерфейсом

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

    1. Сцена (Scene Dock) — Слева сверху

    Здесь отображается иерархия вашего уровня. Всё в Godot состоит из Узлов (Nodes). Представьте, что ваша игра — это дерево, где «ствол» — это главный узел, а «ветки» — это персонажи, звуки, карты и интерфейс.

    2. Файловая система (FileSystem) — Слева снизу

    Это ваш склад ресурсов. Здесь лежат все картинки, скрипты, звуки и 3D-модели. Если вы перетащите файл с рабочего стола в эту панель, Godot автоматически импортирует его в проект.

    3. Инспектор (Inspector) — Справа

    Это панель свойств. Когда вы выбираете любой объект в сцене, в Инспекторе появляются его настройки: позиция, цвет, текстура, громкость звука и так далее. Именно здесь вы будете настраивать поведение объектов без написания кода.

    4. Вьюпорт (Viewport) — Центр

    Самое большое окно по центру — это ваш «холст». Здесь вы визуально расставляете объекты, строите уровни и видите, как выглядит игра.

    Настройка разрешения экрана: немного математики

    Прежде чем начать творить, важно задать размеры игрового окна. В 2D-играх мы работаем с пикселями. Перейдите в меню Project -> Project Settings -> Display -> Window.

    Допустим, мы хотим создать игру в HD разрешении. Нам нужно понимать, где будет находиться центр экрана, чтобы правильно разместить главного героя.

    Координаты центра экрана () рассчитываются как половина ширины () и высоты () экрана:

    где — координата центра по оси X, — координата центра по оси Y, — ширина экрана (Width), — высота экрана (Height).

    Если мы установим стандартное разрешение , то центр будет находиться здесь:

    Это значит, что точка — это идеальный центр вашего игрового мира. В Godot ось направлена вправо, а ось — вниз. Это отличие от школьной геометрии важно запомнить: чем больше , тем ниже находится объект.

    Настройка редактора под себя

    Чтобы работа была комфортной, можно настроить внешний вид редактора:

  • Перейдите в Editor -> Editor Settings.
  • В разделе Interface -> Theme вы можете изменить размер шрифта (Base Font Size) и масштаб интерфейса (Scale). Это особенно полезно, если у вас монитор с высоким разрешением (4K) или, наоборот, маленький экран ноутбука.
  • Итоги

    Мы успешно подготовили почву для разработки. Теперь у вас есть установленный инструмент и базовое понимание его структуры.

    * Godot не требует установки: достаточно распаковать архив и запустить файл. * Версия Standard: идеальна для начинающих и работы с GDScript. * Интерфейс: состоит из 4 главных зон (Сцена, Файловая система, Инспектор, Вьюпорт). * Координаты: ось Y в 2D-играх направлена вниз, а центр экрана — это половина его ширины и высоты.

    В следующей статье мы создадим нашу первую сцену и напишем первый скрипт.

    2. Архитектура Godot: работа со сценами, узлами и деревом объектов

    Архитектура Godot: работа со сценами, узлами и деревом объектов

    В предыдущей статье мы установили движок и познакомились с интерфейсом. Теперь пришло время заглянуть «под капот» и понять, как Godot думает. Если вы поймете философию узлов и сцен сейчас, то в будущем сможете создавать проекты любой сложности, от простых платформеров до масштабных RPG.

    Godot отличается от многих других движков (например, Unity или Unreal Engine) своим уникальным подходом к архитектуре. Здесь нет жесткого разделения на «префабы», «уровни» и «объекты». Здесь всё есть Сцена, и всё есть Узел.

    Что такое Узел (Node)?

    Узел (Node) — это самый маленький кирпичик вашей игры. Это фундаментальная единица построения в Godot. Представьте, что вы собираете конструктор LEGO. У вас есть разные детали: колеса, кирпичики, стекла, человечки. В Godot каждая такая деталь — это Узел.

    Каждый узел выполняет одну конкретную функцию, но делает это очень хорошо. Например:

    * Sprite2D: умеет только отображать картинку. * AudioStreamPlayer: умеет только воспроизводить звук. * Camera2D: определяет, что видит игрок. * Node (базовый): ничего не умеет, но отлично подходит для группировки других узлов.

    Согласно официальной документации: > Узлы — это фундаментальные строительные блоки вашей игры. Они подобны ингредиентам в рецепте. Существуют десятки их видов, которые могут отображать изображение, воспроизводить звук, представлять камеру и многое другое. > > docs.godotengine.org

    Три главных свойства узла

    Любой узел в Godot, независимо от его типа, обладает тремя ключевыми характеристиками:

  • Имя: У каждого узла есть уникальное имя в пределах его родителя (например, Player, Wall, Coin).
  • Свойства: Набор настраиваемых параметров (позиция, поворот, масштаб, текстура).
  • Иерархия: Узел может быть родителем для других узлов или дочерним элементом.
  • Дерево: Родители и Дети

    Сила Godot заключается в том, как вы соединяете узлы. Вы выстраиваете их в Дерево (Tree). Это классическая иерархическая структура, похожая на генеалогическое древо или структуру папок на вашем компьютере.

    Правило наследования трансформаций

    Самое важное правило, которое нужно запомнить новичку: Дочерний узел всегда движется вместе с Родителем.

    Представьте, что вы создаете танк.

  • Основа танка — это родительский узел.
  • Башня — это дочерний узел основы.
  • Дуло — это дочерний узел башни.
  • Если танк поедет вперед, башня и дуло поедут вместе с ним автоматически. Вам не нужно писать код, чтобы двигать каждую деталь отдельно. Если башня повернется, дуло повернется вместе с ней, но основа танка останется на месте.

    Математика позиционирования

    Давайте разберем это на языке математики. Позиция объекта в игровом мире (глобальная позиция) складывается из позиции его родителя и его собственной локальной позиции.

    Формула расчета глобальной координаты по оси X выглядит так:

    где — итоговая координата объекта в мире, — координата родительского объекта, — смещение дочернего объекта относительно родителя.

    Пример: Допустим, наш Герой (родитель) стоит в точке пикселей. У него в руках есть Меч (дочерний узел). Меч находится на расстоянии пикселей справа от центра Героя (локальная координата).

    Где находится Меч в мире?

    Если Герой сделает шаг вперед и переместится в точку , нам не нужно менять координаты Меча. Его локальная координата останется , но глобальная пересчитается автоматически:

    Это упрощает разработку в разы. Вы мыслите локально («меч в руке»), а движок сам считает глобально («где меч на карте»).

    Что такое Сцена (Scene)?

    Если Узел — это кирпичик, то Сцена — это собранная из кирпичиков конструкция, которую вы сохранили в файл.

    В Godot сценой может быть что угодно: * Один персонаж (состоит из узлов: тело, спрайт, анимация, коллизия). * Один предмет (монетка, сундук). * Целый уровень (состоит из сцен персонажа, врагов и карты). * Главное меню игры.

    Принцип матрешки (Инстансирование)

    Это главная архитектурная фишка Godot. Вы можете вкладывать одну сцену в другую.

    Вы создаете сцену Coin.tscn (Монетка). Настраиваете её один раз: добавляете картинку, звук сбора, анимацию вращения. Затем вы создаете сцену Level1.tscn и просто перетаскиваете туда сцену Coin 50 раз.

    В сцене уровня эти монетки будут выглядеть как обычные узлы. Но если вы захотите изменить цвет монетки, вы откроете файл Coin.tscn, поменяете цвет один раз, и он изменится во всех 50 монетках на уровне автоматически.

    Согласно документации: > Сцены позволяют вам структурировать код вашей игры так, как вы этого хотите. Вы можете компоновать узлы для создания произвольных и сложных типов узлов. > > docs.godotengine.org

    Дерево Сцен (Scene Tree)

    Когда вы запускаете игру, Godot берет вашу главную сцену и помещает её в оперативную память. Эта активная структура называется Scene Tree (Дерево Сцен).

    Важно понимать разницу:

  • Файловая система (внизу слева в редакторе): Это файлы на вашем жестком диске (.tscn, .png, .gd). Это ваш склад.
  • Дерево Сцен (вверху слева в редакторе): Это то, что происходит в игре прямо сейчас. Это иерархия активных узлов.
  • Корень всего (/root)

    У любого дерева есть корень. В Godot самым главным узлом является root. Он создается движком автоматически при запуске. Ваша игра (ваш уровень) добавляется как дочерний элемент к этому root.

    Путь к узлу в программировании похож на путь к файлу. Если у вас есть сцена Level, в ней есть Player, а у игрока есть Sprite, то путь будет выглядеть так:

    /root/Level/Player/Sprite

    Организация проекта: лучшие практики

    Чтобы не запутаться в собственных узлах через неделю работы, стоит сразу приучить себя к порядку. Сообщество Godot выработало стандарты именования.

    Именование узлов и файлов

  • Узлы (Nodes): Используйте PascalCase (КаждоеСловоСБольшойБуквы).
  • Хорошо:* PlayerBody, SpawnPoint, MainCamera. Плохо:* player_body, spawn point, mainCamera.
  • Файлы и папки: Используйте snake_case (все_маленькие_через_подчеркивание).
  • Хорошо:* player.tscn, level_01.tscn, icon.png. Плохо:* Player.tscn, Level01.tscn.

    Это важно, потому что разные операционные системы (Windows, Linux, macOS) по-разному относятся к регистру букв в файлах. Использование snake_case гарантирует, что ваша игра запустится везде без ошибок.

    > Используйте стиль snake_case для имён папок и файлов... Используйте PascalCase для имён узлов, так как это соответствует внутреннему стилю именования узлов. > > docs.godotengine.org

    Композиция вместо Наследования

    В классическом программировании часто используется наследование (Собака является Животным). В Godot чаще используется композиция (У Собаки есть Лай, у Собаки есть Хвост).

    Вместо того чтобы создавать сложный код для "Супер-Юнита", вы просто добавляете ему нужные узлы-способности: * Хотите, чтобы объект имел физику? Добавьте узел RigidBody. * Хотите, чтобы он издавал звук? Добавьте дочерний узел AudioStreamPlayer. * Хотите, чтобы он светился? Добавьте узел PointLight2D.

    Вы собираете сложные объекты из простых компонентов, как конструктор. Это делает архитектуру гибкой и понятной.

    Итоги

    Мы разобрали фундамент, на котором строится любая игра в Godot. Понимание этих принципов сэкономит вам сотни часов отладки в будущем.

  • Всё есть Узел: Узлы — это кирпичики с конкретными функциями (звук, картинка, физика).
  • Иерархия важна: Дочерние узлы наследуют трансформацию (движение, поворот, масштаб) от родителей.
  • Сцена — это сохраненная ветка: Вы можете создавать сложные объекты (сцены) и многократно использовать их в других сценах (инстансирование).
  • Порядок в именах: Узлы называем в PascalCase, файлы — в snake_case.
  • Дерево Сцен: Это активная структура вашей игры в памяти, начинающаяся с /root.
  • Теперь, когда мы понимаем теорию, в следующей статье мы перейдем к практике: создадим нашу первую сцену, добавим спрайт и напишем первый скрипт, чтобы заставить его двигаться.