Figma needs to have very consistent, predictable resolution in order for users to trust it with business-critical documents, and it needs to allow users to operate offline for arbitrarily long periods without throwing their work away when they reconnect. This has to happen across multiple versions of the software, and across documents (e.g. when dependency libraries are republished).
If you want to see an example of how it works, check out my side project Doodledocs. I modified the Bugout library a bit for performance improvements, but my project is using its concept on how to spin up a serverless (i.e. not your servers but those of WebTorrent) P2P web app [2].
[1] https://github.com/chr15m/bugout
[2] Doodledocs is a collaborative doodling web app that I created as a sideproject, so it is just a bit related to Figma. I didn't make CRDTs yet, since I want a simple doodle environment for pencil/eraser (+ simple web annotation/image annotation).
Link: https://doodledocs.com (browsers tested: Chrome/laptop, Chrome/iPad, Safari/iPad).
I didn't mention P2P or edit my comment at any point, BTW.
Oh! I see, I read "gatherhunterer" his comment as the top comment. I meant to reply to him, I simply clicked "reply" on the top comment.
http://fabiensanglard.net/quake3/network.php
It merges unacknowledged data into packets containing new information.
There's also GGPO which has been open sourced recently:
> The real-time collaborative editing feature that we’ve been working hard on over the past year is finally ready! Our implementation is called “multiplayer” since it was inspired by cooperative multiplayer games.
But real-time/collaborative editing (or "live editing") had already been a thing for years. It's weird that they felt the need to rename it and slap a cool backstory ("videogames!") on it.
I never said otherwise.
> Multiplayer is a better name than 'live editing' anyway.
Right now, three of the top four comments in this thread are people criticizing and/or being confused by the term they used.
You may think that, say, "internationalization" is an awful, unwieldy word. As a guy who used to work in an i18n department, I'd agree. But if you're making internationalization software, and you decide to just call it "multiplacing" instead to save typing, you're going to confuse and put off a lot of your target market. That's not, generally, a good idea.
"Figma didn’t start out with multiplayer editing support." - In the same vein, Uber has multiplayer. It's barely coherent marketing noise.
What is multiplayer gaming other than multiple players mutating a global, shared state at the same time? Seems close enough to collaborate live editing to me, especially when you consider games like Minecraft or Factorio (MP). The only confusing thing for me was that I had no idea what Figma even is and it took me a few paragraphs in to figure out what the article was actually about.
FWIW, here's how it's done for actual multiplayer games, especially the ones where latency is critical: https://gabrielgambetta.com/client-server-game-architecture.... Arguably, their software is more similar to a turn-based game, and formal correctness of the results is more desirable than "a smooth experience", as is the case for multiplayer games.