Введение в Godot: Настройка проекта и создание базового интерфейса стола
Введение в Godot: Настройка проекта и создание базового интерфейса стола
Добро пожаловать в курс по разработке гибридной игры! Наша цель — создать уникальный проект, объединяющий стратегическую глубину Tower Defense (защита башни) и азартную механику Блэкджека (21). В этой игре карты будут служить ресурсами для постройки и улучшения башен, а удача при раздаче будет влиять на вашу способность сдерживать волны врагов.
В этой первой статье мы познакомимся с игровым движком Godot, настроим проект и создадим визуальную основу нашей игры — игровой стол.
Почему Godot?
Godot Engine — это бесплатный движок с открытым исходным кодом, который идеально подходит для 2D-игр. Его главная особенность — узловая система (Node system). В Godot всё является узлом: персонаж, звук, кнопка интерфейса и даже сам игровой уровень. Это делает структуру проекта логичной и гибкой.
Основные концепции
Перед тем как открыть редактор, важно усвоить два термина:
- Узел (Node): Базовый строительный блок. У каждого узла есть имя, свойства и способность выполнять скрипты.
- Сцена (Scene): Группа узлов, организованная в дерево. Сцена может быть персонажем, меню или целым уровнем. Сцены можно вкладывать друг в друга.
Шаг 1: Создание проекта
Запустите Godot. В окне менеджера проектов нажмите кнопку New Project (Новый проект).
- Project Name: Назовите проект, например,
BlackjackTD. - Project Path: Выберите пустую папку на вашем диске.
- Renderer: Для 2D-игры выберите Compatibility (ранее OpenGL ES 3). Это обеспечит максимальную совместимость со старыми устройствами и веб-браузерами.
- Нажмите Create & Edit.
Шаг 2: Знакомство с интерфейсом
Когда редактор откроется, вы увидите рабочее пространство, разделенное на несколько зон:
- Scene Tree (Дерево сцены): Слева (или справа, в зависимости от настроек). Здесь отображается иерархия узлов текущей сцены.
- FileSystem (Файловая система): Внизу слева. Здесь хранятся все ресурсы: скрипты, картинки, звуки.
- Viewport (Окно просмотра): Большая область в центре. Здесь вы визуально собираете игру.
- Inspector (Инспектор): Справа. Здесь настраиваются свойства выбранного узла (позиция, цвет, текстура).
Шаг 3: Настройка базовых параметров
Наша игра будет сочетать карточное поле и карту для защиты башен. Нам нужно достаточно места на экране.
- В верхнем меню выберите Project -> Project Settings.
- Перейдите в раздел Display -> Window.
- Установите Viewport Width (Ширина) на
1920. - Установите Viewport Height (Высота) на
1080. - В разделе Stretch установите Mode на
canvas_items. Это позволит игре корректно масштабироваться при изменении размера окна.
Шаг 4: Создание игрового стола
Теперь создадим нашу первую сцену. Это будет основной экран игры, где происходит всё действие.
Корневой узел
- В панели Scene нажмите кнопку 2D Scene. Это создаст корневой узел типа
Node2D. - Дважды кликните по имени узла и переименуйте его в
MainTable. - Нажмите
Ctrl + S(илиCmd + Sна Mac), чтобы сохранить сцену. Создайте папкуScenesи сохраните файл какMainTable.tscn.
Совет: Хорошая организация файлов критически важна. Сразу создайте папки
Scripts,AssetsиScenesв панели FileSystem, чтобы не запутаться в будущем.
Добавление фона
Так как у нас есть элементы казино (Блэкджек), сделаем классический зеленый суконный стол.
- Кликните правой кнопкой мыши на узел
MainTable-> Add Child Node (Добавить дочерний узел). - В поиске введите
ColorRectи выберите его. - Выделите новый узел
ColorRect. - В Инспекторе найдите свойство Color и выберите темно-зеленый цвет (например, Hex:
#2d5a27). - Чтобы фон покрывал весь экран, в верхней панели вьюпорта нажмите на иконку Anchors (Якоря) и выберите Full Rect (Полный прямоугольник).
Теперь у нас есть зеленый стол, готовый к размещению карт и башен.
Шаг 5: Создание зон интерфейса (UI)
В Godot для интерфейса используются узлы зеленого цвета, которые наследуются от класса Control. Они умеют автоматически выравниваться и менять размер.
Слой интерфейса
Чтобы интерфейс всегда был поверх игровых объектов (башен и врагов), мы используем специальный узел.
- Добавьте к
MainTableдочерний узелCanvasLayer. Назовите егоHUD(Heads-Up Display). - Все элементы интерфейса мы будем добавлять внутрь
HUD.
Зона руки игрока
Нам нужно место, где будут лежать карты игрока. Для этого идеально подойдет контейнер, который автоматически выстраивает элементы в ряд.
- Нажмите правой кнопкой на
HUD-> Add Child Node. - Выберите
HBoxContainer(Horizontal Box Container). Назовите егоPlayerHand. - Настроим его положение:
- Выберите
PlayerHand. - В меню Anchors выберите Bottom Center (Внизу по центру).
- В Инспекторе измените Custom Minimum Size (Минимальный размер), задав
y(высоту) равной200. Это зарезервирует место под карты. - Сместите его немного вверх, изменив Position Y или настроив Margin Bottom.
- Выберите
Зона колоды и дилера
Аналогично создадим место для колоды.
- Добавьте к
HUDузелControlи назовите егоDeckPosition. - Разместите его в правом нижнем углу или справа по центру, используя Anchors.
Теперь у нас есть структура:
MainTable(Node2D) — мир игры.ColorRect— фон.HUD(CanvasLayer) — слой интерфейса.PlayerHand(HBoxContainer) — место для карт.DeckPosition(Control) — место для колоды.
Шаг 6: Первый скрипт
Чтобы оживить игру, нам нужен код. В Godot используется язык GDScript, который очень похож на Python.
- Выберите корневой узел
MainTable. - Нажмите иконку свитка с зеленым плюсом (Attach Script) над деревом сцен.
- Убедитесь, что путь сохранения ведет в папку
res://Scripts/и имя файлаMainTable.gd. - Нажмите Create.
Откроется редактор скриптов. Вы увидите базовый шаблон:
extends Node2D
# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass
Давайте разберем, что здесь написано:
extends Node2D: Означает, что наш скрипт наследует все возможности стандартного 2D-узла.func _ready(): Эта функция вызывается один раз, когда сцена полностью загрузилась и появилась в игре. Это идеальное место для начальной настройки (например, перетасовать колоду).func _process(delta): Эта функция вызывается каждый кадр (обычно 60 раз в секунду).delta— это время, прошедшее с прошлого кадра. Здесь пишут логику движения и обновлений.
Для проверки работоспособности изменим функцию _ready:
func _ready():
print("Добро пожаловать в Blackjack Tower Defense!")
Запустите игру, нажав кнопку Play (треугольник вверху справа) или клавишу F5. При первом запуске Godot спросит, какую сцену считать главной — выберите Select Current. В нижней панели Output вы увидите наше приветственное сообщение.
Заключение
Поздравляю! Вы сделали первый шаг к созданию гибридной игры. Мы настроили проект, разобрались с системой узлов Godot, создали визуальную основу стола и написали первый скрипт.
В следующей статье мы займемся созданием карты как объекта: научимся программно создавать карты, присваивать им масти и номиналы, а также отображать их в руке игрока.