Forum Feedback A Global Housekeeping Server for PlayerIO

Problem with the website? Confused about something? Or maybe you just have something you'd like to suggest. This is the place to do it.

A Global Housekeeping Server for PlayerIO

Postby ASH1138 » January 27th, 2013, 5:25 am

Hi,

Currently, the serverside area of games is limited to rooms, which have big difficulty communicating with one another. Thus, the development of a global system, i.e a shared game state across all servers, is extremely difficult. However, it is not impossible, because BigDB itself is global, but it requires a lot of cumbersome workarounds. :|

So may I propose playerIO give each game a global housekeeping room, which will be online at all times, to manage the global housekeeping duties like updating high scores, managing news/updates, managing reports of abuse/cheating, updating a persistent game world for MMORPGs/ managing signups/ logins/accounts , enabling global player chats like private messages , friendlists etc etc.

The housekeeping room need not be too expensive, it need not run the game. Rather, it could run critical housekeeping processes say once every day, as well as run communications between game rooms.

For example, if a player wants to update his bigDB object, the request can be sent to the housekeeping server for validation, instead of it being based on game rooms, because bigDB is a global database, it does not make sense to validate it on a local basis, which results in problems such as optimistic concurrency control. If multiple update requests from multiple game rooms are made, they can be queued in order of timestamp of sending, and then processed accordingly. :idea:
ASH1138
 
Posts: 285
Joined: November 17th, 2012, 2:29 pm

Re: A Global Housekeeping Server for PlayerIO

Postby dreamora » January 28th, 2013, 7:52 am

Already that it is global will make this room absurdly expensive.

I'm sure they could easily enable it at least at the time as long as everything is in the same physical location (when Player.IO would expand to other continents though it would no longer work).
Question is what purpose it would have as this global householding room would generate such absurd amounts of traffic compared to the real rooms that you pretty fast cut it again.

Thats where using BigDB is much more convenient because you can still do such global things there without any kind of high complexity.

For example sending private message does not require anything but a 'player session room' named Session..<ConnectionId> for example. On this session room you can provide the functions required to send private messages to this player or notify him of other things. Then other players can connect to that room, notify him and then leave again, while the room handles the notification of the actual client.

Building upon this you could also make squad chats, guild chats (as long as less than 45 players due to the 45player limit per room), if you need more you will need to negotiate a private server with them and other more or less complex things.

That being said: I would myself not try to use it for the lobby handling in an MMO like the launcher of League of Legends / World of Tanks. The requirements you have towards that backend are so distinct from the real game experience that already the merging itself is a pain.
For such a purpose I would instead use a lightweight, highly scalable web backend + websockets / tcp. If you do that with ASP.NET you can even have it connect to the Player.IO BigDB for read - write operations to my understanding.
dreamora
 
Posts: 225
Joined: March 2nd, 2012, 9:58 am

Re: A Global Housekeeping Server for PlayerIO

Postby ASH1138 » January 28th, 2013, 9:30 am

dreamora wrote:Already that it is global will make this room absurdly expensive.

I'm sure they could easily enable it at least at the time as long as everything is in the same physical location (when Player.IO would expand to other continents though it would no longer work).
Question is what purpose it would have as this global householding room would generate such absurd amounts of traffic compared to the real rooms that you pretty fast cut it again.

Thats where using BigDB is much more convenient because you can still do such global things there without any kind of high complexity.

For example sending private message does not require anything but a 'player session room' named Session..<ConnectionId> for example. On this session room you can provide the functions required to send private messages to this player or notify him of other things. Then other players can connect to that room, notify him and then leave again, while the room handles the notification of the actual client.

Building upon this you could also make squad chats, guild chats (as long as less than 45 players due to the 45player limit per room), if you need more you will need to negotiate a private server with them and other more or less complex things.

That being said: I would myself not try to use it for the lobby handling in an MMO like the launcher of League of Legends / World of Tanks. The requirements you have towards that backend are so distinct from the real game experience that already the merging itself is a pain.
For such a purpose I would instead use a lightweight, highly scalable web backend + websockets / tcp. If you do that with ASP.NET you can even have it connect to the Player.IO BigDB for read - write operations to my understanding.


Why would it be absurdly expensive? Its nothing more than the cron client you described, except that it belongs to playerIO. The individual games can be handled by the game rooms themselves. The only thing the global room would do is to do housekeeping stuff like manage the bigDB objects, manage the accounts, manage stuff , manage the list of rooms, that needs to manage once every hr/day.

Otherwise, it would be practically impossible do to stuff like delete accounts, update highscores etc etc, without resorting to a workaround. And why should people resort to improvisation if a direct solution can be created?
ASH1138
 
Posts: 285
Joined: November 17th, 2012, 2:29 pm

Re: A Global Housekeeping Server for PlayerIO

Postby dreamora » January 28th, 2013, 1:07 pm

Because all clients are connected to this room and a single broadcast would forward it to every single user.
Or you could come up with the idea to ask 'who is online', which could first waste a lot of cpu to request a list of thousands to ten thousands of users and later on return that list to your client just to ensure that he will drop out due to a flooded network connection.
That naturally would some major traffic and would very likely also exceed the maximum ram a room instance is allowed to consume to manage all that players especially as long as Player.IO BigDB lacks selective DatabaseObject field loading.

And thats without considering physical limitations on the hardware connection side as you can't connect hundreds of thousands of users to the same physical server anyway but would need to do it for this room.
dreamora
 
Posts: 225
Joined: March 2nd, 2012, 9:58 am

Re: A Global Housekeeping Server for PlayerIO

Postby ASH1138 » January 28th, 2013, 1:32 pm

dreamora wrote:Because all clients are connected to this room and a single broadcast would forward it to every single user.
Or you could come up with the idea to ask 'who is online', which could first waste a lot of cpu to request a list of thousands to ten thousands of users and later on return that list to your client just to ensure that he will drop out due to a flooded network connection.
That naturally would some major traffic and would very likely also exceed the maximum ram a room instance is allowed to consume to manage all that players especially as long as Player.IO BigDB lacks selective DatabaseObject field loading.

And thats without considering physical limitations on the hardware connection side as you can't connect hundreds of thousands of users to the same physical server anyway but would need to do it for this room.



I think you got it wrong, I didnt say that all clients should be connected to this one room. Rather , the room will be run like a housekeeper in the back end. To update the stuff once every fixed period.

A cron client, except that it is not a client and you won't have to pay for your own server to do the cronning.
ASH1138
 
Posts: 285
Joined: November 17th, 2012, 2:29 pm


Return to Feedback



cron