Remix.run Logo
frollogaston 2 hours ago

What do you do instead of chunking your snapshots? Storing diffs is usually the other approach.

VikingCoder 23 minutes ago | parent | next [-]

I tried to give that section of the doc a fair read.

Looks like operational transforms to me.

The doc claims it's the first with this technique. A 30 second search reminded me of Darcs, and taught me about Pijul, and Weave. And yes, Google Docs storage works the same way - there are probably papers documenting how efficient Google Docs storage is, but it's not wrapped up in a full VCS that folks can use.

The example in the doc uses text, and unfortunately I think it's for a reason. I think with large, binary game assets, the most common operation is going to be strings of "replace A with B", and depending on your chunk size relative to the distribution of changes you make on your assets, I see it as pretty close to a wash, for efficiency. Especially considering that content-addressable blocks also solves de-duplication, which for a multi-game studio is probably going to be significant. Especially if they're managing multiple releases, patches, development branches, etc.

gavinhoward an hour ago | parent | prev [-]

The best answer I have is for you to read the "History Model" section of that design doc through the "Implementing CRDTs" subsection.