TGViewer
Channel Public Channel
Phase Of Horizon | HollowEngine

Phase Of Horizon | HollowEngine

@hollowengine

Engine for development story-based maps & modpacks.

Support the project:
https://boosty.to/hollowhorizon/
Subscribers
373
Photos
152
Videos
94
Links
61

Showing posts older than #193 · Back to latest

Older Posts 12 shown
Post #190 778
Всё ещё работаю над обновлением редактора кода 😵‍💫 | День 88

В целом, уже вырисовывается что-то более-менее рабочее, пока что работаю над бесшовным обновлением подсветки в фоновом режиме, чтобы это дело стабильно работало для любых текстовых файлов. Ну и парочка новых фишек:
- Кейбинд ctrl + '/': Быстро закомментировать или раскомментировать строку
- Кейбинд ctrl + 'd': Дублировать выделенный текст
- Сохранение после 0.5с бездействия
В общем, рефакторинг уже практически закончен, остались только небольшие правки
  • ❤ 5
Post #188 658
Сгенерированные классы для ассетов и ключей перевода выглядят примерно так. Раньше мне приходилось хардкодить это всё вручную 🫠
Кстати говоря, идея для подобной системы была позаимствована из Android, где кодогенерация ссылок на ассеты - обычное дело.
  • ❤ 3
  • 🔥 1
  • 👀 1
Post #187 669
Что такое Грабля и почему все её боятся? 🔱 | День 87

Сегодня опять обзорный пост, пока я вожусь с рефакторингом)
Поговорить я бы хотел насчёт Gradle, инструмента для компиляции и сборки .jar файлов. Если вы делаете моды или хотя бы смотрели исходники других проектов, то часто могли заметить там файлик вроде build.gradle или build.gradle.kts, это - скрипт сборки, который собирает файлы зависимостей и проекта(ов) в один архив .jar. И по сути это всё, конец, всем спасибо за внимание, пока!
Ну, а если серьёзно, то за простой сборкой проекта кроется ещё тонна разных интересных задач, в рамках создания модов, самое простое, что можно вспомнить - это декомпиляция и деобфускация Minecraft для разработки, а также реобфускация вашего кода после компиляции (чтобы он работал с обфусцированным Minecraft). Также с его помощью, можно обрабатывать файлы в вашем проекте, например, часто в mods.toml, название мода напрямую берётся из конфига, а не прописывается вручную (особенно в мультиплатформенных модах).
В HollowEngine я использую несколько кастомных скриптов для Gradle с достаточно уникальным функционалом, который я пока не видел в других модах, так что хочу поделиться)
- Автоматическая генерация mods.toml / neoforge.mods.toml / fabric.mod.json - Заполнять эти шаблоны под каждую версию и загрузчик было бы довольно неудобно, поэтому я создал скрипт, который автоматически создаёт эти файлы на основе параметров проекта!
- Автоматическая генерация констант для всех ресурсов. Однажды я просто з**бался писать очередной раз hollowengine:textures/gui/icons/[texture].png, и тогда я подумал, почему бы мне не генерировать класс со всеми такими ресурсами, тогда IDE всегда сможет мне подсказать все файлы в нужной папке.
Идея получилась очень удобная и имеет куда больше возможностей, о которых я раньше не задумывался - теперь я сразу вижу, какие ассеты в моде не используются. А если я удалю ассет, который уже используется в движке - мод просто не скомпилируется. В особенности это важно, когда допустил опечатку в названии текстуры, потом её переименовал, но заменил не все места, где она использовалась.
- Ну и последняя фича, которую я ввёл буквально на днях, это аналогичный генератор для ключей перевода. По сути логика та же, что и писал выше, но его пока "не обкатал" 🙃
Но думаю аналогично, куда проще будет отслеживать мёртвые ключи, которые когда-то были в моде, а потом были из него удалены)
И благодаря Gradle это всё работает перед компиляцией, тем самым само обновляется при добавлении новых ресурсов и перекомпиляции проекта 🤔
  • 🤯 4
Post #183 319
Продолжаю дополнять редактор кода 💫 | День 86

Решил всё же взяться за тот страшный класс на 1700 строк кода, в котором намешано всё: интерфейс редактора кода, обработка вводимого текста, попап с подсказками, подсветка кода и ошибок в нём, все хоткеи, автодополнения скобок и отступов. Короче говоря если и дальше плодить техдолг добавляя туда новые фичи вроде: однострочного ввода, переноса строк, read-only режима, то скоро в этом уже никто не сможет разобраться 💀

Так что в связи с этим готовлю мощную штуку, чтобы в будущем легко было добавлять поддержку новых языков (как минимум в будущем могут понадобиться json, toml, markdown, mcfunction), а также кучу разных параметров, поскольку для того же редактора анимаций прописывать условия для анимаций без скриптинга выйдет слишком неудобно 🥲
Вот пока небольшой обзор того, как оно теперь выглядит, раньше все эти настройки и команды были захардкодены:
  • 🔥 2
  • ❤ 1
Post #182 683
Обновления редактора кода 🏎 | День 85

Несмотря на то, что редактор кода откладывается до 2.1, решил всё же немного обновить его под новый дизайн. А всё, потому что в редакторе анимаций также будут использоваться скрипты, разве что за одним исключениям - условия перехода будут описываться одной строчкой. Так что пока что провёл некоторый рефакторинг в основной системе.
  • ❤ 6
  • 🔥 1
Post #181 724
Мод портирован на 1.21.1 🎯| День 84

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

Есть пара проблем, которые я тут не хочу освещать, так что в ближайшие дни посты будут довольно скудные, так что громких новостей пока не ждите 🫡
  • ❤ 7
  • 😐 2
Post #180 685
Много всякой всячины 🎒| День 83

Сегодня я поработал над многими мелочами, перед тем как полноценно заняться контроллером анимаций:
- Доработал обработку кликов по связям/переходам в прототипе редактора графов
- Немного обновил поддержку fbx моделей (парсинг арматур/скинов, материалы и немного обновлений по анимациям), но там пока ещё много работы, поскольку формат довольно объёмный, даже в сравнении с gltf
- Почистил старую систему компонентов (до Geary) и добавил отладку блоков кода, выглядит это как-то так:
◄ START TRACE │ scripts/npc_dialogue.bc
├─ IfBlock [0.023ms] │ condition=true
│ ├─ PrintBlock [0.005ms] │ text="Hello!"
│ └─ SetVarBlock [0.001ms] │ hasMetPlayer=true
▼ END TRACE │ scripts/npc_dialogue.bc │ 3 blocks [0.029ms]
  • 🔥 2
  • ❤ 1
Post #179 748
500 Виталиков уже здесь и ещё пара тысяч на подходе 🗳 | День 82

Сегодня решил немного поработать над рефактирингом отрисовщика моделей в 1000+ строк, чтобы разбить его на несколько более понятных классов, а по итогу сделал поддержку инстансинга 👀

Если раньше пределом было где-то 100 моделей и FPS падал до 60, то теперь и при 500+ анимированных нпс результаты приемлемые 🤔
Но это пока лишь Proof Of Concept, на деле там ещё много чего можно оптимизировать, в том числе обновление этих самых нпс через ECS, но пока что идея идёт в долгий ящик, ибо поддержку шейдерпаков делать куда дольше и сложнее, чем ванила, как сейчас
  • ❤ 7
  • 👍 4
Post #178 352
gltf и glb ему было мало... obj ему было мало... Он теперь и на Bedrock Entity замахнулся... 😬 | День 81

Доделал, наконец, сегодня поддержку Bedrock-моделей помимо gltf. Сложность тут в том, что местные анимации могут использовать Molang в качестве ключа анимации (короче процедурные анимации), пришлось переписывать интерполяторы, чтобы они поддерживали подобный функционал 😕

Но, вполне вероятно это упростит в будущем работу с анимациями и катсценами, ну и также это неплохо расширяет возможности использования BlockBench'а
P.S. экспортер поломал глаза и теперь вместо них остались 2 дырки и зрачки... Так что нет, это не я довёл Виталика своими экспериментами 😅
  • ❤ 3
  • 🔥 1
  • 🎄 1
Post #175 851
Скриншоты в пост не поместились)

Получается остался только редактор анимаций и доработка самих моделей 🤔
  • ❤ 5
  • 🐳 2
Post #174 708
Редактор тегов, предпросмотр моделей, редактирование компонентов для префабов и сущностей ✨ | День 80

Довольно много всего интересного сегодня сделал, как по контенту, так и по исправлениям 👀
- Прототип редактора тегов: позволяет редактировать различные теги связанные с логикой, например, тип ломаемого блока или уровень инструмента с которого можно добыть тот или иной блок. Также эти теги могут быть использованы в рецептах.
- Предпросмотр моделей: теперь можно напрямую открыть любую модель и посмотреть, работает ли она даже без входа в мир и призыва нпс.
- Префабы и сущности: Компоненты теперь спокойно привязываются как к префабам, так и к сущностям, а при их изменении они сразу обновляются в предпросмотре.
- Инструмент для NPC теперь работает на любых сущностей (для текущего игрока шифт + пкм), можно любой сущности добавить определённые компоненты меняя внешний вид или логику
- Исправлен расчёт нормалей, касательных и матриц при импорте некоторых моделей
  • 🐳 1
Post #173 662
Улучшаем редактор NPC 🐓 | День 79

Добавил сегодня кучу новых фишек в редактор:
- Отображение bounding box'а / Хитбокса
- Отображение сетки модели для отладки
- Автоповорот
- Предпросмотр всех анимаций в модели и полосу прогресса анимации
- Обнаружение всех компонентов и добавление их в префаб

В общем, возвращаюсь к разработке 🛞
  • ❤ 8
  • 🔥 3
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →