This media is not supported in your browser
VIEW IN TELEGRAM
Кастомный оверлей сообщений 👀 | День 20
На данный момент я по большей части сосредоточен на системе сохранения скриптов, чтобы она не перезапускалась при выходе из игры, да и в целом чтобы она была стабильной, так что по нодам пока показывать нечего.
Но чтобы не оставлять Вас совсем без контента, запилил тут на скорую руку окно сообщения от нпс. Вообще в целом я бы даже мог добавить кучу всяких настроек для него, вроде:
- Цвета/Прозрачности рамки и заднего фона
- Скругление краёв сообщения
- Кастомную текстуру на фон
- Возможно даже отдельно голову нпс, как часть любой вашей модели с возможностью вращения или анимацией разговора, а не просто картинку 🤔
Но пока просто такой небольшой набросок, пока я занимаюсь сложными и непонятными вещами "под капотом" движка (И да, под капотом - это не значит, что движок опять заглох. Это значит, что там творится нечто сложное и страшное )
На данный момент я по большей части сосредоточен на системе сохранения скриптов, чтобы она не перезапускалась при выходе из игры, да и в целом чтобы она была стабильной, так что по нодам пока показывать нечего.
Но чтобы не оставлять Вас совсем без контента, запилил тут на скорую руку окно сообщения от нпс. Вообще в целом я бы даже мог добавить кучу всяких настроек для него, вроде:
- Цвета/Прозрачности рамки и заднего фона
- Скругление краёв сообщения
- Кастомную текстуру на фон
- Возможно даже отдельно голову нпс, как часть любой вашей модели с возможностью вращения или анимацией разговора, а не просто картинку 🤔
Но пока просто такой небольшой набросок, пока я занимаюсь сложными и непонятными вещами "под капотом" движка (
❤9
Дорабатываю UI и систему сохранений 💫 | День 21
Почти весь день потратил, чтобы сохранять полный стек вызовов блоков кода и кэшировать результаты вывода блоков при завершении работы сервера, в целом всё работает, но нуждается ещё в небольшой полировке.
Попробовал ещё с нуля написать шейдер для теней у блоков, результат на первой картинке. Вроде бы не плохо, но нужно будет более чётко указать форму 🫠
Ну и в целом за правки по дизайну отдельная благодарность Axel Encore, так изящно мне ещё их не предлагали 🙃
Если после тестирования системы сохранения не будет проблем, то завтра выйдет большой патч с новыми блоками 👀
Почти весь день потратил, чтобы сохранять полный стек вызовов блоков кода и кэшировать результаты вывода блоков при завершении работы сервера, в целом всё работает, но нуждается ещё в небольшой полировке.
Попробовал ещё с нуля написать шейдер для теней у блоков, результат на первой картинке. Вроде бы не плохо, но нужно будет более чётко указать форму 🫠
Ну и в целом за правки по дизайну отдельная благодарность Axel Encore, так изящно мне ещё их не предлагали 🙃
Если после тестирования системы сохранения не будет проблем, то завтра выйдет большой патч с новыми блоками 👀
❤6🔥2🎉1
Блоков много не бывает 🧱 | День 22
До движка добрался сегодня только ближе к вечеру, так что пока что добавил пока только ~15 новых блоков, большинство из них есть на картинке, думаю всем им найдётся применение 🤔
Тени пока отложил немного на потом, всё же стоит их более умно реализовать + вы ведь их тоже наверняка захотите использовать в своих интерфейсах)
Ну и разумеется работа с предметами теперь реализована прямо в игре и всякие зачарования и зелья можно указать одной кнопкой прямо из инвентаря (с квестами будет та же фича)
Дроп пока делать не стану, ибо основательно всё это проверить пока руки не дошли 🫡
До движка добрался сегодня только ближе к вечеру, так что пока что добавил пока только ~15 новых блоков, большинство из них есть на картинке, думаю всем им найдётся применение 🤔
Тени пока отложил немного на потом, всё же стоит их более умно реализовать + вы ведь их тоже наверняка захотите использовать в своих интерфейсах)
Ну и разумеется работа с предметами теперь реализована прямо в игре и всякие зачарования и зелья можно указать одной кнопкой прямо из инвентаря (с квестами будет та же фича)
Дроп пока делать не стану, ибо основательно всё это проверить пока руки не дошли 🫡
❤7🎉2👍1🔥1
Блоков много не бывает, блоков много не бывает 🧱🧱 | День 23
Всё ещё не доходят руки отполировать систему переменных для нормального сохранения тех же нпс, но пока что всё же могу хоть немного уделять времени на добавление всяких блоков. Сегодня я добавил ещё 20 блоков связанных с игроками 🎮
В общем понемногу движемся к релизу 🚂💨
Всё ещё не доходят руки отполировать систему переменных для нормального сохранения тех же нпс, но пока что всё же могу хоть немного уделять времени на добавление всяких блоков. Сегодня я добавил ещё 20 блоков связанных с игроками 🎮
В общем понемногу движемся к релизу 🚂💨
❤8🔥3👀1
This media is not supported in your browser
VIEW IN TELEGRAM
Мои блоки или Наши блоки ☭?) | День 24Всё ещё не доходят руки до системы сохранения, но вот зато сделал возможность добавления своих собственных блоков. Пока в рамках одного файла, но всему своё время, может быть выделю для этого отдельный вид файла, а может можно будет и целиком наследовать скрипты, тут пока надо думать 🤔
Ну и также эта фича работает с переменными, т.е. после создания переменной сразу появляется её "геттер".
Ну а пока всё пойду доделывать практические по оценке параметров функционирования программных систем, да и вообще, говорят сессия близко 🫠
❤5🔥1🍌1👀1
Концепт редактора интерфейсов? 🫣 | День 25
Я уже практически закончил всё, что планировал к первому релизу системы блоков кода, остаётся только доработать переменные и сохранения, после чего можно выпускать в релиз. Но в связи с учёбой я эту задачку перенёс на выходные, а пока в свободные минуты (буквально) экспериментирую с концептами для новых обновлений.
И один из таких - система интерфейсов ✏️
Если коротко, то посмотрев на NoesisGUI, появилась идея сделать свой редаткор интерфесов: задумка простая, у вас есть холст на котором можно располагать виджеты. И каждый виджет имеет кучу всяких параметров, например:
- Трансформация: Расположение, Размеры, Центрирование, Внешние и Внутренние отступы, а также слой (чтобы одни виджеты могли перекрывать другие).
- Внешний вид: Задний/Передний фон, рамка и в целом внешний вид каждого виджета.
- Содержимое: Уникальные параметры для каждого виджета, условно текст, путь к изображению, список вариантов и т.п.
Также можно добавить возможность создания анимаций практически любых этих параметров (вроде того, что я показывал несколько роликов назад с интерфейсом сообщения)
Но главный вопрос скорее к тому, а нужна ли вообще возможность создания таких интерфейсов или удобнее это делать через скрипты, как это было в Legacy?
В случае с простым перетаскиванием это очень удобно для шаблонных контейнеров фиксированного размера, но вот сделать какой-нибудь прокручиваемые список или дерево прокачки через подобную систему довольно тяжело в отличии от тех же скриптов. Как думаете, стоит дать этому редактору шанс, или скрипты всё же лучше?
Я уже практически закончил всё, что планировал к первому релизу системы блоков кода, остаётся только доработать переменные и сохранения, после чего можно выпускать в релиз. Но в связи с учёбой я эту задачку перенёс на выходные, а пока в свободные минуты (буквально) экспериментирую с концептами для новых обновлений.
И один из таких - система интерфейсов ✏️
Если коротко, то посмотрев на NoesisGUI, появилась идея сделать свой редаткор интерфесов: задумка простая, у вас есть холст на котором можно располагать виджеты. И каждый виджет имеет кучу всяких параметров, например:
- Трансформация: Расположение, Размеры, Центрирование, Внешние и Внутренние отступы, а также слой (чтобы одни виджеты могли перекрывать другие).
- Внешний вид: Задний/Передний фон, рамка и в целом внешний вид каждого виджета.
- Содержимое: Уникальные параметры для каждого виджета, условно текст, путь к изображению, список вариантов и т.п.
Также можно добавить возможность создания анимаций практически любых этих параметров (вроде того, что я показывал несколько роликов назад с интерфейсом сообщения)
Но главный вопрос скорее к тому, а нужна ли вообще возможность создания таких интерфейсов или удобнее это делать через скрипты, как это было в Legacy?
В случае с простым перетаскиванием это очень удобно для шаблонных контейнеров фиксированного размера, но вот сделать какой-нибудь прокручиваемые список или дерево прокачки через подобную систему довольно тяжело в отличии от тех же скриптов. Как думаете, стоит дать этому редактору шанс, или скрипты всё же лучше?
❤6👀2🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Списки, массивы и цветной текст 🌈 | День 26
Знали бы вы как мне надоели вопросы про то, какпоменять цвет ника нпс ))
Так что в этот раз я учту эту ошибку и добавлю возможность красить текст почти целиком :D
Ну разумеется можно будет менять и другие атрибуты (жирность, наклон, подчёркивание, изачёркнутый текст)
Ну и ещё я пока думаю над дизайном, тени тут явно нужны будут, да и отступ в начале как по мне стоит убрать 🤔
Знали бы вы как мне надоели вопросы про то, как
Так что в этот раз я учту эту ошибку и добавлю возможность красить текст почти целиком :D
Ну разумеется можно будет менять и другие атрибуты (жирность, наклон, подчёркивание, и
Ну и ещё я пока думаю над дизайном, тени тут явно нужны будут, да и отступ в начале как по мне стоит убрать 🤔
❤7
Кстати, на какой версии Вы бы хотели видеть HollowEngine?
Anonymous Poll
54%
1.20.1 (Текущая)
5%
1.19.2
3%
1.20.4 / 1.20.6
19%
1.21.1
14%
1.21.10+
5%
Другой вариант в комментариях
👀4
Улучшаю архитектуру 🏡 | День 27
Сегодня почти весь день ушел на переосмысление системы блоков кода, чтобы довести созданный прототип до ума. Особенно в рамках мультиплеера и работы с данными.
Что изменилось:
1) Триггеры событий: Глобальные и Локальные
Теперь у триггеров два режима работы:
- Глобальный: Создаёт новый экземпляр скрипта с нуля.
- Например: Игрок зашёл на сервер
- Зачем: Это изолирует данные игрока. Если во время диалога с одним игроком на сервер зайдет второй, то он не перезапишет переменную первого, а запустится в своей "среде".
- Локальный: Срабатывает внутри уже запущенного скрипта.
- Например: Игрок сломал блок во время выполнения квеста
- Зачем: Позволяет обрабатывать события в контексте текущей ситуации (например, запретить ломать блоки, пока идет диалог, или ждать действий второго игрока).
2) Сообщения и Функции
Я пересмотрел структуру пользовательских сообщений и функций, напомню что это и в чём между ними разница:
- Сообщения: 2 вида блоков, грубо говоря отправитель и приёмщик. То есть Вы можете вместо того, чтобы писать огромный спагетти блоко-код, использовать сообщения и, например, при разных вариантах выбора посылать разные сообщения и писать их параллельно, а не последовательно. По факту это
- Функции: Тоже 2 вида блоков, один запускает функцию, второй содержит её действия. В отличии от сообщений - может принимать разные параметры, но не может вызываться асинхронно, чтобы случайно не изменить эти данные в процессе выполнения и не было потом вопросов, почему у вас скрипт работает не так)
3) Переменные и состояния
- Переменные: Теперь двух уровней - локальные (в рамках 1 файла) и глобальные (в рамках всех файлов). Поддерживают все типы данных, включая игроков, мобов и т.п.
- Состояния и флаги: Те же переменные, но привязанные к конкретной сущности (игроку/нпс), что позволяет Вам легко настроить триггеры, чтобы у разных игроков всегда запускался подходящий им скрипт. Да и я думаю мне тут даже объяснять не нужно, и так много чего можно придумать, можете даже пару своих примеров в комментариях написать :)
4) (Пока просто как идея) Думаю многие помнят, что в Legacy был один неприятный косяк, что нпс мог выгрузиться из чанка, а потом дублироваться, потому что движок его не нашёл. Особенно это было заметно во всяких городах с массовкой, приходилось ставить чанклоадеры и этим ещё и ухудшать производительность. А ещё для надёжности при входе полностью всю эту массовку удалять и респавнить, короче жуть 😨
Сейчас это решено просто - если нпс не прогружен, скрипт просто ждёт, пока придёт игрок и сам всё прогрузит. Это хоть и самый стабильный и надёжный вариант, но я думаю доработать эту систему следующим образом:
- При обычной задаче дойти до точки, можно будет включить принудительную прогрузку чанков в области нпс. Например, если эта какая-нибудь важная катсцена или задача.
- Для массовки и распорядка дня сделать вообще независимую систему не требующую загруженных чанков! Согласитесь, какое вообще игроку дело до того, как очередной Виталик будет идти на работу или на Олег - на рынок. Важен сам факт, что к определённому времени нпс должен быть в определённом месте, так что я думаю лучше сделать настраиваемую систему для каждого нпс, где указать во сколько он должен прийти на место и откуда. После чего движок уже сам определит, где и когда должен быть нпс.
Короче говоря, работаю над основой, чтобы потом разом закрыть кучу задач 🙂
Сегодня почти весь день ушел на переосмысление системы блоков кода, чтобы довести созданный прототип до ума. Особенно в рамках мультиплеера и работы с данными.
Что изменилось:
1) Триггеры событий: Глобальные и Локальные
Теперь у триггеров два режима работы:
- Глобальный: Создаёт новый экземпляр скрипта с нуля.
- Например: Игрок зашёл на сервер
- Зачем: Это изолирует данные игрока. Если во время диалога с одним игроком на сервер зайдет второй, то он не перезапишет переменную первого, а запустится в своей "среде".
- Локальный: Срабатывает внутри уже запущенного скрипта.
- Например: Игрок сломал блок во время выполнения квеста
- Зачем: Позволяет обрабатывать события в контексте текущей ситуации (например, запретить ломать блоки, пока идет диалог, или ждать действий второго игрока).
2) Сообщения и Функции
Я пересмотрел структуру пользовательских сообщений и функций, напомню что это и в чём между ними разница:
- Сообщения: 2 вида блоков, грубо говоря отправитель и приёмщик. То есть Вы можете вместо того, чтобы писать огромный спагетти блоко-код, использовать сообщения и, например, при разных вариантах выбора посылать разные сообщения и писать их параллельно, а не последовательно. По факту это
async { ... } на стероидах, можно как запустить это асинхронно и забыть, можно запустить и дождаться завершения. А можно отправить сообщение и записать его контроллер в переменную, чтобы потом отменить задачу (например, если вам нужно чтобы персонаж "размышлял" перемещаясь между 2 точками одновременно с диалогом, а по его завершению перестал) - Функции: Тоже 2 вида блоков, один запускает функцию, второй содержит её действия. В отличии от сообщений - может принимать разные параметры, но не может вызываться асинхронно, чтобы случайно не изменить эти данные в процессе выполнения и не было потом вопросов, почему у вас скрипт работает не так)
3) Переменные и состояния
- Переменные: Теперь двух уровней - локальные (в рамках 1 файла) и глобальные (в рамках всех файлов). Поддерживают все типы данных, включая игроков, мобов и т.п.
- Состояния и флаги: Те же переменные, но привязанные к конкретной сущности (игроку/нпс), что позволяет Вам легко настроить триггеры, чтобы у разных игроков всегда запускался подходящий им скрипт. Да и я думаю мне тут даже объяснять не нужно, и так много чего можно придумать, можете даже пару своих примеров в комментариях написать :)
4) (Пока просто как идея) Думаю многие помнят, что в Legacy был один неприятный косяк, что нпс мог выгрузиться из чанка, а потом дублироваться, потому что движок его не нашёл. Особенно это было заметно во всяких городах с массовкой, приходилось ставить чанклоадеры и этим ещё и ухудшать производительность. А ещё для надёжности при входе полностью всю эту массовку удалять и респавнить, короче жуть 😨
Сейчас это решено просто - если нпс не прогружен, скрипт просто ждёт, пока придёт игрок и сам всё прогрузит. Это хоть и самый стабильный и надёжный вариант, но я думаю доработать эту систему следующим образом:
- При обычной задаче дойти до точки, можно будет включить принудительную прогрузку чанков в области нпс. Например, если эта какая-нибудь важная катсцена или задача.
- Для массовки и распорядка дня сделать вообще независимую систему не требующую загруженных чанков! Согласитесь, какое вообще игроку дело до того, как очередной Виталик будет идти на работу или на Олег - на рынок. Важен сам факт, что к определённому времени нпс должен быть в определённом месте, так что я думаю лучше сделать настраиваемую систему для каждого нпс, где указать во сколько он должен прийти на место и откуда. После чего движок уже сам определит, где и когда должен быть нпс.
Короче говоря, работаю над основой, чтобы потом разом закрыть кучу задач 🙂
❤10🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Вы знаете что такое нормали, скалярные произведения векторов и Биссектрисы? | День 28
А мне вот пришлось вспоминать, что это такое 🫠
Короче говоря, сегодня, существенно доработал интерфейс, а также добавил немного звуков, стало куда лучше, чем с обводкой, тем более когда 2 блока пытались друг друга перекрыть)
Понемногу уже начинаю дорабатывать и функционал запуска с сохранением, который всё время откладываю. Да и сейчас перед сессией работы прям навалилось 💀🩼
А мне вот пришлось вспоминать, что это такое 🫠
Короче говоря, сегодня, существенно доработал интерфейс, а также добавил немного звуков, стало куда лучше, чем с обводкой, тем более когда 2 блока пытались друг друга перекрыть)
Понемногу уже начинаю дорабатывать и функционал запуска с сохранением, который всё время откладываю. Да и сейчас перед сессией работы прям навалилось 💀🩼
🔥6❤2👀1
Рефакторинг 🚴♂️🩼 | День 29
Переписал сегодня немного редактор, разделив логику от отрисовки, а также явно отделив выражения от действий.
Вроде бы ничего прям удивительного, но читать код стало легче, как и исправлять баги в нём. Да и разработчикам аддонов будет проще :)
Ну а ещё немного поработал над блоками, думаю вынести часть функций игроков и нпс в общую категорию сущностей, чтобы с ним было проще работать.
Пока что добавил немного математики и тригонометрии вам в блоки 😅
- Рейкастинг: Позволяет узнать точку, куда смотрит сущность + явное ограничение дальности, что не было бесконечных значений, если сущность смотрит в небо)
- Угол между 2 сущностями, т.е. от первой до второй относительно взгляда первой.
Думаю очень поможет в создании механик вроде "нпс должен пропасть, если игрок его не видит"
А, ну и кстати, для тех кто предпочитает Telegram, а не Discord, у нас тут группа появилась, заходите если что 🤔
https://t.me/+zBNc0IJUHXozZmMy
Переписал сегодня немного редактор, разделив логику от отрисовки, а также явно отделив выражения от действий.
Вроде бы ничего прям удивительного, но читать код стало легче, как и исправлять баги в нём. Да и разработчикам аддонов будет проще :)
Ну а ещё немного поработал над блоками, думаю вынести часть функций игроков и нпс в общую категорию сущностей, чтобы с ним было проще работать.
Пока что добавил немного математики и тригонометрии вам в блоки 😅
- Рейкастинг: Позволяет узнать точку, куда смотрит сущность + явное ограничение дальности, что не было бесконечных значений, если сущность смотрит в небо)
- Угол между 2 сущностями, т.е. от первой до второй относительно взгляда первой.
Думаю очень поможет в создании механик вроде "нпс должен пропасть, если игрок его не видит"
А, ну и кстати, для тех кто предпочитает Telegram, а не Discord, у нас тут группа появилась, заходите если что 🤔
https://t.me/+zBNc0IJUHXozZmMy
❤4
- Это он украл блоки из MCreator!
- Я не отдам блок, я Холлоу Хоризон, работаю над движком 30 дней без выходных и зряплаты 😈
Ну что, прошёл месяц с того, как я начал этот эксперимент с ежедневными девлогами, релиза в красивое к сожалению не будет, всё-таки взять и забить на учёбу, сессию и другие дела и посвятить всё время на разработку я не могу, но всё же вечерами добавлять небольшие фичи - лишним не будет. Сегодня вот появилось больше блоков для работы с игроками (сытость, насыщение, больший контроль над опытом и игровым режимом) и сущностями (настройка эффектов, ну и пара параметров которые не попали в кадр)
Ну а на этом пока всё, ну и напоминаю, для тех, кто пропустил, что у движка появилось своё сообщество 🙃
❤9👀2🔥1
Я уже сбился со счёту с этими блоками, но... | День 31 😶🌫️
Знаете, я сегодня пожалуй даже не буду показывать содержимое всех блоков, просто скажу, что их стало больше... Очень много всякой информации о сущностях (нпс, игроки и не только), больше операцией с векторами и больше настраиваемых параметров для той же телепортации или респавна игроков ✍️
Знаете, я сегодня пожалуй даже не буду показывать содержимое всех блоков, просто скажу, что их стало больше... Очень много всякой информации о сущностях (нпс, игроки и не только), больше операцией с векторами и больше настраиваемых параметров для той же телепортации или респавна игроков ✍️
🔥4