[{"data":1,"prerenderedAt":367},["ShallowReactive",2],{"article-devlog-1":3},{"article":4},["Reactive",5],{"documentId":6,"title":7,"slug":8,"publish_date":9,"tags":10,"content_blocks":13,"main_image":16,"SEO":363,"tag":12,"excerpt":365},"e2h0hhrf95i1d3i7l4yehjhv","Отчёт разработки #1","devlog-1","2026-04-30T21:00:00.000Z",[11],{"name":12},"devlog",[14,38,95,115,123,140,149,172,182,202,214,226,238,250,281],{"Title":15,"title_level":16,"Content":17,"html_block":16,"images_type":16,"images_position":36,"images_title":16,"image_link":16,"class_name":16,"Images":37},"[Вступление]",null,[18,24,28,32],{"type":19,"children":20},"paragraph",[21],{"text":22,"type":23},"Всем привет! И всех с первым мая, надеюсь, у вас есть планы на этот праздник! А я подвожу итоги первого месяца разработки игры UnderBorn. Это только начало, и больше эксперименты. При этом медленно, но верно разработка ведётся, и дальше будет только лучше!","text",{"type":19,"children":25},[26],{"text":27,"type":23},"За этот период сделано много основной логики игры, самые основы основ. Без этого игра бы делалась «на коленке» в виде мода Minecraft, а смысла в этом мало, когда вся логика супер-глобальна. Плюсом различные прослойки в виде Forge, Bukkit плагинов, а с ними и ASM, миксины и прочий хлам замедляют игру.",{"type":19,"children":29},[30],{"text":31,"type":23},"Также большое внимание уделил инвентарям, профилям, моделям и оружию в игре! И в целом будущей инфраструктуре, на которой будут строиться всё для серверов игры.",{"type":19,"children":33},[34],{"text":35,"type":23},"Впрочем, давайте переходить к сути :)","top",[],{"Title":39,"title_level":40,"Content":41,"html_block":16,"images_type":87,"images_position":88,"images_title":16,"image_link":16,"class_name":16,"Images":89},"Манипуляции с кодом","h2",[42,46,50],{"type":19,"children":43},[44],{"text":45,"type":23},"Принято решение взять чистый исходный код 1.7.10, разобрать его и сделать на его основе свою игру. Да, это непросто, да, это не Unity или Unreal Engine — тем не менее, для Minecraft есть огромное количество уже готовых модов и кодовой базы, сама игра даже в чистом виде отлично работает с серверной логикой, в игре хороший мувмент. Это даёт хороший буст на началах.",{"type":19,"children":47},[48],{"text":49,"type":23},"Сам по себе код уже сейчас за первый месяц сильно преобразован:",{"type":51,"format":52,"children":53},"list","unordered",[54,59,63,67,71,75,79,83],{"type":55,"children":56},"list-item",[57],{"text":58,"type":23},"Всё обновлено до LWGJL 3.4.1 (самая свежая версия) и Java 26 (самая последняя версия);",{"type":55,"children":60},[61],{"text":62,"type":23},"Из Forge уже выпилены ASM, вся логика ASM перенесена напрямую в игру;",{"type":55,"children":64},[65],{"text":66,"type":23},"Регистрация модов Forge происходит непосредственно в коде - Forge не перебирает кучу файлов игры, чтобы найти моды, не ищет входные точки, всё это передаётся напрямую;",{"type":55,"children":68},[69],{"text":70,"type":23},"Все стаки увеличены до максимально возможных размеров (а это целых 2147483647), так как изначально в игре стак ограничен лишь 64 предметами (само собой, стаки будут ограничены, просто их ограничение теперь не зависит от логики Minecraft);",{"type":55,"children":72},[73],{"text":74,"type":23},"Убран некоторый мусорный код (интеграция Twitch, Realms, playerdata, числовые ID, работа с механизмами, тики для роста и прочий хлам, который в игре не нужен) — ещё много чего разбирать по винтикам и выбрасывать, так что самое начало этим заниматься.",{"type":55,"children":76},[77],{"text":78,"type":23},"Внедрена возможность пользоваться любыми TTF шрифтами",{"type":55,"children":80},[81],{"text":82,"type":23},"Внедрена библиотека для простого описания GUI и HUD",{"type":55,"children":84},[85],{"text":86,"type":23},"Начата работа по изменению основных графических технологий для повышения происзодительности игры и увеличению FPS (Texture Arrays, DDS текстуры, шейдерные оптимизации) - этот блок будет расписан подробнее в последнующих отчётах разработки","Single","bottom",[90],{"url":91,"alternativeText":16,"caption":92,"width":93,"height":94},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fesc_48cc84882b.jpg","Minecraft без пиксельных шрифтов выглядит необычно",891,551,{"Title":96,"title_level":40,"Content":97,"html_block":16,"images_type":87,"images_position":88,"images_title":16,"image_link":16,"class_name":16,"Images":110},"Работа с NPC",[98,102,106],{"type":19,"children":99},[100],{"text":101,"type":23},"Подтянул в игру CustomNPC+ — основной мод для работы с неигровыми персонажами.",{"type":19,"children":103},[104],{"text":105,"type":23},"Попытался немного поработать с камерой при взаимодействии с NPC, она теперь приближается к нему. Диалог внизу переделал так, чтобы выводилась только одна реплика. Сами варианты диалога вынес налево.",{"type":19,"children":107},[108],{"text":109,"type":23},"В общем, хочется сделать диалоги такими, как они выглядят в нормальных взрослых играх. Завезти логику озвучки, взаимодействие сразу нескольких NPC друг-с-другом, возможно вызов кат.сцен. К разработке всего этого я, скорее всего, вернусь, когда будет готов начальный сценарий, чтобы было понятно, что интересного можно сделать.",[111],{"url":112,"alternativeText":16,"caption":16,"width":113,"height":114},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fnpc_45b1637844.jpg",1080,578,{"Title":116,"title_level":40,"Content":117,"html_block":16,"images_type":16,"images_position":36,"images_title":16,"image_link":16,"class_name":16,"Images":122},"Работа с оружием и моделями",[118],{"type":19,"children":119},[120],{"text":121,"type":23},"Провёл небольшую часть работы с моделями и оружием. Так как игра MMOFPS (читай шутер) и визуал существенно влияет на впечатление, в эту часть бросаются все силы!",[],{"Title":124,"title_level":125,"Content":126,"html_block":16,"images_type":87,"images_position":88,"images_title":16,"image_link":16,"class_name":16,"Images":135},"Оружие в игре","h3",[127,131],{"type":19,"children":128},[129],{"text":130,"type":23},"В первую очередь, внедрён Flans Plus - мод, который представляет хорошую основу логики оружия, а также удобные конфиги.",{"type":19,"children":132},[133],{"text":134,"type":23},"Первым же делом попытался внедрить какое-то оружие для теста. Для этого были написаны адаптеры загрузки glTF моделей в игру! Также уже сейчас создаются инструменты для работы с оружием - положение самого оружия, положение рук и прочее.",[136],{"url":137,"alternativeText":16,"caption":138,"width":113,"height":139},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fflans_gun_bd33aade52.jpg","Оружие в руке выставлено как попало, больше демо",671,{"Title":141,"title_level":16,"Content":142,"html_block":147,"images_type":16,"images_position":36,"images_title":16,"image_link":16,"class_name":16,"Images":148},"[Оружие продолжение]",[143],{"type":19,"children":144},[145],{"text":146,"type":23},"Также в игру уже внедрена библиотека физики частиц, предназначенная для VFX эффектов, прям как в Unity! Она позволит делать красивые эффекты. Тоже тесты, тоже пока эксперименты. Но тем не менее, уже удалось сделать какой-то эксперимент с трасерами для пуль!","\u003Ciframe width=\"100%\" height=\"600\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FkiaT0u_z3fo?si=QM3g3JQtK2FzMdgA\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen>\u003C\u002Fiframe>",[],{"Title":150,"title_level":125,"Content":151,"html_block":16,"images_type":160,"images_position":88,"images_title":161,"image_link":16,"class_name":16,"Images":162},"Модели окружения и коллизии",[152,156],{"type":19,"children":153},[154],{"text":155,"type":23},"Вторая сторона темы - модели в игре. Любая игра состоит из кучи моделей, расставленных по сцене. Minecraft хоть и состоял из кубиков, и terrain никуда не денется, всё равно не подходит для цели сделать красивую игру.",{"type":19,"children":157},[158],{"text":159,"type":23},"Написан код, который загружает glTF модели в игру, и вроде как даже PBR работает! Внедрен физический движок для работы с коллизиями, а также попытался построить mesh-сетки. Это всё даёт уже сейчас возможность не привязываться к кубическим блокам, а пользоваться перемещением как в нормальных играх!","Carousel","Да, это туалет из ШРЭКА, и что вы мне сделаете? 😂",[163,166,169],{"url":164,"alternativeText":16,"caption":16,"width":113,"height":165},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Ftoilet_7664bae257.jpg",662,{"url":167,"alternativeText":16,"caption":16,"width":113,"height":168},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fcollisions_1_6092eba5e5.jpg",590,{"url":170,"alternativeText":16,"caption":16,"width":113,"height":171},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fcollisions_2_8daf5ffd62.jpg",656,{"Title":173,"title_level":16,"Content":174,"html_block":16,"images_type":87,"images_position":88,"images_title":16,"image_link":16,"class_name":16,"Images":179},"[Коллизии продолжение]",[175],{"type":19,"children":176},[177],{"text":178,"type":23},"Также сделаны блоки коллизий - полностью прозрачные невидимые блоки, по которым можно перемещаться. Это не лестницы из майна, это полноценные наклонные плоскости! Все эти блоки будут нужны, чтобы прикрывать некоторые неровности, которые вылезут по ходу с коллизиями объектов (вы бы знали, сколько проблем с ними и сколько нужно ещё дописывать 😅).",[180],{"url":181,"alternativeText":16,"caption":16,"width":113,"height":171},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fcollisions_3_f984830923.jpg",{"Title":183,"title_level":40,"Content":184,"html_block":16,"images_type":87,"images_position":88,"images_title":16,"image_link":16,"class_name":16,"Images":197},"Матричный инвентарь",[185,189,193],{"type":19,"children":186},[187],{"text":188,"type":23},"Сделал самую начальную и сырую версию матричных инвентарей. Планируется, что в игре не будет классических 27-36 слотов, а будет условно бесконечная сетка, но переносимое количество предметов будет зависеть от максимального веса рюкзака персонажа. Каждый предмет будет иметь своё значение веса, предметы могут занимать от 1 до 8 слотов (будут как маленькие, типа флешек, записок и т.п, так и большие типа массивного оружия или брони). В инвентаре может отображаться редкость предмета.",{"type":19,"children":190},[191],{"text":192,"type":23},"Также в зависимости от переносимого веса, если персонаж перегружен, то его начнёт замедлять пропорционально перевесу.",{"type":19,"children":194},[195],{"text":196,"type":23},"Большинство из этого как-то в начальном виде реализовано — дальше буду дорабатывать!",[198],{"url":199,"alternativeText":16,"caption":200,"width":113,"height":201},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Finventory_f173def5b9.jpg","Это демо инвентаря. Все GUI тестовые, таких в игре не будет :)",673,{"Title":203,"title_level":40,"Content":204,"html_block":16,"images_type":16,"images_position":36,"images_title":16,"image_link":16,"class_name":16,"Images":213},"Профили, шардирование и серверы",[205,209],{"type":19,"children":206},[207],{"text":208,"type":23},"Следующий немаловажный блок работ посвящён работе с серверной логикой и основным сервисам, которые как правило незаметны.",{"type":19,"children":210},[211],{"text":212,"type":23},"Уже сейчас я продумываю микро-сервисную архитектуру, чтобы игра могла выдерживать большие нагрузки, можно было взаимодействовать со всеми аспектами игры как в клиенте, так и за пределами (сайт, Discord, внешнее API)!",[],{"Title":215,"title_level":125,"Content":216,"html_block":16,"images_type":87,"images_position":88,"images_title":16,"image_link":16,"class_name":16,"Images":221},"Профили",[217],{"type":19,"children":218},[219],{"text":220,"type":23},"Игра теперь будет разбита на профили! Вы регистрируетесь на сайте, создаёте основной аккаунт, входите в игру и создаёте профиль игрока. Можно будет создать до 10 профилей, у которых полностью свои инвентарь, прохождение, прокачка. Это нужно, чтобы можно, например, перепройти сюжетку по другой ветке или играть за другой класс персонажа.",[222],{"url":223,"alternativeText":16,"caption":224,"width":113,"height":225},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fprofiles_0e17a21fde.jpg","Демо профилей. Все GUI тестовые, таких в игре не будет :)",675,{"Title":227,"title_level":125,"Content":228,"html_block":16,"images_type":16,"images_position":36,"images_title":16,"image_link":16,"class_name":16,"Images":237},"Шардирование",[229,233],{"type":19,"children":230},[231],{"text":232,"type":23},"Под этим страшным словом предполагается, что игра не будет зависеть только от одного сервера. Серверов может быть много, но они полностью идентичны. Для этого сделано хранение состояний игрока в базе данных MongoDB, база — это единственная точка хранения, игра обращается к ней по микро-сервису и забирает данные.",{"type":19,"children":234},[235],{"text":236,"type":23},"Если вы зайдёте на другой сервер, игра просто подтянет всё состояние профиля игрока, и все ваши предметы, оружие, броня, прокачка будут одинаковыми!",[],{"Title":239,"title_level":125,"Content":240,"html_block":16,"images_type":16,"images_position":36,"images_title":16,"image_link":16,"class_name":16,"Images":249},"Остальное",[241,245],{"type":19,"children":242},[243],{"text":244,"type":23},"Провёл работу по внедрению LuckPerms самой свежей версии в игру. Это система прав, можно будет всё разделять по пермишенам. Она особенно важна для различных привилегий или, например, для организации мероприятий. В игре теперь нет ванильного OP (прав оператора) — всё управляется централизовано.",{"type":19,"children":246},[247],{"text":248,"type":23},"Попробовал написать пару команд, \u002Ffeed и \u002Fheal вполне себе работают, хоть в игре никогда у обычных игроков и не появится. Постепенно будут внедряться большинство команд Essentials для удобной работы с сервером.",[],{"Title":251,"title_level":40,"Content":252,"html_block":16,"images_type":87,"images_position":88,"images_title":16,"image_link":16,"class_name":16,"Images":276},"Сайт и оформление",[253,265],{"type":19,"children":254},[255,257,263],{"text":256,"type":23},"Не обошёл стороной и веб. Это то, чем я занимаюсь лучше всего :)Зарегистрировал домен ",{"url":258,"type":259,"children":260},"https:\u002F\u002Funderborn.ru","link",[261],{"text":262,"type":23},"underborn.ru",{"text":264,"type":23}," и сделал простенькую страничку с описанием и ссылками. также там будут все ссылки на новости и подобные отчёты.",{"type":19,"children":266},[267,269,274],{"text":268,"type":23},"Также отрисован логотип игры, он уже сейчас хоть немного передаёт атмосферу игры! На Boosty есть",{"url":270,"type":259,"children":271},"https:\u002F\u002Fboosty.to\u002Funderborn\u002Fposts\u002F5eba0e50-be23-47a5-af78-e3c9679d75d6",[272],{"text":273,"type":23}," пост о процессе отрисовки лого",{"text":275,"type":23},", доступный поддерживающим меня :)",[277],{"url":278,"alternativeText":16,"caption":279,"width":113,"height":280},"\u002Fstatic\u002Fnews\u002Fdevlog-1\u002Fwebsite_02f724ddac.jpg","Сайт игры с логотипом",736,{"Title":282,"title_level":16,"Content":283,"html_block":16,"images_type":16,"images_position":36,"images_title":16,"image_link":16,"class_name":16,"Images":362},"[Заключение]",[284,288,292,296,310,314,317,321,351,355,358],{"type":19,"children":285},[286],{"text":287,"type":23},"[***]",{"type":19,"children":289},[290],{"text":291,"type":23},"За этот месяц проведен огромный объём работы по самым основам игры. Да, возможно, картинки вообще ничего не говорят о самой игре и мало что понятно, но уверяю, что всё это даст огромный вклад на поздних этапах и ОБТ, игра уже сразу будет работать стабильно, не придётся по ходу где-то что-то вайпать в угоду внедрения функционала, ломающего игру!",{"type":19,"children":293},[294],{"text":295,"type":23},"А дальше больше! Планирую в следующий ближайший период:",{"type":51,"format":52,"children":297},[298,302,306],{"type":55,"children":299},[300],{"text":301,"type":23},"Начать отрисовывать GUI уже так, как они будут выглядеть в игре на ОБТ;",{"type":55,"children":303},[304],{"text":305,"type":23},"Улучшить визуально оружие и взаимодействие с ним;",{"type":55,"children":307},[308],{"text":309,"type":23},"Подумать над текстурпаком, хочется в игре уже видеть какие-то постапокалиптичные текстуры.",{"type":19,"children":311},[312],{"text":313,"type":23},"Последующие отчёты разработки уже детальнее раскроют ЛОР и сюжет игры, а также визуал — наберитесь терпения! 😉",{"type":19,"children":315},[316],{"text":287,"type":23},{"type":19,"children":318},[319],{"text":320,"type":23},"Подписывайтесь на все соц.сети!",{"type":51,"format":52,"children":322},[323,333,342],{"type":55,"children":324},[325,327,331],{"text":326,"type":23},"Telegram: ",{"url":328,"type":259,"children":329},"https:\u002F\u002Ft.me\u002Funderborn_game",[330],{"text":328,"type":23},{"text":332,"type":23},"",{"type":55,"children":334},[335,337,341],{"text":336,"type":23},"Discord: ",{"url":338,"type":259,"children":339},"https:\u002F\u002Fdiscord.gg\u002Fj8m6eyb3kV",[340],{"text":338,"type":23},{"text":332,"type":23},{"type":55,"children":343},[344,346,350],{"text":345,"type":23},"VK: ",{"url":347,"type":259,"children":348},"https:\u002F\u002Fvk.ru\u002Funderborn",[349],{"text":347,"type":23},{"text":332,"type":23},{"type":19,"children":352},[353],{"text":354,"type":23},"Также напомню, что у меня есть Boosty, где вы можете поддержать разработку и помочь с развитием игры! Все, кто на начальных этапах поддержит меня, получит приятный бонус на старте и особые трофеи\u002Fачивки!Ссылка на Boosty: https:\u002F\u002Fboosty.to\u002Funderborn",{"type":19,"children":356},[357],{"text":287,"type":23},{"type":19,"children":359},[360],{"text":361,"type":23},"Спасибо, что прочитали статью, следите за обновлениями!",[],{"metaTitle":364,"metaDescription":365,"canonicalURL":366,"openGraph":16},"Отчёт разработки UnderBorn #1","Начальная разработка: ядро игры, графика, профили, матричный инвентарь, основные механики и оформление","https:\u002F\u002Funderborn.ru\u002Fnews\u002Fdevlog-1",1783594526656]