#1 Godot: 3D Platformer от BornCG. Пост, с которого всё началось

Та-дааам!
Та-дааам!

Я ужасно не люблю видеокурсы/видеогайды. КМК, прочитать информацию гораздо быстрее и понятнее, чем слушать бесконечный поток воды в поисках крупицы полезного. Тем не менее, если брать сухой остаток, то из-за своей наглядности обучающие видео довольно полезны. Поэтому у меня родилась идея совместить приятное с полезным: дело в том, что я давно уже точу зубы на курс Godot 4 3D Platformer Lesson от канала BornCG. А поскольку я также очень люблю вести конспекты (боже, обожаю конспекты!), то всем читающим данную статью предлагаю:

во1х, отписаться и бросить автора в чс, здесь уже не будет ничего интересного,

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

Что я жду от выпуска статей такого формата?

Я хочу понять, как в целом с помощью Godot создавать игры. У меня в планах пройти этот курс, внимательно следя за автором роликов, всё аккуратно записать, чтобы потом, когда я на основе полученного опыта буду создавать своё (а у меня много безумных идей), можно было вернуться к конспектам, что-то вспомнить, что-то уточнить.

Что читателю ждать от выпуска статей такого формата?

Если вы хотели посмотреть какой-нибудь неплохой видеокурс по Godot, но не знаете английского или вас коробит от наличия океанов воды в роликах – милости прошу. К тому же, вы сможете почерпнуть для себя какие-нибудь паттерны или фичи работы с движком, посмотреть, как по-другому можно с ним взаимодействовать – думаю, это будет довольно полезно.

Почему, раз мне так не нравятся видеогайды, я не читаю официальный справочник?

Там нет того, что я хочу – а хочу я работать с 3D и платформер, и чтобы это можно было потом менять под себя, изучая уже не основы, а тонкости работы с движком. Вот на этом будущем этапе мне уже нужна будет официальная документация, а пока – начинаем с таких примитивных азов, что никаким справочником не объяснить.

Почему я решил засорять DTF? Писал бы себе в стол.

Я пытался :( Это не первая моя попытка одолеть данный курс, и каждый раз по каким-то надуманным причинам всё срывалось. Полагаю, некое подобие ответственности перед читателями поможет мне довести дело до конца.

Я что, хочу делать игры???

Да, безумно. Я так-то начинал изучать программирование в целом только для того, чтобы узнать, как можно использовать всё это дело в корыстных игровых целях. И со временем понял, что гораздо приятнее использовать в игровой разработке специализированные программы типа Godot Engine, нежели писать вообще всё с нуля самому.

Ну тогда начнём

Сегодня у нас:

  • создание нового проекта для игры;
  • обзор интерфейса программы и навигации при работе с 3D;
  • создание и сохранение 3D сцены.

Начнём с запуска Godot. Первым делом нас встречает менеджер проектов – поскольку мы идём с нуля, нам нужно создать наш проект с помощью соответствующей кнопки в левом верхнем углу окна.

Пока пусто
Пока пусто

В окне создания нового проекта вводим название проекта, выбираем путь к нему и используемый отрисовщик. Поскольку наша цель – работа с 3D, то мы оставляем отрисовщик по умолчанию (Forward+).

Всё как на ладони
Всё как на ладони
Как-то так
Как-то так

Главная часть интерфейса Godot находится в центре окна программы и называется рабочим пространством (workspace). Рабочее пространство имеет четыре разных вкладки:

  • 2D, отображает вашу 2D-игру или экран меню 3D-игры;
  • 3D, для работы с 3D;
  • Script, для добавления кода в проект;
  • AssetLib, доступ к файлам проектов и ресурсам других разработчиков.

Следующая важная часть интерфейса – открепляемые панели (dock). Перечислим их:

  • Сцена (Scene dock), используется для добавления в проект узлов (нод, nodes) – строительных блоков для всего в вашем проекте: предметов, звуков и т.д.
  • Файловая система (FileSystem dock), отображает структуру файловой системы проекта.
  • Инспектор (Inspector), в котором мы можем видеть и изменять свойства всего в нашей игре: позицию, угол, размеры, можем включать или отключать видимость объекта… В общем, будем знакомиться с инспектором, но потом.

Поработаем с панелью Сцена. При нажатии на кнопку + в этой панели (Добавить дочерний узел, Ctrl+A) появляется окно со всеми типами объектов, которые мы можем добавить.

Это дерево
Это дерево

Так как мы будем работать над 3D-игрой, выбираем корневой узел 3D-сцена (Node3D).

Обычное 3D
Обычное 3D

В нашем рабочем пространстве появилась 3D-разметка. Работать с ней довольно просто:

Крутим колёсико мышки – приближаем или отдаляем сцену

Зажимаем колёсико мышки и перемещаем мышку – вращение сцены

Зажимаем колёсико мышки + клавишу Shift и перемещаем мышку – перемещение в плоскости

Для удобства узлы в панели Сцена можно переименовывать. С помощью двойного клика на узле Node3D, который мы только что добавили, войдём в режим редактирования и введём новое название для узла: Level1.

Кстати, не забываем сохраняться: нажимаем Ctrl+S, видим, что названием файла сохранения в окне совпадает с названием нашего корневого узла (а мы и не против), нажимаем Сохранить.

Пока ничего не трогаем
Пока ничего не трогаем

После сохранения панель файловой системы отобразила появление в каталоге проекта нового файла tscn.

Улучшения на лицо
Улучшения на лицо

На данном этапе мы уже можем запустить наш проект с помощью меню в правом верхнем углу программы. Запуск проекта с помощью клавиши F5 нам не доступен, поскольку ещё не выбрана главная сцена. Поэтому мы запустим только текущую сцену с помощью клавиши F6. И увидим…

Бам!
Бам!

А почему мы не видим, например, сетки или скайбокса, которые отображаются в рабочем пространстве? На это есть несколько причин, и первая - у нас в сцене нет камеры, и смотреть нам, получается, нечем :( Кстати, исправим это.

Выделим в панели Сцена наш корневой узел Level1, нажмём кнопку +, выберем узел Camera3D (можете ввести в панель поиска, так удобнее) и создадим его.

О, пошло движение! На самом деле это важный момент, узел камеры обязательно должен быть дочерним от корневого узла, как на картинке.
О, пошло движение! На самом деле это важный момент, узел камеры обязательно должен быть дочерним от корневого узла, как на картинке.

В рабочем пространстве так же появился объект камеры, который мы можем перемещать и вращать с помощью зелёных-синих-красных стрелок и полуколец. Немного поиграемся с ним, а затем сохраним изменения и запустим сцену: Strl+S, F6.

Это уже не смешно!
Это уже не смешно!

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

Уф! Ролик длился 23 минуты, а на его просмотр с одновременным ковырянием в проекте у меня ушло больше часа. И из этих двадцати трёх минут всё полезное уложилось буквально в несколько страниц текста, которые можно просмотреть за минуту (а если искать опечатки, то за пять).

Это во многом пробная статья, разумеется. Свои цели я объяснил в начале, ваши цели - в принципе тоже и там же, так что... Ждём продолжения.

У меня девять часов утра, я бодр и свеж, а это Голден Бой, кстати
У меня девять часов утра, я бодр и свеж, а это Голден Бой, кстати
15 комментариев