Can anyone explain it? In layman's terms, of course. Just briefly. I'd like to understand the basics.
Here's an example: (It's most likely wrong but that's why I made this thread)
1.) What exactly is the purpose of separated server executables? Why can't it be one single command window?
2.) What does NDLogin do exactly? Aside from checking database stuff, executing stored procedures, etc...
When the user tries to log in, all the information is passed onto NDLogin, which processes this information, which is then forwarded to DS_SERVER and lastly to NDServer? I don't get it.
3.) What is DS_SERVER for? (Lol)
4.) How are DS_SERVER and NDServer communicating with each other? I mean what pieces of information are exchanged between the two?
5.) What is the file "AuthAddr" for? Why is it necessary? This file contains a simple URL address that points to a .py file (Python script, created by 'ZeroBurner'). This python script is supposed to somehow return a login success or login fail message to the NDServer, which the NDServer somehow understands... How does this work?
I can understand LOG_SRV dot exe. It's responsible for creating logs. Pretty obvious. You can't start most server executables without running LOG_SRV first because, duh, it wouldn't be able to create logs. I get that.
I can also understand MS dot exe. It's basically the in-game messenger.
I also kind of understand NDServer dot exe. It's mainly responsible for running maps but it gets complicated because it has to communicate with DS_SERVER.
What I know about the login process so far: (it might be wrong, too)
On user login
Check the following:
-- does account name exist / match
-- is password correct / match
At these phases, account credentials are sent to NDLogin and then to DS_SERVER? How does this work exactly?
-- is account restricted / banned
-- does client/server version match
At this phase, this is just a simple SQL stored procedure stuff, right? So it's checked by DS_SERVER only? Or is NDServer involved as well?
-- does company code match
At this phase, NDLogin checks the login packets coming from the client, for the company code (called "LMBC", also known as "Login Mode By Company"). If it matches, this phase passes. I don't understand this, though, because I successfully compiled an NDLogin exe and I altered the LMBC code in such a manner that it matches the client, yet it refused to log me in. I got a "size mismatch" error. This error was only visible on the NDLogin server console window. Does anyone know why this happens?
-- is 1 map running at least
At this phase, it sends a request to NDServer to see if at least one map is running? This phase isn't that important, anyway.
-- has virtual keyboard been used
This phase doesn't matter too much becase I think it's client sided. Please correct me if I'm wrong.
-- does packet length match
At this phase, some packet length is checked? What packet or packets? Is it an NDServer/DS_SERVER/NDLogin thing?
> If success, enter character selection screen
On map enter
> Check the following:
-- is current map running
This phase is obvious and needs no discussion.
-- does packet length match
At this phase, some other packet length is checked... I remember receiving an error called "DS>GS Packet Size <recv / sent> or something. What is this?
Thank you for reading.







