Держу в курсе, я уже завершил порт на 1.21.1, теперь он работает на Fabric и NeoForge ✨
Ну и постепенно наращиваю скриптинг, сейчас уже можно делать простенькие текстовые приключения, вроде того, что в ролике. Если кому-то интересно уже посмотреть на синтаксис или начать себе писать документацию, вот вам файл, если ChatGPT разобрался, значит Вы - тем более сможете💻
Ну и в целом, 500+ строк обрабатывает без проблем и запускает моментально 🙃
Ну и постепенно наращиваю скриптинг, сейчас уже можно делать простенькие текстовые приключения, вроде того, что в ролике. Если кому-то интересно уже посмотреть на синтаксис или начать себе писать документацию, вот вам файл, если ChatGPT разобрался, значит Вы - тем более сможете
Ну и в целом, 500+ строк обрабатывает без проблем и запускает моментально 🙃
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤4🗿1
На этой неделе я уже практически завершил систему скриптинга и нпс, думаю мы уже очень близко к функционалу Legacy, на текущий момент остались некоторые правки в скриптовом движке и всякие функции по работе с нпс.
Ну а тем временем было сделано довольно много:
✔️ Доведён до ума порт на NeoForge, теперь мод там стабильно запускается и весь функционал присутствует (Включая правки в Iris+Sodium)✔️ Внедрён скриптовой движок Katari, о котором я писал ранее и показывал пару небольших примеров.✔️ Добавлена поддержка объёмного тумана и Flare (свечения, если смотреть на источник света)✔️ Удалён Geary ECS, движок теперь работает на своей кастомной системе компонентов. Основная причина - не релевантность в рамках JVM, плюс низкая производительность в рамках игры. Geary предназначен скорее для симуляций десятков тысяч однотипных сущностей, а тут они скорее все разные, да и сам движок игры больше 300 сущностей уже не выдерживает.✔️ Доработана система анимаций - теперь можно создавать несколько управляемых контроллеров с независимыми переходами, запускать и отключать обычные анимации, динамически менять их скорость и даже добавлять небольшие скрипты с процедурными вычислениями.
Ну и вот небольшой пример с анимациями, тут и базовые переходы между ожиданием, ходьбой, бегом, прыжками и приседанием. Также добавление поверх этого дополнительных анимаций, вроде эмоций или жестов. А также процедурные анимации для головы, зрачков, тела и рук в зависимости от поворота головы. Короче говоря так не долго и до Figura функционал расширить
Думаю на днях уже тут и новый билд выпущу, как добавлю под всё это удобные методы для настройки в скрипты и всё перепроверю
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤14🔥3👏3
На этой неделе скриптинг, наконец, вышел в открытый доступ, а также появилась система катсцен, на текущий момент возможностей довольно много:
✔️ Создание, настройка и удаление НИПов.✔️ Анимации нипов по триггеру или постоянные с условиями переходов.✔️ Воспроизведение аудио, запуск катсцен, изменение смещения, поворотов и масштаба для нпс.✔️ Триггеры по времени, взаимодействию, зонам / радиусу, клавишам и кликам.✔️ Получение всяких параметров и атрибутов для сущностей.✔️ Импорты скриптов внутри других скриптов.✔️ Практически полная библиотека Kotlin StdLib в Katari (Collections, Ranges, Random, лямбды и другие удобные модули)✔️ Продвинутый редактор пролётов камеры с возможностью детально настраивать каждый кадр.
Ну и по мелочи, удобные инструменты для добавления новых функций, переменных и классов в скриптовой движок из Kotlin в Katari.
В общем, тут осталось только добавить удобную обработку событий и кастомные гуишки, после чего движок на мой взгляд сможет закрыть 90% потребностей
Система катсцен пока доступна только на моём Boosty, ну а для простых пользователей, шейдерпак с поддержкой кастомных источников света выходит в открытый доступ
Производительность на мой взгляд всё ещё нуждается в доработках, но увы, пока это лучшее чего я смог добиться не ломая совместимость с другими модами, вмешательством в рендеринг чанков и перенос игры на Vulkan
Ну а на этом у меня пока всё, пробуйте новую версию мода, пишите о найденных багах или новых идеях в сообщество, а я пойду доделывать линтер и автодополнение для Katari в встроенной IDE
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9🐳5🍾4
Продолжаю расширять функционал движка:
✔️ Полностью переделана внутренняя система событий, теперь она практически никак не влияет на производительность в сравнении с прошлой.✔️ В скриптинг добавлены 2 новых оператора: async и race. Первый запускает задачу отдельно от основной ветке, не ожидая, пока выполнятся функции внутри неё (удобно для работы с несколькими нпс или параллельными диалогами и действиями), а второй позволяет определить, какая из нескольких задач выполнилась первой (удобно для таймаутов или сложных условий)✔️ Добавлена базовая поддержка IDE: подсветка синтаксиса и подсказки ко всем доступным функциям и переменным.✔️ Добавлено множество новых функций: привязка предметов к модели, замена скинов игрока и материалов нпс, работа с мирами (время, погода, взаимодействия с блоками), рейкастинг и многое другое✔️ Создана документация для движка
Сейчас работаю над кастомными интерфейсами и обработкой событий. Ну а после этого я пожалуй возьму перерыв на пару недель, а то чёт я смотрю никому оно сейчас и не надо, за последний месяц движок едва ли 10 человек запускали)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4😭2 2😢1
А, упс, а пост рановато вышел)
Ладно, ближе к вечеру документацию покажу 🫠
Ладно, ближе к вечеру документацию покажу 🫠
🔥6❤2👍2
Ну что, как и обещал, новая документация по HollowEngine ⚡️
С сайтом по документации помогали:
Без них я бы тут ещё недельку возился бы с этим React, TypeScript и другими непонятными словами :)
Пока ещё есть над чем работать, но уже лучше, чем копаться в
С сайтом по документации помогали:
@urliveyn - сам сайт, документация;
@axelswamp - макет и дизайн;
@algorithmlx_today - деплой и домен.
Без них я бы тут ещё недельку возился бы с этим React, TypeScript и другими непонятными словами :)
Пока ещё есть над чем работать, но уже лучше, чем копаться в
.md файле на пару тысяч строк)Please open Telegram to view this post
VIEW IN TELEGRAM
1❤🔥9👍7🥰5❤2🐳2🔥1👀1
This media is not supported in your browser
VIEW IN TELEGRAM
У вас тоже такое бывает, сидишь, делаешь систему для диалоговых окон и всяких менюшек, а получается браузер? 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤15😨6🔥3
Media is too big
VIEW IN TELEGRAM
Закончив с основными задачами по скриптингу, я по многочисленным просьбам занялся созданием интерфейсов. Как вы могли видеть в демке на неделе, я начал писать свой фреймворк с нуля. Сами интерфейсы пишутся и декорируются в
.ui и .hss файлах соответственно.Сейчас в целом система уже более чем рабочая, я даже добавил подсветку синтаксиса, подсказки и предпросмотр. Остаются разве что всякие небольшие баги при совокупности большого числа модификаторов, но в целом уже можно создавать довольно интересные штуки.
Из интересных возможностей библиотеки:
✔️ Гибкая настройка всех элементов: размеры, цвета, форма, фильтры, вроде чёрно-белого или размытия, отступы и многое другое.✔️ Удобная система анимаций: можно настроить переключение многих параметров при наведении курсора, кликах и других событиях.✔️ Вращение и перспектива: компоненты можно наклонять по 3 осям, при этом нажатия тоже будут обрабатываться в 3D-пространстве✔️ Классический xml+css подход с возможностью расширения: удобная настройка и стилизация компонентов. Не нужно отдельно настраивать стиль каждой кнопки, достаточно выдать ей тег (хотя если очень хочется, можно и каждую настроить😂 )✔️ Полная интеграция с Minecraft: предметы, блоки, сущности - всё можно рендерить в гуишке.🚫 Пока ещё нет динамического добавления новых элеметов, условно из тех же скриптов в духе того же React.🚫 Пока ещё нет интеграции со скриптами и в целом открыть гуишку кроме как через предпросмотр нельзя.
Короче говоря, движок стал ещё на одну голову выше)
Думаю скоро залью эту версию в Telegram чат бустеров, пока без документации и с некоторыми косяками, но в целом есть подсказки, да и оно довольно похоже на классический веб, так что думаю разобраться возможно
P.S.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤🔥4❤1🔥1 1
Media is too big
VIEW IN TELEGRAM
Новая гуи либа становится всё интереснее 🐼 🌟
правда я где-то накосячил с шрифтом и он его немного плющит)
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤8🔥3❤🔥1😱1
Media is too big
VIEW IN TELEGRAM
Кто-то на прошлой неделе писал, что поста не будет, не верьте ему, это был вброс!
За эту неделю я
Но это только начало, в скриптовом языке 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)Как мне кажется, это куда удобнее, чем писать всё внутри одной строки и выделять кавычки символом:
'\'.Кроме того, по мелочи была исправлена большая часть багов с редактором, добавлена пара новых функций и местами доработан дизайн.
На текущий момент всё уже готово и лежит на гитхабе (в том числе и система катсцен, которая ранее была доступна только бустерам), и на этом я пожалуй могу сказать, что всё что я хотел добавить в движок в первую очередь - реализовано
Поэтому, теперь я уже займусь стабильностью, мелкими исправлениями багов и доработками, так что пишите если что, исправлять буду сразу пачками
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤4🍾4
Сегодня опять не воскресенье, но думаю делаю девлог авансом)
В целом, как я и писал на прошлой неделе, вместо добавления нового функционала, я сейчас сосредоточен на доработке и документировании того, что уже есть. За эту неделю были поправлены небольшие баги с редактором, вроде кейбиндов, окон и других виджетов. А также я добавил в UI-систему расширенное форматирование текста (утром показывал в сообществе).
Ну а теперь к менее радостным новостям - я думаю завершить с еженедельными постами. По факту сейчас нет каких-то прям громких новостей и интересных тем, так что на тему вроде "я добавил 3 новые страницы в документацию" или "Поправил 5 багов, которые всем надоели" выпускать посты я особо не хочу. Лучше уж тогда, как раньше, если есть что-то интересное - просто сделаю пост, нету - не буду ради этого тратить время, чтобы записать очередной ролик или пост.
Ну и на последок, на Boosty вышел куда больший пост с дальнейшими планами по движку, я обновил RoadMap, так что советую изучить:
https://boosty.to/hollowhorizon/posts/a633e5f9-c0a6-428b-9d1a-0fed652bb328
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤7😭3
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
HollowEngine 2.2 | UI-система и диалоговые окна
Я опять сделал обновление движка. Теперь там можно делать кастомные интерфейсы... На CSS 💀
Полезные ссылки:
⚡️Мой GitHub: https://github.com/HollowHorizon/
🎨HollowEngine Discord: https://discord.gg/qKpPhkwGCY
💭Telegram: https://t.me/hollowengine
📝HollowEngine…
Полезные ссылки:
⚡️Мой GitHub: https://github.com/HollowHorizon/
🎨HollowEngine Discord: https://discord.gg/qKpPhkwGCY
💭Telegram: https://t.me/hollowengine
📝HollowEngine…
1❤8🔥3🐳1
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥2🐳2👍1 1
Теперь, насчёт текущих и дальшнейших планов ✈️
Начнём с наименее болезненных и тяжёлых к освоению. Первое, это постепенный перенос всех интерфейсов с Kool на внутреннюю UI-систему HollowEngine.
Второе большое направление - я, похоже, всё же забрасываю Katari как основной язык для скриптинга и возвращаюсь к Kotlin.
И третье направление - редактор визуальных эффектов.
Забыл его добавить в роадмапу, но это, наверное, самая зрелищная штука из того, что сейчас хочется сделать. Идея появилась не только у меня: люди из сообщества тоже просили более удобный инструмент для эффектов.
Начнём с наименее болезненных и тяжёлых к освоению. Первое, это постепенный перенос всех интерфейсов с 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, скорее всего уже в этом месяце!
И третье направление - редактор визуальных эффектов.
Забыл его добавить в роадмапу, но это, наверное, самая зрелищная штука из того, что сейчас хочется сделать. Идея появилась не только у меня: люди из сообщества тоже просили более удобный инструмент для эффектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Хочется сделать что-то в духе Effekseer, Kool или Photon, но встроенное прямо в экосистему HollowEngine. То есть не просто "загрузить готовый эффект", а дать возможность удобно собирать эффекты внутри мода: частицы, эмиттеры, кривые, параметры, материалы/шейдеры, цвет, размер, скорость и другие параметры, а также привязка к объектам движка и полная настройка и интеграция со скриптингом, чего сложно добиться с внешней библиотекой, особенно нативной, вроде Effekseer. Ну и разумеется API для разработчиков модов, поскольку напомню, HollowEngine в ближайшее время можно будет использовать как библиотеку для ваших модов.
По удобству хочется ориентироваться скорее на Unity-подобный подход: чтобы эффект можно было собрать, сразу посмотреть, подкрутить параметры, сохранить и использовать без возни с отдельными программами или перезагрузкой ресурсов. Плюс, скриптинг может значительно расширить классические эффекты из разряда "запустил и забыл".
При этом важно не забыть про производительность. Эффекты могут быть красивыми, но если они начинают убивать FPS, пользы от них мало. Поэтому я хочу сразу закладывать нормальную архитектуру: батчинг, либо compute шейдеры, если они поддерживаются для тяжёлых эффектов и симуляций. В качестве примера можете посмотреть этот или этот, на самом деле рендерить миллионы партиклов способны даже встроенные видеокарты, не говоря уже о дискретных, просто зачастую сделаны они довольно халтурно)
Ну и кроме того, я решил открыть первый сбор на Boosty. Сумма не космическая, но уже и не пара обедов, поэтому сразу уточню, это не ультиматум и не предзаказ. Не будет такого, что если сбор не закроется, то система эффектов никогда не появится. И не будет такого, что если сбор закроется сегодня, то завтра уже выйдет готовый редактор. Скорее это способ поддержать это направление разработки. HollowEngine уже несколько лет развивается как бесплатный инструмент: без обязательной оплаты, без рекламы и без попытки спрятать всё полезное за подписку. Но чем больше становится проект, тем больше времени занимают крупные системы. Если вам такое направление интересно и вы хотите помочь ему появиться быстрее - поддержка на Boosty будет очень кстати
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1