Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

All the fundamentals have existed for at least 26 years. So, no, not really.

It's also really weird to use video game terminology and ignore the fact that all of the approaches used in this article have in fact, been done by major game engines, are readily documented in game development circles, etc.

It reads like an undergrad discovering game development for the first time. None of this is novel. It wasn't even novel for a web or desktop application to use.



I also found it weird. They're basically doing what multiplayer games do but for a web app. Not the typical way you'd build your web backend but nothing actually new... not even using CRDTs, just inspired by them.


Yeah, if anything it’s obvious how you’d implement multiplayer for web apps.

By using multiplayer architecture…

And all their talk about state reconciliation? That’s just server authority…


Can you say more about which prior art you think overlaps here? We have a similar use case to Figma and are implementing a similar solution. I'm not particularly concerned whether the path we're following is novel but I am particularly concerned with whether there are gotchas along it that we should be watching out for, so if there are more mature solutions, we'd be interested.


Read QuakeWorld 1999, client-server prediction, Counter-Strike: Source lag compensation.

See also, “reconciliation.”

Also, debatably the article hints towards an incorrect implementation because they specifically mention sending events instead of user input.

By design, if you do this, you can create events that are supposed to eventually stop, but the user may drop packets and disconnect all the while you were processing an event that was never supposed to occur.

If you poll user input and experience loss, there’s no event to misfire.

This behavior manifests itself in games as a player that continues to walk forward despite having lost their connection to a server and is a indicator that a multiplayer server was implemented incorrectly.


Multiplayer video games are the big one. There's no reason why you couldn't apply the same kind of synchronization to a web app. You'll just need to decide on an approach because not all games do it the same way. Most likely you'd want rollback netcode.


Indeed, Replicache works this way, using server reconciliation (one part of client-side prediction): https://doc.replicache.dev/concepts/how-it-works




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: