Open haneefmubarak opened 10 years ago
That looks like the XBL server model... But good idea, masters can be my servers.
It's ok, but for connecting with the emulator? I think we need some modifications to the emulator
The modifications will be made later.
Aixen will have a library which will allow various things, including the emulator to easily connect to Aixen.
On Thursday, March 13, 2014, Jano Varga notifications@github.com wrote:
The modifications will be made later.
Reply to this email directly or view it on GitHubhttps://github.com/haneefmubarak/Aixen/issues/5#issuecomment-37507431 .
NOTICE: This e-mail (and any attachments) may contain PRIVILEGED OR CONFIDENTIAL information and is intended only for the use of the specific individual(s) to whom it is addressed. It may contain information that is privileged and confidential under state and federal law. This information may be used or disclosed only in accordance with law, and you may be subject to penalties under law for improper use or further disclosure of the information in this e-mail and its attachments. If you have received this e-mail in error, please immediately notify the person named above by reply e-mail, and then delete the original e-mail. Thank you.
The main difference is that the xbl model just has server clusters in various places.
On Wednesday, March 12, 2014, Jano Varga notifications@github.com wrote:
That looks like the XBL server model... But good idea, masters can be my servers.
Reply to this email directly or view it on GitHubhttps://github.com/haneefmubarak/Aixen/issues/5#issuecomment-37504755 .
NOTICE: This e-mail (and any attachments) may contain PRIVILEGED OR CONFIDENTIAL information and is intended only for the use of the specific individual(s) to whom it is addressed. It may contain information that is privileged and confidential under state and federal law. This information may be used or disclosed only in accordance with law, and you may be subject to penalties under law for improper use or further disclosure of the information in this e-mail and its attachments. If you have received this e-mail in error, please immediately notify the person named above by reply e-mail, and then delete the original e-mail. Thank you.
So why mot to be simplystic like them? (I know, we dont have so much powerful servers..)
As im looking... Oh my english... :dancer: But i did much work and code now compiles, but i need your help, contact me on email. that was for @haneefmubarak .
Here's the general flow of how, say two players (A
and B
), would be connected together to play a game (from each of the points of view):
Players I & II:
0000: CONNECT to hardcoded master server (HCS)
0001: WAIT for response
0002: AUTH to HCS
0003: RECV AUTHCODE (authorization code) from server
0004: RECV list of all masters
0005: PING all masters
0006: RECONNECT to new master (lowest ping)
0007: REAUTH using AUTHCODE
0008: RECV SECODE (session authorization code)
0009: RECV list of all slaves
0010: PING all slaves
0011: RECONNECT to slave
0012: SUBAUTH using SECODE
-------------------------------------------------------
At this point, the user does various actions,
like checking their messages, and this happens
using the slave server (which will talk to the
master if necessary). Finally the user joins
the matchmaking lobby for their game.
-------------------------------------------------------
0100: SEND matchmaking request for game and lobby
0101: WAIT for match
0102: RECV list of players for match
0103: JOIN connect to all other players
-------------------------------------------------------
Now the user plays their game, most of the
data is sent P2P, with a only few things
being done using the slave server, such as
synchronization and player messaging.
Random (first) master:
0000: ACCEPT connection from user
0001: SEND request for auth
0002: CHECK that auth is correct
0003: SEND authcode
0004: SEND list of all masters
0005: DISCONNECT from client
Pinged (selected) master:
0005: RETURN PING from client
0006: ACCEPT RECONNECT from client
0007: CHECK that REAUTH is correct
0008: SEND SECODE
0009: SEND list of slaves
0010: DISCONNECT
Slave:
0010: RETURN ping from client
0011: ACCEPT connection from client
0012: CHECK for correct SECODE
-------------------------------------------------------
And then do matchmaking:
-------------------------------------------------------
0100: RECV matchmaking request
0101: MATCH find players to match up
0102: SEND list of players
0103: COOP conduct the syncs and messages between players
I was wondering... @haneefmubarak Doesn't this implies that the user can only play with the ones on the same slave? It might be a good idea, so that the ping is always the lowest possible, but the slave must contact other slaves to obtain their playerlist, and order these queries to others servers based on the latency this user has in regard to them. So, the client should send the ping results, shouldn't it? The slave could also regularly ping other slaves (actually this is certainly required to know their status), but it can be less precise. An other alternative is to ddo a selection of players, propose it to the player, and let it reply with the ping he has relatively to each one of these. Ecept, of course, if we let the user choose its slave : in that case, he knows the users pool the matchmaking will happen in.
The system might even get more complicated if we add some features (ie, matchmaking prefers friends, or the same language, level, or what else...) But you may have already taken care of this? what do you think?
Well, the slave would actually talk to the master for matchmaking, so it isn't restricted to players on the slave only. Messaging and sync are distributed across the slaves of the players.
I like the idea of latency sorted matching, but instead of having the client and the ping, slaves would probably point the player instead.
I think that we don't need the master servers to be connected and that we can make the protocols binary anyways.
additional research questions:
Here's a rough idea of what I have so far:
Sorry about the graph being messy and all. Anyways, essentially, the diagram shows:
Some stuff that the diagram doesn't show particularly well: