#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-разметка. Работать с ней довольно просто:
Крутим колёсико мышки – приближаем или отдаляем сцену
Зажимаем колёсико мышки и перемещаем мышку – вращение сцены
Зажимаем колёсико мышки + клавишу Shift и перемещаем мышку – перемещение в плоскости
Для удобства узлы в панели Сцена можно переименовывать. С помощью двойного клика на узле Node3D, который мы только что добавили, войдём в режим редактирования и введём новое название для узла: Level1.
Кстати, не забываем сохраняться: нажимаем Ctrl+S, видим, что названием файла сохранения в окне совпадает с названием нашего корневого узла (а мы и не против), нажимаем Сохранить.
После сохранения панель файловой системы отобразила появление в каталоге проекта нового файла tscn.
На данном этапе мы уже можем запустить наш проект с помощью меню в правом верхнем углу программы. Запуск проекта с помощью клавиши F5 нам не доступен, поскольку ещё не выбрана главная сцена. Поэтому мы запустим только текущую сцену с помощью клавиши F6. И увидим…
А почему мы не видим, например, сетки или скайбокса, которые отображаются в рабочем пространстве? На это есть несколько причин, и первая - у нас в сцене нет камеры, и смотреть нам, получается, нечем :( Кстати, исправим это.
Выделим в панели Сцена наш корневой узел Level1, нажмём кнопку +, выберем узел Camera3D (можете ввести в панель поиска, так удобнее) и создадим его.
В рабочем пространстве так же появился объект камеры, который мы можем перемещать и вращать с помощью зелёных-синих-красных стрелок и полуколец. Немного поиграемся с ним, а затем сохраним изменения и запустим сцену: Strl+S, F6.
Мы снова не видим ничего, но автор ролика оставляет интригу и, загадочно улыбаясь, обещает продолжение во втором ролике.
Уф! Ролик длился 23 минуты, а на его просмотр с одновременным ковырянием в проекте у меня ушло больше часа. И из этих двадцати трёх минут всё полезное уложилось буквально в несколько страниц текста, которые можно просмотреть за минуту (а если искать опечатки, то за пять).
Это во многом пробная статья, разумеется. Свои цели я объяснил в начале, ваши цели - в принципе тоже и там же, так что... Ждём продолжения.