They use this login protocol for all their games, lineage, aion, (probably those as well: guild wars, blade and soul, etc..)LasTshaMAN wrote:It took me quite some time to find how things described above are accomplished in the code. But I still don't understand, why the login process was made in such a complex way(may be complex is not the right word, consider repetitive instead).Login Server is listening for client connections on 2106 port and on 9014 for Game Server connections.
Login Server handles client authentication, username and password validation, as well as game server access, when user is validated and able to proceed to the game server login generates two keys and gives them to client which gives to game server (and it verifies them with login server) and there Login Server ends his job.
They are made in separate packages for complete isolation in fact when you build project it only includes the required packages to each jar (You can see build.gradle)
First, does anybody here know why NCZ0ft made client to authenticate through one socket and proceed with game activities connecting through another socket ? I don't see any good reason for this. Why couldn't they just connect client through one socket with server, making login activity just as a part of the client-server interaction process ?
Second, I don't see any good reason for making repetitive actions. Namely, client performs authentication at login server and then client basically performs authentication again at game server(this game server authentication is the check conducted by game server via communicating with login server). Does something prevent me from making this client, login server, game server triplet just client, server with login part of the communication process ?
As u start get more deeply within lineage 2 development u'll have more such questions why things are made that way there are multiple cases where things are done really badly
