1. Основы Godot Engine: интерфейс, система узлов, сцены и введение в GDScript
Основы Godot Engine: интерфейс, система узлов, сцены и введение в GDScript
Добро пожаловать в курс «Разработка игр на Godot: от кода до арт-дизайна и музыки». Это первая статья, и мы начнем с самого фундамента. Godot Engine — это мощный, бесплатный и открытый игровой движок, который стремительно набирает популярность благодаря своей легковесности и уникальной архитектуре. В отличие от других гигантов индустрии, Godot предлагает подход, который интуитивно понятен как программистам, так и дизайнерам.
В этой статье мы разберем философию движка, изучим его интерфейс, поймем, что такое узлы (Nodes) и сцены, и напишем свой первый скрипт на языке GDScript.
Первый запуск и интерфейс редактора
После скачивания и запуска Godot (мы будем использовать актуальную 4-ю версию) вас встретит Менеджер проектов. Здесь вы создаете новые проекты или импортируете существующие. Создав новый проект, вы попадете в основной редактор.
Интерфейс Godot может показаться перегруженным кнопками, но он логично разделен на четыре основные зоны (дока).
!Схема интерфейса Godot с выделенными ключевыми зонами: Сцена, Файловая система, Инспектор и Вьюпорт.
1. Док Сцены (Scene Dock)
Расположен обычно слева сверху. Здесь отображается иерархия всего, что находится в текущей активной сцене. Это ваше «дерево» объектов.2. Файловая система (FileSystem)
Расположена слева снизу. Это проводник по файлам вашего проекта. Здесь хранятся все ресурсы: скрипты, текстуры, звуки и сохраненные сцены.3. Инспектор (Inspector)
Находится справа. Это контекстное меню свойств. Если вы выберете любой объект в доке Сцены, в Инспекторе появятся все его настройки: позиция, цвет, текстура, прикрепленные скрипты и многое другое.4. Вьюпорт (Viewport)
Центральная и самая большая часть экрана. Это ваше «окно» в игровой мир. Здесь вы визуально расставляете объекты, настраиваете уровни и видите результат своей работы. Сверху над вьюпортом есть переключатели режимов: 2D, 3D, Script (редактор кода) и AssetLib.Архитектура Godot: Узлы и Сцены
Главная особенность Godot, отличающая его от Unity или Unreal Engine — это система узлов и сцен. Понимание этой концепции — ключ к успешной разработке.
Что такое Узел (Node)?
Узел (Node) — это базовый строительный блок игры. Представьте, что это кирпичик LEGO. Сам по себе один кирпичик может немногое, но у него есть конкретная функция. В Godot есть сотни типов узлов, каждый из которых делает что-то свое:
* Node2D: Базовый узел для 2D-объектов (имеет позицию и поворот). * Sprite2D: Узел, который умеет отображать картинку (текстуру). * Label: Узел для отображения текста. * AudioStreamPlayer: Узел для проигрывания звука.
Все узлы имеют общие свойства (например, имя), но специализированные узлы расширяют этот функционал.
Дерево сцены
Узлы организуются в иерархическую структуру — дерево. У каждого узла может быть только один Родитель (Parent) и сколько угодно Детей (Children).
> Важное правило Godot: Дети наследуют трансформации родителей. Если вы двигаете родительский узел, все его дети двигаются вместе с ним.
!Иерархическая структура персонажа: корневой узел управляет спрайтом, коллизией и камерой.
Что такое Сцена?
Сцена в Godot — это просто сохраненная ветка узлов. Но магия в том, что сцены могут быть вложены друг в друга.
Представьте, что вы создали сцену «Игрок». Она состоит из узла-персонажа, узла-спрайта и узла-звука шагов. Вы сохранили это как player.tscn. Теперь вы создаете сцену «Уровень 1». Вы можете просто перетащить файл player.tscn в сцену уровня, и Godot воспримет всего игрока как единый объект (экземпляр сцены).
В Godot всё является сценой: персонаж — это сцена, оружие в его руках — это сцена, уровень — это сцена, и даже главное меню — это сцена.
Введение в GDScript
Чтобы оживить наши узлы, нам нужен код. Godot использует собственный язык — GDScript. Он специально создан для этого движка и синтаксически очень похож на Python. Он динамически типизирован (хотя поддерживает и статическую типизацию) и глубоко интегрирован в редактор.
Создание скрипта
Чтобы добавить логику к узлу, нужно выбрать узел в доке Сцены и нажать иконку свитка с зеленым плюсом («Прикрепить скрипт»). Обычно имя скрипта совпадает с именем узла, а расширение файла — .gd.
Структура скрипта
Давайте рассмотрим базовый шаблон скрипта, который создает Godot:
Разберем ключевые элементы:
extends Node2D: Эта строка говорит движку, что наш скрипт наследует все свойства и методы узла Node2D. Это значит, что мы можем управлять позицией (position), поворотом (rotation) и масштабом (scale) прямо из кода.func _ready(): Это встроенная функция. Код внутри неё выполнится ровно один раз — в момент старта игры (или появления объекта).func _process(delta): Это сердце игрового цикла. Код внутри этой функции выполняется каждый кадр. Если ваша игра работает с частотой 60 кадров в секунду, эта функция будет вызвана 60 раз за одну секунду.Переменные и функции
Объявление переменных происходит с помощью ключевого слова var.
Понимание Delta (Дельта)
В функции _process(delta) есть аргумент delta. Это критически важная концепция для создания плавного движения.
Компьютеры работают с разной скоростью. На мощном ПК игра может выдавать 120 кадров в секунду, а на слабом ноутбуке — 30. Если мы будем просто прибавлять к позиции игрока 5 пикселей каждый кадр, то на мощном ПК игрок будет двигаться в 4 раза быстрее, чем на слабом. Это недопустимо.
Чтобы скорость была одинаковой везде, мы используем формулу движения с учетом времени:
Где:
* — новая позиция объекта.
* — текущая позиция объекта.
* — скорость (в пикселях в секунду).
* — время, прошедшее с отрисовки предыдущего кадра (в секундах). В коде это переменная delta.
Благодаря умножению на delta, если кадров мало (компьютер тормозит), delta становится больше, и персонаж «прыгает» дальше за один кадр. Если кадров много, delta очень маленькая, и персонаж двигается микрошагами. В итоге за одну секунду он пройдет одинаковое расстояние.
Практика: Движение объекта
Давайте напишем скрипт, который заставляет объект двигаться вправо.
Sprite2D.Sprite2D.Запустите сцену (кнопка Play или F6). Вы увидите, как иконка плавно уплывает вправо.
Координатная система Godot
Важно помнить, как устроены координаты в 2D пространстве Godot, так как они отличаются от школьной геометрии.
* Ось X: Направлена вправо (положительные значения). * Ось Y: Направлена вниз (положительные значения). * Точка (0, 0): Находится в левом верхнем углу экрана.
Если вы хотите поднять объект вверх, вам нужно уменьшать его координату Y.
Заключение
Мы рассмотрели интерфейс, разобрались с фундаментальной концепцией узлов и сцен, а также написали первый скрипт, использующий delta для независимого от частоты кадров движения. Это база, на которой строится любая игра в Godot.
В следующей статье мы углубимся в работу с вводом (Input), чтобы научиться управлять персонажем с клавиатуры, и разберем физический движок для создания столкновений.