Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

Server Questions

Initiate Mage
Joined
Jan 24, 2022
Messages
4
Reaction score
2
Hi guys, I'm new to developing MU servers.

I would like to know if there is the original source code of the server or if the servers are made by repacks/emulators.

If so, could you point me to a 97d+99i emulator so that I can study the source code?

Thank you very much!
 
Joined
Oct 8, 2006
Messages
740
Reaction score
289
I think you should probably use the search tool for source codes because there are many. Most of them are most likely 10-15 years old source codes.
I really have no idea what source code you should use, but for learning purposes, I guess any source code is good and you can try seeing the difference between those source codes.

Some information about the current 97d server state is that most of the 97D + 99i servers today are just made from repacks of very old files with many bugs. (One reason why those servers are.. let's say.. decaying) Because there's no way maintaining and upgrading an old repack with no source code for Data Server and Game Server.
Another reason no one is doing any 97D development is because they are already using 97D repacks with no source codes but with custom things, GUIs, etc, so reimplementing those custom things would take time and probably everyone wants already coded source codes with those custom things.

And don't get confused about "Bugless" server repacks. There's no such thing as bugless repacks if they didn't fix those with a source code.

What's gonna interest you, that would be Data Server, Connect Server(this is not mandatory, but if you wanna see the login packet parsing and packet structs, you can have it), Game Server and Main.exe source code.

A bit more details on these server apps:
Data Server - the bridge for data flow and packets information. (inserting, updating, deleting data from an SQL Server)
(GS -> DS -> SQL, SQL -> DS -> GS)

Connect Server - the bridge between Client and GameServer or GameServers (think it more like a Login Server)
When a client is connecting to a server, the first packets are parsed in Connect Server. This will tell the GS if that client can connect or not. (Username, passwords, account data, etc) then it will close the Connect Server connection and make a new connection to Game Server if that account passed the login methods and it's a valid account.

Game Server - the MU server's logic and packet parsing is here (Client is directly communicating with the Game Server)
Everything which you are seeing in-game, mobs, npcs, players is implemented here, therefore is called the game logic.
You can add, reuse, update, upgrade anything in here, as long as you are sending the correct packets to the client and the client should respond or not according to that packet. Every data packet is handled here by a huge switch case.

Main.exe - The client itself and everything which the client does is in here. Every packet from GS is handled here (same huge switch case), stats, attributes, damage, etc, everything is calculated from the data received from the Game Server. Implementing custom things, such as new GUIs, windows, features, everything will come in here and the data would be from the Game Server, with the static strings values, ofc.

If you want to learn Mu core development, just go with any repacks which does have the source code too. I hope it helps.
 
Upvote 0
Initiate Mage
Joined
Jan 24, 2022
Messages
4
Reaction score
2
I think you should probably use the search tool for source codes because there are many. Most of them are most likely 10-15 years old source codes.
I really have no idea what source code you should use, but for learning purposes, I guess any source code is good and you can try seeing the difference between those source codes.

Some information about the current 97d server state is that most of the 97D + 99i servers today are just made from repacks of very old files with many bugs. (One reason why those servers are.. let's say.. decaying) Because there's no way maintaining and upgrading an old repack with no source code for Data Server and Game Server.
Another reason no one is doing any 97D development is because they are already using 97D repacks with no source codes but with custom things, GUIs, etc, so reimplementing those custom things would take time and probably everyone wants already coded source codes with those custom things.

And don't get confused about "Bugless" server repacks. There's no such thing as bugless repacks if they didn't fix those with a source code.

What's gonna interest you, that would be Data Server, Connect Server(this is not mandatory, but if you wanna see the login packet parsing and packet structs, you can have it), Game Server and Main.exe source code.

A bit more details on these server apps:
Data Server - the bridge for data flow and packets information. (inserting, updating, deleting data from an SQL Server)
(GS -> DS -> SQL, SQL -> DS -> GS)

Connect Server - the bridge between Client and GameServer or GameServers (think it more like a Login Server)
When a client is connecting to a server, the first packets are parsed in Connect Server. This will tell the GS if that client can connect or not. (Username, passwords, account data, etc) then it will close the Connect Server connection and make a new connection to Game Server if that account passed the login methods and it's a valid account.

Game Server - the MU server's logic and packet parsing is here (Client is directly communicating with the Game Server)
Everything which you are seeing in-game, mobs, npcs, players is implemented here, therefore is called the game logic.
You can add, reuse, update, upgrade anything in here, as long as you are sending the correct packets to the client and the client should respond or not according to that packet. Every data packet is handled here by a huge switch case.

Main.exe - The client itself and everything which the client does is in here. Every packet from GS is handled here (same huge switch case), stats, attributes, damage, etc, everything is calculated from the data received from the Game Server. Implementing custom things, such as new GUIs, windows, features, everything will come in here and the data would be from the Game Server, with the static strings values, ofc.

If you want to learn Mu core development, just go with any repacks which does have the source code too. I hope it helps.

Wow, that was very explanatory, thank you very much!Now I know where I can start.
 
Upvote 0
Joined
Oct 8, 2006
Messages
740
Reaction score
289
Glad I could help. Good luck.

Edit: Most sources are made or can be opened with Visual Studio 2010, some of them maybe even 2008 or even 2005. Most likely depends on what year those sources were made by the original developers.

So, in order to start: Grab a source code, install the VS 2010, try to compile and see missing libs if any (hopefully not). Everything is in C++. So make sure you have at least the basic knowledge of C++ OOP.
 
Last edited:
Upvote 0
Joined
Aug 6, 2005
Messages
552
Reaction score
298
Yes, there is basically no public c++ source for 0.97d/0.99 available. And those who have it, don't share it.

You may want to check out my OpenMU project. It has support for version 0.75, 0.95d and Season 6E3 (1.04d).
Season 6 still lacks some features, which I want to complete by adding them by working through from lower to higher versions. And soon, it's time to add the missing pieces for 0.97d, mainly BC and CC events :)


I have a little additional info to zippers explaination:
The ConnectServer is the first server your client connects to. It basically just shows the list of servers, and provides you with the IP/Port of the GameServer when you click on one. Additionally, it provides an address for the patches, if you use the original webzen launcher update mechanism.
After clicking on a game server, the client connects to this GS. From a client perspective, the login stuff goes through the GS, but the GS uses the "JoinServer" to handle the login.
 
Upvote 0
Initiate Mage
Joined
Jan 24, 2022
Messages
4
Reaction score
2
I understand, I've worked with other games that had similar mechanisms.

Your project is incredible, I have more affinity with C# than with C++ I will download it and try to run it on my machine, thank you very much for your contribution!
 
Upvote 0
Back
Top