Alright, this is a pretty big request.
I really like diffing things. I like being able to see what changed from one revision to another. With the exception of C++ code, Unreal’s binary file formats make this nearly impossible. And given that a lot of the game’s logic can be buried quite deeply (defaults tab, collapsed blueprints inside collapsed blueprints inside collapsed blueprints, etc) or just very difficult to visually diff (blueprints in general) this has already bitten me a few times where I’ve lost track of what changed.
I’ve worked on projects where everything, everything, was stored in text files. It was wonderful. Worked out great.
I’d love it if UE4 took the same approach.
Realistically, I assume some data baking would be necessary for great runtime performance. But there are data serialization libraries designed for this, that use a single abstract layout, and can use either compressed binary or text formats as backend storage systems. The two big ones I’m aware of are Google’s Protocol Buffers and Cap’n Proto, both of which would work quite well and may - judging from what I’ve seen of UE4’s serialization - actually end up with smaller files, when all is said and done.
(Cap’n Proto specifically is built to be insanely fast and compact, although it doesn’t yet support MSVC.)
So here’s the series of questions, just so I can figure out where Epic stands on this:
- Are there any internal plans to do this already?
- If someone went ahead and tried to make these changes, would it have any chance of making it into the official package?
- Is there some diff method I’m not aware of?
- Is there some major reason to stick to binary file formats that I’m not aware of?
Thanks for reading and for any commentary