4 ms·
Sounds weird to use "multiplayer" when there are no players involved, but users. On the other hand, I guess "multiuser" doesn't convey the real-time-ness they w
by ggambetta 7y ago
Sounds weird to use "multiplayer" when there are no players involved, but users. On the other hand, I guess "multiuser" doesn't convey the real-time-ness they want to convey.
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.html 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.
- coreyward 7y agoFigma's case is more challenging in some ways, too, though. In multiplayer games, like the one described on your website, you rarely have multiple actors independently manipulating the same object, there's a moderate tolerance for imperfect resolution of conflicts, and the server can reject messages that are more than a few seconds out of sync with the server state. 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).
- ggambetta 7y agoYep, I agree the use case is somewhat different - I wrote as much after the link. Probably why calling this "multiplayer" sounds weird.
- deleted 7y ago[deleted]
- melvinroest 7y agoNote: there's no client-server architecture needed with things such as Figma since it can be done P2P. I'm just past the beginning stages of it. You can use a mix of WebRTC/WebTorrent's infrastructure to get a serverless (i.e. use WebTorrent's signaling services) for P2P. A library called Bugout [1] implemented it this way. 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 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 https://doodledocs.com (browsers tested: Chrome/laptop, Chrome/iPad, Safari/iPad).
- ggambetta 7y agoDoodledocs looks like a really fun project, I'll definitely take a look :) I didn't mention P2P or edit my comment at any point, BTW.
- melvinroest 7y agoHuh... weird, maybe I read into things. I also read the word "collaborative" somewhere. 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.
- PhasmaFelis 7y agoYeah, it's jarring. In the linked post from 2016, they clarify: > 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.
- ajkjk 7y agoIt's not that weird. They can call it whatever they want. Multiplayer is a better name than 'live editing' anyway.
- PhasmaFelis 7y ago> They can call it whatever they want. 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.
- Supermancho 7y agoMultiplayer is already an entrenched term. Multiplayer actions have nothing to do with collaborative live editing, other than there are asynchronous events and state. This is true of all sorts of live analytics platforms. "Figma didn’t start out with multiplayer editing support." - In the same vein, Uber has multiplayer. It's barely coherent marketing noise.
- jplayer01 7y ago> Multiplayer is already an entrenched term. Multiplayer actions have nothing to do with collaborative live editing, other than there are asynchronous events and state. This is true of all sorts of live analytics platforms. 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.
- matheusmoreira 7y agoA source code review of Quake 3's network model: http://fabiensanglard.net/quake3/network.php 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: https://github.com/pond3r/ggpo https://github.com/pond3r/ggpo
- keyle 7y agoGreat write up on your website! I remember Valve had some great pages about network game programming too.