Сцены и узлы

Введение

../../_images/chef.png

Забудьте на минуту, что вы – разработчик видеоигр и вместо этого представьте себя в роли шеф-повара! Скиньте с себя хипстерский фасон и вместо этого наденьте поварской колпак и жакет. Теперь все, что от вас требуется – это создавать новые и вкусные рецепты для ваших гостей.

И так же, как именно шеф-повар создает рецепт? Каждый рецепт разделён на две части: в первой приведён список ингридиентов, а во второй – последовательность их приготовления. Таким образом, каждый имеет возможность приготовить блюдо по созданому рецепту и насладиться вашим великолепным творением.

Создание игр в Godot очень похоже на то, что делают на кухне. На этой кухне узлы похожи на холодильник, полный свежих ингредиентов, из которых можно готовить блюдо.

Существует множество типов узлов. Некоторые показывают изображения, другие воспроизводят звук, другие узлы отображают 3D-модели и т.д. Их десятки.

Узлы

Но давайте начнем с основ. Узлы являются фундаментальными строительными блоками для создания игры. Как упоминалось ранее, узел может выполнять множество специализированных функций. Однако любой используемый узел всегда имеет следующие атрибуты:

  • У него есть имя.
  • Он имеет редактируемые свойства.
  • Он может получать обратный вызов для обработки каждого кадра.
  • Он может быть расширен (чтобы иметь больше функций).
  • Он может быть добавлен к другому узлу (ноду) в качестве дочернего.
../../_images/tree.png

Еще одно важное замечание. У узлов могут быть другие узлы в качестве дочерних. При расположении таким образом узлы образуют дерево.

Способность располагать узлы таким образом создает мощный инструмент для организации проектов. Поскольку разные узлы имеют разные функции, объединение их позволяет создавать более сложные функции.

Не беспокойтесь, если не разобрались в этом. Мы продолжим изучение этого в следующих нескольких разделах. Самое важное, что нужно запомнить на данный момент - это то, что узлы существуют и могут быть организованы таким вот образом.

Сцены

../../_images/scene_tree_example.png

Теперь, когда концепция узлов определена, следующим логическим шагом является объяснение того, что такое Сцена.

Сцена состоит из группы узлов, организованных иерархически (в виде дерева). Кроме того, сцена:

  • всегда имеет только один корневой нод.
  • могут быть сохранены на диск и загружены обратно.
  • могут быть инстанцированы (подробнее об этом позже).

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

В целом, редактор Godot является редактором сцены. Он имеет множество инструментов для редактирования 2D и 3D-сцен, а также пользовательских интерфейсов, но основан он на концепции редактирования сцены и узлов, которые ее составляют.

Создание нового проекта

Давайте сделаем эти абстрактные понятия более конкретными на примере. Следуя давней традиции в учебниках, мы начнем с проекта «Hello World». Это введет нас в использование редактора.

Если вы запустите исполняемый файл Godot без проекта, появится Менеджер Проектов. Это помогает разработчикам управлять их проектами.

../../_images/project_manager.png

Чтобы создать новый проект, нажмите «Новый проект». Выберите и создайте путь для проекта, укажите его название «Новый проект»:

../../_images/create_new_project.png

Редактор

После того, как вы создали «Новый проект», откройте его. Запустится редактор Godot:

../../_images/empty_editor.png

Как упоминалось ранее, создание игр в Godot похоже на работу на кухне, поэтому давайте откроем холодильник и добавим свежие ноды в проект. Мы начнем с сообщения «Hello World!», которое поместим на экран.

Для этого нажмите кнопку «Создать узел» (который выглядит как символ плюс):

../../_images/newnode_button.png

Откроется диалоговое окно Создания Узла, показывающее длинный список узлов, которые могут быть созданы:

../../_images/node_classes.png

Здесь выберите нод «Label». Найти его через поиск, вероятно самый быстрый способ:

../../_images/node_search_label.png

Выберите «Label» и нажмите кнопку «Создать»:

../../_images/editor_with_label.png

В первую очередь, сцена меняется на 2D-редактор (потому что Label является 2D Узлом) и в верхнем левом углу окна просмотра появляется Ярлык.

Узел «Label» появляется в редакторе узлов сцены (поле в правом верхнем углу), а свойства узла отображаются в «инспекторе» (в нижнем правом углу).

Следующим шагом будет изменение свойства «Text». Изменим его на «Hello, World!»:

../../_images/hw.png

Хорошо, сцена готова! Нажмите кнопку «Воспроизвести сцену» справа вверху, над панелью редактора узлов сцены (или нажмите F6):

../../_images/playscene.png

Ииии… Ой.

../../_images/neversaved.png

Сцены должны быть сохранены перед запуском, поэтому сохраните сцену, например, как Hello.tscn через меню Сцена -> Сохранить:

../../_images/save_scene.png

И вот что забавное происходит. Диалоговое окно файла является специальным окном и позволяет сохранить его внутри проекта. Корень проекта - «res: //», что означает «путь ресурса». Это означает, что файлы могут быть сохранены только внутри проекта. В будущем, при выполнении файловых операций в Godot, помните, что «res: //» - это путь к ресурсам, вне зависимости от платформы или места установки, это способ найти, файлы ресурсов которые находятся внутри игры.

После сохранения сцены и повторного ее запуска, демка «Hello, World!» должна, наконец, запуститься:

../../_images/helloworld.png

Успех!

Примечание

If this doesn’t immediately work and you have a hiDPI display on at least one of your monitors, go to Project → Project Settings → Display → Window then enable Allow Hidpi under Dpi.

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

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

Эти настройки хранятся в файле project.godot, который является файлом открытого текста в формате win.ini (для удобства редактирования). Существуют десятки настроек, которые вы можете изменить в этом файле, чтобы изменить способ выполнения проекта. Чтобы упростить этот процесс, Godot предоставляет меню настроек проекта, который действует как своего рода интерфейс для редактирования файла project.godot.

Чтобы открыть это диалоговое окно, выберите меню Проект -> Настройки проекта. Попробуйте прямо сейчас.

Как только откроется окно, давайте выберем главную сцену. Найдите свойство Application/Run/Main Scene (Приложение/Запуск/Главная Сцена) и нажмите на него, чтобы выбрать „Hello.tscn“.

../../_images/main_scene.png

Теперь, после этих изменений, когда вы нажимаете кнопку Воспроизвести (или F5), эта сцена будет запускаться независимо от того, какая сцена редактируется в данный момент.

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

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

Продолжение следует…

В этом уроке рассказывалось о «сценах и узлах», но до сих пор была только одна сцена и один узел! Не волнуйтесь, следующий урок будет шире…