Отчёт разработки UnderBorn #1

Всем привет! И всех с первым мая, надеюсь, у вас есть планы на этот праздник! А я подвожу итоги первого месяца разработки игры UnderBorn. Это только начало, и больше эксперименты. При этом медленно, но верно разработка ведётся, и дальше будет только лучше!

За этот период сделано много основной логики игры, самые основы основ. Без этого игра бы делалась «на коленке» в виде мода Minecraft, а смысла в этом мало, когда вся логика супер-глобальна. Плюсом различные прослойки в виде Forge, Bukkit плагинов, а с ними и ASM, миксины и прочий хлам замедляют игру.

Также большое внимание уделил инвентарям, профилям, моделям и оружию в игре! И в целом будущей инфраструктуре, на которой будут строиться всё для серверов игры.

Впрочем, давайте переходить к сути :)

Манипуляции с кодом

Принято решение взять чистый исходный код 1.7.10, разобрать его и сделать на его основе свою игру. Да, это непросто, да, это не Unity или Unreal Engine — тем не менее, для Minecraft есть огромное количество уже готовых модов и кодовой базы, сама игра даже в чистом виде отлично работает с серверной логикой, в игре хороший мувмент. Это даёт хороший буст на началах.

Сам по себе код уже сейчас за первый месяц сильно преобразован:

Промежуточный результат работ с кодом и интерфейсом
Minecraft без пиксельных шрифтов выглядит необычно

Работа с NPC

Подтянул в игру CustomNPC+ — основной мод для работы с неигровыми персонажами.

Попытался немного поработать с камерой при взаимодействии с NPC, она теперь приближается к нему. Диалог внизу переделал так, чтобы выводилась только одна реплика. Сами варианты диалога вынес налево.

Тестовая работа с диалогами NPC

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

Работа с оружием и моделями

Провёл небольшую часть работы с моделями и оружием. Так как игра MMOFPS (читай шутер) и визуал существенно влияет на впечатление, в эту часть бросаются все силы!

Оружие в игре

В первую очередь, внедрён Flans Plus - мод, который представляет хорошую основу логики оружия, а также удобные конфиги.

Первым же делом попытался внедрить какое-то оружие для теста. Для этого были написаны адаптеры загрузки glTF моделей в игру! Также уже сейчас создаются инструменты для работы с оружием - положение самого оружия, положение рук и прочее.

Прототип оружия в UnderBorn
Оружие в руке выставлено как попало, больше демо

Также в игру уже внедрена библиотека физики частиц, предназначенная для VFX эффектов, прям как в Unity! Она позволит делать красивые эффекты. Тоже тесты, тоже пока эксперименты. Но тем не менее, уже удалось сделать какой-то эксперимент с трасерами для пуль!

Модели окружения и коллизии

Вторая сторона темы - модели в игре. Любая игра состоит из кучи моделей, расставленных по сцене. Minecraft хоть и состоял из кубиков, и terrain никуда не денется, всё равно не подходит для цели сделать красивую игру.

Написан код, который загружает glTF модели в игру, и вроде как даже PBR работает! Внедрен физический движок для работы с коллизиями, а также попытался построить mesh-сетки. Это всё даёт уже сейчас возможность не привязываться к кубическим блокам, а пользоваться перемещением как в нормальных играх!

Тест коллизий окружения 1
Тест коллизий окружения 2
Тест коллизий окружения 3
Да, это туалет из ШРЭКА, и что вы мне сделаете? 😂

Также сделаны блоки коллизий - полностью прозрачные невидимые блоки, по которым можно перемещаться. Это не лестницы из майна, это полноценные наклонные плоскости! Все эти блоки будут нужны, чтобы прикрывать некоторые неровности, которые вылезут по ходу с коллизиями объектов (вы бы знали, сколько проблем с ними и сколько нужно ещё дописывать 😅).

Тест коллизий окружения 3

Матричный инвентарь

Сделал самую начальную и сырую версию матричных инвентарей. Планируется, что в игре не будет классических 27-36 слотов, а будет условно бесконечная сетка, но переносимое количество предметов будет зависеть от максимального веса рюкзака персонажа. Каждый предмет будет иметь своё значение веса, предметы могут занимать от 1 до 8 слотов (будут как маленькие, типа флешек, записок и т.п, так и большие типа массивного оружия или брони). В инвентаре может отображаться редкость предмета.

Также в зависимости от переносимого веса, если персонаж перегружен, то его начнёт замедлять пропорционально перевесу.

Большинство из этого как-то в начальном виде реализовано — дальше буду дорабатывать!

Демо матричного инвентаря
Это демо инвентаря. Все GUI тестовые, таких в игре не будет :)

Профили, шардирование и серверы

Следующий немаловажный блок работ посвящён работе с серверной логикой и основным сервисам, которые как правило незаметны.

Уже сейчас я продумываю микро-сервисную архитектуру, чтобы игра могла выдерживать большие нагрузки, можно было взаимодействовать со всеми аспектами игры как в клиенте, так и за пределами (сайт, Discord, внешнее API)!

Профили

Игра теперь будет разбита на профили! Вы регистрируетесь на сайте, создаёте основной аккаунт, входите в игру и создаёте профиль игрока. Можно будет создать до 10 профилей, у которых полностью свои инвентарь, прохождение, прокачка. Это нужно, чтобы можно, например, перепройти сюжетку по другой ветке или играть за другой класс персонажа.

Демо системы профилей
Демо профилей. Все GUI тестовые, таких в игре не будет :)

Шардирование

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

Если вы зайдёте на другой сервер, игра просто подтянет всё состояние профиля игрока, и все ваши предметы, оружие, броня, прокачка будут одинаковыми!

Остальное

Провёл работу по внедрению LuckPerms самой свежей версии в игру. Это система прав, можно будет всё разделять по пермишенам. Она особенно важна для различных привилегий или, например, для организации мероприятий. В игре теперь нет ванильного OP (прав оператора) — всё управляется централизовано.

Попробовал написать пару команд, /feed и /heal вполне себе работают, хоть в игре никогда у обычных игроков и не появится. Постепенно будут внедряться большинство команд Essentials для удобной работы с сервером.

Сайт и оформление

Не обошёл стороной и веб. Это то, чем я занимаюсь лучше всего :)Зарегистрировал домен underborn.ruи сделал простенькую страничку с описанием и ссылками. также там будут все ссылки на новости и подобные отчёты.

Также отрисован логотип игры, он уже сейчас хоть немного передаёт атмосферу игры! На Boosty есть пост о процессе отрисовки лого, доступный поддерживающим меня :)

Сайт UnderBorn
Сайт игры с логотипом

За этот месяц проведен огромный объём работы по самым основам игры. Да, возможно, картинки вообще ничего не говорят о самой игре и мало что понятно, но уверяю, что всё это даст огромный вклад на поздних этапах и ОБТ, игра уже сразу будет работать стабильно, не придётся по ходу где-то что-то вайпать в угоду внедрения функционала, ломающего игру!

А дальше больше! Планирую в следующий ближайший период:

Последующие отчёты разработки уже детальнее раскроют ЛОР и сюжет игры, а также визуал — наберитесь терпения! 😉

Подписывайтесь на все соц.сети!

Также напомню, что у меня есть Boosty, где вы можете поддержать разработку и помочь с развитием игры! Все, кто на начальных этапах поддержит меня, получит приятный бонус на старте и особые трофеи/ачивки!Ссылка на Boosty: https://boosty.to/underborn

Спасибо, что прочитали статью, следите за обновлениями!