Дорабатываю систему сохранения ⚙️ | День 35
Практически полностью переписал прошлый подход к сохранению, теперь оно работает через Scope (Пространства) - определённый блок или исполнитель скрипта может создать новое пространство с изолированным набором переменных.
Например, на скриншоте сейчас запущен первый блок "Ждать 5 секунд" и на этом моменте я вышел из игры и движок сохранил 4 уровень вложенности:
- Первый уровень: Цепочка от корневого блока, хранит активный блок - это Если
- Второй уровень: Уже содержимое блока Если, а если точнее его результат - condition: true,
- Третий уровень: Далее идёт опять цепочка с именем активного блока, но уже внутри Then-ветки. Сейчас там указан ID блока Ждать.
- Четвёртый уровень: Пустой блок, это уже данные самого блока Ждать, их тут пока нет, но позже тут будет храниться пройденное время, чтобы оно не сбросилось при выходе и не пришлось ждать условные 4 часа с самого начала)
В целом это довольно умная система, которая для каждого блока всегда выдаёт чистый контекст для сохранения и затрачивает минимум памяти.
Если сравнить это с Legacy, то тут преимущество может достигать более чем в сотню раз 🤯
А всё, потому что раньше моя система сохраняла каждое действие, которое вообще было в скрипте. Теперь же эта система сохраняет только те данные, которые необходимы для успешного продолжения скрипта, то есть активные ветки и данные не завершённых блоков и в худшем случае оно может сохранить 7-10 блоков (зависит от глубины вложенных блоков), но никак не 500, как это было раньше 🫣
Post #97
746
- ❤ 3