Server Questions

Results 1 to 6 of 6
  1. #1
    Novice damgm is offline
    MemberRank
    Jan 2022 Join Date
    4Posts

    Server Questions

    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!


  2. #2
    C++ Developer zipper20032 is offline
    MemberRank
    Oct 2006 Join Date
    0x198837ADLocation
    665Posts

    Re: Server Questions

    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.

  3. #3
    Novice damgm is offline
    MemberRank
    Jan 2022 Join Date
    4Posts

    Re: Server Questions

    Quote Originally Posted by zipper20032 View Post
    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.

  4. #4
    C++ Developer zipper20032 is offline
    MemberRank
    Oct 2006 Join Date
    0x198837ADLocation
    665Posts

    Re: Server Questions

    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 by zipper20032; 24-01-22 at 04:37 PM.

  5. #5
    Developer nevS is offline
    MemberRank
    Aug 2005 Join Date
    GermanyLocation
    531Posts

    Re: Server Questions

    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.

  6. #6
    Novice damgm is offline
    MemberRank
    Jan 2022 Join Date
    4Posts

    Re: Server Questions

    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!



Advertisement