Phase Of Horizon | HollowEngine
385 subscribers
159 photos
98 videos
12 files
68 links
Engine for development story-based maps & modpacks.

Support the project:
https://boosty.to/hollowhorizon/
Download Telegram
Вышел новый мод от меня 🙃

Сслыки:
- CurseForge
- [Modrinth]: Ждём одобрения модерации
👍5❤4❤‍🔥1🔥1🏆1👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Так уж вышло, что я сегодня случайно вернул в HollowEngine скрытую систему нод и пофиксил некоторые проблемы в HollowCore на Linux/MAC для 1.19.2, так что почему бы за одно не пройтись по всем новостям за последнее время)

Certain Questing Additions
- Добавлены шейдерные фоны, как в видео
- Мод на CurseForge уже набрал 130к скачиваний 🎉

HollowEngine 2.0
Прежде всего я хочу поменять формат выпуска обновлений: я планирую несколько менее глобальных дропов с урезанным функционалом, чтобы уделить больше внимания проблемам и багам движка. И первый из них планируется уже завтра.
И до релиза я хочу сделать 3 таких дропа по 3 тематикам:
1) Упрощённая система анимаций (о которой я писал на Boosty)
2) Существенная доработка и оптимизация встроенного редактора скриптов
3) Скриптинг событий с ручным сохранением + корутины

Короче говоря, хочу вернуться к более частым обновлениям, но без всяких прорывных и сложных механик из-за которых движок постоянно нестабилен и работает буквально пару коммитов после публикации 🫠
🍓8❤‍🔥4🔥2🙏2
This media is not supported in your browser
VIEW IN TELEGRAM
Помните вчера кто-то обещал дроп?)
Короче говоря он переносится на завтра 💀
(а если его не будет завтра, то завтра я вам скажу, почему он перенесён на следующий день 🫠 и так до тех пор, пока я его не выпущу. Если поста не будет, можете смело кидаться помидорами и пинговать меня, чтобы работал, а то ну чё это он 😐)

Если коротко, то проведя некоторые тесты я пришёл к выводу, что текущая IDE работает так себе, особенно на Forge. Так что я сегодня с нуля переписал всё на новую, более производительную систему анализа кода с компилятором K2.
В целом результаты думаю видно и по ролику, даже при 10-20 изменениях в секунду FPS остаётся в рамках разумного (а ведь это я ещё не добавил дебаунсинг и многопоточность)
Кроме того, новой системой в будущем можно будет вернуть возможность удалённого редактирования скриптов на сервере, в отличии от прошлой реализации.

Собственно говоря, пока тут осталось лишь вернуть систему подсказок и всё. После чего уже несколько правок по системе анимаций и можно тестить 🙃
👍4❤3
Внимание, анекдот! Добавил я систему поиска ошибок в IDE...
...теперь не могу эти ошибки исправить 🤯

Да и вообще получается какой-то цирк, а не ситуация: Старое API компилятора уже давно помечено как устаревшее и без документации, а новое, как нестабильное (зато с документацией в которой написано, что она ещё в разработке)
Всё что я могу сказать на текущий момент - компилятор не может найти нужные библиотеки, но прикол в том, что куда эти библиотеки передавать никто не знает. Короче говоря буду пока дальше в этом копаться, может что-нибудь да получится 👀
❤2😢2
Матерюсь на компилятор, день 3 🤬
Основная проблема оказалось в том, что для поиска классов я передал стандартный путь в Windows с символом \, а компилятор где-то внутри поменял его на /. По итогу спустя 4 часа дебаггинга оказалось, что он сравнивал свой вариант с старым моим и считал, что это совершенно разные не связанные библиотеки 🤙
К счастью это решило существенную часть ошибок, а сейчас судя по всему мне осталось разобраться, почему он не может декомпилировать стандартные Java классы, вроде String или Int 💀
❤5🔥2👍1🤯1😭1
Ругаюсь на компилятор, день 4 😶‍🌫️
Проблема с разбором зависимостей полностью решена (ну или по крайней мере на отсутствующие классы я больше не натыкался).

Навайбкодил себе несколько тестов и вроде как никаких ошибок нет. Ну, вернее все ошибки которые тут есть, они и должны быть))

Сейчас последняя проблема в том, что компилятор падает уже в самой игре из-за того, что Minecraft и Компилятор Kotlin используют разные версии библиотеки FastUtil. И тут есть 2 варианта:
1) Переименовать все файлы этой библиотеки и места где она используется.
2) Вырезать компилятор из мода и предоставлять его отдельным файлом.

В целом по сложности задачи примерно одинаковые, так что я думаю выбрать второй вариант, чтобы поставлять компилятор отдельно от движка. К тому же это решит проблему с большим весом мода, сократив его где-то до 15-25 МБ. А сам компилятор можно будет докачать без перезапуска игры.

Но, скажем так, самое сложное теперь позади, к тому же я теперь понимаю как работает около 70% всего нового компилятора 🙃
❤2🔥2❤‍🔥1
Компилятор ругается на меня, день 5 😨
Ну что же, я полностью вынес компилятор в отдельный .jar файл. Теперь HollowEngine весит лишь 27мб, если кому-то интересно:
- Ассеты (8мб)
- шрифты: ~5мб, которые я потом оптимизирую;
- модели: ~1мб;
- текстуры: ~3мб, тоже вероятно сожму или почищу, ибо там много лишнего
- Библиотеки (18мб)
- Fabric API + ClassGraph: ~2.5мб
- Движок Kool: ~6мб
- Kotlin: ~8мб
- Сам движок: 8мб

Ну а сам компилятор ставится отдельно, на текущий момент просто нужно положить файл компилятора в папку hollowengine и всё будет работать!
Кроме того, новая система пока что ест меньше ресурсов, чем прошлая, поскольку во время тестов потребление памяти у меня было не выше 2гб ОЗУ (но не исключено, что это потому что я в мир за заходил :D)

Короче говоря осталось только добавить авто дополнение и парочку мелких правок под конкретные загрузчики модов и можно выпускать дроп!
❤5🔥2⚡1🫡1
Я отрезал компилятор от мода и теперь он не жалуется, день 6 🧐
Система подсказок готова где-то на 65% и на удивление даже без всяких индексов с огромной базой данных со всеми классами, методами и переменными работает довольно шустро, если раньше он в среднем тратил 1-2 секунды (а на фордже мог и 8-10 секунд думать), то теперь даже пол секунды это уже редкий случай.

Осталось только отполировать фильтрацию, добавить определение типов и реализовать функционал самого дополнения кода, при выборе подсказки + автоматическое добавление импорта при поиске
❤6👍3
Media is too big
VIEW IN TELEGRAM
Умное автодополнение сможет автоматически дополнить мой диплом? 🤔 | День 7

Прошла уже неделя с обещания "выпустить дроп завтра" и за сегодня я уже практически полностью доделал систему автодополнения, которая:
1) Может подсказать варианты импортов, как внутри import ..., так и в самом коде. Среди них как пакеты и классы, так и функции и поля верхнего уровня
2) Создаёт подсказки к объектам из Java и Kotlin
3) Создаёт подсказки для ключевых слов (var, val, class, object, и т.п.)
4) Знает типы this выражений
5) Создаёт подсказки по получению любых объектов и автоматически добавляет импорты. Пока только для Kotlin, для Java там транзитивный ад, нужно чуть ли не всю Intellij IDEA подключить. На скорую руку я тут могу только реализовать тоже самое, но без кэширования, а это замедлит систему подсказок раза в 4

Кроме того, система переписана на корутины с использованием MutableSharedFlow для дебаунсинга (проверка ошибок и подсказки появляются через 300мс после прекращения печатания), так что больше никаких фризов 🛸
❤9
Компилирую компилятор 🥸 | День 8

Ну что, скрипты успешно компилируются и запускаются, так что я думаю это прогресс! Кроме того я немного переписал дизайн редактора и добавил подсказки внутри кода.
Но пока что всё же в открытый доступ выкладывать рановато, поскольку нужно доделать несколько косяков:
1) Обфускация кода Minecraft (на текущий момент новый компилятор с ней не совместим), но в целом это делается быстро.
2) Поправить небольшие косяки с панелью подсказок, поскольку она плохо адаптируется под размеры окна

Так что в связи с этим внеплановый опрос насчёт скриптинга самих нпс на Boosty, поскольку тут ограничение по количеству символов)
https://boosty.to/hollowhorizon/posts/e45f539a-e508-457c-9459-c47bcba336ac
(пост бесплатный, как и голосование, но пожелания платных спонсоров имеют больший приоритет)
❤5🔥2
Весь прогресс съела учёба 🫩 | День 9

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

Также в связи с тем, что появилось много дел по учёбе, я думаю немного отодвинуть дроп связанный с системой анимаций на выходные, но завтра приблизительно в 18:00 будет дроп с базовым редактором без контекстных скриптов (вроде того, что в ролике из прошлого поста) для того, чтобы Вы могли сами оценить новый редактор в целом и собрать полный набор его косяков 🙃

В остальном, посты продолжат выходить каждый день, пока я не выложу все 3 дропа, а уже после этого, я, пожалуй, возьму небольшой перерыв 🫠
👍5🔥1
Первый дроп 🌠 | День 10

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

Но в целом компилятор и IDE теперь работают 👀
Хоть и есть пока небольшие косяки в редакторе, но в целом уже хотя бы что-то

Установка:
1) Добавить HollowEngine в папку с модами;
2) Положить файл HollowEngineCompiler.jar в папку hollowengine.

Примечания:
1) Скрипты пока можно запускать только внутри мира
2) Текущий скрипт буквально не имеет никаких встроенных методов, переменных, нпс, и т.п. Это пустышка просто чтобы поиграться с редактором! Но вы можете получить экземпляр сервера импортировав currentServer.
3) println пока нормально не захватывается, но Вы можете использовать logI, logW и logE для разного вида логгирования.
4) Пока я не добавил систему кэширования игра будет загружаться существенно дольше, это нормально.

P.S. На Fabric пока не проверял, но на Forge всё работает куда быстрее чем раньше 🔥
🤩5👍2❤1