TLDR: Can I add a unity based from-end to XO sample for game developers coming?
Long version
As I see multiple people are coming once in a while to use Orleans in games. Do you think that it's a good idea to add a unity based front-end to one of the samples like XO which can talk to a unity game using technologies more suitable for real-time gaming.
Currently I want to add a front-end for Orleans at the server which uses websocket and unity's own binary format to communicate with a unity client, at the client I'll use WebsocketSharp in Unity and on the server, MS's own awesome Websocket library on the server. Unity is about to release a beta version of a server side networking library and later on I'll replace websockets with that. That library has a RUDP (Reliable UDP) protocol and can send messages with a verity of quality of service properties. It can exchange messages which are Reliable/Unreliable/Ordered/Unordered and also small messages/big fragmented messages.
This is a technology fairly suitable for doing realtime games and even MMOs.
As a possibility DotNetty is an option on the server with normal sockets on client too but then for different unity platforms like UWP and WebGL we have to create different clients and handle Websockets on the server too, also we have to implement RUDP ourselves if we choose to go that root and also provide a complete example.
I'm willing to create a fully new sample as well but that will have maintenance costs so people might not like it.
I think it would be totally awesome to have an elaborate and concrete sample like that.
Although it's hard for me to see how much effort this would entail and if there are any potential pitfalls, without a basic architectural diagram and a more detailed description, considering all the pieces you listed.
"that will have maintenance costs"
Even if the sample game is simple (tic-tac-toe-ish), I suspect that what you're describing has a number of dependencies and will not likely be very small, though I could well be mistaken. I think it would be great to have such an example, but keeping it up to date, both with Orleans and the other technologies it depends on could be challenging.
I suggest developing the initial prototype in Orleans Contrib, then raise the question with the community about pulling it into main. It will be much easier to assess sample value vs. maintenance cost of a prototype. Even if it turns out to be too costly to maintain, having it in contrib will still provide value.
Thanks for the feedback guys
@jason-bragg Ok, I'll develop it in the contributions first , There will be one dependency only in Unity and in Orleans only a front-end for tic-tac-toe is made but still is a thing to maintain
@sergeybykov Well I described all of which can be done so maybe it looked like more complex. I'll add it to the contributions and later we can talk about it, btw if I want to make an architecture diagram, what is the standard you guys use at MS? UML architecture diagrams and data flow diagrams, and class diagrams at the end maybe?
if I want to make an architecture diagram, what is the standard you guys use at MS? UML architecture diagrams and data flow diagrams, and class diagrams at the end maybe?
We mostly do simply block diagrams. Just to explain a structure and interactions. UML is pretty rare. But that's us.
Good then actually :) As a game developer I rarely used UML and those stuff outside of university and I don't have Visual Studio ultimate no matter how much I like to have it :)
I'll create a diagram for you guys to see but essentially it will be just a websocket based front-end for XO instead of the current WebAPI based one and the client will be unity instead of browser javascript. As the simplest option.
@sergeybykov @ashkan-saeedi-mazdeh any progress on this?