Прогресс по скриптингу
🚀 Прогресс по скриптингу: рассказываю про некие функции @Suspendable!
Компилятор в игре уже работает, осталось немного:
✔️ Настроить совместимость со скриптами (уже почти готово)
✔️ Довести до ума сохранение состояний
✔️ Реализовать сохранение данных в файлы мира
А пока — давайте разберём @Suspendable функции (сериализуемые корутины) и как с ними работать!
🕒Пример 1: Функция ожидания wait()
Как использовать:
wait(2.sec) → 2 секунды (40 тиков, так как 1 сек = 20 тиков)
Реализация:
Фича тут в том, что обычно в языках нужно вручную ставить yield() для паузы после всех действий в цикле, но здесь задержка встроена в цикл — нельзя случайно забыть о тиках!
❓ Как думаете: оставить эту "чёрную магию" или перейти на классический подход с yield()? Пишите в комментариях)
👣Пример 2: Движение NPC к точке
Как использовать:
npc.move(pos(x, y, z))
Реализация:
Кстати говоря буквально тоже самое в Legacy требовало более 50 строчек, включая сохранение, проверку переменных, возврат состояния, не говоря уже о самой стейтмашине. Ну а теперь — всего 5 строк!
💬Бонус: Автоматические паузы в диалогах
Хотите, чтобы текст появлялся не мгновенно, а имел встроенную задержку после вывода в чат?
Решение:
Итог:
npc.sayAndWait("Привет, путник!") → скрипт продолжится ровно тогда, когда игрок успеет его прочитать.
⚠️Важно: Аргументы функций обновляются каждый тик!
Сравните:
Это даёт гибкость: например, можно заставить NPC преследовать ближайшего игрока без дополнительного кода!
👉 Что думаете про такой подход? Стоит ли оставить автоматические паузы в циклах или вернуть ручное управление через yield()?
Жду ваших мнений в комментариях)
P.S. Кстати, все скрины сделаны прямо через редактор в игре :D
Axel Encore
Прекрасно, мне кажется, что продуманность паузы именно фича, так что было бы круто видеть ее на релизе
А примеры скриптов вдохновляют, хочется попробовать их в деле, очень круто и понятно описано
Apr 20 2025 15:51
Ise
Всё супер, ждём выход мода на бусти!
Apr 21 2025 16:11