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

Support the project:
https://boosty.to/hollowhorizon/
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
- Мам, можно нам калькулятор?
- У нас есть калькулятор дома.
Калькулятор дома:
👾2
Media is too big
VIEW IN TELEGRAM
Ах да, недавно узнал, что у shapes.inc появилось открытое API до 5 запросов в минуту... И тут я подумал, а почему бы не замутить базовые ИИ диалоги, и спустя 15 минут получилось это)

Ktor - интересная штука однако 🤔

Возможно в ближайшем будущем появятся модели, которые смогут отвечать по строгим шаблонам, тогда можно было бы даже частично это в геймплей внедрять... Ну а пока это разве что "поразвлекаться" задавая нпс всякие неудобные вопросы)
🔥3❤2
Я тут понемногу доделываю документацию для HollowEngine, пока выходит что-то такое 🙃
https://hollowhorizon.github.io/HollowEngineDocumentation/

В целом, сам движок уже плюс-минус стабильно работает, разве что остаётся отшлифовать систему анимаций по мелочи, да и базовую диалоговую систему создать, после этого можно и в запой релиз)
Если есть идеи, предложения и дополнения, можете их предлагать в одноимённом Discord канале, он теперь снова открыт.
❤‍🔥4❤2🔥2
Сделал небольшой тестик для доступа к документации, теперь ей точно никто не будет пользоваться 😂
https://hollowhorizon.github.io/HollowEngineDocumentation/

А вообще оказывается React - интересная штука, не Kotlin конечно, но достаточно интересная задумка 🤔
❤2
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Дорабатываю тут диалоговое окно 🤔
Предполагается что в левой части можно будет также указывать разные иконки или условия для выбора (При наличии репутации / предмета / характеристики, по времени и т.п.)
🍓4❤1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Работаю над улучшением встроенного редактора.
- Добавил поиск классов по всему модулю (классы игры, библиотек и всех модов), а также их индексацию как в большинстве IDE, угадайте сколько она будет длиться на сборке с 200+ модами 🙃 + автоматическое добавление импорта в начало файла
- Работаю над автоматическими отступами при переходе на новую строку, как видите не без багов))
- При выборе метода с лямбдой в конце среда сама добавляет нужные скобки в конце и перемещает курсор

Вообще есть ещё куда стремиться в плане оптимизации, например в идеале вообще бы отказаться от парсинга файла при каждом изменении и редактировать напрямую AST файла, да и давно пора перейти на анализатор K2, вместо текущего, но для этого нужно существенно переписывать весь редактор кода, так что оставлю это когда-нибудь после релиза)

#repost
🍓6❤1
3 месяца... ПОЧТИ 3 МЕСЯЦА не было постов тут... Признавайтесь, кто уже забыл, кто я и почему Вы на меня подписаны?)

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

А скриптинг в моде уходит от довольно разрозненных объектов вроде крафты, сюжет, события, модификации, диалоги, интерфейсы и др.
Вместо них теперь остаётся буквально парочка универсальных: Компоненты (например, .entity-component.kts) и События (например, .handler.kts). Компоненты позволяют хранить данные, а события их обрабатывать.

Компоненты можно крепить к большинству объектов игры: предметы, блоки, мобы, чанки, измерения и мир целиком.
Будет довольно много встроенных компонентов, которые будут реализовывать те или иные свойства. Например, если взять компоненты Кирка и Топор и нацепить на предмет, то он получить соответствующие свойства, а также автоматически создаст зависимые компоненты, например `Прочность`, т.е. предмет с этими компонентами сможет копать камень и рубить дерево. Ну и разумеется эти компоненты будут иметь настройки (скорость копания, радиус, уровень добычи и т.п.), а также появится новый инструмент для настройки этих компонентов через визуальный редактор.
Это лишь пример, того, как это можно применить и совмещать. Аналогично можно добавлять различную логику и тем же мобам и блокам.
Но что там по сюжету? - он тоже технически является компонентом. То есть с переходом на эту систему, сюжет можно привязывать к игрокам, самим нпс, даже к серверу целиком. Да, вместо того, чтобы адаптировать одну систему под несколько условий, я просто свалил всю ответственность на вас, которые будут писать эти скрипты :)

Вторая система - это события, по сути она представляет собой более удобную систему (Neo)Forge, но не зависимую от модлоадера:
@SubscribeEvent
fun RenderEntityEvent.Pre.`Срабатывает при отрисовке мобов`() {
// Получение компонента, либо завершение вызова при отрисовке сущности
val model = owner.getOrNull<ModelComponent>() ?: return
model.render(...) // Отрисовка через сам компонент
isCanceled = true // Отмена стандартной отрисовки сущности
}

Это псевдокод компонента модели, который можно нацепить на любую сущность в игре и изменить её модель.

А чтобы не настраивать так каждого моба/предмет/блок внутри игры появятся префабы, как и в большинстве нормальных игровых движков :D
Работать это будет просто - создаёте новый файл для сущности или другого объекта: /hollowengine/prefabs/entity/my_npc.prefab и настраиваете его компоненты в IDE мода, после чего при /reload движок сам добавит его, как нового моба, которого можно призвать через что-то вроде: /summon hollowengine:prefabs/my_npc.

Надеюсь вышло не слишком сложно и много, поскольку всё что я описал, это лишь порядка 15% от реальных объёмов работы, которая была проделана. А я тут старался особо сложные моменты обходить стороной... Но если кому-то интересно, то на Boosty, я расписывал более подробно эти темы, плюс там ещё есть пара моих мыслей про мой аналог FTB Quests на базе этих систем, который я точно скоро начну делать 🙃
Готовых инструментов по началу будет меньше, но функционала станет существенно больше. Думаю подобные системы сильно упростят разработку не только сюжета, но и разного контента для сборок, построек, карт и других интересных проектов.
P.S. Подходящих картинок или видео для поста не нашёл, но постараюсь в ближайшие дни пару демонстраций записать :)
🔥10❤1✍1💯1
Недавно ⁨DanBat сделал мини-игру "Тетрис" для движка Kool, тут я и подумал, а почему бы не попробовать скопировать её для демонстрации возможностей HollowEngine, получилось что-то такое :)
https://youtu.be/lInFMW-1eZE
🍓2👾2🔥1
Вышел новый мод от меня 🙃

Сслыки:
- 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