This media is not supported in your browser
VIEW IN TELEGRAM
Сворачивание блоков 🗞 | День 48
Большую часть дня потратил на то, чтобы реализовать перетаскивание блоков из левой панели на холст, пока осталось дописать лишь предпросмотр при перетаскивании, но он пока отказывается работать и не может динамически определить размер блока. Можно было бы заткнуть пока костылём вроде фиксированной картинки, но думаю надёжность сейчас всё же важнее 🙃
Ну зато добавил ещё одну удобную фишку: Сворачивание / Разворачивание блоков, чтобы если блок занимает слишком много места, его можно было свернуть до одного заголовка (В будущем у каждого будет свой "упрощённый" вид)
Большую часть дня потратил на то, чтобы реализовать перетаскивание блоков из левой панели на холст, пока осталось дописать лишь предпросмотр при перетаскивании, но он пока отказывается работать и не может динамически определить размер блока. Можно было бы заткнуть пока костылём вроде фиксированной картинки, но думаю надёжность сейчас всё же важнее 🙃
Ну зато добавил ещё одну удобную фишку: Сворачивание / Разворачивание блоков, чтобы если блок занимает слишком много места, его можно было свернуть до одного заголовка (В будущем у каждого будет свой "упрощённый" вид)
👍6❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Полноценная панель с блоками и история изменений 📋 | День 49
Доработал сегодня бесшовную систему перетаскивания блоков, множественный выбор и перетаскивание нескольких блоков за раз. А также начал работу по системе отмены/восстановления изменений, на текущий момент почти всё из этого готово, нужно разве что основательно всё протестировать, чтобы в самый неподходящий момент просто так не пропали важные блоки 🫥
Если исправления багов не займут много времени, то завтра я уже доведу до ума систему триггеров. А сразу после неё выйдет последняя бета перед релизом!
Доработал сегодня бесшовную систему перетаскивания блоков, множественный выбор и перетаскивание нескольких блоков за раз. А также начал работу по системе отмены/восстановления изменений, на текущий момент почти всё из этого готово, нужно разве что основательно всё протестировать, чтобы в самый неподходящий момент просто так не пропали важные блоки 🫥
Если исправления багов не займут много времени, то завтра я уже доведу до ума систему триггеров. А сразу после неё выйдет последняя бета перед релизом!
🤯5❤🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Ещё одно улучшение UX | День 50 📌
Исправил сегодня несколько ещё кучу багов с отслеживанием изменений, а также существенно доработал зоны соединения блоков, теперь они выходят за видимые рамки виджета.
Ну и по мелочи - добавил вырез под локальные и глобальные триггеры, чтобы по клику их можно было переключать 👀
По сути осталось лишь доработать сам функционал этих триггеров и на этом система блоков кода будет завершена 🙃
Исправил сегодня несколько ещё кучу багов с отслеживанием изменений, а также существенно доработал зоны соединения блоков, теперь они выходят за видимые рамки виджета.
Ну и по мелочи - добавил вырез под локальные и глобальные триггеры, чтобы по клику их можно было переключать 👀
По сути осталось лишь доработать сам функционал этих триггеров и на этом система блоков кода будет завершена 🙃
👍4❤1
Новая система триггеров | День 51 🌐
Сегодня взялся за переработку системы триггеров. Всё оказалось сложнее, но не в техническом плане, а концептуальном... Похоже, нам всё-таки понадобится документация страниц на 15, чтобы объяснить все нюансы 💀
Листая прошлые посты, понял, что толком не объяснял, как всё работало раньше.
Было: Пользователь вручную запускал скрипт командой, тот начинал слушать события и жил до тех пор, пока триггеры не завершатся.
Тут всплыли две проблемы:
1) Автозапуск. Нельзя сделать так, чтобы скрипт стартовал сам, когда игрок заходит на карту. Приходилось бы делать костыли: запускать вручную и создавать отдельный скрипт для каждого игрока на сервере, даже если это условный нпс-торговец на спавне.
2) Одноразовость. Триггеры умирали после срабатывания. Хотите запретить ломать блоки? Старая система запретит сломать один блок, а дальше скрипт завершится. Если же делать их многоразовыми, то действия разных игроков начнут перезаписывать друг друга, ломая логику.
В связи с этим я решил разделить триггеры на локальные и глобальные:
1) Глобальные - это точки входа (например, "Игрок залогинился на сервер"). Они срабатывают всегда и создают отдельный экземпляр скрипта (контейнер) со своими личными переменными для каждого игрока.
2) Локальные - живут внутри этого экземпляра. Например, "Ломание блока". Они могут срабатывать многократно внутри одной сессии игрока, не мешая другим. Плюс, у них есть доступ к общим переменным контекста.
Но тут есть несколько сложных моментов:
- Когда завершать скрипт? Если локальные триггеры срабатывают бесконечно, скрипт будет висеть в памяти вечно.
Варианты решения: Завершать после выполнения глобального триггера? Добавить режим для одноразового/многоразового запуска триггера? Или дать пользователю блок "Завершить скрипт" (который 99% людей забудут поставить и положат сервер 50-ю копиями скрипта)?
- Конкурентность. Что делать, если игрок сломал блок, скрипт начал задержку на 15 секунд, а игрок тут же сломал второй блок?
Варианты решения: Отменять первое действие? Игнорировать второе, пока первое не доработает? Или запускать асинхронно? (Привет, гонка данных и баги в переменных).
В общем, идеального решения я не вижу. Каждый сценарий может потребовать своего подхода. Поэтому я решил не ограничивать Вас и реализовать все варианты с возможностью переключения 😱. Да, это дольше кодить и интерфейс станет чуть сложнее, зато система будет более гибкой. 🙃
Сегодня взялся за переработку системы триггеров. Всё оказалось сложнее, но не в техническом плане, а концептуальном... Похоже, нам всё-таки понадобится документация страниц на 15, чтобы объяснить все нюансы 💀
Листая прошлые посты, понял, что толком не объяснял, как всё работало раньше.
Было: Пользователь вручную запускал скрипт командой, тот начинал слушать события и жил до тех пор, пока триггеры не завершатся.
Тут всплыли две проблемы:
1) Автозапуск. Нельзя сделать так, чтобы скрипт стартовал сам, когда игрок заходит на карту. Приходилось бы делать костыли: запускать вручную и создавать отдельный скрипт для каждого игрока на сервере, даже если это условный нпс-торговец на спавне.
2) Одноразовость. Триггеры умирали после срабатывания. Хотите запретить ломать блоки? Старая система запретит сломать один блок, а дальше скрипт завершится. Если же делать их многоразовыми, то действия разных игроков начнут перезаписывать друг друга, ломая логику.
В связи с этим я решил разделить триггеры на локальные и глобальные:
1) Глобальные - это точки входа (например, "Игрок залогинился на сервер"). Они срабатывают всегда и создают отдельный экземпляр скрипта (контейнер) со своими личными переменными для каждого игрока.
2) Локальные - живут внутри этого экземпляра. Например, "Ломание блока". Они могут срабатывать многократно внутри одной сессии игрока, не мешая другим. Плюс, у них есть доступ к общим переменным контекста.
Но тут есть несколько сложных моментов:
- Когда завершать скрипт? Если локальные триггеры срабатывают бесконечно, скрипт будет висеть в памяти вечно.
Варианты решения: Завершать после выполнения глобального триггера? Добавить режим для одноразового/многоразового запуска триггера? Или дать пользователю блок "Завершить скрипт" (который 99% людей забудут поставить и положат сервер 50-ю копиями скрипта)?
- Конкурентность. Что делать, если игрок сломал блок, скрипт начал задержку на 15 секунд, а игрок тут же сломал второй блок?
Варианты решения: Отменять первое действие? Игнорировать второе, пока первое не доработает? Или запускать асинхронно? (Привет, гонка данных и баги в переменных).
В общем, идеального решения я не вижу. Каждый сценарий может потребовать своего подхода. Поэтому я решил не ограничивать Вас и реализовать все варианты с возможностью переключения 😱. Да, это дольше кодить и интерфейс станет чуть сложнее, зато система будет более гибкой. 🙃
🤯6❤4
Таймлайн | День 52 🎬
Сегодня по некоторым причинам, пост делаю я dan_bat :>
Расскажу я вам про таймлайн, который я делаю уже около 2 недель. Суть его в том чтобы вы могли делать кастомные анимации, катсцены и многое другое, не прибегая к коду, чем то это будет похоже на BBS. Вообще Hollow на своем бусти уже рассказывал про таймлайн и то где он будет использоваться, но там не было концепта дизайна...
К счастью с недавних пор у нас в команде появился дизайнер Axel Encore, который уже приложил руку к HollowEngine, если вы активно следили за постами, вы могли увидеть красивый дизайн дерева файлов и системы блоков, тут огромное ему за это спасибо❤️
Так что концепт дизайна у нас теперь тоже есть! Сегодня, если рассказывать про то что уже сделано, то это большая часть логики: Бесконечный таймлайн, система ключей, система групп, блокировка и скрытие треков и обработка свойств ключей.
Сегодня по некоторым причинам, пост делаю я dan_bat :>
Расскажу я вам про таймлайн, который я делаю уже около 2 недель. Суть его в том чтобы вы могли делать кастомные анимации, катсцены и многое другое, не прибегая к коду, чем то это будет похоже на BBS. Вообще Hollow на своем бусти уже рассказывал про таймлайн и то где он будет использоваться, но там не было концепта дизайна...
К счастью с недавних пор у нас в команде появился дизайнер Axel Encore, который уже приложил руку к HollowEngine, если вы активно следили за постами, вы могли увидеть красивый дизайн дерева файлов и системы блоков, тут огромное ему за это спасибо❤️
Так что концепт дизайна у нас теперь тоже есть! Сегодня, если рассказывать про то что уже сделано, то это большая часть логики: Бесконечный таймлайн, система ключей, система групп, блокировка и скрытие треков и обработка свойств ключей.
🤯6❤3
Просто к пониманию бесконечного таймлайна: в теории вы сможете сделать 18 часовую катсцену, но вряд ли это вообще кому-то будет нужно. Сейчас по сути осталось задизайнить и после уже начать делать интеграцию и реальную логику, ради который этот таймлайн и делался. Если говорить про то сколько займет времени дизайн, то циферка выйдет не маленькая...
Сегодня я начал делать верхнюю линию сия чуда и получилось так что из 892 строк кода получилось 1106...
В такие моменты хочется спросить: "Боже надеюсь это ружье...". В общем, "да": таймлайн делается и находится на хорошей стадии реализации. Надеюсь, что я успею доделать его до конца каникул, и вы сможете протестировать его уже в HollowEngine, а не посмотреть его на видео, которые я буду вам кидать XD.
На этом у меня сегодня все, больше мне вам пока рассказать нечего, если опустить все детали разработки...
Передавайте хорошие пожелания нашей маленько команде разработчиков и в частности пожелайте здоровья Hollow.
Увидимся в следующих постах!
Сегодня я начал делать верхнюю линию сия чуда и получилось так что из 892 строк кода получилось 1106...
В такие моменты хочется спросить: "Боже надеюсь это ружье...". В общем, "да": таймлайн делается и находится на хорошей стадии реализации. Надеюсь, что я успею доделать его до конца каникул, и вы сможете протестировать его уже в HollowEngine, а не посмотреть его на видео, которые я буду вам кидать XD.
На этом у меня сегодня все, больше мне вам пока рассказать нечего, если опустить все детали разработки...
Передавайте хорошие пожелания нашей маленько команде разработчиков и в частности пожелайте здоровья Hollow.
Увидимся в следующих постах!
❤9
This media is not supported in your browser
VIEW IN TELEGRAM
Шейпкеи или же морф таргеты 🎹 | День 53
В последние дни я немного приболел, так что так и не доделал обещанную бету, но теперь я снова тут, и завтра возвращаюсь к разработке 🙃
А пока вот доработал фичу, что просил у меня некий Анонимчик - поддержка шейпкеев для моделей 🫣
Если коротко, это некоторые модификации самих моделей, которые позволяют плавно менять положение некоторых вершин. Как это работает вы можете увидеть в ролике. То есть при желании можно не делать 5-10 моделей под: женскую/мужскую версию, slim/обычный скин, 2 слой скина, всякие декорации и т.п. А просто создать одну модель с готовыми настройками в редакторе 🤯
P.S. Да, это значит, что теперь при желании можно сделать даже редактор персонажа при входе в игру 🔥
В последние дни я немного приболел, так что так и не доделал обещанную бету, но теперь я снова тут, и завтра возвращаюсь к разработке 🙃
А пока вот доработал фичу, что просил у меня некий Анонимчик - поддержка шейпкеев для моделей 🫣
Если коротко, это некоторые модификации самих моделей, которые позволяют плавно менять положение некоторых вершин. Как это работает вы можете увидеть в ролике. То есть при желании можно не делать 5-10 моделей под: женскую/мужскую версию, slim/обычный скин, 2 слой скина, всякие декорации и т.п. А просто создать одну модель с готовыми настройками в редакторе 🤯
P.S. Да, это значит, что теперь при желании можно сделать даже редактор персонажа при входе в игру 🔥
❤7🔥2
Media is too big
VIEW IN TELEGRAM
Блоки-завершения ⛔️ | День 54
Сегодня уже практически доработал автозапуск скриптов и глобальные/локальные переменные. Пока что ещё есть пара мелочей, которые стоит поправить, но думаю уже получается достаточно интересно 🤔
На выходных уже буду заниматься моделями и анимациями для нпс, а также багами, которые вы уж точно найдёте 🫠
P.S. В ближайшие 10-15 минут выложу билды в сообществе 👀
Сегодня уже практически доработал автозапуск скриптов и глобальные/локальные переменные. Пока что ещё есть пара мелочей, которые стоит поправить, но думаю уже получается достаточно интересно 🤔
На выходных уже буду заниматься моделями и анимациями для нпс, а также багами, которые вы уж точно найдёте 🫠
P.S. В ближайшие 10-15 минут выложу билды в сообществе 👀
❤5🔥2👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Шаблоны и Редактор НПС ♟ | День 55
Сегодня я немного поработал над редактором нпс. Теперь их можно создавать через специальные файлы в системе шаблонов. Если коротко, то через шаблоны можно создавать различные уже настроенные предметы, блоки, самих нпс и многое другое. И для каждого настраивать различные компоненты (фрагменты с логикой)
Пока что интерфейс ещё сыроват, но мы пока думает, как его сделать удобнее 😉
Ну а тем временем, на Boosty вышел новый пост с не менее интересной фичей, ради которой мне пришлось вспоминать физику и 4 часа сидеть с дебаггером меняя один параметр на другой...
Сегодня я немного поработал над редактором нпс. Теперь их можно создавать через специальные файлы в системе шаблонов. Если коротко, то через шаблоны можно создавать различные уже настроенные предметы, блоки, самих нпс и многое другое. И для каждого настраивать различные компоненты (фрагменты с логикой)
Пока что интерфейс ещё сыроват, но мы пока думает, как его сделать удобнее 😉
Ну а тем временем, на Boosty вышел новый пост с не менее интересной фичей, ради которой мне пришлось вспоминать физику и 4 часа сидеть с дебаггером меняя один параметр на другой...
❤2🤯2
Таймлайн 🖼| День 56
Всем привет с вами Дан бат :>
Сегодня мы опять поговорим про Таймлайн, но не про его концепт, а уже физический вариант. Если вы помните, то я остановился на его дизайне, который лично меня добил. Конечно, код я все же написал и сегодня я готов вам представить пред финальную версию Таймлайна, которая попадет в HE, скорее всего, именно в таком виде :>
С прошлого поста была проделана огромная работа, которая в ходе разработки, заставляла меня переписывать огромные части уже имеющегося кода... И все же он перед вами!!!
Пока что как таковой логики для интеграции нет, она будет добавлена на неделе. Я надеюсь что Таймлайн появится в HE в ближайшие недели, но это не точно, мало ли что может произойти. Надеюсь дизайн вам нравится, так как над ним старались как минимум 3 человека :>
Спасибо что следите за разработкой HE 2.0 и поддерживаете нас в разработке!!!
P.S. Меня попросили написать, чтобы я, больше, не писал так, как будто Hollow забирают в дурку... Так что желайте "Спокойного отдыха" XD
Всем привет с вами Дан бат :>
Сегодня мы опять поговорим про Таймлайн, но не про его концепт, а уже физический вариант. Если вы помните, то я остановился на его дизайне, который лично меня добил. Конечно, код я все же написал и сегодня я готов вам представить пред финальную версию Таймлайна, которая попадет в HE, скорее всего, именно в таком виде :>
С прошлого поста была проделана огромная работа, которая в ходе разработки, заставляла меня переписывать огромные части уже имеющегося кода... И все же он перед вами!!!
Пока что как таковой логики для интеграции нет, она будет добавлена на неделе. Я надеюсь что Таймлайн появится в HE в ближайшие недели, но это не точно, мало ли что может произойти. Надеюсь дизайн вам нравится, так как над ним старались как минимум 3 человека :>
Спасибо что следите за разработкой HE 2.0 и поддерживаете нас в разработке!!!
P.S. Меня попросили написать, чтобы я, больше, не писал так, как будто Hollow забирают в дурку... Так что желайте "Спокойного отдыха" XD
❤10😨2
❤2
Готовлю редактор нпс к новому обновлению 🛠 | День 57
Недавно был закончен дизайн для редактора нпс, так что на текущий момент я занимаюсь его реализацией в игре.
Но в последние дни я всё чаще слышу вопросы о релизе мода, в связи с чем появилась мысль, немного упростить задумку и сделать релиз в ближайшие несколько дней.
Вопрос заключается в том, нужен ли сейчас редактор моделей и анимаций? Задумка у меня следующая: будет компонент для нпс, в котором можно будет открыть редактор модели, который позволит скрыть/показать определённые кости, настроить некоторые части модели (например, настройка костей для рэгдолла или для отображения предметов в руках), а для анимаций планируется граф-подобная система, как в Unity (пока дизайна нет, так что это тоже займёт некоторое время), суть в том, что можно на холсте указать анимации и стрелочками указать переходы, из какой анимации в какую может быть переход и при каких условиях этот переход будет осуществляться.
Вопрос в том, нужно ли сейчас заморачиваться с такими системами, или пока Вам достаточно указать путь к модели и несколько стандартных анимаций (стояние, ходьба, бег и т.п.) без возможности их как либо настраивать?
Недавно был закончен дизайн для редактора нпс, так что на текущий момент я занимаюсь его реализацией в игре.
Но в последние дни я всё чаще слышу вопросы о релизе мода, в связи с чем появилась мысль, немного упростить задумку и сделать релиз в ближайшие несколько дней.
Вопрос заключается в том, нужен ли сейчас редактор моделей и анимаций? Задумка у меня следующая: будет компонент для нпс, в котором можно будет открыть редактор модели, который позволит скрыть/показать определённые кости, настроить некоторые части модели (например, настройка костей для рэгдолла или для отображения предметов в руках), а для анимаций планируется граф-подобная система, как в Unity (пока дизайна нет, так что это тоже займёт некоторое время), суть в том, что можно на холсте указать анимации и стрелочками указать переходы, из какой анимации в какую может быть переход и при каких условиях этот переход будет осуществляться.
Вопрос в том, нужно ли сейчас заморачиваться с такими системами, или пока Вам достаточно указать путь к модели и несколько стандартных анимаций (стояние, ходьба, бег и т.п.) без возможности их как либо настраивать?
❤5
Я не думал, что опрос отправится сразу, так что не успел всё подготовить))
❤9👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Предпросмотр анимаций и первые наброски редактора нпс ⏯️ | День 58
Перенёс пока базовый набросок интерфейса в игру, а также сделал возможность редактировать нпс даже не заходя в мир (по умолчанию сущность может быть создана только в мире)
Пока что ещё всё выглядит далеко от идеала, да и есть пара мелких багов с дёрганьем, которые я пока не смог исправить, но в конце концов, города ведь возводят не за день 🙃
Перенёс пока базовый набросок интерфейса в игру, а также сделал возможность редактировать нпс даже не заходя в мир (по умолчанию сущность может быть создана только в мире)
Пока что ещё всё выглядит далеко от идеала, да и есть пара мелких багов с дёрганьем, которые я пока не смог исправить, но в конце концов, города ведь возводят не за день 🙃
❤9
This media is not supported in your browser
VIEW IN TELEGRAM
Улучшаю парсер Markdown ✅⬇️| День 59
Пока исправляю всякие небольшие баги, в том числе и в системе разметки Markdown, теперь здесь активно могут использоваться таблицы с центрированием, а в недалёком будущем появятся ещё всякие картинки, предметы, сущности, крафты и т.п.
Кроме того, эту разметку можно будет использовать и в диалогах, т.е. нпс сможет явно упомянуть какой-нибудь предмет или иконку, что, как по мне довольно полезно 🤔
Пока исправляю всякие небольшие баги, в том числе и в системе разметки Markdown, теперь здесь активно могут использоваться таблицы с центрированием, а в недалёком будущем появятся ещё всякие картинки, предметы, сущности, крафты и т.п.
Кроме того, эту разметку можно будет использовать и в диалогах, т.е. нпс сможет явно упомянуть какой-нибудь предмет или иконку, что, как по мне довольно полезно 🤔
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Макет редактора нпс завершён 🧶| День 60
Практически закончил с редактором нпс, остались только некоторые баги с отображением и дёрганьем модельки, но это в целом уже не так долго (надеюсь ). Думаю скоро уже перейду к редактору анимаций 👀
Практически закончил с редактором нпс, остались только некоторые баги с отображением и дёрганьем модельки, но это в целом уже не так долго (
🤩6❤2👍2
Будет ли HollowEngine для Hytale? 🫤 | День 61
Пока я занимаюсь лишь мелкими правками, а макет редактора анимаций ещё дорабатывается, в посте рассказывать особо нечего... Так что сегодня пост про мои мысли на тему Hytale'а и его моддинга!
Сразу предупрежу, что не буду говорить о багах, вылетах, сомнительной стилистике/текстурах, всё же это ранняя версия и многое могут переделать. Прежде всего, что мне понравилось - высокая производительность в сравнении с ванилой и любыми Minecraft сборками. Я буквально захожу в мир, открываю карту, а там уже прогружено множество чанков... И в целом, догнать эту прогрузку летая по миру у меня практически не получалось, что сильно меня порадовало. Но ещё больше, меня радует наличие в игре из коробки теней, динамического и цветного освещения, причём fps при этом существенно выше чем у того же Sodium+Iris. Я уже декомпилировал jar сервера и подробно изучил его ядро. В отличии от Minecraft с его (по большей части) ООП, в Hytale используется ECS, то есть есть некая сущность, на которую крепятся всякие компоненты, причём они крайне разнообразные, помимо ожидаемых здоровья, трансформации (координаты и поворот), скорости и т.п. тут есть и довольно неожиданные для меня подходы, например, на сущность можно наложить компонент телепортации или смерти 🤔
Также поведение мобов куда более интересное в сравнении с Minecraft и как будто здесь даже подходы совсем другие, например, глобальный патчфиндинг, который кэширует пути. Пока не знаю, насколько это реализуемо в том же Minecraft, где буквально всё висит на игроке, и ты не можешь послать условного нпс в соседнюю деревню не выгрузив чанки, а даже если и заставишь, это будет сильно тормозить сервер. В Hytale в свою очередь ECS позволяет симулировать хоть тысячи сущностей одновременно и это не будет так уж сильно нагружать сервер (в сравнении с Minecraft)
Но к сожалению, есть и достаточно весомые минусы, особенно для меня, как мододела. В первую очередь - это полное отсутствие клиентского моддинга. Сделано это для защиты пользователей и клиента в целом, но это также значит, что никаких тебе кастомных GUI'шек, отрисовщиков моделей, эффектов, анимаций и т.п. Всё ограничено встроенным функционалом: их GUI фреймворк, их система моделей и анимаций, их эффекты. Это значит что любые мои наработки касательно визуала - абсолютно бесполезны в рамках Hytale, ни интерфейсов из Kool, ни gltf моделей, ни партиклов на compute-шейдерах. Да даже мелкие фичи, вроде мода MouseTweaks, там не повторить, потому что с сервера нельзя нормально отслеживать мышь игрока. И ладно, ещё если бы их системы были качественными и надёжными, но увы: интерфейсы не поддерживают графы (условно говоря меню квестов как FTB Quests или блоки кода как в HE), нельзя применить какие-нибудь фильтры вроде обрезки или шейдеров, а ещё нет никакой документации, а сама система закрытая из-за чего я даже не могу посмотреть список виджетов или их параметров💀; встроенная система моделей не имеет ни скиннинга со скелетной анимаций, ни шейпкеев (ну или опять таки, в самих файлах и документации я ничего не нашёл); по системе эффектов тоже пока ничего не ясно, можно ли будет создавать свои шейдеры для них и интегрировать с отрисовщиком мира?
В общем для меня этого достаточно, чтобы отказаться от моддинга Hytale в целом. Как игра - она очень даже не плохая, но для моего творчества эта платформа увы пока не годится 🥲
Не исключено, что в будущем ситуация станет лучше и систему интерфейсов доработают, документацию допишут, проблемные места поправят, но пока я пас, есть дела и поинтереснее.
Пока я занимаюсь лишь мелкими правками, а макет редактора анимаций ещё дорабатывается, в посте рассказывать особо нечего... Так что сегодня пост про мои мысли на тему Hytale'а и его моддинга!
Сразу предупрежу, что не буду говорить о багах, вылетах, сомнительной стилистике/текстурах, всё же это ранняя версия и многое могут переделать. Прежде всего, что мне понравилось - высокая производительность в сравнении с ванилой и любыми Minecraft сборками. Я буквально захожу в мир, открываю карту, а там уже прогружено множество чанков... И в целом, догнать эту прогрузку летая по миру у меня практически не получалось, что сильно меня порадовало. Но ещё больше, меня радует наличие в игре из коробки теней, динамического и цветного освещения, причём fps при этом существенно выше чем у того же Sodium+Iris. Я уже декомпилировал jar сервера и подробно изучил его ядро. В отличии от Minecraft с его (по большей части) ООП, в Hytale используется ECS, то есть есть некая сущность, на которую крепятся всякие компоненты, причём они крайне разнообразные, помимо ожидаемых здоровья, трансформации (координаты и поворот), скорости и т.п. тут есть и довольно неожиданные для меня подходы, например, на сущность можно наложить компонент телепортации или смерти 🤔
Также поведение мобов куда более интересное в сравнении с Minecraft и как будто здесь даже подходы совсем другие, например, глобальный патчфиндинг, который кэширует пути. Пока не знаю, насколько это реализуемо в том же Minecraft, где буквально всё висит на игроке, и ты не можешь послать условного нпс в соседнюю деревню не выгрузив чанки, а даже если и заставишь, это будет сильно тормозить сервер. В Hytale в свою очередь ECS позволяет симулировать хоть тысячи сущностей одновременно и это не будет так уж сильно нагружать сервер (в сравнении с Minecraft)
Но к сожалению, есть и достаточно весомые минусы, особенно для меня, как мододела. В первую очередь - это полное отсутствие клиентского моддинга. Сделано это для защиты пользователей и клиента в целом, но это также значит, что никаких тебе кастомных GUI'шек, отрисовщиков моделей, эффектов, анимаций и т.п. Всё ограничено встроенным функционалом: их GUI фреймворк, их система моделей и анимаций, их эффекты. Это значит что любые мои наработки касательно визуала - абсолютно бесполезны в рамках Hytale, ни интерфейсов из Kool, ни gltf моделей, ни партиклов на compute-шейдерах. Да даже мелкие фичи, вроде мода MouseTweaks, там не повторить, потому что с сервера нельзя нормально отслеживать мышь игрока. И ладно, ещё если бы их системы были качественными и надёжными, но увы: интерфейсы не поддерживают графы (условно говоря меню квестов как FTB Quests или блоки кода как в HE), нельзя применить какие-нибудь фильтры вроде обрезки или шейдеров, а ещё нет никакой документации, а сама система закрытая из-за чего я даже не могу посмотреть список виджетов или их параметров💀; встроенная система моделей не имеет ни скиннинга со скелетной анимаций, ни шейпкеев (ну или опять таки, в самих файлах и документации я ничего не нашёл); по системе эффектов тоже пока ничего не ясно, можно ли будет создавать свои шейдеры для них и интегрировать с отрисовщиком мира?
В общем для меня этого достаточно, чтобы отказаться от моддинга Hytale в целом. Как игра - она очень даже не плохая, но для моего творчества эта платформа увы пока не годится 🥲
Не исключено, что в будущем ситуация станет лучше и систему интерфейсов доработают, документацию допишут, проблемные места поправят, но пока я пас, есть дела и поинтереснее.
❤3
Ну и чтобы не быть голословным, вот небольшой мод, над которым я недавно работал, вернее лучшее чего я смог достичь с текущей системой интерфейсов. В целом можно довести эту систему до ума (но именно как список квестов, а не удобная графовая система), но когда тебе приходится редактировать интерфейсы буквально в блокноте, а любая ошибка в нём кикает тебя с сервера и требует перезагрузки этого самого сервера, то желания этим заниматься постепенно пропадает 🙃
Так что да, никуда я не уйду и как делал HollowEngine, так и буду делать 🙂
Так что да, никуда я не уйду и как делал HollowEngine, так и буду делать 🙂
❤6
Редактор анимаций и переходов между ними 🎞 | День 62
Сегодня я начал графовую систему для анимаций нпс, по итогу было решено сделать что-то напоминающее систему из Unity: граф из анимаций и стрелки, которые отображают переходы между этими анимацями при определённых условиях.
Самое сложное я уже реализовал - это узлы, которые можно перетаскивать, стрелки, которые не перекрывают друг друга, а также прогрутка и приближение, короче говоря за день сделал то, что я делал дней 5 раньше для блоков кода.
Следующий этап - параметры анимаций и переходов. И тут есть 2 варианта:
1) Реализовать это через Kotlin код, условно в условии перехода из анимации
2) Реализовать это через какой-нибудь конструктор, вроде
Лично мне кажется второй вариант не удобным, поскольку написать короткую строку проще, чем выбирать всякие параметры в редакторе, с другой стороны требовать ради этого компилятор Kotlin тоже не хочется, а вы что думаете? 🤔
P.S. насчёт варианта с кодом, возможно имеет смысл там несколько заготовок сделать, которые будут выбираться из списка, или хотя бы "историю выражений" добавить
Сегодня я начал графовую систему для анимаций нпс, по итогу было решено сделать что-то напоминающее систему из Unity: граф из анимаций и стрелки, которые отображают переходы между этими анимацями при определённых условиях.
Самое сложное я уже реализовал - это узлы, которые можно перетаскивать, стрелки, которые не перекрывают друг друга, а также прогрутка и приближение, короче говоря за день сделал то, что я делал дней 5 раньше для блоков кода.
Следующий этап - параметры анимаций и переходов. И тут есть 2 варианта:
1) Реализовать это через Kotlin код, условно в условии перехода из анимации
Walk в анимацию Run, Вы пишете условие одной строкой: entity.isMoving() && entity.speed >= 0.3.2) Реализовать это через какой-нибудь конструктор, вроде
[Флаг [Сущность двигается?]] и [Параметр [Скорость сущности] [>=] [0.3]].Лично мне кажется второй вариант не удобным, поскольку написать короткую строку проще, чем выбирать всякие параметры в редакторе, с другой стороны требовать ради этого компилятор Kotlin тоже не хочется, а вы что думаете? 🤔
P.S. насчёт варианта с кодом, возможно имеет смысл там несколько заготовок сделать, которые будут выбираться из списка, или хотя бы "историю выражений" добавить