6 ms·
I poked my nose into the Improbable's public API docs. What I saw looked like an OK Entity-Component-System straight out of /r/gamedev + some C# serialization
by corysama 9y ago
I poked my nose into the Improbable's public API docs. What I saw looked like an OK Entity-Component-System straight out of /r/gamedev + some C# serialization so that you could have Systems (aka "functions") run on different nodes on a network.
What did I not notice that's worth half a bil?
- bane 9y agoMy understanding is that their twist on the problem is some kind of dynamic sharding of game entities across a cluster of servers. Different games seem to try to deal with this in different ways: - WoW - Several servers hosting copies of the main game world, dedicated party servers for instances - Second Life - A server maps to a specific volumetric "box" that is estimated to be able to handle whatever activity and whatever entities end up in that box - Eve - A server maps to a star system, local game time can slow down to accommodate more activity My understanding is that these guys do something else, where they determine sets of entities (players, NPCs and non-player entities) that are likely to interact and shard off the controlling logic to a server. As the world-state changes, the clustering and mapping of entity groups to servers changes and they have some kind of way to move likely interacting clusters of entities seamlessly within the infrastructure. This has the possibility of supporting huge persistent game worlds with tens of thousands of players at a time without the kinds of ill effects we see with the other approaches.
- revelation 9y agoThere is a reason for that and they call it "the latency numbers every programmer should know".
- chris_io 9y agoThat's pretty accurate, yes. To add to your examples: - Worlds adrift - 100s of instances of Unity running in the background, but it appears to be a single seamless world to players.
- jcfrei 9y agoInteresting, so I guess this still limits the number of entities that can interact with each other on one server but allows for much more non-interacting entities spread out over a large world. But couldn't then lots of players (maybe by accident) meet in one spot and then slow that server down?
- bane 9y agoI honestly have no idea. Clearly given the number of smart people and amount of money being thrown at the problem (without being able to produce a real seamless massive persistent on-line world without compromises) this is very hard. I also wonder how it handles very large entities that might span across clusters (say a large spaceship with thousands of entities spread across multiple decks and in different area). Since all of those things are entities in a sense, and there might be many ships, how does it handle this? No idea, but the fact that this can be asked at all is pretty interesting.
- a_t48 9y agoYeah, the secret sauce seems to be in how they handle interactions split across clusters. It's not a simple problem.
- dxhdr 9y ago> Clearly given the number of smart people and amount of money being thrown at the problem (without being able to produce a real seamless massive persistent on-line world without compromises) this is very hard. It's just not worth it. The technical back-end challenge isn't the hard part here, it's the game design. WoW with 10,000 players idling in Orgrimmar isn't fun. WoW with 100 players in a single dungeon isn't fun either, for that matter.
- spuz 9y agoThe real value is not in games. It's in simulations of real world systems. The kind of thing governments are happy to spend a lot of dollars on. http://www.wired.co.uk/article/improbable-spatialos-simulated-cities http://www.wired.co.uk/article/improbable-spatialos-simulate...
- madaxe_again 9y agoOne of the cofounders is already a billionaire - money attracts money, not product or talent.
- adgasf 9y agoI have to admit I'm also quite confused. How does the hand-over of entities between shards work? Surely the shards must reach a consensus about who own each entity... but wouldn't this be too slow for a game loop?
- meheleventyone 9y agoLast time I looked there was a set of coordinating processes that deal with this problem of not just which entity is where but spinning up new instances to run the simulation. It occurs asynchronously to the game state being updated.