Моя первая игра на itch.io
Привет, для ЛЛ : я сделал игру, раздаю её бесплатно на itch.io , скачивать не нужно, она есть в и в web версии. Прошу взглянуть и высказать своё фу проекту, а то и похвалить (да ладно, я знаю, что ни кто хвалить не будет).
Подробнее.
Привет меня зовут Антон, мне 48 и я 30 лет тружусь в ИТ сфере (да, я начал заниматься этим когда это ещё не было мейнстримом).
Занимался всем, от ремонта ПК и сисадминства до ИТ безопасности и руководства ИТ отделом, но последние лет 7 работаю разрабом на Qt\c++. Однако истиной моей мечтой всегда было делать игры. Сейчас, когда моя жизнь стала поспокойнее, я решил реализовать свою мечту. И пусть я даже ничего с этого не заработаю, но хоть получу удовольствие от процесса.
Итак что я имел для реализации год назад:
Стабильную работу, чтобы не думать о мелких расходах
Небольшие знания программирования
Желание сделать хотя бы простую игру, а в идеале игру своей мечты
Не малейшего представления о том, как всё эти игры делают
За год я изучил какие есть движки, какие языки в них можно использовать, попытался их освоить, написал себе диздок и лор будущей игры аж на 83 страницы, нагеренировал к ней кучу артов, попытался научиться рисовать 2D и 3D, понял что художник их меня еще хуже чем программист, отчаялся и забил на Unreal Engine и игрострой в целом, стер все свои наработки в акте отчаянья, одумался и восстановил их из копии, а месяц назад начал писать маленькую, но работающую игру на Godot вместо огромной игры своей мечты на Unreal.
Итак что за проект и как я его делал:
Сам проект называется Core Burrow, название ничего не значит и по сути просто выбрано случайно, чтобы не быть похожим на остальные бесчисленные игры, выходящие тысячами каждый день.
Итак, в чем идея игры. Так как я застал эпоху Commodore 64 и Atari то решил начать с малого и отдать дань уважения играм эпохи 80х. Игра в целом навеяна такими шедеврами той эпохи как Boulder Dash и The Adventures of Robbo и что греха таить - при разработке я вначале пытался копировать их стиль и механики. Но на самом деле получилось не плохо, через какое-то время пришла идея добавить в игру немного лора и хорора (для таинственности) и ряд других механник.
В целом Core Burrow это смесь того самого Boulder Dash и The Adventures of Robbo с добавлением большого числа текстовых сообщений для погружения в лор. В игре есть камни которые могут упасть на голову, стреляющие пушки, алмазы которые надо собирать (спойлер - на самом деле это кристаллы памяти сумасшедшего суперкомпьютера ) и многое другое.
И есть герой, вот такой забавный робот – «Разведчик 'SUB-ROBOT 04'». За него и играем.
Слабой стороной игры я считаю её лабиринты. Откровенно говоря, можно и лучше – больше и масштабнее, хотя для первой игры сойдет, их всегда можно переделать.
Процесс разработки. Собственно, на Godot и его GDScript я вначале смотрел с недоверием. В конце концов ни где кроме Godot эта технология не встречается. Был большой соблазн писать на C#, но как выяснилась сборка на C# не работает в WEB, так что я отбросил лишнюю гордость и полез в документацию Godot. Оказалось, что не так страшен черт, как его малюют. Самое сложно там это не сам язык, он проще Python. Страшно обилие строенных классов и их методов, вот от них действительно разбегаются глаза. Особенно если не знать, для чего они. После системного программирования и GUI на Qt многие вещи казались мне тут не совсем очевидными. Не смейтесь, но на помощь пришел ИИ, оказывается с его помощью можно не только сочинять глупые рассказы и рисовать мемы, но и не плохо обучаться незнакомым языкам программирования.
За пару дней я узнал, что есть в Godot в целом (ну или большую часть) и много нового об игровых технологиях и алгоритмах. Это дало мне понимание почему в игровых движках всё работает именно так, а не иначе. Блин, великая вещь нейронки.
Смешно, но такие вещи как цикл программы или сигналы были мне хорошо знакомы по Qt. А вот тайлы это что-то новое. Должен заметить, что работа с тайлами в Godot это настоящее искусство, мне показалось, что движок специально под них заточен. Не думаю, что нужно делать урок по тайлам, их полно в интернете, но не отметить их прекрасную работу в Godot было просто невозможно.
Первую неделю я делал только игровые механики: ловушки, игрока, окружение. Оказалось, что это самая быстрая часть, гораздо больше времени отнял простой GUI и локализация на английский, хотя кода там было в разы меньше.
При том что механик было сделано не мало. Падающие камни и земля как в Boulder Dash, бомбы и пушки с автострельбой как в The Adventures of Robbo, разноцветные двери и разноцветные ключи к ним, телепорты, заброшенные сервера для чтения лора и главное игрок, который со всем этим взаимодействовал. Всё это позволяет создавать действительно сложные лабиринты.
Сами лабиринты я рисовал в прямо в TileMapLayer с помощью встроенных в редактор средств, так что остро стоял вопрос как заставить камни падать, а бомбы взрываться. Вопрос решился просто, камни, бомбы и другие интерактивные элементы заменялись на сцены Area2D прямо при старте лабиринта. А замену выполняет … скрипт игрока. Каждый раз на новой сцене у него отрабатывает void _ready(): так что там вызывается метод для обхода всех тайлов на уровне и замены некоторых их на сцену bomb или rock . И нет, заменяются не все тайлы, в этом просто нет необходимости. На самом деле у падающих камней и бомб нет физики, они проверяют соседний тайл и если там пустота начинают проигрывать анимацию падения (перемещения на соседнюю клетку - twin) и по прошествии анимации мгновенно перемещаются на нужную позицию. Если там в этот момент игрок – ему сразу хана, если и под этой клеткой ничего нет, то продолжаем падение.
Так что никакой перегруженности лишними вычислениями – CPU по возможности отдыхает.
А чтобы все это красиво смотрелась на многие тайлы наложен шейдер, который так же не загружает CPU (только GPU – но этот пусть работает) .
Итак в результате получилась гремучая смесь из кое-как нарисованной мной векторной графики, музыки с Suno (вот только не надо смеяться и показывать пальцем, кто тут из нас композитор? ) звуков со стоков и моего говнокода (опять же кое где его помогал писать бесплатный Gemini ибо в шейдерах я не смыслю).
К своему удивлению я так же узнал что у itch.io есть образ для сборки проектов на Godot, но нет никакого api для создания ачивок. Если первое очень обрадовало, так как сразу удалось настроить полноценный CI/CD на GitLab (делаю git push и игра обновлена), то второе откровенно расстроило – ачивки нужны, раз уж я делаю свой минимальный работающий продукт.
Вопрос был решен радикально – своя система ачивок. Ну да, это не настоящие ачивки, это их имитация. Просто GUI сделан так, что при достижении определенных результатов появляется всплывающее окно похожее на получение ачивки и программа ведет учет получения этих ачивок в специальном скрытом файле. Вы получаете псевдо ачивки и можете их увидеть в соответствующем меню игры
И коллекция ваших достижений))
Там же можно сбросить свои ачивки (технически вы просто очистите файл системного сохранения) и получить их заново.
Так как игра во многом является оммажем старым играм, я реализовал демонстрацию игрового процесса, то что в старых играх называлось Attract Mode. На него можно посмотреть на самой первой сцене при просмотре стартового меню. Робот будет имитировать хождение по карте и пытаться что-то делать. На самом деле все его движения четко запрограммированы, если присмотреться, то можно увидеть, как он ходит по одному и тому же маршруту. Как говориться мелочь, а приятно.
Чтобы не растягивать статью, пожалуй, подведу небольшой итог.
Что сделано:
готов минимальный продукт – в игру можно играть, её можно пройти.
Реализованы все механики (хотя можно и расширить их список)
Сделано 20 уровней
Сделаны кат сцены начала игры и победы
В конце игры можно увидеть статистику – ничего особенного, просто сколько раз вас убило током, сколько собрали кристаллов итд
Все красиво свистит и пердит
Я придумал свою систему ачивок не привязанную не к одному API
Настроен CI/CD для itch.io
Черт, я узнал много нового, воистину - век живи век учись.
Что можно улучшить:
Расширить количество получаемых ачивок, раз есть такая система, то можно и её расширить. Спойлер: уже нарисовал 6 новых иконок для новых достижений.
Надо сделать редактор уровней, как в старом Lode Runner или Mario Forever. Пусть кому хочется рисует свои лабиринты.
Графика и код, мне есть куда расти. Доделаю этот проект, переделаю брошенные проекты (сейчас их два) и напишу такую крутую игру чтобы все сказали вау.
Короче, приглашаю всех посмотреть мой проект тут https://greatskydrake.itch.io/core-burrow
Если зайдет хоть одному человеку я старался не зря.







































