Я давно хотел поделать игры, причем именно 2D, меня как-то не тянет к 3D. Периодически подрывался, что-то делал, но никогда не доделывал до хоть какого-нибудь приемлемого результата. Но в это раз что-то поменялось, я смог собраться и, спустя несколько недель разработки урывками в свободное время, получить более-менее рабочий вариант.
В общем-то суть игры проста - надо собирать яйца, которые падают. С увеличением счета у яиц постепенно увеличивается частота выпадения и скорость скатывания. Я не стал в этом плане перемудривать и добавлять какие-нибудь дикие механики.
Делал на Godot, потому что ну как-то нет веры Unity до сих пор, а Unreal Engine че-то слишком мощный для моих, в общем-то простых, хотелок. Согласитесь, немного странно качать движок весом почти в 40 Гб, если я не планирую делать прям-таки графон. По сути вся моя графика заключается в спрайтах и немного в освещении.
Буду рад отзывам, предложениям и критике. Что касается этой игры, я наверно не буду её дальше развивать, но буду исправлять косяки, когда они обнаружатся. Но хотелось бы продолжить разработку игр. Теперь, когда у меня за плечами есть хоть один законченный проект, я теперь с большей уверенностью могу приступать к разработке новых игр
В общем, тестил сегодня мультиплеер, пока что есть только подключение к серверу, а запуск матча буду тестить уже завтра и завтра же поделюсь скриношами и, возможно, геймплеем игры.
Об игре Планируется пвпве-экшен шутер с сюжетом, интересными игровыми механиками, нестандартными для данного жанра по типу взаимодействия с окружающей средой, обильное количество игрового контента и кооперативность игры. А да, забыл, в сеттинге скрап-панка, но, возможно, будет и больше, пока не определился)
Привет, для ЛЛ : я сделал игру, раздаю её бесплатно на 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'». За него и играем.
«Разведчик '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
Всем добрый вечер, или другое время, я 3д художник, разрабатываю небольшой некоммерческий браузерный шутер для души и портфолию, ищу энтузиаста. Проект планируется полностью бесплатным, упор на оптимизацию под WebGL.
С моей стороны полностью готово(скриншоты прикреплены):
3д модели рук героя со всем оружием;
Полный цикл анимаций для всего оружия и врагов на каждое действие;
3д пропсы для окружения(дома, гаражи, заборы и т.д.)
Полный 2д интерфейс (кнопки, плашки, игровое меню)
Суть игры и геймплей:
Бесконечный аркадный шутер на выживание, вдохновленный Slow Roads. Сеттинг: Майор ФСБ против беглых преступников в пустом поселке городского типа с сатирой над РКН.
Задача:
Плоская генерация:
Мир плоский, без рельефа и высот, генерация окружения за счет шума на основе плоской сетки в 3д пространстве.
Модульный ии:
В основе один ИИ для всех врагов, с небольшими особенностями для каждого(всего планируется 5 типов)
Простая логика прогрессии:
Счетчик убийств врагов на время и тип, который разблокирует финальное оружие при выполнении всех ачивок.
Модульное оружие:
Нужен один гибкий класс оружия, где у каждого будут различаться характеристики, дальность, урон в голову и в тело. (Всего 6 видов оружия)
Если вам несложно помочь с этим, и получить красивую игру в портфолио, пишите.
Сейчас плотно занялся визуалом первого акта — участком трассы со старой заправкой.
На скриншоте пока ещё хорошо видно, что сцена в работе. Изначально я сделал слишком большую территорию и забил её настоящими 3D-деревьями. Красиво только в теории: игрок туда почти не ходит, а движок всё это считает.
Поэтому теперь упрощаю. Возле дороги и АЗС остаются настоящие деревья, кусты и трава, а дальше лес продолжается обычным фоном. Так и ресурсов меньше ест, и внимания можно больше уделить самой заправке.
Заодно привожу в порядок мелочи: дверь, интерьер, товары на полках, мусор вокруг здания, материалы дороги и земли. Добавляю нормали, roughness, грязь, трещины и заплатки, чтобы всё не выглядело идеально плоским.
Постепенно тестовый полигон начинает становиться нормальной игровой локацией.
В Telegram пишу подробнее про разработку, код систем, машину, NPC, диалоги и Godot:
Последние три дня почти целиком ушли на машину. Причём не только на физику — переделал всю логику того, как игрок понимает её состояние, ищет неисправности и занимается ремонтом.
Главное изменение — убрал «магическую диагностику» с готовыми процентами и названиями поломок. Теперь всё работает по нормальной цепочке:
Под это полностью переделал автомобильное меню. Теперь в нём четыре раздела: «Состояние», «Осмотр», «Работы» и «История». Игрок постепенно изучает машину, а техническая информация открывается через собственный опыт, документы и разговоры с NPC.
Заодно сильно расширилась сама система поломок: аккумулятор, патрубки, генератор и ремень, масло, фильтр, свечи, тормоза, топливо, подвеска, колёса, сцепление и коробка. Для осмотра появились реальные зоны на самой машине, а сложный ремонт теперь требует нормального гаража.
Большая работа была и с самим ВАЗ-2101. Старую модель заменил новой составной — 508 мешей, 545 узлов и 25 подвижных элементов. Подключены двери, капот, багажник, колёса, руль, педали, КПП, ручник, кнопки и приборные стрелки.
Параллельно появились полноценные звуки и визуальные признаки неисправностей: разные слои двигателя, пар при перегреве, белый/чёрный/сизый выхлоп, течи масла, бензина и охлаждайки, лужи, искры, огонь, дым пробуксовки и сажа.
В конце всё это связал с сохранениями и прогнал тестами. Машина снова нормально стоит на четырёх колёсах, работает подвеска и коробка, двигатель корректно реагирует на неправильную передачу, а в тесте машина разогналась до 119,6 км/ч.
На скриншотах — текущее автомобильное меню. Теперь это уже не экран с характеристиками, а часть самой игровой механики.
Отдельно запишу видео с визуальными эффектами , звуками и новыми механиками позже.