Unreal Engine Ultimate Save System 2.0
Это реально большая работа.
Изначально задача была, расширить список покупателей переведя систему на совместимость с более ранними версиями (мне приходило несколько писем с вопросами, а будет ли система для 5.3, 5.5 и 4.27).
Поскольку нельзя просто так взять и понизить версию проекта, то приходится полностью все переписывать руками.
Когда я писал первую версию системы, это было реально увлекательно, одна функция, ещё одна, здесь система поддержки, тут новая структурка...
Однако нельзя просто так взять и переписать код, поскольку это довольно сложная и многогранная система. Примерно 40 часов я уже потратил на перенос кода вместе с нововведениями и это только 50% всей работы.
Причина нововведений.
Система в версии 1.0 уже умеет сохранять актеров, позиции, скорости, их наличие/отсутствие в момент сохранения, а так же кросс-уровневую поддержку, так же имеется возможность сохранять дополнительные данные актера, которые пользователь может выборочно сам сохранять.
Моя система используется в сторонних проектах, и появились вопросы к некоторым функциям, поскольку сохранение некоторых данных приводит к рутине, (и скажем откровенно, зачастую пользователь неимоверно глуп, ведь вместо документаций движка учится на трижды перевареном кале с Ютуба). Вот собственно я и решил покрыть основную часть внедрив это в базовый функционал.
Список нововведений
Теперь система сможет полностью сохранять данные статик меш компонентов, их положение, скорости, физику, и материалы, то же самое и для скелетал меш компонентов с учётом анимационного блюпринта.
Причем как и в случае с актерами, система так же полностью загружает наличие самого компонента из сохранения учитывая его наличие или отсутствие на момент сохранения.
Ведь в одном актёре может быть целая гора таких компонентов.
Звучит как небольшой список нововведений, но это реально ещё одна система внутри одной большой системы сохранений.
Зачем и почему это нужно?
Главная причина, это динамическое изменение мира, в процессе игры актеры могут не просто быть но и трансформироваться отдельными компонентами как сеткой так и материалами.
Например мы открыли дверь и сохранились.
Если в первой версии, нам нужно было это сохранять вручную, и при загрузке считывать состояние и открывать ее, то теперь это происходит автоматически. Все положения и скорости компонентов теперь сохраняются и загружаются.
Например, у нас есть бот. И мы ему поменяли меш в середине игры и сохранились, в обычном случае при загрузке это не сохранилось бы, или нам опять же пришлось пользоваться методом сохранения пользовательских данных и потом применять его при методе загрузки.
Но теперь этого делать не нужно - мы сделали это за вас.
То же касается и любой смены материала на любом компоненте статик или скелетал сетки.
Возможные фишки до релиза
Как вариант я хочу реализовать подсистему DeepSave, т.е. Глубокое Сохранение, с возможностью выбора пользователем использовать упрощённое сохранение или глубокое для конкретного актера.
DeepSave - позволит пользователю более гибко управлять системой сохранения, переходя на упрощённое или глубокое сохранение - это позволяет оптимизировать размер сохраняемой информации.
Ну и видос на последок.
Я не мастер пиара и ссать людям в уши, потому, что мое дело это решение нетривиальных задач, а с софтами у меня всегда не очень было.