Over complicating something does not make a good solution, there is no I need to perform all this analysis.
The desire to make the server do and be the final end for everything is not good practice.
Read about collision detection in online gaming, there is a reason the majority of the market has scenarios where the client wins because it doesn't matter what the server sees if it is not accurately portrayed to the clients (I shot him why did it miss?, I dodged that why did I get hit)
Here is how pub / sub works. You subscribe to a queue, when an event occurs that affects members of that queue you fire a message to members of the queue.
Real world example:
I want to run Ifrit Extreme. I mark notify me of new groups for Ifrit EX.
On the backend I am put in the queue Ifrit Ex
Someone Creates a party for Ifrit Ex
This triggers an event to notify users in the queue Ifrit EX
What does this take to process?
Sending a message
What great analysis needs to be done to accomplish this?
None
How do you deal with 5000 people wanting to run the same content?
You create sub queues based on data centers, languages, or abitrary max limits for queues (If queue A has 200 members create queue A.2 and start putting new users in here using LRU and FIFO)
How much data is required to process this data?
This could be accomplish this with a small JSON message {queue: 'ifrit ex', count: 20} which could trigger the message client side "There are {count} groups in Party finder for {queue}" or "A new group for {queue} has been created in the party finder". You could even put the rate limiting on the client side as to not repeat messages to frequently by adding a timestamp to the messages.
But what about the servers?
Look websites do this all day everyday, if the servers powering this game cant do what a basic Ajax website can handle something is very wrong here. The queues should be per data center and should be a system that sits besides current infrastructure in an SOA architecture, it should also be resilient to the point where if this should fall down and crash it does not impact normal game play as it is again not a part of the main servers running instances, zones, etc.
None of this is not hard to accomplish.

Reply With Quote

