Разработка кликера на Godot: от первого клика до полноценной игры

Курс предназначен для абсолютных новичков и обучает основам движка Godot через создание динамичного кликера. Вы освоите GDScript, систему узлов и сигналов, создав проект с магазином, прогресс-баром и живым окружением.

1. Первое свидание с Godot: знакомство с интерфейсом и создание механики базового клика

Первое свидание с Godot: знакомство с интерфейсом и создание механики базового клика

Представьте, что вы решили построить дом, но вместо кирпичей у вас — бесконечное количество коробок, которые могут расширяться до размеров вселенной или сжиматься до атома. В Godot эти коробки называются «Сценами», и именно из них мы соберем наш кликер. Если вы когда-нибудь пытались собрать шкаф из IKEA без инструкции и в итоге получали портал в другое измерение — не переживайте. В Godot всё гораздо логичнее, хотя поначалу интерфейс может напомнить пульт управления космическим кораблем, где половина кнопок отвечает за гравитацию, а вторая — за варку кофе.

Анатомия Godot: где лежат ключи от квартиры

Когда вы впервые открываете Godot (версии 4.x), перед вами предстает пустой проект. Это ваш чистый холст. Но прежде чем рисовать, нужно понять, где лежат кисти, а где — ведро с краской. Интерфейс Godot разделен на четыре основные зоны, которые станут вашим домом на ближайшие недели.

  • Сцена (Scene Tree) — Левый верхний угол. Это иерархия вашего мира. Здесь живут «Узлы» (Nodes). Представьте, что это список покупок, где каждый пункт — это объект: кнопка, картинка, звук или таймер. Важное правило: всё в Godot — это узел, и узлы любят собираться в стаи, называемые сценами.
  • Файловая система (FileSystem) — Левый нижний угол. Это ваш жесткий диск внутри движка. Сюда мы будем закидывать картинки котиков, звуки «пиу-пиу» и скрипты. Если вы потеряли файл, ищите его здесь.
  • Вьюпорт (Viewport) — Центр экрана. Это «окно в мир». Здесь вы будете двигать объекты, растягивать кнопки и смотреть, как ваша игра выглядит в реальности. Вверху вьюпорта есть переключатели между 2D, 3D, Скриптами и AssetLib. Нам пока нужно только 2D и Скрипты.
  • Инспектор (Inspector) — Правый бок. Самая важная панель. Когда вы выбираете узел в дереве сцен, инспектор показывает его настройки. Хотите изменить цвет кнопки? Идите в инспектор. Хотите сделать её прозрачной или огромной? Инспектор ждет вас.
  • > «Всё в Godot является узлом. Узлы объединяются в сцены. Сцены могут быть вложены в другие сцены. Это матрешка, где каждая кукла умеет стрелять лазерами или считать клики». > > Документация Godot 4.2

    Сцена и Узлы: строим фундамент кликера

    Давайте создадим нашу первую сцену. В кликере всё крутится вокруг интерфейса, поэтому нам нужна сцена типа «User Interface» (Пользовательский интерфейс). Нажмите на кнопку «+» в панели сцен и выберите Control. Переименуйте его в Main.

    Почему Control? В Godot есть три основных типа узлов, которые легко различить по цветам: * Синие узлы (Control): Всё, что касается интерфейса (кнопки, текст, полоски здоровья). Они умеют автоматически растягиваться под разные экраны. * Красные узлы (Node3D): Для тех, кто хочет делать новый Skyrim (нам пока не сюда). * Синие/Зеленые узлы (Node2D): Для игровых объектов в 2D (персонажи, пули, деревья).

    Наш кликер — это прежде всего интерфейс. Поэтому Control — наш лучший друг. Теперь добавим в него кнопку. Нажмите правой кнопкой на Main -> Add Child Node (Добавить дочерний узел) и найдите Button. В инспекторе, в поле Text, напишите «КЛИКНИ МЕНЯ!». Поздравляю, у вас есть игра. Ладно, шучу, пока это просто кнопка, которая ничего не делает, но мы это исправим.

    GDScript: как не бояться кода

    Чтобы кнопка начала считать клики, нам нужно написать скрипт. В Godot используется язык GDScript. Если вы видели Python, вы узнаете GDScript. Если вы не видели ничего, кроме Excel, то представьте, что это просто набор инструкций для очень исполнительного, но туповатого робота.

    Нажмите на узел Main и кликните на иконку свитка с плюсиком вверху панели сцен. Создайте новый скрипт main.gd. Вы увидите нечто подобное:

    Разберем это заклинание: * extends Control: Это говорит движку, что наш скрипт — это дополнение к узлу Control. Он наследует все его свойства (позицию, размер, цвет). * func _ready(): Эта функция выполняется один раз, когда игра запускается. Идеальное место, чтобы настроить начальные значения. * pass: Это просто заглушка, означающая «тут пока ничего нет, не ругайся, робот». * func _process(delta): Эта функция выполняется каждый кадр (обычно 60 раз в секунду). Сюда мы пишем то, что должно проверяться постоянно. Для простого кликера она нам пока не нужна, так что её можно смело удалить, чтобы не мозолила глаза.

    Переменные: где хранить наши миллионы

    Чтобы считать клики, нам нужно место в памяти. Для этого существуют переменные. Объявим переменную для счета в самом верху скрипта, сразу после extends:

    Слово var (сокращение от variable) говорит Godot: «Эй, зарезервируй мне коробочку под названием score и положи туда ноль». Теперь нам нужно, чтобы при нажатии на кнопку этот ноль превращался в единицу, двойку и так далее.

    Сигналы: нервная система вашей игры

    Как скрипт узнает, что вы нажали на кнопку? Через Сигналы. Это одна из самых мощных фишек Godot. Представьте, что кнопка — это колокол. Когда по нему бьют (кликают), он издает звук. Скрипт «слышит» этот звук и выполняет действие.

  • Выберите узел Button в дереве сцен.
  • В правой части экрана, рядом с вкладкой «Inspector», найдите вкладку «Node» (Узел).
  • Там вы увидите список сигналов. Нам нужен pressed().
  • Дважды кликните по нему и выберите наш узел Main. Нажмите «Connect».
  • Godot сам создаст в скрипте функцию _on_button_pressed(). Теперь напишем внутри неё логику:

    Теперь нажмите F5 (или кнопку Play вверху справа). Godot попросит выбрать главную сцену — выбирайте main.tscn. Нажимайте на кнопку и смотрите в нижнюю панель «Output» (Вывод). Там будут появляться ваши цифры. Вы официально создали механику клика!

    Вывод текста: чтобы игрок видел свои достижения

    Печатать цифры в консоль разработчика — это круто, но игрок этого не увидит. Нам нужно вывести счет на экран. Для этого добавим еще один узел в MainLabel (Текст). Переименуйте его в ScoreLabel.

    В инспекторе в поле Text напишите «Счет: 0». Чтобы текст выглядел солидно, в разделе Label Settings можно создать новый ресурс настроек и изменить размер шрифта. Но как передать значение score из кода в этот текст?

    Вернемся в скрипт. Нам нужно как-то обратиться к узлу ScoreLabel. В Godot 4 это делается очень просто через символ ScoreLabel.text = "Счет: " + str(score) gdscript var click_power = 1

    func _on_button_pressed(): score += click_power update_ui()

    func update_ui(): Button/ScoreLabel. Следите за иерархией!

  • Забытый сигнал: Если вы написали код функции _on_button_pressed, но не «приконнектили» сигнал в панели Node, ничего не произойдет. Кнопка будет нажиматься, но скрипт останется глухим к её мольбам.
  • Мы заложили фундамент. У нас есть сцена, узел управления, переменные и связь между действием игрока (клик) и реакцией системы (изменение счета). На следующем этапе мы превратим это в настоящую магию, добавив визуальные эффекты и заставив интерфейс «дышать» при каждом нажатии. Но пока — похвалите себя. Вы только что создали ядро игровой механики.