Jump to content

A "small" test.

Space Crawler

Recommended Posts

Come on guys. Does anyone have time and patience there?

Next, for study purposes I would like to develop a "small" server for WoW. Preferably the oldest and smallest: 1.12 (vanilla).

The idea is to make a server so that I can at least login in to the game. Only that. C++ and SQL.

I believe that from this point I can do the rest myself, carry 1 (one) map and walk.

I want to contribute to the MaNGOS, yes, but I do not know where to start. I've read something about emulation, but only theory and more theory. I learn more from practice, and use theory to learn more; not to start.
I know I should capture server packages and guess what they do. But this is very generic, very substantial, I have never worked with emulation before.

If I manage to do this "small" thing, I will probably have a broader view of what and how to do.

What's up? Does anyone else? It can be any way: some information here in the forum itself, something for me to read, examples in the code itself of the Mangos, videos, etc.

Maybe with this material, it is possible to help some people who are also having the same difficulty as me.


Link to comment
Share on other sites

5 hours ago, Space Crawler said:

an do the rest myself, carry 1 (one) map and walk.

I want to contribute to the MaNGOS, yes, but I do not know wh


Welcome to the MaNGOS community.

There's lots to do around if you have C++ or SQL experience. If you want to learn, I'm working on something to add on top of the current software.
It's a GM client that will go along a few other tools like account administration and various development tools.

The GM client is already up and running but we need to implement various systems on the server side. I'm @Natrist#2538 on Discord.
I'm sure you can find more ideas if you have a chat with the rest of the users there.


Link to comment
Share on other sites

18 hours ago, Natrist said:


Bem vindo à comunidade MaNGOS .

Há muito o que fazer se você tiver experiência em C ++ ou SQL. Se você quer aprender, estou trabalhando em algo para adicionar em cima do software atual.
É um cliente da GM que inclui algumas outras ferramentas, como administração de contas e várias ferramentas de desenvolvimento.

 O cliente GM já está instalado e funcionando, mas precisamos implementar vários sistemas no lado do servidor. Eu sou @ Natrist # 2538 em Discord.
Tenho certeza de que você pode encontrar mais ideias se tiver uma conversa com o restante dos usuários.



Dude, I even have experience. But I never moved with server emulation. If you can pass me something on the principles of emulating a server.

How do I know that "wow.exe" searches the "realmlist" file for the server host.
How can I open a socket to listen to the packets the client sends.
This kind of thing.

Edited by Space Crawler
Link to comment
Share on other sites

How about this: if you tell me what I can remove (files, libraries) from MaNGOS, so that it is enough to login in the game and walk on 1 (one) map. Only that.

Ex .: All that the MaNGOS (partially disabled) should do is:
1) Login in the game
2) Create an Orc.
3) And stay walking in Durotar.
Only that. No skills, no NPCs, ..., nothing.
Just a char, walking on 1 (one) map.
Everything else is disabled (NPCs, other maps, items, quests, structures, etc.).

That way, I can slowly learn how the server works. For there will be few files to read, and to study. There will also be little data circulating.

It is possible? If so, can anyone tell me what files I should remove, to be just the essentials to do what I mentioned?

Link to comment
Share on other sites

  • 2 months later...

I am contemplating doing something similar. I want to try and reverse engineer the current MaNGOS project to get a better understanding though I want to try and program it in Go. The problem is I have no idea where to start (and I think that is Space Crawler's dilemma too). Ideally speaking, I would love to make an Auth service that can stand on its own to start, and slowly add functionality. Is there any documentation on the request/response data contracts between the client and server? PS: I have not written anything in C++ since about 2002 so reading the code is an options but I am still struggling.

Link to comment
Share on other sites

Hello Will,

Starting is really the most difficult. You must understand all aspects of the game and start by one, knowing that, at some points, everything is embedded.

I've started with data (DBC), bug fixing (spells, aura, loot) and auth server all written in Java. Auth server is perfectly working for 1.12 and I was facing the same issue as you do. Reversing the code was kind of difficult. I did not find really the contract for the logon but I was able to deduct it from the code.

If Java is easier for you to read, you can have a look here: https://github.com/Warkdev/JaNGOSAuth/blob/master/src/test/java/eu/jangos/auth/network/handler/AuthServerHandlerTest.java#L105

Or here: https://github.com/Warkdev/JaNGOSAuth/blob/master/src/main/java/eu/jangos/auth/network/handler/AuthServerHandler.java#L90

And the different steps are logged in the enum here: https://github.com/Warkdev/JaNGOSAuth/blob/master/src/main/java/eu/jangos/auth/authenum/AuthStep.java

Link to comment
Share on other sites

Thank you very much for your time and getting back to me. I will try and figure out the best way to learn this. The idea in my head was to try and map out the websockets or communications protocols and then look for the mappings for client requests and server responses but I understand the client/server may not be set up in this approach. Also, I was hoping to learn Go in the process as the demand for Go developers seems to be growing rapidly and my current employer has no desire to use Go at this time.

I may burn out and lose interest but the idea that sparked this motivation was to build service layers to help create emulated "battle groups" like WoW introduced to lower battle ground queue times. I was hoping if I could abstract the communication for the BG manager and the BGs themselves, MaNGOS servers could authenticate and communicate with this battle group service (eg: hmac, saml, oauth) and create server to server sockets for cross realm battle grounds. This could be used for instances and raids as well to allow certified and authenticated servers to allow cross realm raids. Although this was not part of Classic WoW it would allow servers to allocate different resources for raids/dungeons/bgs and run multiple smaller servers. I figured the easiest way to even test if this is plausible was the authentication module.

Link to comment
Share on other sites


A lot of interesting ideas. However, there are many things to be figured out properly before you even reach there. The client is developed and is expecting a running server in order to not hang. So before modifying the core structure, you will need some running network data. Don't give up but be aware that the road is long. 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use