TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

How Figma's Multiplayer Technology Works

268 pointsby Aqua_Geekover 5 years ago

17 comments

roldieover 5 years ago
I appreciate the technical achievement of &quot;multiplayer,&quot; and it does work impressively well.<p>However, no one one my design team likes it. I certainly don&#x27;t. It&#x27;s akin to having someone breathing over your shoulder as you&#x27;re trying to work. And with design, especially, I tend to create a bunch of nonsense and &quot;bad&quot; designs before getting anywhere near a level worthy of sharing or even a team critique. Even if I don&#x27;t care what others think of me or my skills, it&#x27;s very disruptive to the creative process to know that someone is watching you.<p>In my experience, at least, there do not seem to be very many use cases for &quot;multiplayer.&quot; I mean, even using Google Docs at the same time as someone else is jarring and disruptive in most cases.<p>Perhaps the only use case where we&#x27;ve actually liked having it is for a critique (especially when a teammate is remote) or a demo.<p>Personal preference aside, I think Figma is great. I still miss some things from Sketch, but overall Figma is a great tool. My team recently transitioned&#x2F;is still transitioning from Sketch to Figma, and I can imagine that many other design teams will be making the same move too.
评论 #21382997 未加载
评论 #21384299 未加载
评论 #21382973 未加载
评论 #21384954 未加载
评论 #21384315 未加载
评论 #21384109 未加载
评论 #21383413 未加载
评论 #21384756 未加载
ggambettaover 5 years ago
Sounds weird to use &quot;multiplayer&quot; when there are no players involved, but users. On the other hand, I guess &quot;multiuser&quot; doesn&#x27;t convey the real-time-ness they want to convey.<p>FWIW, here&#x27;s how it&#x27;s done for actual multiplayer games, especially the ones where latency is critical: <a href="https:&#x2F;&#x2F;gabrielgambetta.com&#x2F;client-server-game-architecture.html" rel="nofollow">https:&#x2F;&#x2F;gabrielgambetta.com&#x2F;client-server-game-architecture....</a> Arguably, their software is more similar to a turn-based game, and formal correctness of the results is more desirable than &quot;a smooth experience&quot;, as is the case for multiplayer games.
评论 #21380317 未加载
评论 #21380406 未加载
评论 #21382665 未加载
评论 #21380831 未加载
评论 #21382910 未加载
gatherhuntererover 5 years ago
I think “real-time collaboration” or “multi-user” would have been better choices than “multiplayer”. I was hesitant to criticize the term at first because it is so ill-fitting that I was unsure I understood what feature they were talking about.<p>It’s interesting to see this on HN at the same time as the GNU article about “Service as as Software Substitute”. I would have much more piece of mind that my personal or proprietary information is secure if I didn’t have to trust Figma. A peer-to-peer collaboration platform that I can run locally would be innovative and exciting.
tibbonover 5 years ago
I was trying recently to prototype a multiplayer experience, and got pretty stalled when it came around to the networking side. My goal wasn&#x27;t to make it fast&#x2F;scalable, but rather just to be able to have 4 people sit at my kitchen table and answer &quot;is this game idea interesting&#x2F;fun&quot;. But the resolution of movements, timing things, client&#x2F;server stuff was actually a pretty steep cliff for someone who had never done it before. There&#x27;s also a lot of interesting decisions to make upfront then about rendering, real-timeness, how you&#x27;ll split up movement collisions, etc.<p>Regardless of if this is for a &quot;Game&quot; or not, I find reading more about these things quite interesting.
评论 #21381468 未加载
评论 #21383312 未加载
bhoustonover 5 years ago
Great write-up! Thanks for taking the time to do this.<p>This is incredibly similar to the way we did multi-user simultaneous editing in <a href="https:&#x2F;&#x2F;Clara.io" rel="nofollow">https:&#x2F;&#x2F;Clara.io</a> back in 2013&#x2F;2014. It was also a tree-based OT-like system, but there was a few differences.<p>I also wonder if you guys studied how we did it...
评论 #21379930 未加载
评论 #21381134 未加载
crypticaover 5 years ago
I think the approach of mutating each property independently is an excellent approach and I&#x27;m glad to see it working at scale. It&#x27;s just like regular CRUD except that instead of mutating the whole resource, you just mutate one property at a time - And if two users edit the same atomic property at the exact same time, it doesn&#x27;t really matter who&#x27;s edit arrives last because there is no absolute right answer so long as both users can observe the same outcome.<p>I also did some work in that area several years ago which I refined over time into a sample app and a set of libraries: <a href="https:&#x2F;&#x2F;github.com&#x2F;SocketCluster&#x2F;ag-crud-sample#ag-crud-sample" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;SocketCluster&#x2F;ag-crud-sample#ag-crud-samp...</a>
preommrover 5 years ago
&gt; When we first started building multiplayer functionality in Figma four years ago, we decided to develop our own solution. No other design tool offered this feature,<p>I could&#x27;ve sworn I&#x27;ve seen people on HN say there were tools that did real-time collaborative design before figma.
评论 #21382133 未加载
littlestymaarover 5 years ago
&gt; As a startup we value the ability to ship features quickly, and OTs were unnecessarily complex for our problem space. So we built a custom multiplayer system that&#x27;s simpler and easier to implement.<p>That sounds like a bad reason to implement you own mechanism. There are many valid reasons to design your own system (your requirements being different is the most common one), but “the state of the art is too complex” sounds like a good way to reinvent all the solutions to the technical problems the state of the art faced and end up with an equally complex solution in the end.<p>This isn&#x27;t to dismiss the work exposed here, and the really pleasant write-up, though.
miki123211over 5 years ago
Unrelated, but repl.it wants to do the same thing for code. It&#x27;s an on line IDE, something like Cloud9, that lets you click, write a program in almost any language and run it on their servers. You can collaborate with others, where you all see the same terminal etc. This seems amazing for learning and small remote groups who want to code together. Repl.it is already becoming a place where bright kids learn to code and produce some pretty impressive things.
评论 #21385663 未加载
timwaaghover 5 years ago
I do not know how usable Multiplayer is. I sometimes had that if i had one browser window open and opened another that i had two sessions in Figma, which was slightly annoying. But for me the dealbreaker with Figma as a tool is it sometimes has issues with exporting content to png. Meaning I had to import it in GIMP before re-exporting it. The idea is really neat, but it needs some work before I can really recommend it over more traditional tools.
Bombthecatover 5 years ago
My wife just started learning ui&#x2F;ux. I think the realtime aspect could help with tutoring.
thallavajhulaover 5 years ago
Is there anything currently being researched around Multiplayer tech with better efficiency than CRDTs or OT? It seems like almost all of such implementations currently just implement CRDTs or OT.
评论 #21382189 未加载
评论 #21381591 未加载
评论 #21384360 未加载
miguelmotaover 5 years ago
Anyone know what program was used to create the animated diagrams?
评论 #21382217 未加载
baxtrover 5 years ago
Figma is the one web app that always forces my safari down to its knees... even though I have a strong processor and lots of memory.
评论 #21387703 未加载
marknadalover 5 years ago
CRDTs are absolutely critical, if you don&#x27;t know about them, read this article &amp; then research them!<p>If you&#x27;re wanting to use CRDT tools, I recommend two:<p>- <a href="https:&#x2F;&#x2F;github.com&#x2F;automerge&#x2F;automerge" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;automerge&#x2F;automerge</a> (immutable)<p>- <a href="https:&#x2F;&#x2F;github.com&#x2F;amark&#x2F;gun" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;amark&#x2F;gun</a> (mutable)
评论 #21380794 未加载
bravoetchover 5 years ago
The article starts without introducing what figma is. I read for a while before discovering this is something like Google docs... Multiplayer work-sim maybe?
tw1010over 5 years ago
Figma feels like the height of over-engineered backends with corresponding low-innovation frontends.
评论 #21384578 未加载