Отчёт разработки UnderBorn #1
Всем привет! И всех с первым мая, надеюсь, у вас есть планы на этот праздник! А я подвожу итоги первого месяца разработки игры UnderBorn. Это только начало, и больше эксперименты. При этом медленно, но верно разработка ведётся, и дальше будет только лучше!
За этот период сделано много основной логики игры, самые основы основ. Без этого игра бы делалась «на коленке» в виде мода Minecraft, а смысла в этом мало, когда вся логика супер-глобальна. Плюсом различные прослойки в виде Forge, Bukkit плагинов, а с ними и ASM, миксины и прочий хлам замедляют игру.
Также большое внимание уделил инвентарям, профилям, моделям и оружию в игре! И в целом будущей инфраструктуре, на которой будут строиться всё для серверов игры.
Впрочем, давайте переходить к сути :)
Манипуляции с кодом
Принято решение взять чистый исходный код 1.7.10, разобрать его и сделать на его основе свою игру. Да, это непросто, да, это не Unity или Unreal Engine — тем не менее, для Minecraft есть огромное количество уже готовых модов и кодовой базы, сама игра даже в чистом виде отлично работает с серверной логикой, в игре хороший мувмент. Это даёт хороший буст на началах.
Сам по себе код уже сейчас за первый месяц сильно преобразован:
- Всё обновлено до LWGJL 3.4.1 (самая свежая версия) и Java 26 (самая последняя версия);
- Из Forge уже выпилены ASM, вся логика ASM перенесена напрямую в игру;
- Регистрация модов Forge происходит непосредственно в коде - Forge не перебирает кучу файлов игры, чтобы найти моды, не ищет входные точки, всё это передаётся напрямую;
- Все стаки увеличены до максимально возможных размеров (а это целых 2147483647), так как изначально в игре стак ограничен лишь 64 предметами (само собой, стаки будут ограничены, просто их ограничение теперь не зависит от логики Minecraft);
- Убран некоторый мусорный код (интеграция Twitch, Realms, playerdata, числовые ID, работа с механизмами, тики для роста и прочий хлам, который в игре не нужен) — ещё много чего разбирать по винтикам и выбрасывать, так что самое начало этим заниматься.
- Внедрена возможность пользоваться любыми TTF шрифтами
- Внедрена библиотека для простого описания GUI и HUD
- Начата работа по изменению основных графических технологий для повышения происзодительности игры и увеличению FPS (Texture Arrays, DDS текстуры, шейдерные оптимизации) - этот блок будет расписан подробнее в последнующих отчётах разработки
Работа с NPC
Подтянул в игру CustomNPC+ — основной мод для работы с неигровыми персонажами.
Попытался немного поработать с камерой при взаимодействии с NPC, она теперь приближается к нему. Диалог внизу переделал так, чтобы выводилась только одна реплика. Сами варианты диалога вынес налево.
В общем, хочется сделать диалоги такими, как они выглядят в нормальных взрослых играх. Завезти логику озвучки, взаимодействие сразу нескольких NPC друг-с-другом, возможно вызов кат.сцен. К разработке всего этого я, скорее всего, вернусь, когда будет готов начальный сценарий, чтобы было понятно, что интересного можно сделать.
Работа с оружием и моделями
Провёл небольшую часть работы с моделями и оружием. Так как игра MMOFPS (читай шутер) и визуал существенно влияет на впечатление, в эту часть бросаются все силы!
Оружие в игре
В первую очередь, внедрён Flans Plus - мод, который представляет хорошую основу логики оружия, а также удобные конфиги.
Первым же делом попытался внедрить какое-то оружие для теста. Для этого были написаны адаптеры загрузки glTF моделей в игру! Также уже сейчас создаются инструменты для работы с оружием - положение самого оружия, положение рук и прочее.
Также в игру уже внедрена библиотека физики частиц, предназначенная для VFX эффектов, прям как в Unity! Она позволит делать красивые эффекты. Тоже тесты, тоже пока эксперименты. Но тем не менее, уже удалось сделать какой-то эксперимент с трасерами для пуль!
Модели окружения и коллизии
Вторая сторона темы - модели в игре. Любая игра состоит из кучи моделей, расставленных по сцене. Minecraft хоть и состоял из кубиков, и terrain никуда не денется, всё равно не подходит для цели сделать красивую игру.
Написан код, который загружает glTF модели в игру, и вроде как даже PBR работает! Внедрен физический движок для работы с коллизиями, а также попытался построить mesh-сетки. Это всё даёт уже сейчас возможность не привязываться к кубическим блокам, а пользоваться перемещением как в нормальных играх!
Также сделаны блоки коллизий - полностью прозрачные невидимые блоки, по которым можно перемещаться. Это не лестницы из майна, это полноценные наклонные плоскости! Все эти блоки будут нужны, чтобы прикрывать некоторые неровности, которые вылезут по ходу с коллизиями объектов (вы бы знали, сколько проблем с ними и сколько нужно ещё дописывать 😅).
Матричный инвентарь
Сделал самую начальную и сырую версию матричных инвентарей. Планируется, что в игре не будет классических 27-36 слотов, а будет условно бесконечная сетка, но переносимое количество предметов будет зависеть от максимального веса рюкзака персонажа. Каждый предмет будет иметь своё значение веса, предметы могут занимать от 1 до 8 слотов (будут как маленькие, типа флешек, записок и т.п, так и большие типа массивного оружия или брони). В инвентаре может отображаться редкость предмета.
Также в зависимости от переносимого веса, если персонаж перегружен, то его начнёт замедлять пропорционально перевесу.
Большинство из этого как-то в начальном виде реализовано — дальше буду дорабатывать!
Профили, шардирование и серверы
Следующий немаловажный блок работ посвящён работе с серверной логикой и основным сервисам, которые как правило незаметны.
Уже сейчас я продумываю микро-сервисную архитектуру, чтобы игра могла выдерживать большие нагрузки, можно было взаимодействовать со всеми аспектами игры как в клиенте, так и за пределами (сайт, Discord, внешнее API)!
Профили
Игра теперь будет разбита на профили! Вы регистрируетесь на сайте, создаёте основной аккаунт, входите в игру и создаёте профиль игрока. Можно будет создать до 10 профилей, у которых полностью свои инвентарь, прохождение, прокачка. Это нужно, чтобы можно, например, перепройти сюжетку по другой ветке или играть за другой класс персонажа.
Шардирование
Под этим страшным словом предполагается, что игра не будет зависеть только от одного сервера. Серверов может быть много, но они полностью идентичны. Для этого сделано хранение состояний игрока в базе данных MongoDB, база — это единственная точка хранения, игра обращается к ней по микро-сервису и забирает данные.
Если вы зайдёте на другой сервер, игра просто подтянет всё состояние профиля игрока, и все ваши предметы, оружие, броня, прокачка будут одинаковыми!
Остальное
Провёл работу по внедрению LuckPerms самой свежей версии в игру. Это система прав, можно будет всё разделять по пермишенам. Она особенно важна для различных привилегий или, например, для организации мероприятий. В игре теперь нет ванильного OP (прав оператора) — всё управляется централизовано.
Попробовал написать пару команд, /feed и /heal вполне себе работают, хоть в игре никогда у обычных игроков и не появится. Постепенно будут внедряться большинство команд Essentials для удобной работы с сервером.
Сайт и оформление
Не обошёл стороной и веб. Это то, чем я занимаюсь лучше всего :)Зарегистрировал домен underborn.ruи сделал простенькую страничку с описанием и ссылками. также там будут все ссылки на новости и подобные отчёты.
Также отрисован логотип игры, он уже сейчас хоть немного передаёт атмосферу игры! На Boosty есть пост о процессе отрисовки лого, доступный поддерживающим меня :)
За этот месяц проведен огромный объём работы по самым основам игры. Да, возможно, картинки вообще ничего не говорят о самой игре и мало что понятно, но уверяю, что всё это даст огромный вклад на поздних этапах и ОБТ, игра уже сразу будет работать стабильно, не придётся по ходу где-то что-то вайпать в угоду внедрения функционала, ломающего игру!
А дальше больше! Планирую в следующий ближайший период:
- Начать отрисовывать GUI уже так, как они будут выглядеть в игре на ОБТ;
- Улучшить визуально оружие и взаимодействие с ним;
- подумать над текстурпаком, хочется в игре уже видеть какие-то постапокалиптичные текстуры.
Последующие отчёты разработки уже детальнее раскроют ЛОР и сюжет игры, а также визуал — наберитесь терпения! 😉
Подписывайтесь на все соц.сети!
- Telegram: https://t.me/underborn_game
- Discord: https://discord.gg/j8m6eyb3kV
- VK: https://vk.ru/underborn
Также напомню, что у меня есть Boosty, где вы можете поддержать разработку и помочь с развитием игры! Все, кто на начальных этапах поддержит меня, получит приятный бонус на старте и особые трофеи/ачивки!Ссылка на Boosty: https://boosty.to/underborn
Спасибо, что прочитали статью, следите за обновлениями!