13

Моя первая игра на itch.io

Привет, для ЛЛ : я сделал игру, раздаю её бесплатно на itch.io , скачивать не нужно, она есть в и в web версии. Прошу взглянуть и высказать своё фу проекту, а то и похвалить (да ладно, я знаю, что ни кто хвалить не будет).

Подробнее.
Привет меня зовут Антон, мне 48 и я 30 лет тружусь в ИТ сфере (да, я начал заниматься этим когда это ещё не было мейнстримом).

Занимался всем, от ремонта ПК и сисадминства до ИТ безопасности и руководства ИТ отделом, но последние лет 7 работаю разрабом на Qt\c++. Однако истиной моей мечтой всегда было делать игры. Сейчас, когда моя жизнь стала поспокойнее, я решил реализовать свою мечту. И пусть я даже ничего с этого не заработаю, но хоть получу удовольствие от процесса.
Итак что я имел для реализации год назад:

  1. Стабильную работу, чтобы не думать о мелких расходах

  2. Небольшие знания программирования

  3. Желание сделать хотя бы простую игру, а в идеале игру своей мечты

  4. Не малейшего представления о том, как всё эти игры делают

За год я изучил какие есть движки, какие языки в них можно использовать, попытался их освоить, написал себе диздок и лор будущей игры аж на 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'». За него и играем.

«Разведчик 'SUB-ROBOT 04'» в процессе создания

«Разведчик '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. На него можно посмотреть на самой первой сцене при просмотре стартового меню. Робот будет имитировать хождение по карте и пытаться что-то делать. На самом деле все его движения четко запрограммированы, если присмотреться, то можно увидеть, как он ходит по одному и тому же маршруту. Как говориться мелочь, а приятно.
Чтобы не растягивать статью, пожалуй, подведу небольшой итог.
Что сделано:

  1. готов минимальный продукт – в игру можно играть, её можно пройти.

  2. Реализованы все механики (хотя можно и расширить их список)

  3. Сделано 20 уровней

  4. Сделаны кат сцены начала игры и победы

  5. В конце игры можно увидеть статистику – ничего особенного, просто сколько раз вас убило током, сколько собрали кристаллов итд

  6. Все красиво свистит и пердит

  7. Я придумал свою систему ачивок не привязанную не к одному API

  8. Настроен CI/CD для itch.io

  9. Черт, я узнал много нового, воистину - век живи век учись.

Что можно улучшить:

  1. Расширить количество получаемых ачивок, раз есть такая система, то можно и её расширить. Спойлер: уже нарисовал 6 новых иконок для новых достижений.

  2. Надо сделать редактор уровней, как в старом Lode Runner или Mario Forever. Пусть кому хочется рисует свои лабиринты.

  3. Графика и код, мне есть куда расти. Доделаю этот проект, переделаю брошенные проекты (сейчас их два) и напишу такую крутую игру чтобы все сказали вау.

Короче, приглашаю всех посмотреть мой проект тут https://greatskydrake.itch.io/core-burrow
Если зайдет хоть одному человеку я старался не зря.

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

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

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

1
Автор поста оценил этот комментарий

@Anton1978, какой следующий проект?

раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества