FullSerializer has neat feature called Versioning, wanted to share info about it with community, so maybe it gets implemented some day.
It allows specifying chain of types and precise conversion between them through constructor methods.
Adds stability and modifiability when dealing with graphs. And to keep runtime performance unaffected additional step of reserialization would be required for all graphs during build/editor time.
I have on purpose removed a lot of original functionality of FullSerializer and also refactor it quite a lot for performance as well as code management/sanity reasons. Original Full Serializer had a great lot of features, but I decided to simplify and remove a lot of them which were not directly relevant, or hardly ever used. With that said, Versioning was one of those things that I initially thought of keeping, but in the end it also ended up being removed.
Just out of curiosity, do you suggest making Versioning possible again for managing custom nodes and tasks, or as a way to achieve something else framework-wise?
My main fear when working with visual code editors is that renaming/changing type in code would make serialized visual data outdated or even incorrect/broken.
So it’s two problems:
To be correct data needs to be reloaded into new types somehow.
To be up-to-date, after each code change, serialized data needs to be reserialized.
Both operations are slow and are better when done during editor time to keep runtime performance high.
Versioning is one of the solutions to this problem, with bonus of precise data conversion. It’s first time I’ve seen it and thought it was clever. It makes data correct but doesn’t bother with reserialization.
Tools and guide to deal with safe refactoring would be nice to have.
For now I’ve limited myself to using non-bound graphs and manually reserializing them through script after code changes.
I understand your concerns and those are valid points indeed for visual scripting tools regarding refection “references” (which are rather based on naming).
I can’t though really see how Full Serializers Versioning however can help in that. Versioning (in FS), requires the creation of a new class, which purpose is to replace the “now obsolete” class and upgrade from it. This is basically to update the “serialization model” to a different structure. So for example the “Execute Function” Action Task (which deals with reflection), even if “upgraded” to a new “serialization model” (new class like “ExecuteFunction_2”) via FS versioning, the data presented for the upgrade, will still be a series of string pointing to a type and method (SerializedMethodInfo class which is serialized in ExecuteFunction). Thus I don’t see how it can be helpful, at least in this case 🙂
With that said though, I also look forward to implementing the editor tools for refactoring reflection based “references” (among other things as well like variables! 🙂
Thanks!
Join us on Discord: https://discord.gg/97q2Rjh
Author
Posts
Viewing 4 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic.
Login
Register
By registering on this website you agree to our Privacy Policy.