Replies: 2 comments
-
On the opposite, I would say that this seems to be exactly the kind of scenario Orleans was built for, as it is even used in the backend of the cloud services of the Halo game. However, you will need to do the usual optimizations of multiplayer games because such scenarios are always both computationally intensive and network intensive. This is the reason why even large game studios, limit rooms to only a few dozen players per room (32 or so). The cost of sending updates grows exponentially with the number of players so you'll hit limits no matter what technology you use. Because every application is unique, you will probably need to test how far you can push Orleans before optimizing. You will be able to optimize both by tuning Orleans (for example choosing the right streaming backend for sending updates to clients) and by optimizing your game engine (things like client prediction etc...). Between 10 and 30 updates per seconds should be fine, but this will depend on the hardware you use. The fact that Orleans is built over TCP shouldn't be an issue since there should be a server between clients and Orleans and this server can use UDP to talk with the clients (if you need to do so) while the TCP connection between silos should be quite fast on the LAN network of your data center. This is probably an area where the core team can provide feedback from the field thanks to their experience with Halo. Edit: there is actually this video explaining their approach in detail with Halo, you should find it interesting. |
Beta Was this translation helpful? Give feedback.
-
This sounds like a fine use case for Orleans to me. I would consider mapping many entities to one area grain, potentially allowing them to migrate between areas. It's probably worth taking a look at how distributed game engines do this kind of thing. EDIT: I think this would be suitable for a discussion topic, so I'll convert it to one. |
Beta Was this translation helpful? Give feedback.
-
I’m wondering if you could implement something like Photon Engine's room functionality in Orleans; so each player is a grain, movement updates from those grains are sent to a room grain that acts as a simple room server with a simple understanding of a map, and replicates the movements to the other player grains connected to the room grain. My understanding is that this would probably be too much for a single grain with more than a handful of players updating once per frame at 30fps.
Is my understanding correct that it wouldn't be a good use case for Orleans?
Beta Was this translation helpful? Give feedback.
All reactions