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
93
Links
61

Showing posts older than #261 · Back to latest

Older Posts 17 shown
Post #260 562
🫣
  • ❤ 7
  • 🔥 2
  • 🐳 2
  • 👍 1
Post #259 639
Post #258 586
🛞 Еженедельный девлог №13 | Последний еженедельный девлог

📊 Статистика: 26 коммитов, ~4500 добавлений, ~1400 удалений

Сегодня опять не воскресенье, но думаю делаю девлог авансом)
В целом, как я и писал на прошлой неделе, вместо добавления нового функционала, я сейчас сосредоточен на доработке и документировании того, что уже есть. За эту неделю были поправлены небольшие баги с редактором, вроде кейбиндов, окон и других виджетов. А также я добавил в UI-систему расширенное форматирование текста (утром показывал в сообществе).

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

Ну и на последок, на Boosty вышел куда больший пост с дальнейшими планами по движку, я обновил RoadMap, так что советую изучить:
https://boosty.to/hollowhorizon/posts/a633e5f9-c0a6-428b-9d1a-0fed652bb328
  • ❤ 7
  • 😭 3
Post #257 645
🛞 Еженедельный девлог №12 | События, скриптинг интерфейсов и багфиксы

📊 Статистика: 28 коммитов, ~8700 добавлений, ~1600 удалений

Кто-то на прошлой неделе писал, что поста не будет, не верьте ему, это был вброс! 👍
За эту неделю я предзащитил диплом расширил систему интерфейсов, добавил автозапуск скриптов (для этого в нём необходимо в начале файла добавить `#loader server`), а также добавил глобальные обработчики событий 👀

Но это только начало, в скриптовом языке Katari теперь поддерживаются xml-литералы для интерфейсов, а также json-подобные структуры данных для передачи между клиентом и сервером (а также позже их можно будет использовать и для настройки тегов предметов)
Выглядит это всё примерно так:
val dialog = ui(
<box id="dialog" layout="column" size="300px auto" padding="12px" gap="8px">
<text value="Привет, игрок!" foreground="#FFFFFF" font-size="16px" />
<button id="accept" background="#339933" onPressed='emit(struct { event: "accept" })'>Принять</button>
<button id="cancel" background="#993333" onPressed='emit(struct { event: "cancel" })'>Отмена</button>
</box>
)

dialog.showScreen(player)

Или же вот так:
val tag = struct {
custom_name: {text:"Рандомный меч", color:"gold", bold:true},
lore: [
{text:"Это легендарное оружие найденное в каком-то прогнившем подвале", color:"dark_purple", italic:true}
],
enchantments: {
levels: {'minecraft:sharpness':5, 'minecraft:unbreaking':3}
},
unbreakable:{}
}
player.give("minecraft:diamond_sword", tag)

Как мне кажется, это куда удобнее, чем писать всё внутри одной строки и выделять кавычки символом: '\'.
Кроме того, по мелочи была исправлена большая часть багов с редактором, добавлена пара новых функций и местами доработан дизайн.

На текущий момент всё уже готово и лежит на гитхабе (в том числе и система катсцен, которая ранее была доступна только бустерам), и на этом я пожалуй могу сказать, что всё что я хотел добавить в движок в первую очередь - реализовано 🎉
Поэтому, теперь я уже займусь стабильностью, мелкими исправлениями багов и доработками, так что пишите если что, исправлять буду сразу пачками 🙃

P.S. Интерфейс в ролике если что я корявый сделал за пару мину, так там понятное дело можно каждую мелочь настроить)
P.S.S. По поводу обновления документации пинайте @algorithmlx_today, я уже под UI большую часть написал, просто кто-то всё ещё не обновил Docker контейнер 🧮
  • ❤ 4
  • 🍾 4
Post #256 584
Новая гуи либа становится всё интереснее 🐼 🌟

правда я где-то накосячил с шрифтом и он его немного плющит)
  • ❤ 8
  • 🔥 3
  • ❤‍🔥 1
  • 😱 1
Post #255 637
🛞 Еженедельный девлог №11 | Пользовательские интерфейсы

📊 Статистика: 12 коммитов, ~8900 добавлений, ~1200 удалений

Закончив с основными задачами по скриптингу, я по многочисленным просьбам занялся созданием интерфейсов. Как вы могли видеть в демке на неделе, я начал писать свой фреймворк с нуля. Сами интерфейсы пишутся и декорируются в .ui и .hss файлах соответственно.
Сейчас в целом система уже более чем рабочая, я даже добавил подсветку синтаксиса, подсказки и предпросмотр. Остаются разве что всякие небольшие баги при совокупности большого числа модификаторов, но в целом уже можно создавать довольно интересные штуки.
Из интересных возможностей библиотеки:
✔️ Гибкая настройка всех элементов: размеры, цвета, форма, фильтры, вроде чёрно-белого или размытия, отступы и многое другое.
✔️ Удобная система анимаций: можно настроить переключение многих параметров при наведении курсора, кликах и других событиях.
✔️ Вращение и перспектива: компоненты можно наклонять по 3 осям, при этом нажатия тоже будут обрабатываться в 3D-пространстве
✔️ Классический xml+css подход с возможностью расширения: удобная настройка и стилизация компонентов. Не нужно отдельно настраивать стиль каждой кнопки, достаточно выдать ей тег (хотя если очень хочется, можно и каждую настроить 😂)
✔️ Полная интеграция с Minecraft: предметы, блоки, сущности - всё можно рендерить в гуишке.
🚫 Пока ещё нет динамического добавления новых элеметов, условно из тех же скриптов в духе того же React.
🚫 Пока ещё нет интеграции со скриптами и в целом открыть гуишку кроме как через предпросмотр нельзя.

Короче говоря, движок стал ещё на одну голову выше)
Думаю скоро залью эту версию в Telegram чат бустеров, пока без документации и с некоторыми косяками, но в целом есть подсказки, да и оно довольно похоже на классический веб, так что думаю разобраться возможно 👍
P.S. С июня минимальная подписка поднимется в цене с 50р до 150р, так что если думали поддержать проект, самое время закупиться на год вперёд 😂

К слову, на следующей неделе поста не будет, поскольку у меня уже предзащита диплома, так что пока движком буду заниматься в пол силы, но не забывайте, что у нас есть сообщество, где тоже довольно много спойлеров и обсуждений 👀
  • ❤‍🔥 4
  • ❤ 1
  • 🔥 1
Post #254 637
У вас тоже такое бывает, сидишь, делаешь систему для диалоговых окон и всяких менюшек, а получается браузер? 😂
  • ❤ 15
  • 😨 6
  • 🔥 3
Post #253 688
Ну что, как и обещал, новая документация по HollowEngine ⚡️

С сайтом по документации помогали:
@urliveyn - сам сайт, документация;
@axelswamp - макет и дизайн;
@algorithmlx_today - деплой и домен.

Без них я бы тут ещё недельку возился бы с этим React, TypeScript и другими непонятными словами :)

Пока ещё есть над чем работать, но уже лучше, чем копаться в .md файле на пару тысяч строк)
  • ❤‍🔥 9
  • 👍 7
  • 🥰 5
  • ❤ 2
  • 🐳 2
  • 🔥 1
  • 👀 1
Post #252 550
А, упс, а пост рановато вышел)
Ладно, ближе к вечеру документацию покажу 🫠
  • 🔥 6
  • ❤ 2
  • 👍 2
Post #251 594
🛞 Еженедельный девлог №10 | Асинхронщина, рефакторинги, поддержка IDE, новые функции и документация

📊 Статистика: 28 коммитов, ~7000 добавлений, ~3000 удалений

Продолжаю расширять функционал движка:
✔️ Полностью переделана внутренняя система событий, теперь она практически никак не влияет на производительность в сравнении с прошлой.
✔️ В скриптинг добавлены 2 новых оператора: async и race. Первый запускает задачу отдельно от основной ветке, не ожидая, пока выполнятся функции внутри неё (удобно для работы с несколькими нпс или параллельными диалогами и действиями), а второй позволяет определить, какая из нескольких задач выполнилась первой (удобно для таймаутов или сложных условий)
✔️ Добавлена базовая поддержка IDE: подсветка синтаксиса и подсказки ко всем доступным функциям и переменным.
✔️ Добавлено множество новых функций: привязка предметов к модели, замена скинов игрока и материалов нпс, работа с мирами (время, погода, взаимодействия с блоками), рейкастинг и многое другое
✔️ Создана документация для движка

Сейчас работаю над кастомными интерфейсами и обработкой событий. Ну а после этого я пожалуй возьму перерыв на пару недель, а то чёт я смотрю никому оно сейчас и не надо, за последний месяц движок едва ли 10 человек запускали)
  • ❤ 4
  • 😭 2
  • 😢 1
Post #249 585
🛞 Еженедельный девлог №9 | Скриптинг, катсцены и управление камерой

📊 Статистика: 43 коммита , ~17000 добавлений, ~4000 удалений 😳

На этой неделе скриптинг, наконец, вышел в открытый доступ, а также появилась система катсцен, на текущий момент возможностей довольно много:
✔️ Создание, настройка и удаление НИПов.
✔️ Анимации нипов по триггеру или постоянные с условиями переходов.
✔️ Воспроизведение аудио, запуск катсцен, изменение смещения, поворотов и масштаба для нпс.
✔️ Триггеры по времени, взаимодействию, зонам / радиусу, клавишам и кликам.
✔️ Получение всяких параметров и атрибутов для сущностей.
✔️ Импорты скриптов внутри других скриптов.
✔️ Практически полная библиотека Kotlin StdLib в Katari (Collections, Ranges, Random, лямбды и другие удобные модули)
✔️ Продвинутый редактор пролётов камеры с возможностью детально настраивать каждый кадр.
Ну и по мелочи, удобные инструменты для добавления новых функций, переменных и классов в скриптовой движок из Kotlin в Katari.

В общем, тут осталось только добавить удобную обработку событий и кастомные гуишки, после чего движок на мой взгляд сможет закрыть 90% потребностей 💳

Система катсцен пока доступна только на моём Boosty, ну а для простых пользователей, шейдерпак с поддержкой кастомных источников света выходит в открытый доступ 🆓
Производительность на мой взгляд всё ещё нуждается в доработках, но увы, пока это лучшее чего я смог добиться не ломая совместимость с другими модами, вмешательством в рендеринг чанков и перенос игры на Vulkan👅

Ну а на этом у меня пока всё, пробуйте новую версию мода, пишите о найденных багах или новых идеях в сообщество, а я пойду доделывать линтер и автодополнение для Katari в встроенной IDE 😱
  • 🔥 9
  • 🐳 5
  • 🍾 4
Post #245 714
🛞 Еженедельный девлог №8 | Анимации, Скриптинг, Компоненты

📊 Статистика: 19 коммитов , ~11200 добавлений, ~10420 удалений 😰

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

Ну а тем временем было сделано довольно много:
✔️ Доведён до ума порт на NeoForge, теперь мод там стабильно запускается и весь функционал присутствует (Включая правки в Iris+Sodium)
✔️ Внедрён скриптовой движок Katari, о котором я писал ранее и показывал пару небольших примеров.
✔️ Добавлена поддержка объёмного тумана и Flare (свечения, если смотреть на источник света)
✔️ Удалён Geary ECS, движок теперь работает на своей кастомной системе компонентов. Основная причина - не релевантность в рамках JVM, плюс низкая производительность в рамках игры. Geary предназначен скорее для симуляций десятков тысяч однотипных сущностей, а тут они скорее все разные, да и сам движок игры больше 300 сущностей уже не выдерживает.
✔️ Доработана система анимаций - теперь можно создавать несколько управляемых контроллеров с независимыми переходами, запускать и отключать обычные анимации, динамически менять их скорость и даже добавлять небольшие скрипты с процедурными вычислениями.


Ну и вот небольшой пример с анимациями, тут и базовые переходы между ожиданием, ходьбой, бегом, прыжками и приседанием. Также добавление поверх этого дополнительных анимаций, вроде эмоций или жестов. А также процедурные анимации для головы, зрачков, тела и рук в зависимости от поворота головы. Короче говоря так не долго и до Figura функционал расширить 👀
Думаю на днях уже тут и новый билд выпущу, как добавлю под всё это удобные методы для настройки в скрипты и всё перепроверю
  • ❤ 14
  • 🔥 3
  • 👏 3
Post #242 656
Держу в курсе, я уже завершил порт на 1.21.1, теперь он работает на Fabric и NeoForge ✨

Ну и постепенно наращиваю скриптинг, сейчас уже можно делать простенькие текстовые приключения, вроде того, что в ролике. Если кому-то интересно уже посмотреть на синтаксис или начать себе писать документацию, вот вам файл, если ChatGPT разобрался, значит Вы - тем более сможете 💻
Ну и в целом, 500+ строк обрабатывает без проблем и запускает моментально 🙃
  • ❤ 4
  • 🗿 1
Post #241 665
🛞 Еженедельный девлог №7 | Две новости, одна хорошая, вторая плохая

📊 Статистика: 12 коммитов , ~4000 добавлений, ~6000 удалений 😮

В этот раз изменения не менее глобальные, но пожалуй начну с самых важных и неприятных новостей.
🚨 Мод мигрирует на NeoForge + Fabric 1.21.1, поддержка 1.20.1 и других версий прекращена.
❌ Система блоков кода забрасывается на неопределённый срок.

Теперь насчёт причин, в первую очередь, я устал:
Я долго сидел на Stonecutter (система сборки модов) в надежде, что это упростит мне разработку мультиверсионных модов и планировал после стабильных версий добавить дополнительную ветку для 1.21.1, но в этом и проблема, сам Stonecutter существенно тормозит компиляцию и сборку проектов. У меня есть 4 основных подпроекта для работы движка и для каждого из них ещё подпроекты под версии игры, для которых, в свою очередь ещё и подпроекты Forge/Fabric. Сейчас я вернулся на чистый Architectury и время компиляции уменьшилось с 2-3 минут до 15 секунд, да и сама IDE стала подхватывать контекст проекта куда быстрее и мне не нужно каждые пару часов сбрасывать индексы и ждать, пока IDEA их починит. На первый взгляд было бы разумнее сначала доделать 1.20.1, а потом уже переходить на 1.21.1, чтобы для тех, кто ещё там работает был бы хоть какой-то рабочий билд, но увы, в тех условиях продолжать дальше допиливать движок почти нереально, а тратить потом ещё 1-2 недели на ручной порт я не хочу, так что думаю 1.21.1 сейчас наиболее актуальный вариант, да и в случае чего с неё будет проще портировать мод на 26.2+, если большинство модов начнут переносить туда.
Теперь по поводу блоков кода, пока я хочу перенаправить основные силы на новую систему скриптинга, а после него посмотреть на подход к блокам кода со стороны. Есть у меня мысль, как их совместить и не делать 2 разные системы с разной документацией)


Но есть и довольно много плюсов за эту неделю:
➕ Источники света теперь потребляют на ~20% меньше производительности
➕ Я уже целиком перенёс движок на Fabric 1.21.1 (для NeoForge там ещё нужно пара небольших правок, но они будут готовы уже завтра)
➕ Скриптинг теперь будет на моём языке Katari, который основан на Kotlite (упрощённый Kotlin). Суть в том, что вместо компиляции теперь используется кастомный сериализуемый интерпретатор с приостанавливаемыми функциями. Это нужно, чтобы сделать более простой и удобный синтаксис, вместо того, чтобы городить стейтмашины, корутины, плагины для компилятора, неудобный DSL и т.п. теперь просто большая часть языка и стандартной библиотеки ограничена, но в замен весь его функционал стал стабильнее, плюс это позволяет мне добавлять новые операторы, которых нет в оригинальном языке. Подробнее можете почитать тут, по сути это мой аналог нарративным языкам, вроде Ink или Yarn Spinner, которые используются во всяких Unity / Godot, но с более гибким функционалом.
Кроме того, новый скриптовой движок весит всего 2МБ, вместо 80МБ в случае оригинального компилятора. Возиться с аддонами тоже теперь нет необходимости.

В общем, очередные глобальные изменения, ради будущего движка. Как считаете, хорошее это решение, или Холлоу опять за старое? 💻
  • ❤ 10
  • 👍 1
  • 👎 1
  • 😭 1
Post #240 559
🛞 Еженедельный девлог №6 | Мод стал больше похож на "движок", но меньше похож на "сюжетный"

📊 Статистика: 12 коммитов , 7400 добавлений, 961 удаление 💎

Сегодня только пятница, но я думаю изменений уже достаточно для этой недели 😳
А всё потому, что эти изменения продвинули его на две головы выше, чем ранее. По крайней мере в моём представлении о том, как движок должен выглядеть и использоваться.
Начал я с доработки компонентов и сущностей. Если раньше для каждой ванильной сущности создавалась своя ECS-сущность (далее буду называть её объектом, чтобы не путать с ванильными), то сейчас логика немного другая, ECS-сущности это по сути независимые объекты 🌎
И эти объекты могут привязываться с помощью специальных "якорей", пока их 2 вида: EntityAnchor и WorldAnchor, первый привязывает объект к ванильной сущности, а второй к мировым координатам. А для смещения используется компонент Transform. Он меняет объект относительно "якоря", т.е. относительно сущности, либо мира. Это позволяет настраивать перемещение, размеры, повороты.

Очевидно, настраивать всё это командами или скриптами/конфигами неудобно, поэтому я добавил в мод такую штуку как - gizmo 🪩
Это виджет, который вы могли видеть во многих 3D редакторах, с помощью которого можно менять положение объекта. Думаю с его помощью работать куда удобнее.
Ну и чтобы эти объекты не были просто пустышками, я добавил пока 2 компонента влияющих на визуал, это модели и свет.
Модели пока скорее просто как декорации, без взаимодействий и коллизий, но думаю уже очень удобно, если в условной локации вам нужно добавить листы бумаги, или какие-нибудь настенные часы.

А вот свет это уже задачка в разы сложнее, чем я думал, инстансинг моделей, которым я занимался недавно, на фоне этого теперь кажется мелкой фичей, которая делается за пол часа 😂
Если коротко, в Январе я уже пробовал что-то такое сделать, но там это была прям упрощённая версия. Сейчас уже можно добавлять точечные и направленные источники света с разным цветом и яркостью. Кроме этого, я даже добавил тени от них, хотя пока что они довольно требовательные, один такой источник по сути вынужден 6 раз рендерить мир, чтобы тень исходила в любом направлении в зависимости от положения источника. Так что вполне вероятно в будущем я добавлю "запекание" цвета, чтобы не пересчитывать его каждый кадр, правда тогда он уже будет работать только на блоки и декорации ✈️
Пока что освещение поддерживает только кастомный шейдерпак Complementary, поскольку разные шейдерпаки используют разные подходы и я чисто технически не могу сделать универсальную систему. В будущем скорее всего добавлю поддержку и других шейдерпаков, если на то будет спрос

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

Небольшая демка 👀
https://www.youtube.com/watch?v=QSXHrsZ15VY
  • 🔥 8
  • ❤ 3
  • 👍 2
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 →