Phase Of Horizon | HollowEngine
373 subscribers
152 photos
94 videos
12 files
61 links
Engine for development story-based maps & modpacks.

Support the project:
https://boosty.to/hollowhorizon/
Download Telegram
Не так давно я попробовал сам реализовать нечто подобное в Kool, и вышло достаточно интересно, у него вышло без просадок рендерить 50 000 анимированных объектов без каких либо просадок (без анимации просадки FPS начались уже где-то на 700-800к), причём это не обязательно должны быть кубы, можно было бы использовать и чанки. В общем было бы интересно однажды написать свой аналог Sodium+Iris+Vulkan+NVidium, но работы там много, и сомневаюсь, что оно вообще кому-то надо :D
❤6👻2👀1
Шейдеры и эффекты переходов между локациями ☂️| День 74

Пока тестировал систему шейдеров Kool сделал несколько интересных эффектов 👀
Думаю довольно интересно будет подобное использовать во всяких синематиках, правда придётся для подобных штук конфиги писать, но как будто не так страшно 🤔
Уже не просто затемнение экрана, как в Legacy, не так ли?)

https://www.youtube.com/watch?v=Swl5So71zYM
❤7👏4
Могут ли нейросети помочь в моддинге? 🤖 | День 75

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

Так что советую посмотреть, пост бесплатный 🙂
❤3🔥2
Виталик стал Геммой 😨 | День 76

Раз уж вчера зашла речь про нейронки, то держите новый ролик с ИИ фишками :D
Если коротко, то написал небольшой запрос и как видите, нейронка его придерживается 🤔
Правда тут нужна или облачная модель по подписке или локальная модель весом около 8гб с сильной видеокартой и кучей памяти, на CPU ответы генерятся по 40-120 секунд)

https://youtu.be/P9eef8NLJLM
🥴6❤1
2 миллиона скачиваний 💎| День 77

Ну что, пришёл ещё один миллион скачиваний, а изменилось ровным счётом ничего 🙃
Мод, созданный за 4 часа просто из-за того, что мне не понравилось оформление квестов в одной сборке стал популярнее HollowEngine более чем в 200 раз)

Ну, а насчёт движка, я постепенно возвращаюсь к активной разработке, так что ждём версию где можно будет потыкать редактор компонентов 🧠
❤7
Дорабатываю компоненты 🎓 | День 78

Провёл ещё тонну всяких мелких проверок и тестов, из важного:
- Исправил то, что компоненты не синхронизировались при возвращении из Энда (когда вместо мгновенной телепортации там идут титры)
- Наладил совместимость между сущностью и компонентами-тегами (как в видео, по сути это просто метка, которая содержит определённое свойство, например отсутствие логики сущности)
- Сделал регистрацию компонентов через аннотацию, теперь легко можно настроить: сохраняется ли он, синхронизируется ли он между сервером и клиентом и т.п.

Следующая задача: Префабы, чтобы эти компоненты уже можно было настраивать через редактор, а не костыли с командами. Несколько постов назад показывал его прототип интерфейса, но там всё ещё стоит доработать валидаторы (например, чтобы нельзя было указать несуществующую модель)
👍2
Как работает генерация структур в Minecraft? ⛰ | День 78

Недавно решил посмотреть как устроен современный генератор мира и структур в Minecraft, оказывается многое изменилось со времён 1.16.5, когда я последний раз его анализировал :D (именно полноценно, а не просто по гайду структуру добавить и пару циферок в конфиге поменять)

И на удивление нет ни одного нормального ролика или статьи на эту тему, придётся сделать это самому... По сути все генерация сводится к 4 этапам:
Этап 1: Математика
Шум Перлина: Для каждой точки (x,z) вычисляются абстрактные параметры: Температура, Влажность, "Континентальность", Эрозия.
Выбор Биома: Игра смотрит в таблицу: "Тут жарко и сухо? Значит, будет Пустыня". Биом назначается региону, но блоки ещё не ставятся.
Планирование Структур (Structure Placement):
- С некоторым шансом и при определённых условиях игра решает: "Здесь будет центр Деревни".
- Берётся структура, собирается её полноценный вариант (все домики и трапинки в деревне) и вычисляются её размеры (BoundingBox).
- Важно: В чанк записывается невидимая метка StructureStart ("Здесь занято!"), но физически в мире всё ещё пустота. (Но это позволяет использовать команду /locate или даже визуализировать размеры структуры при наличии определённых модов)

Этап 2: Формирование Ландшафта
Расчет высоты: Генератор спрашивает: "Какой высоты тут должна быть гора?".
Вмешательство (страшная штука под названием Beardifier):
- Если рядом есть метка структуры (из Этапа 1), Beardifier говорит: "Стоп! Тут должен быть дом, тут нужно сглаживание".
- Шум плавно искажается под структуру. (Примерно как в видео)
Базовая заливка: Только сейчас пространство заполняется базовыми блоками (Камень, Глубинный сланец, Вода) согласно форме ландшафта.

Этап 3: Резьба и Покраска
Карверы: Специальные черви-алгоритмы прогрызают в камне пещеры и каньоны. Они, наоборот, удаляют блоки.
Обычно они настроены не трогать места, помеченные как Структура. Чтобы вдруг посреди данжа не появилось пещеры))
Поверхность: Верхние слои камня заменяются на блоки биома (Трава, Песок, Снег, Мицелий).

Этап 4: Наполнение
Только теперь игра берет тот виртуальный план из Этапа 1 и физически ставит доски, стены, сундуки, заменяя собой воздух или камень.
Декорации (Features):
Генерируются руды, деревья, цветы. Причём самое забавное, что те же руды вполне могут заменить блоки камня в структуре, так что имейте это ввиду :D
Перед спавном дерева игра проверяет: "Я не внутри структуры?". Если внутри - дерево не растет.

Ну и уже потом, когда мир начинает тикать, начинают спавниться мобы, тикают блоки и т.п.

Я конечно многое упростил, поскольку этапов так немножко больше:
empty → structure_starts → structure_references → biomes → noise → surface → carvers → liquid_carvers → features → light → spawn → full
Но думаю и так тема не самая простая, пока что остановимся и на этом 🙃

P.S. Ролик с подстановкой окружения под структуру не поместился, так что отправлю следующим постом
❤2🔥2👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Если прям упрощённо, то есть мир и при наличии структуры эта штука как бы сглаживает ландшафт в пользу структуры, которая тут будет расположена, короче говоря довольно хитрый алгоритм интерполяции на максималках 👀
❤2❤‍🔥1
Media is too big
VIEW IN TELEGRAM
Улучшаем редактор NPC 🐓 | День 79

Добавил сегодня кучу новых фишек в редактор:
- Отображение bounding box'а / Хитбокса
- Отображение сетки модели для отладки
- Автоповорот
- Предпросмотр всех анимаций в модели и полосу прогресса анимации
- Обнаружение всех компонентов и добавление их в префаб

В общем, возвращаюсь к разработке 🛞
❤8🔥3
Редактор тегов, предпросмотр моделей, редактирование компонентов для префабов и сущностей ✨ | День 80

Довольно много всего интересного сегодня сделал, как по контенту, так и по исправлениям 👀
- Прототип редактора тегов: позволяет редактировать различные теги связанные с логикой, например, тип ломаемого блока или уровень инструмента с которого можно добыть тот или иной блок. Также эти теги могут быть использованы в рецептах.
- Предпросмотр моделей: теперь можно напрямую открыть любую модель и посмотреть, работает ли она даже без входа в мир и призыва нпс.
- Префабы и сущности: Компоненты теперь спокойно привязываются как к префабам, так и к сущностям, а при их изменении они сразу обновляются в предпросмотре.
- Инструмент для NPC теперь работает на любых сущностей (для текущего игрока шифт + пкм), можно любой сущности добавить определённые компоненты меняя внешний вид или логику
- Исправлен расчёт нормалей, касательных и матриц при импорте некоторых моделей
🐳1
Скриншоты в пост не поместились)

Получается остался только редактор анимаций и доработка самих моделей 🤔
❤5🐳2
gltf и glb ему было мало... obj ему было мало... Он теперь и на Bedrock Entity замахнулся... 😬 | День 81

Доделал, наконец, сегодня поддержку Bedrock-моделей помимо gltf. Сложность тут в том, что местные анимации могут использовать Molang в качестве ключа анимации (короче процедурные анимации), пришлось переписывать интерполяторы, чтобы они поддерживали подобный функционал 😕

Но, вполне вероятно это упростит в будущем работу с анимациями и катсценами, ну и также это неплохо расширяет возможности использования BlockBench'а
P.S. экспортер поломал глаза и теперь вместо них остались 2 дырки и зрачки... Так что нет, это не я довёл Виталика своими экспериментами 😅
❤3🔥1🎄1
500 Виталиков уже здесь и ещё пара тысяч на подходе 🗳 | День 82

Сегодня решил немного поработать над рефактирингом отрисовщика моделей в 1000+ строк, чтобы разбить его на несколько более понятных классов, а по итогу сделал поддержку инстансинга 👀

Если раньше пределом было где-то 100 моделей и FPS падал до 60, то теперь и при 500+ анимированных нпс результаты приемлемые 🤔
Но это пока лишь Proof Of Concept, на деле там ещё много чего можно оптимизировать, в том числе обновление этих самых нпс через ECS, но пока что идея идёт в долгий ящик, ибо поддержку шейдерпаков делать куда дольше и сложнее, чем ванила, как сейчас
❤7👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Много всякой всячины 🎒| День 83

Сегодня я поработал над многими мелочами, перед тем как полноценно заняться контроллером анимаций:
- Доработал обработку кликов по связям/переходам в прототипе редактора графов
- Немного обновил поддержку fbx моделей (парсинг арматур/скинов, материалы и немного обновлений по анимациям), но там пока ещё много работы, поскольку формат довольно объёмный, даже в сравнении с gltf
- Почистил старую систему компонентов (до Geary) и добавил отладку блоков кода, выглядит это как-то так:
◄ START TRACE │ scripts/npc_dialogue.bc
├─ IfBlock [0.023ms] │ condition=true
│ ├─ PrintBlock [0.005ms] │ text="Hello!"
│ └─ SetVarBlock [0.001ms] │ hasMetPlayer=true
▼ END TRACE │ scripts/npc_dialogue.bc │ 3 blocks [0.029ms]
🔥2❤1
Мод портирован на 1.21.1 🎯| День 84

Доделал пока первоначальный порт, исправив большинство проблем, чтобы мод хотя бы запускался. Работы ещё много, но займусь этим уже как-нибудь позже.

Есть пара проблем, которые я тут не хочу освещать, так что в ближайшие дни посты будут довольно скудные, так что громких новостей пока не ждите 🫡
❤7😐2
Обновления редактора кода 🏎 | День 85

Несмотря на то, что редактор кода откладывается до 2.1, решил всё же немного обновить его под новый дизайн. А всё, потому что в редакторе анимаций также будут использоваться скрипты, разве что за одним исключениям - условия перехода будут описываться одной строчкой. Так что пока что провёл некоторый рефакторинг в основной системе.
❤6🔥1
Продолжаю дополнять редактор кода 💫 | День 86

Решил всё же взяться за тот страшный класс на 1700 строк кода, в котором намешано всё: интерфейс редактора кода, обработка вводимого текста, попап с подсказками, подсветка кода и ошибок в нём, все хоткеи, автодополнения скобок и отступов. Короче говоря если и дальше плодить техдолг добавляя туда новые фичи вроде: однострочного ввода, переноса строк, read-only режима, то скоро в этом уже никто не сможет разобраться 💀

Так что в связи с этим готовлю мощную штуку, чтобы в будущем легко было добавлять поддержку новых языков (как минимум в будущем могут понадобиться json, toml, markdown, mcfunction), а также кучу разных параметров, поскольку для того же редактора анимаций прописывать условия для анимаций без скриптинга выйдет слишком неудобно 🥲
Вот пока небольшой обзор того, как оно теперь выглядит, раньше все эти настройки и команды были захардкодены:
🔥2❤1