Сделал 10 игр на Godot. От Pong до Portal. И вот итог

header.png

Введение

Кратко расскажу о себе (если вдруг кто забыл): имею около 10 лет опыта с GameMaker, выпустил пару игр в Steam. Делал пару-тройку конкурсных игр на Unity, один раз на Unreal Engine 4 (об этом даже детально рассказывал). У меня нет цели попробовать абсолютно все движки, однако, взглянуть на мейнстрим и что попали в руки — почему бы и нет? Таким движком оказался Godot. Много о нём слышал, решил попробовать в деле.

Очень давно попробовал взглянуть на Godot сделав на нём «ремейк» своей старой игры-шутки Zhulik.exe. В движке есть готовые вещи для работы с User Interface (UI). А этот интерфейс это важная основная часть Zhulik. Но я скажу честно: я открыл движок и закрыл его. Забыв на, боюсь сказать, годы. Это сложно назвать даже попыткой, честно говоря.

Настоящей «первой попыткой» знакомства с Godot можно назвать участие в конкурсе разработки игр Gamainator 25. Игру назвал очень странно «1». Это буквально её название. А выглядела она примерно так:

Конкурс не накладывал ограничений на движок игры. Поэтому решил поэкспериментировать и взять Годот. На моё удивление, но я смог собрать некий прототип за 2 дня! Игрой это было назвать сложно. Сделал прототип и написал статью о разработке где-то в мае 2023 года.

Challenge (вызов-испытание)

Под конец апреля 2023 года было решено создать крохотный чат в ТГ по этому движку. Целью было совместное обучение и изучение небольшой группой знакомых. Похоже, мы все видели потенциал Godot. И мы подумали себе challenge — каждый делает свой рогалик. Печальный исход такой: за 5 месяцев никто не сделал игру. Это был провал. Даже написал итоговый пост.

К началу марта 2024 года один из участников предложил взять уже состоявшийся 20 games challenge. Хоть в названии 20 игр, но на деле челлендж на создание 10 игр с нарастающей сложностью. Никаких временных рамок в оригинале не было, поэтому мной были предложены и приняты такие условия: до конца 2024 года сделать все 10 игр, получается по одной игре в месяц.

И так, поехали!

Игра 1. Понг | Pong

На выбор были Pong или Flappy Bird.

Достаточно простая игра, осилил за 7 дней. Вся сложность заключается в непонятном для меня движке. Не так просто принять идею Nodes, а именно что всё кругом Node. У Ноды может быть только один скрипт расширяющий функционал, а наследовать скрипт можно лишь от одного родителя. Приходилось выдумывать странные конструкции. Впрочем, иерархический подход понятен — примерно как в Unity, но такого не было в GameMaker, что может вызывать сложности с переходом с ГМ на Годот. Графикой я решил пренебречь и выглядела игра примерно вот так:

Сложно рассказать что-то интересное о Понге. Разве что я решил замахнуться дальше, чем просит челлендж и сделал: игру на двух игроков, на игрок против ИИ, ИИ против ИИ, а ещё зачем-то меню и паузу. Но главное что там было — это костыли, которые я городил даже в таком простом проекте.


Игра 2. Арканоид | Breakout

На выбор были Breakout или Jetpack Joyride.

Прогресс по этой игре пошёл куда лучше: взял за основу прошлый Понг, переименовывал и изменял какие-то моменты. И игра готова! Из особенностей: эта игра стала первой из нескольких, которые делал на стриме. Вот, можете глянуть даже запись на Twitch. Управился за 3 часа, если не считать основу в виде Понга. Результат такой:

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

Skrinshot 2024-05-01 01.17.42.png
Ещё скриншот вам цветной. Как видно, Арканоид у меня называется Понг.

Уже с этой игры появляется базовые знания сохранения hi score, что, конечно, не сильно отличается от такового из того же GameMaker. Однако, не все игры будут использовать это, особенно последние.


Игра 3. Космические Инвайдорзы | Space Invaders

На выбор Space Invaders или Frogger или River Raid.

Эта игра уже посложнее будет. Вновь я срываю свои сроки и бегу делать игру прямиком на стриме. В этот раз почти 5 часов ушло. Графику я взял из своего старого прототипа аркады, который должен был стать ремейком ещё более старой игры. Прототип недоделал. А вот графика хоть так пригодилась.

Конечно у меня были различные баги, но здесь меня поджидали особо коварные: почему-то коллизия на дне не работает. Коллизия снаряда с врагом-клоном не работает. Под врагом-клонами я подразумеваю врагов, которые наследуются от сцены врага. Проблема оказалась в том, что почему-то слой коллизии у клонов был отличный от своего родоначальника. Было ли это связано с каким-то багом в наследовании сцен? Не знаю. Впрочем, я читал, что лучше не использовать наследование сцен в Годоте.


Игра 4. Астероиды | Asteroids

На выбор Asteroids или Spacewar! или Indy 500

Снова взял за основу прошлый проект. Т. е. ещё с Понга тянется эта «игровая династия». И вновь стримил это дело на 4 часа. Опять взял графику со своего старого прототипа-аркады, но теперь ещё и разбавил старой же графикой с совсем древнего проекта, который был написан ещё на Си++ и OpenGL, есть древнее видео.

С этого проекта я попробовал заливать на youtube короткие shorts.

Это первая игра, из-за которой стал срывать сроки. По плану её нужно было закончить в июне, а я отчитался в нашу группу по движку только в июле, правда, 2-го числа. Забегая вперёд, это будет крайне плохой тенденцией. Кстати, кажется, в игре не работает условие победы, ха.


Игра 5. ПАК МЭН | Pac Man

На выбор Pac Man или Tic-Tac-Toe или Conway’s Game of Life

Я начал этот проект скопировав Астероидс. Странное решение, но я решил пробовать именно продвигаться «от прошлой игры к следующей». Конечно, пришлось заменить практически всё.

Данная игра резко отличается как по своей структуре, так и по сложности создания. Это я, разумеется, заметил на контрасте с прошлыми играми. Мне даже казалось, что в челлендже что-то напутали, так как комплексность ПакМэна сильно отличается.

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

Skrinshot 2024-08-18 17.36.04.png

В этой разработке я познакомился с тайловыми картами в Годот и авто-тайлингом (не совладал, ставил руками), что он предлагает. Честно сказать — я запутался в этих тайлах. Ещё одной особенностью этой игры стало то, что я решил использовать сторонние графические ассеты. Меня всегда тянет сделать новую уникальную графику, даже если это какой-то «технический» спрайт, который увидит только я сам. А вот тут решил попробовать побороть себя (у нас же всё же «вызов»!) и вот получался ПакМэн с волшебником и скелетами.

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

Игра должна была быть «сдана» в июле, однако, я закончил её только 18 августа. Вот и пошёл я по наклонной с этими дедлайнами.


Игра 6. Супер Игарио Братаны | Super Mario Bros.

На выбор Super Mario Bros. или Pitfall или VVVVVV

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

Сначала всё казалось достаточно просто, потому что я смотрел на игру с опытом GameMaker.

После ПакМэна я начала «выгорать» или как назвать то, что я устал и не хотел больше копаться в Годоте? Но именно с проблемами и трудностями узнаёшь о движке (а может и себе? Ну это уже философия). Марио продолжал подкидывать дров. Я был готов уже бросить этот челлендж.

Простая с виду затея оборачивалась сложностью на сложности, проблемой на проблеме. Мой игрок стал походить на кучку квадратов, а не персонажа игры — весь в специальных коллайдерах Area2D для детекции столкновений, подбора предметов или разбивания ящиков головой. Я уже реализовывал всё как мог, а не прибегая к лучшим практикам.

image.png

Продолжаю учиться использовать чужие готовые ассеты — скачал из интернета, кажется, даже несколько ассет-паков, а потом намешал в игре. Было проблемой вырезать нужный спрайт из spritesheet. В Годот почему-то область текстуы\спрайта называется TextureAtlas, а не TextureRegion, например. Да и если такому региону поставить repeat в «как обрабатывать края», то он не повторяет их. Для этого, похоже, предлагается писать свой шейдер. Копилось множество мелких проблем, которые в совокупности выводили из себя.

photo_2024-08-20_18-08-13.jpg
Вот как мне пришлось делать флагшток. Спрайт на спрайте через спрайт.

Было множество различных багов и проблем, но завершил игру с двумя уровнями. Один из уровней полностью или частично повторяет первый уровень из Супер Марио с NES.

Эту игру я успел сделать в срок. Нужно было в августе — в августе и сделал. Исправился с дедлайнами … так мне казалось.


Игра 7. Колотить-Копать | DigDug

На выбор Worms или Dig Dug

Хоть мне и нравятся Червячки (Worms), но мне показалась какой-то нереальной задачей сделать такую игру на Годот. И я имею ввиду скорее разрушаемость мира. О DigDug я не слышал ничего, но выбрал её посмотрев как она играется. Выглядело это проще — разрушаемость уровня можно было реализовать тайлами. Достаточно просто, несмотря на то, что до этого я кое-как совладал с тайлами.

Максимальный срыв дедлайнов. Эту игру было нужно сделать в сентябре, но я сдал её лишь в декабре! Но у меня уважительная причина связанная с делами в реальном мире. Тем не менее, сроки все под откос. У меня оставалось пара месяцев до окончания года и челленджа. Начал я этот проект в середине ноября. За основу взял предыдущего Марио. И началось всё так:

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

С этой игрой тоже всё было не так гладко. Хоть разрыв в разработке с прошлой игрой дал немного времени передохнуть и остудиться после перегрева, но всё же ситуация вновь быстро нагнеталась. Я очень долго мучился с ИИ, а конкретнее с поиском пути, который никак не хотел работать правильно! То игрок застревал в стенах, то враги вставали как вкопанные (ха!), то они уходили куда-то совершенно непонятно куда.

Skrinshot 2024-12-05 00.24.06.png
ЗАМУРОВАЛИ, ДЕМОНЫ!
Desktop Screenshot 2024.12.05 - 23.24.07.04.png
Враг сбежал из поля игры. Даже им невыносимо участвовать в этом проекте

С мучениями, но я завершил и эту игру! Чем дальше, тем проекты всё сложнее, а неврвов завершить их не хватает. Лично я начинал разочаровываться в Годот натыкаясь на различные, казалось бы, мелкие недочёты и нелогичности, но которые ломали общий поток разработки. Вот что вышло:

Игра завершена 8 декабря 2024 года. Осталось меньше месяца, чтобы сделать ещё 3 игры. Это просто нереально.


Игра 8. Крэш Бэндикут | Crash Bandicoot

На выбор Super Monkey Ball или Star Fox или Crash Bandicoot

Ощущал себя героем фильма, где он по непонятным причинам продолжает бессмысленную борьбу со злом. Столь же нелогичным, как и это сравнение, было решение продолжать челлендж. Ожидая, что в 3D будет проще. Не знаю почему я так думал.

По понятным причинам я не стал брать за основу прошлые проекты, ведь они были 2D. Хотя по условиям нужно было сделать 2.5D платформер, если выбираешь Крэша. Однако, в Годот чёткое разделение 2д и 3д, от чего нет совместимости между этими измерениями. Ноды прописаны в своём родителе к какому пространству относятся, конечно, кроме более абстрактных нод вроде Анимационного проигрывателя.

Как с прошлыми играми у меня не получилось. Ранее я садился и делал игру смотря на список, который описан на сайте челленджа. Например, что игрок ходит-прыгает, монеты собираются и т. д. Для Крэша мне показалось всё достаточно расплывчато и обощёно было. Добавить какие-то ловушки, каких-то врагов, какие-то ещё вещи. Крэш первая игра, для которой я взял листок бумаги и начал обдумывать что необходимо сделать.

photo_2024-12-12_18-27-16.jpg

12 декабря 2024 года началась разработка. Своим прогрессом я делился не только в ТГ группе, но и в своём BlueSky (на самом деле там и другие игры были). Например, анимацией походки Крэша, которую я сделал наспех.

Продолжая тематику использования готовых ассетов скачал текстуры и модели из игр про Крэша. Было несколько моделек, но я решил остановиться на классическом с Sony PlayStation 1. Я быстро сделал свои анимации в Blender, потому что выдернутые имелись только текстуры и модели. Уровни я тоже делал в Blender используя аддон ReSprytile. Не смог подобрать модельку для врага, поэтому взял свою старую. Звуки нашёл выкаченные из оригинальной игры, подобрал их. Фоновую музыку взял свою, которую делал для одного проекта-прототипа, который так и не увидел свет.

Могу сказать, что в эти моменты, несмотря на какие-то недочёты во время разработки, у меня аж проснулось второе дыхание, вдохновение! И даже желание поиграть в Крэша!

Казалось, что все те недочёты и выгорания ушли, а Крэш игра компенсировала всё. Или может это говорил опыт? Так или иначе, дело шло. И достаточно быстро, как мне кажется. Декабрь я считаю «ленивым месяцем», когда уже скоро новый год, работать не хочется, у многих «выходные дни». Вот и я так «лениво» решил удариться максимально в последние игры.

В качестве ориентира, чтобы хоть как-то разобраться как надо делать 3д в Годоте, скачал себе пример от GDQuest с их контроллером от третьего лица. Это был тоже платформер, но я взял скорее какие-то идейные вещи по организации, хотя, некоторые строчки кода таки скопировал.

Desktop Screenshot 2024.12.21 - 01.31.02.41.png
Примерно так начиналась игра. Хоть это и 21 декабря

Пытался заставить Годот открывать blend файлы от Блендера, такое возможно, однако, у меня сыпались какие-то ошибки и это заставило мне передумать подход к моделям — я их моделил и экспортил, хотя, всё как в нормальных движках. Но Годот как-то умеет загружать бленд-сцены, но мне это осилить не удалось.

Были некоторые недопонимания у меня. Мне казалось, что если Годот загрузил модель\сцену из файла 3д модели, то у него есть доступ к mesh. И я могу назначить этот mesh на любой нод класса MeshInstance3D, но как оказалось — ничего я не могу! Это сбивало с толку. Вот же Mesh! Установи его как Mesh для этого Instance! Но нет, Годот так не хочет. И разные такие вещи не помешали мне дойти до завершённой игры.

Крэша я разрабатывал с 12 по 26 декабря 2024 года, ровно две недели у меня ушло на этот проект.

В итоге вот так выглядит игра:

Особо сил предало то, что когда я выложил игру и видео на Reddit в саб по Godot, то оно набрало целых 1000+ upvotes, не знаю как для вас, но для меня это значительное достижение! Получив воодушевление я выложил помимо самого исполняемого файла ещё и исходники!

Ещё две игры. До нового года осталось 4 дня. Это невозможно. Невозможно сделать даже одну игру…


Игра 9. DrOOwN | DooM

На выбор Wolfenstein/Doom или Mario Kart

Уже было 28 декабря. Хоть я и понимал, что челлендж невозможно завершить к нужному сроку, но я продолжал идти упорно. Под вдохновением от Крэша.

Я решил, что воспользуюсь уже готовой графикой из своей игры Drawngeon, что сократит время разработки. По намеченным планам с челленджа всё выглядело достаточно просто: пара видов оружия, пара врагов, да и одного уровня хватит.

Всё как в тумане. Я просто брал и делал. Но я и снова использовал хитрости-читы так как время поджимало, а успеть хотелось. Взял со своего старого челленджа по рогалику, о котором я писал в самом начале статьи, контроллер игрока от первого лица, который основан на контроллере из игры «1»! Вот такие моменты в разработке мне кажутся очень показательными — помимо опыта в дело идёт и то, что остаётся от прошлых проектов, нарабатывается база, которую можно пере-использовать. А вот лифты для этого проекта я сделал из платформ из Крэша.

Desktop Screenshot 2024.12.28 - 23.05.08.18.png
Скриншот с начала разработки. На тестовой локации.

Одной из небольших проблем было то, что я не научил игрока шагать по лестницам. Я знал хитрость, что можно поставить на визуальную модель лестницы коллайдер плоского рампа, однако, хотелось «как в Думе» всё же. Не осилил этот момент.

Хотел я добавить и второй уровень, прямо из Дума. Найдя такой уровень готовой моделью посмотрел как он выглядит в игре и мне это не особо понравилось, потому что 1) там есть весьма высокие лестницы 2) его будет очень сложно пере-текстурировать. Поэтому я пошёл нелогичным путём и начал делать свой единственный уровень.

Для уровня использовал аддон Cyclops Level Builder для Годота. И когда я уже был он практически готов, вся игра более-менее работало, как вдруг …

Desktop Screenshot 2024.12.30 - 21.55.49.09.png

Посыпался весь уровень, сломав отображение и насыпав кучу ошибок. Меня так сильно это расстроило и подкосило, что я побежал на тот же самый Реддит жаловаться, чего никогда не делал (на реддите). Но в итоге мне удалось исправить, путь и немного откинув прогресс обратно:

Skrinshot 2024-12-30 15.02.36.png

А вот так выглядела попытка загрузки уровня из Дум:

Skrinshot 2024-12-30 01.08.46.png

Игровой процесс финальной версии выглядит вот так:

Как и с Крэшем я пошёл показывать своё достижение на Реддит. Да и в своём ТГ канале упомянул. Однако, на Реддите оно не получило столь же ажиотажа, как Крэш. Звучит ожидаемо, ведь где Крэш и где нарисованный от руки шутер.

С этой игрой вышла забавная ситуация: по совету я отправил в Discord оригинального челленджа 20 игр Крэша и Дум. По ошибке держатель сайта указал, что у Дума есть веб-билд, чего на деле не было. Но тогда я подумал и решил попробовать сделать это! Оказалось всё достаточно просто и действительно можно сыграть в неё онлайн теперь!

Это тоже очень крутой момент, как по мне. Теперь как минимум мои Крэш и Дум увековечены на сайте оригинального 20 games challege!

Я успел сделать игру к 31 декабря 2024! За 3 дня! Ура! 9 из 10 игр! Успех! Хотя, я так не считал, но мне писали, что 90% челленджа можно считать успехом однозначно. Путь действительно был непростой и есть результаты.

На этом можно было бы и заканчивать …

Игра 10. Godortal | Portal

На выбор Minecraft или Portal

… если бы не моё упорство!

Не удалось воплотить челлендж как я задумывал (в оригинале не было сроков). Мне пару раз писали, что «челлендж ведь на год, а год не прошёл» намекая, что ещё не конец. Я подумал, что это может быть интересным проведением январских каникул, ещё одного «ленивого месяца». Да что там, сделаю за недельку. Как же я ошибался…

Одной этой игры хватит на целую отдельную статью, поэтому постараюсь покороче.

Начал 3 января. Очень давно на GameMaker я уже частично реализовывал технологию порталов — попытался найти бумажные заметки и адаптировать их, но ничего не вышло. Пришлось начать с самого начала. Вновь начал исписывать бумагу различными идеями и вычислениями. Спустя всю реализацию понимаю, что решение было достаточно простое и делится на две части: визуальная и математическая.

Под визуальной я понимаю то, как портал выглядит. И, как я её назвал, математической визуальной просто не может быть. А математика достаточно проста: нужно трансформировать точку и взгляд наблюдателя относительно одного портала и трансформировать это потом на относительность другого портала. Возможно, звучит непонятно.

Как же я намучился с этим! Всё было экспериментально. По логике выстраиваю вычисления — не работают! Пробую ещё, работает, но не так! Это немного начало напоминать мне ситуацию с ПакМэном или Марио! Но раз уж я взялся за это дело, то должен довести до конца! Мне потребовалось достаточно много времени, чтобы верно сообразить какие надо проделать трансформации. И это с учётом того, что есть куча статей и видео на эту тему. Но я словно специально старался пере-придумать всё сам, хотя потом и сдался и подглядывал в одну статью по порталам, но на движке Unity.

Для быстрого наброска уровней я использовал ноды CSG объектов, мне хватило лишь кубов. Из них я строил базовую форму уровня. А по началу тестировал всё на playgound-локации. Сами локации я решил делать как в проекте Крэша — в Blender через аддон ReSpryTile. Текстуры рисовал в программе Aseprite. Совмещал Blender и Aseprite через аддон-мост под названием Pribambas.

Графику я решил делать специально для этого проекта. Мне показалось, что хорошо будет смотреться pixel art 3D. Такой стиль и сделал, хотя изначально я думал взять наработки старого проекта из 2011 года, который не ушёл дальше идеи. От проекта этого в наследство достался разве что дизайн портальной пушки и частично дизайн дверей.

2025-01-13 19-37-33-40 DeskScreen.png

Показывал в BlueSky как верчу эту портальную пушку. То же видео, но здесь:

Следующим шагом после визуального портала была телепортация. Сложности с этим я испытывал ещё больше! Хотя я почти разу же сообразил как можно реализовать их в Годот — нужно менять слой коллизии у объекта телепортации когда он входит в портал, а когда выходит из зоны портала, то восстанавливать оригинальный слой. Сама концепция работает хорошо. А вот нюансы вновь заставили попотеть и потерять несколько нервных клеток. С какими-то аспектами я до сих пор не совладал и у меня просто уже нет сил на них.

Сначала у меня были простые коробки для коллизии портала, чтобы игрок не проваливался. Затем я сделал специальную модель для коллизий (что кстати не удобно в Годоте — пришлось добавить визуальную модель, а затем ей создать коллизию). А в конечном итоге сделал добавочный коллайдер пола, который включается и подстраивается под высоту оригинального пола уровня — сделал это, потому что иногда игрок таки проваливался вниз.

Сцена (префаб) персонажа игрока стал настоящим «нодовым монстром». В нём столько нод, столько скриптов, столько логики, что пара игр вместе взятых из начала челленджа целиком сравнится по объёмам!

Телепортация объектов на скорости не работала должным образом. Мне помогли решением в ТГ чате, где организовали наш челлендж. Правда, работает это не на все 100% как надо. А игрок по-прежнему не может преодолевать порталы на высоких скоростях — бьётся ногами в пол, а иногда застревает в потолке.

Периодически я отдыхал от проблем с логикой и математикой отвлекаясь на создание текстур и\или 3д моделей. Например, я решил сделать модель персонажа на основе болванки-капсулы, а вышел персонаж Амонгус!

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

2025-01-12 14-24-54-18 DeskScreen.png

Придумав уровни и создав их graybox, решил сделать их модель в Блендере. В том же чате ТГ мне сказали, что это не правильный подход, когда делаешь модель уровня целиком — лучше бы я делал модульные уровни. Третий уровень моей игры — копия первого уровня из Portal. А вот четвертый уровень я даже попытался сначала сделать в редакторе Portal 2!

Какое-то время, после основных визуальных порталов и телепортаций объектов, я занимался созданием логических схем. Вернее таких базовых объектов, которые можно было бы таскать из игры в игру и строить из них загадки как логические схемы. Вышло это правда весьма сомнительным.

Все недочёты и баги начали раздражать и создавать хаос, что я завёл список багов, которые нужно пофиксить. В список записал и то, что нужно сделать, например, модельки. И я медленно, но верно двигался к цели. Но признаться, на какие-то баги я просто закрывал глаза и убирал их из списка подальше как «не очень важные», хотя они были критическими (вроде застревания в потолке). Ближе к концу у меня словно уже не выдерживали нервы и я хотел просто отделаться от этой игры!

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

А вот музыку написал сам, пытаясь подрожать оригинальному Portal. Вышло ли у меня это? Не знаю. Учитывая, что на это ушло не так много времени из всего срока разработки, то хорошо, если люди не будут выключать звук в 0% услышав то, что я там насочинял. Кстати, я добавил в игру подобие музыкального плеера — во время паузы игрок может выбрать трек. Или выключить музыку (если это работает).

Заключительной вещью стало перетаскивание кубе через портал. Сам по себе куб телепортировался хорошо. Игрок проходил тоже приемлемо. Но переход персонажа с кубом был кошмаром, в первую очередь для куба — его кидало по всем возможным вселенным и уровням, возможно, он даже видел зарождение Вселенной! Мне такой расклад не нравился и я решил потратить время если не на решение проблемы, то на её маскировку — сделал так, что когда игрок берёт куб, то он визуально подменяется ложным кубом! Настоящий всё ещё существует, сталкивается, но игрок не видит как его носит из стороны в сторону во время прохода через портал. Пара трюков и костылей позволяет снизить риск потери куба в меж-пространстве. Обманная, но победа!

(Демонстрация как шатало куб, в лучшем случае)

И вот. 31 января 2025 года. Я доделал этот проект как смог. Что было в моих силах. Я сделал Портал. На это ушёл целый месяц! УРА! Я очень рад, что смог завершить не столько челлендж, сколько эту игру!

Получился такой магнум опус этого челленджа:

Написал о своих результатах на Реддит, задали несколько вопросов, а я ответил на них. Вновь набрал 1к местных плюсов. Игру можно скачать с itch, я не осилил Web-билд.


Итог

Это было грандиозное путешествие в изучение движка Godot длиною почти в год! От простого Понга до сложного Портал! Честно говоря, жаль, что из нашего небольшого сообщества в Телеграмм канале до финала (пусть и с опозданием в 1 месяц) дошёл только я. Последние три игры вышли, на мой взгляд, особо хороши и даже потенциальны! Можно сделать свой 3д платформер по типу Крэша, бумажный шутер или некую портальную игру. Или совместить всё это в одном проекте!

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

Пользователи движка, пожалуйста, не обижайтесь, но Годот штука крайне нестабильна. Мне кажется, что брать этот движок это очень огромный риск того, что какой-то элемент внутри движка окажется с багом, фикс которого вы будете ждать несколько лет! Если дождётесь. Он очень страдает от банальных UX болячек, куча казалось бы крохотных недочётов делает инструмент сложно используемым. Я бы не рекомендовал делать коммерческие или длительные в разработке проекты. У движка есть потенциал и если исправить огрехи, то это будет весьма крутая штука. Но пока Годот сгодится для небольших конкурсов, где и проекты не столь объёмны.

Буду ли я использовать этот движок? Не в ближайшем будущем. У меня есть некоторые планы по возвращению в GameMaker, возможно, на контрастах я осознаю что был неправ и Годот идеален, а может быть это лишь закрепит моё ощущение сомнительности движка. Но использую ли я его когда-либо в будущем? Определённо. Как вы понимаете, мои вкусы весьма специфичны.

Если вам понравился этот материал, то я был бы благодарен, если вы подпишетесь на мои соцсети. В статье были ссылки, но продублирую более явно:

мой странный Телеграмм-канал;

Boosty, где вы можете меня поддержать;

Twitch, где редко стримлю;

Группа в ВК;

Youtube-канал;

Itch страница автора;

BlueSky;

Всем спасибо за внимание! Тем кто осилил прочесть всё — медаль!