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
372
Photos
152
Videos
92
Links
61

Showing posts older than #281 · Back to latest

Older Posts 19 shown
Post #280 306
Ещё одна удобная и простая фишка - замена рецептов 🤩

Достаточно просто найти в списке рецептов исходный рецепт, после чего появится выбор, где его можно переопределить или скрыть (удалить с возможностью восстановления), ну и разумеется можно легко найти список изменённых рецептов.

Пока что само редактирование максимально упрощённое, просто json-файл, но с этим уже можно работать. Но как не странно, даже сейчас, это куда быстрее, чем самому лезть в датапаки или заморачиваться с KubeJS, копированием предмета из руки и всё равно искать recipe_id чтобы удалить исходный рецепт 🤔
Разве что массово их удалять/редактировать пока нельзя...
  • 🐳 8
  • 🔥 1
Post #279 301

Forwarded from BMProjects

❗️ МНЕ ГОВОРЯТ, ЧТО МНЕ НУЖНО ДЕЛАТЬ!

С момента объявления тематики сборки для ModPackJam'а прошло уже несколько дней и мы готовы поделиться большим спойлером относительно нашего проекта — Lost in Space.🆒

⚡️В LiS ваша основная задача — выполнять задания, полученные с помощью специального бортового компьютера. Именно благодаря ним вы сможете выжить и развиться в дивном мире.


👀 Но кто дает эти задания, почему и можно ли ему доверять? Ответы вы получите при прохождении модпака уже совсем скоро!

Демонстрация записана на тестовом билде, к релизу многое может измениться!
  • 🤩 3
  • ❤ 1
  • 🔥 1
Post #278 320
О, мне кажется я где-то видел этого чувака из ролика 🤔
  • 🔥 2
  • 😁 1
Post #277 401
Продолжаю улучшать систему моделей 👀

Теперь помимо анимаций "по триггеру" Вы можете создать файл метаданных модели и указать в нём контроллер анимаций!
Внутри можно создать несколько слоёв (например, тело / голова / эмоции), которые будут работать независимо друг от друга. Пока есть 2 слоя - клип и контроллер.
- Первый это просто зацикленная анимация, которая будет выполняться бесконечно (например, моргание).
- А второй это граф, где можно указать несколько состояний, например: ожидание, ходьба, бег. А также настроить условия и время перехода в каждое из этих состояний.
Кроме того, в условиях можно добавлять собственные переменные через entity.data, тем самым легко переключаться между десятками разных анимаций без особой нагрузки на сеть или рендеринг.

Ну и вот небольшой гайд, как этим пользоваться 🙃
  • 🔥 6
  • ❤ 3
  • 🏆 2
Post #276 462

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • ❤ 6
  • 👍 4
  • 🔥 3
Post #275 426

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 👍 5
  • 🔥 3
  • 🍓 3
Post #274 395

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • ❤ 6
  • 🔥 3
  • 🤯 1
Post #272 484
Сегодня, наконец, довёл до ума шрифты в UI-системе. Теперь их есть 3 режима:
🧊 Ванильный (теперь по умолчанию, раньше был Monocraft): Простой bitmap шрифт, т.е. просто картинка со всеми символами. Я его до этого избегал, поскольку ванильный движок тратил довольно много ресурсов на обработку компонента (цветовые коды, текст с переводом, форматирование), HollowEngine делает это в десятки раз быстрее.
⚙️ MSDF: Основной формат используемый в HollowEngine, основная его фишка заключается в том, что он не так сильно искажает строки при масштабировании (наверное замечали, что при маленьком шрифте текст становится почти не читаем), а кастомные .ttf шрифты становятся слишком пикселезированными или размытыми. MSDF как раз и решает эту проблема
✨ TTF: Ранее для него банально не было парсера, который его переводит в MSDF, приходилось всё делать через специальную консольную утилиту, сейчас же достаточно просто добавить в ресурсы необходимый шрифт. Из минусов разве что то, что он использует библиотеку FreeType, которая появилась только на 1.21.1, если кому-то понадобится бекпортировать на 1.20.1, это станет ещё одной преградой 🙃
Дальше остаётся разве что всякие эффекты или анимации делать)
  • 🔥 7
  • ❤ 3
Post #271 523

This post (sticker, poll or similar) has no web preview. Open in Telegram

  • 🔥 7
  • ❤ 2
  • ✍ 2
Post #270 647
Дошли руки допилить ещё одну фичу, скоро появится в обнове и документации 👍
  • ❤ 6
  • 😨 2
  • ❤‍🔥 1
  • 🔥 1
Post #269 612
Ну что, движок тем временем не стоит на месте. Я практически завершил с обновлением, из нового:
- Завершена миграция с Kool на самописный фреймворк интерфейсов 😕
- Теперь пользоваться UI-фреймворком можете и Вы (см. документацию)
- Встроенная IDE, наконец, поддерживает FIR-плагины (Compose и Serialization теперь работают в скриптах), если вы хоть немного шарите в Kotlin, думаю вам это о чём-то да говорит 💻
- Звуки теперь можно настраивать прямо в редакторе (подробнее тут) 📢
- Улучшена навигация NPC в мире 🖥
- Улучшены действия нпс, починен скиннинг и скелетные анимации. Исправлена поддержка моделей форматов `.geo.json` (и molang анимаций) 🤩
- Добавлены node-скрипты, которые можно прикреплять к нпс или другим сущностям, включая игроков ⚙️
- UI-фреймворк теперь использует высокопроизводительные шейдеры, а также поддерживает практически любую векторную графики 🫣

На мой взгляд этого уже достаточно, чтобы постепенно начинать строить на движке реальные проекты (например, в ролике я буквально одним скриптом реализовал подсказку, как в моде Jade). Хотя до выпуска на CurseForge и Modrinth, я пока что ещё планирую завершить расширенную версию State-функций и дочистить скриптовый API 🫠
  • ❤ 6
  • 🔥 1
Post #267 725
HollowEngine теперь и такое умеет 👀
  • 🔥 12
  • 🥰 3
  • ❤ 2
  • 🤯 2
  • 😱 1
Post #266 839
Тем временем я практически закончил перенос с Katari на Kotlin.
Если коротко, о том, что изменилось:
👩‍💻 Были добавлены 3 новых типа скриптов:
✈️ Одноразовый - запускается вручную или через другие скрипты.
🔄 Перезагружаемый - запускается вместе с игрой.
📝 Компонент - можно прицепить к определённым объектам.
🔤 Обновлена встроенная IDE, теперь она более отзывчивая и поддерживает больше конструкций связанных со скриптингом и Kotlin в целом.
💾 Более гибкая система сохранения, теперь можно сохранять как глобальные данные скрипта, так и удобно делить его на небольшие фрагменты продолжая с того момента, который вы сами укажете.
📦 Полная интеграция с классами игры, то есть весь функционал доступный в обычных модах теперь доступен в скриптах. Позднее появится и возможность импортировать другие моды в скриптах.


Пока что я это лишь бета, к релизу я собираюсь обновить функции связанные с анимациями и интерфейсами, а также завершить миграцию с Kool UI на собственный фреймворк движка - там по сути остаётся перенести только интерфейс катсцен ✨

Обновлённая документация (там пока остались пара старых статей с Katari, но их скоро удалят 🙃):
🛞 https://0mods.team/docs/hollowengine/scripting
  • ❤ 5
Post #265 744
Ладно, вышел косяк с отложенными постами, если что читать в этом порядке 😂

- [Что было сделано за последние пару недель 😶‍🌫️]
- [Что уже готовится к новому релизу 😱]
- [Сбор средств на разработку и проектирование системы эффектов 👀]

Похоже нельзя мне надолго пропадать, а то слишком много потом писать приходится)))
  • 🥴 5
  • ❤ 2
Post #264 709
Наверное, пора рассказать, чем я занимался всё это время? 👀
Осторожно, много букав!

А произошло на самом деле много всего. Если коротко: в HollowEngine система интерфейсов довольно сильно расширилась, появились новые инструменты для редакторов, улучшились NPC, а также были пофикшены всякие баги и почищен код.

Начнём с интерфейсов.

В UI были добавлены кейфреймы и анимации. Теперь виджетам можно задать зацикленные анимации или одноразовые анимации открытия/закрытия. Например, окно теперь может не просто мгновенно исчезать, а красиво проиграть closing-анимацию и только потом закрыться.

Из новых виджетов появились поля ввода текста, чекбоксы, переключатели, слайдеры, Popup'ы, выпадающие элементы, подсказки и встроенные в текст виджеты. Текстовые поля тоже заметно расширились: они поддерживают однострочный и многострочный режим, фильтры ввода, выделение, несколько кареток, ctrl + z / ctrl + shift + z, автодополнение, диагностику текста, внутритекстовые подсказки, номера строк и нормальный скролл. По сути, это уже не просто "поле ввода", а полноценный текстовый редактор, который довольно просто расширить и до IDE.

Отдельно был реализован докинг. Теперь в интерфейсах можно делать окна, которые закрепляются по сторонам, делятся на области, складываются во вкладки и перетаскиваются между панелями. Раньше использовался аналог из Kool, но с ним сложнее работать и не хватает некоторых фич, которые я не могу переделать без согласования с автором движка)

Ещё одно большое изменение - UI под капотом был переписан на Compose Runtime. Сам рендер всё ещё кастомный, но сама логика построения интерфейсов теперь основана на Compose-подходе, проще говоря, интерфейсы стали гораздо удобнее описывать кодом, производительность существенно выросла, а сам движок получил фундамент для более сложных интерактивных редакторов.

С рендером тоже было много работы. Добавлена поддержка MSDF-шрифтов, пока ещё не для повседневного использования, но это легко расширить до классических ttf/rtf шрифтов. Плюс добавлена гибкая обрезка виджетов по произвольным маскам и добавлена поддержка .svg картинок.

Ещё важный момент: мод теперь может работать независимо от наличия Sodium и Iris.

Теперь про NPC.

У NPC были исправлены проблемы с хитбоксами на клиенте. Ранее он хранился только на сервере из-за чего были некоторые косяки.

Немного доработан навигатор нпс, теперь он ближе к ванильному, плюс команда "посмотреть на сущность" подразумевает голову, а не ноги)


Katari и серверные скрипты тоже стали немного стабильнее, больше они не вызывают пролаг сервера после каждого действия.

Ну и, конечно, было много "невидимой" работы: чистки старого кода, удаление устаревших тестов, фиксы крашей, правки Gradle, обновление Kotlin до 2.4.0, обновление зависимостей и куча мелких оптимизаций.

Это всё касаемо "того что было", через пару минут ещё выйдет пост касаемо "того, что будет" и почему так.
  • ❤ 1
Post #263 388
Упс, а где первый пост?
  • ❤ 2
Post #262 452
Хочется сделать что-то в духе Effekseer, Kool или Photon, но встроенное прямо в экосистему HollowEngine. То есть не просто "загрузить готовый эффект", а дать возможность удобно собирать эффекты внутри мода: частицы, эмиттеры, кривые, параметры, материалы/шейдеры, цвет, размер, скорость и другие параметры, а также привязка к объектам движка и полная настройка и интеграция со скриптингом, чего сложно добиться с внешней библиотекой, особенно нативной, вроде Effekseer. Ну и разумеется API для разработчиков модов, поскольку напомню, HollowEngine в ближайшее время можно будет использовать как библиотеку для ваших модов.

По удобству хочется ориентироваться скорее на Unity-подобный подход: чтобы эффект можно было собрать, сразу посмотреть, подкрутить параметры, сохранить и использовать без возни с отдельными программами или перезагрузкой ресурсов. Плюс, скриптинг может значительно расширить классические эффекты из разряда "запустил и забыл".

При этом важно не забыть про производительность. Эффекты могут быть красивыми, но если они начинают убивать FPS, пользы от них мало. Поэтому я хочу сразу закладывать нормальную архитектуру: батчинг, либо compute шейдеры, если они поддерживаются для тяжёлых эффектов и симуляций. В качестве примера можете посмотреть этот или этот, на самом деле рендерить миллионы партиклов способны даже встроенные видеокарты, не говоря уже о дискретных, просто зачастую сделаны они довольно халтурно)


Ну и кроме того, я решил открыть первый сбор на Boosty. Сумма не космическая, но уже и не пара обедов, поэтому сразу уточню, это не ультиматум и не предзаказ. Не будет такого, что если сбор не закроется, то система эффектов никогда не появится. И не будет такого, что если сбор закроется сегодня, то завтра уже выйдет готовый редактор. Скорее это способ поддержать это направление разработки. HollowEngine уже несколько лет развивается как бесплатный инструмент: без обязательной оплаты, без рекламы и без попытки спрятать всё полезное за подписку. Но чем больше становится проект, тем больше времени занимают крупные системы. Если вам такое направление интересно и вы хотите помочь ему появиться быстрее - поддержка на Boosty будет очень кстати 🙃
  • ❤ 1
Post #261 336
Теперь, насчёт текущих и дальшнейших планов ✈️

Начнём с наименее болезненных и тяжёлых к освоению. Первое, это постепенный перенос всех интерфейсов с Kool на внутреннюю UI-систему HollowEngine.

Kool долгое время очень помогал: на нём удобно было быстро собирать панели, редакторы и разные служебные окна. Но чем дальше развивается движок, тем больше нужно гибкости и контроля над интерфейсом. Окончательно это стало понятно после создания встроенной системы для скриптов. Из простой и быстрой системы вышел достаточно гибкий фреймворк, чтобы заменить все существующие интерфейсы движка.

Зачем? - В перспективе это значит - больше кастомизации, свои темы, свои стили, более удобные и расширяемые редакторы, прямая интеграция с игрой (меньше багов), стабильная работа на AMD GPU. Меньше странных ограничений "Почему у меня одно окно выталкивает другое, а ещё почему нельзя менять порядок вкладок? - потому что фреймворк так работает, я это так просто не исправлю".


Второе большое направление - я, похоже, всё же забрасываю Katari как основной язык для скриптинга и возвращаюсь к Kotlin.

Katari был интересным экспериментом. Он решал часть проблем сюжетных скриптов: приостанавливаемые функции, ожидание событий, удобные сценарии, сохранение состояния и так далее. Но со временем стало понятно, что часть проблем закрыта только частично, а некоторые нормально закрыть невозможно:
➡️ Производительность и стабильность: Я и так уже перенёс порядка 30% функционала Kotlin и построил кучу внутренних утилит просто, чтобы сделать систему базово совместимой с Kotlin. В рамках интерпретатора добиться скорости компилируемых языков практически невозможно, с другой стороны для сюжетных скриптов оно и не нужно.
➡️ Нарративная часть языка имеет много ограничений, которые портят жизнь как мне, так и вам:
- Ограниченное количество типов данных / классов, плюс каждый из них должен иметь возможность сохраняться в файл, а также ручное добавление всех функций и переменных. То есть написать аддон добавляющий новые функции или интеграцию с определённым модом крайне сложно
- Полное сохранение скрипта в ходе его работы... Но, которое работает до первой мелкой правки. Из-за того, что вся ответственность за сохранение легла на язык, он сам размечает данные и сохраняет их. Разберём простой пример - Вы создали сервер с сюжетом, в версии 1.0 у нпс 3 варианта ответа и последствия. А потом выпустили обновление 1.1, где убрали последний вариант и заменили на другую ветку. **Все сохранения** теперь не работают и полностью сбрасывают скрипт на 5000+ строк, поскольку язык априори не может знать, что делать в случае если ветки из сохранения больше нет. И таких нюансов могут быть сотни и все их предусмотреть не возможно. Таким должны заниматься люди, а не язык программирования, сами создавать в скрипте пометки и размечать данные, мол "если была найдена ветка из прошлого сохранения, то заменить её на другую". Или если сохранения вообще не было, то самому с этим разбираться, как тут выкручиваться, а не доверять алгоритму :)

Поэтому я снова смотрю в сторону Kotlin-скриптинга.

У Kotlin 2.4 появилось и появляется много приятных вещей: исправили проблемы, о которых я писал ещё зимой, упростили синтаксис для списков, контекстные параметры и прочие штуки, из-за которых скрипты можно сделать заметно удобнее. При этом Kotlin остаётся компилируемым языком, а значит производительность ровно такая же, как и у всего написанного на Java. Ну и готовая проверка ошибок, лучше поддержка IDE и меньше неожиданностей при выполнении скриптов.
Пока что я не готов презентовать новую систему скриптинга, да и новая IDE ещё полируется, но как только всё будет готово, в релиз выйдет 2.3, скорее всего уже в этом месяце!


И третье направление - редактор визуальных эффектов.

Забыл его добавить в роадмапу, но это, наверное, самая зрелищная штука из того, что сейчас хочется сделать. Идея появилась не только у меня: люди из сообщества тоже просили более удобный инструмент для эффектов.
  • ❤ 1
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 →