Основы разработки игр на Godot Engine с нуля

Интенсивный курс для начинающих, охватывающий интерфейс движка, базовый синтаксис GDScript, систему узлов и создание первой игровой логики. Программа построена на основе официальной документации и подготавливает к созданию полноценных 2D-проектов.

1. Знакомство с Godot: интерфейс редактора и настройка окружения

Знакомство с Godot: интерфейс редактора и настройка окружения

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

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

Почему Godot?

Godot — это движок с открытым исходным кодом. Это означает, что он принадлежит сообществу, а не корпорации. Как отмечают источники, он идеально подходит для новичков благодаря своей логике.

> Godot часто становится тем самым инструментом, где интерес не гаснет. Не потому что «легко», а потому что логично. Этот движок довольно быстро показывает подростку главное: любая игра — это набор объектов, правил и связей между ними. > > startoria.ru

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

Установка и настройка окружения

Первый шаг — получение самого движка. Вам не нужно регистрироваться или привязывать карту.

  • Перейдите на официальный сайт godotengine.org.
  • Нажмите Download.
  • Вы увидите две версии: Standard и .NET.
  • Какую версию выбрать? Для этого курса мы выбираем Standard версию. Она использует язык GDScript — это родной язык движка, который синтаксисом очень похож на Python. Он прост в изучении и глубоко интегрирован в редактор. Версия .NET нужна тем, кто хочет писать на C#, но для старта это создаст лишние сложности с настройкой внешних редакторов.

    Запуск

    Godot не инсталлируется в систему как обычные программы. Вы скачиваете ZIP-архив. Распакуйте его в удобную папку (например, C:\Games\Godot). Внутри будет один исполняемый файл. Запустите его.

    > Уникальность клиента Godot Engine в том, что он запускается автономно и не требует полноценной установки в операционную систему. > > skillbox.ru

    Менеджер проектов

    При первом запуске вы увидите Project Manager. Здесь будут храниться списки ваших игр. Нажмите кнопку New Project (Новый проект).

    Вам нужно задать три параметра: * Project Name: Название игры (назовите её MyFirstGame). * Project Path: Папка, где будут лежать файлы. Создайте отдельную папку для каждого проекта, чтобы файлы не перемешались. * Renderer: Технология отрисовки графики.

    О рендерерах: * Forward+: Для современных ПК. Лучшая графика, но требует хорошей видеокарты. * Mobile: Баланс между качеством и производительностью. Подходит для большинства задач. * Compatibility: Для старых устройств и веб-игр (HTML5).

    Для обучения рекомендую выбрать Mobile или Forward+. Нажмите Create & Edit.

    Интерфейс редактора: карта местности

    Когда проект откроется, вы увидите интерфейс, который поначалу может показаться перегруженным. Давайте разобьем его на понятные зоны. В центре всего находится Viewport (Окно просмотра) — это ваша сцена, ваш холст.

    1. Доки (Боковые панели)

    Интерфейс Godot состоит из панелей, называемых «доками».

    * Слева: Scene (Сцена). Здесь отображается иерархия объектов в текущем уровне. Всё, что есть в игре (персонаж, стена, звук), будет здесь в виде списка. * Слева снизу: FileSystem (Файловая система). Это ваш проводник. Здесь лежат картинки, скрипты, звуки и сохраненные сцены. Как пишут в руководствах, здесь можно делать всё то же, что и в обычном проводнике Windows. * Справа: Inspector (Инспектор). Самая важная панель для настройки. Если вы выберете любой объект в сцене, в Инспекторе появятся его свойства: координаты, цвет, текстура, размеры.

    2. Рабочие пространства (Сверху)

    Над центральным окном есть переключатели режимов: * 2D: Для работы с плоской графикой. * 3D: Для трехмерных сцен. * Script: Встроенный редактор кода. * AssetLib: Библиотека готовых ресурсов от сообщества.

    Мы начнем с режима 2D.

    Философия Godot: Узлы и Сцены

    Чтобы программировать на Godot, нужно понять его архитектуру. Она строится на двух понятиях: Node (Узел) и Scene (Сцена).

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

    Узел — это базовый кирпичик игры. У каждого узла есть своя функция. Например: * Sprite2D — узел, который умеет показывать картинку. * Label — узел, который показывает текст. * AudioStreamPlayer — узел, который проигрывает звук.

    Сами по себе узлы просты, но объединяя их, вы создаете сложные механизмы.

    Что такое Сцена?

    Сцена — это группа узлов, организованная в дерево. Персонаж — это сцена (в ней есть картинка, звук шагов, хитбокс). Уровень игры — это тоже сцена, в которую вложена сцена персонажа и сцены врагов.

    > В Godot игра строится из сцен и узлов. Сцена — это законченный элемент: уровень, персонаж, враг, меню. Узлы — это объекты внутри сцены: картинка, столкновение, скрипт, камера, звук. > > startoria.ru

    Дерево сцены (Scene Tree)

    Узлы выстраиваются в иерархию «Родитель — Ребенок» (Parent — Child). Это критически важно для понимания движения.

    Правило: Если двигается Родитель, вместе с ним двигаются все его Дети. Если вы повернете танк (Родитель), его башня (Ребенок) повернется вместе с ним.

    Координатная плоскость в 2D

    В школе мы привыкли к декартовой системе координат, где направлен вверх. В разработке 2D-игр (и в Godot в частности) это работает иначе.

    * Ось направлена вправо. * Ось направлена вниз. * Точка находится в левом верхнем углу экрана.

    Это значит, что если вы хотите опустить персонажа ниже, вы должны увеличивать его координату . Если хотите поднять — уменьшать.

    Математика движения

    Понимание координат подводит нас к первой формуле, с которой сталкивается разработчик: расчет новой позиции объекта. Даже если вы используете физический движок, полезно знать, как это работает «под капотом».

    Формула изменения позиции при равномерном движении:

    Где: * — новая позиция объекта (вектор координат ). * — текущая позиция объекта. * — вектор скорости (направление и быстрота движения). * — дельта времени (время, прошедшее с последнего кадра).

    Зачем здесь ? Компьютеры работают с разной скоростью. У кого-то игра выдает 60 кадров в секунду, у кого-то 144. Если просто прибавлять скорость к позиции каждый кадр, на мощном компьютере персонаж будет бегать быстрее. Умножение на делает движение плавным и независимым от мощности железа.

    Настройка редактора кода

    Godot имеет отличный встроенный редактор скриптов (вкладка Script). Для новичка он идеален: он знает все команды Godot, подсказывает ошибки и не требует настройки.

    Однако, некоторые разработчики предпочитают использовать внешние редакторы, такие как Visual Studio Code (VS Code), из-за их мощных плагинов и ИИ-помощников.

    > Далее устанавливаем [Visual Studio Code]. Эта IDE будет основным "окном в разработку" игры. > > habr.com

    Если вы решите использовать VS Code, вам потребуется установить расширение godot-tools. Но для нашего курса мы будем использовать встроенный редактор Godot, чтобы избежать технических проблем на старте и сосредоточиться на логике игры.

    Практика: Создаем первую сцену

    Давайте закрепим теорию практикой.

  • В панели Scene нажмите кнопку + Other Node.
  • В поиске введите Node2D и выберите его. Это базовый узел для 2D-игр.
  • Дважды кликните по имени узла и переименуйте его в World.
  • Теперь перетащите файл icon.svg из панели FileSystem прямо в центр экрана (во Viewport).
  • Вы увидите, что в панели Scene у узла World появился дочерний узел icon (или Sprite2D).
  • Нажмите Ctrl + S, чтобы сохранить сцену. Назовите её world.tscn.
  • Поздравляю, вы создали свою первую игровую сцену! Пока она статична, но в ней уже есть иерархия и объекты.

    Итоги

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

  • Godot не требует установки: Это портативная программа, работающая из папки.
  • Узлы и Сцены — основа всего: Игра состоит из сцен, а сцены — из иерархии узлов.
  • Координаты: В 2D ось направлена вниз. Точка — левый верхний угол.
  • Родитель-Ребенок: Трансформации (движение, поворот) родителя автоматически применяются к детям.
  • Инструментарий: Мы используем встроенный редактор кода и язык GDScript.
  • В следующей статье мы напишем первый скрипт и заставим нашу иконку двигаться по экрану.

    2. Архитектура движка: работа с Узлами (Nodes) и Сценами

    Архитектура движка: работа с Узлами (Nodes) и Сценами

    В предыдущей части курса мы установили Godot и настроили рабочее окружение. Теперь пришло время погрузиться в «мозг» движка. Понимание того, как Godot структурирует игру, сэкономит вам сотни часов отладки в будущем. В отличие от других движков, где часто используется компонентная система (Entity Component System), Godot полагается на уникальную иерархическую модель: дерево узлов.

    Узлы (Nodes): Атомы вашей игры

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

    Согласно документации, узлы — это фундаментальные строительные блоки.

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

    Ключевые характеристики Узла:

  • Имя: У каждого узла есть уникальное имя в пределах его родителя.
  • Свойства: Параметры, которые можно менять (позиция, цвет, громкость).
  • Callback-функции: Узлы могут выполнять код в каждом кадре (например, _process).
  • Расширяемость: К любому узлу можно прикрепить скрипт, чтобы добавить ему новое поведение.
  • Дерево сцены (Scene Tree)

    Узлы редко существуют в вакууме. Они объединяются в иерархию, называемую Деревом сцены. Это структура «Родитель — Ребенок» (Parent — Child).

    Правила иерархии

    Взаимодействие между родителем и ребенком подчиняется строгой логике, особенно в вопросах трансформации (позиции, поворота, масштаба).

    Главное правило: Дочерний узел всегда существует в системе координат родителя.

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

    Математика относительных координат

    Чтобы понять, где именно окажется объект на экране, движок постоянно пересчитывает локальные координаты в глобальные. Рассмотрим это на примере позиции по оси X.

    Где: * — итоговая координата объекта в игровом мире (на экране). * — глобальная координата родительского узла. * — координата дочернего узла относительно центра родителя (смещение).

    Пример: Представьте танк. Центр танка находится в точке пикселей от начала уровня. Башня танка сдвинута на пикселей вправо относительно центра танка. * * *

    Если танк поедет вперед и окажется в точке , башня автоматически окажется в точке , хотя её локальная координата () не менялась. Это избавляет вас от необходимости писать код для движения каждой отдельной части сложного объекта.

    Сцены: Молекулы игры

    Если узлы — это атомы, то Сцены — это молекулы. Сцена — это просто группа узлов, сохраненная в отдельный файл (обычно с расширением .tscn).

    В Godot нет жесткого разделения на «уровни», «префабы» или «чертежи», как в других движках. Здесь всё является сценой.

    * Главное меню — это сцена. * Игровой уровень — это сцена. * Персонаж игрока — это сцена. * Монетка — это сцена.

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

    Инстанцирование (Instancing)

    Сила сцен заключается в возможности создавать их копии — экземпляры (instances). Вы создаете сцену Enemy.tscn один раз: настраиваете спрайт врага, его хитбокс (зону столкновения) и скрипт поведения. Затем, внутри сцены Level1.tscn, вы можете добавить 50 копий сцены Enemy.

    Если позже вы решите, что враги должны быть зеленого цвета, вы меняете это только в файле Enemy.tscn, и все 50 врагов на уровне автоматически обновятся.

    Организация архитектуры

    При создании сложной игры новички часто путаются в связях. Как узлы должны общаться друг с другом? Существует золотое правило архитектуры Godot: «Call Down, Signal Up» (Вызывай вниз, сигналь наверх).

    1. Владение (Родитель управляет Детьми)

    Родительский узел знает о своих детях. Он может напрямую вызывать их методы или менять свойства.

    Пример кода (GDScript):

    2. Независимость (Дети не знают о Родителях)

    Дочерний узел (например, кнопка в меню или хитбокс врага) не должен знать, к кому он прикреплен. Если кнопка будет пытаться напрямую изменить переменную в родительском узле, вы не сможете переиспользовать эту кнопку в другом меню, где родитель называется иначе. Это приведет к ошибкам.

    Для общения «наверх» используются Сигналы.

    > Подключение к сигналу. Очень безопасно, но должно использоваться только для "реагирования" на поведение, а не для его запуска. По традиции, именами сигналов обычно служат глаголы прошедшего времени типа "вошел" (entered) или "предмет_собран" (item_collected). > > docs.godotengine.org

    Ребенок «кричит» (испускает сигнал): «Меня нажали!». А родитель, который владеет этим ребенком, «слышит» этот сигнал и реагирует на него.

    Корневой Viewport и MainLoop

    Когда вы запускаете игру, Godot создает SceneTree (Дерево сцены). Но что находится в самом верху?

  • OS (Операционная система): Запускает процесс.
  • MainLoop: Основной цикл движка.
  • Root (Корень): Это самый верхний узел типа Viewport (окно просмотра).
  • Ваша текущая сцена загружается как дочерний узел к этому корню (/root).

    > Это автоматически инстанцируется и настраивается при запуске сцены, нет необходимости тратить время на дополнительную работу. > > docs.godotengine.org

    Понимание этого важно, когда вы захотите получить доступ к глобальным данным или сменить сцену целиком (например, перейти из Меню в Уровень 1). Вы будете обращаться к SceneTree, чтобы заменить текущую активную сцену в корне.

    Итоги

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

  • Узел (Node) — минимальная единица игры. Имеет свойства и поведение.
  • Сцена (Scene) — сохраненная иерархия узлов. Работает как шаблон (чертеж).
  • Иерархия — дочерние узлы наследуют трансформации (позицию, поворот) родителя.
  • Инстанцирование — механизм создания множества копий одной сцены внутри другой.
  • Архитектура — Родитель управляет детьми напрямую, Дети общаются с родителем через Сигналы.