M
M
MrDickson2016-05-07 19:45:16
Java
MrDickson, 2016-05-07 19:45:16

How to develop wow/lineage game server and so on?

Hello comrades!
Actually the question is: how to create a wow / lineage game server?
The fact is that everywhere they kick to study something, but they don’t know what exactly :)
There is a great desire, but the direction is unknown.
Can you write down approximately what areas you need to study in order to develop a server from scratch? I'm talking specifically about the reverse engineering of official servers.
I know that you need to understand ACM in order to find all sorts of opcodes for packets and decrypts, be able to parse packet data, understand the architecture of official servers ...? and then what?
I tried to understand, using the example of one MMORPG, how things are with this - it’s problematic, although I understand what it connects to and why this library is needed, but the knowledge is still not enough to write my own from scratch.
At one time I was engaged in the development of the Aion emulator, it turned out pretty well to rewrite / add / write certain moments in the behavior of the game server, but the batch level, etc. by zeros

Answer the question

In order to leave comments, you need to log in

3 answer(s)
A
asd111, 2016-05-07
@MrDickson

1. You need to be able to catch packets from your computer to the server and back. There are special programs for this - sniffers, or network packet analyzers, in other words, wireshark, tcpdump, etc.
And with the help of a debugger (IDA pro) you can find out what code is executed when you click on the "login" button, for example.
2. You need to be able to decrypt the packet if it is encrypted.
3. You need to know which packet is sent when, i.e. what is sent when logging in, what is sent during the game, etc.
4. Based on the protocol obtained from the three previous steps, you write your own server that sends the necessary packets.
I think for every known game there are already at least half ready server protocols, etc. and there are servers that are at least half ready and their developers - communicate more with them, you will learn a lot of new things and you can help them.
For example, here are the sources of one of the WOW servers https://github.com/mangoszero/server
Here is a little about the WOW protocol dvlabs.tippingpoint.com/blog/2007/06/28/decoding-t...
For reverse engineering, you need to be able to use IDA Pro etc. debuggers-disassemblers
Here are a couple of articles on how to approximately use such tools
https://habrahabr.ru/users/drmefisto/topics/
The trick is that you can search in the client source what happens when you click on the "login" button, etc.
DrMefisto has articles about how to make keygens or quickly quack - the principle is the same. Here in this article is a fairly suitable example https://habrahabr.ru/post/255935/
First, try to repeat what DrMefisto shows - this will give you a better understanding of what and how, then take some kind of casual game, such as some kind of farm, which send packets to your servers and try to get all packets from client to server and vice versa using wireshark.
Then try to make your own server to which you can connect the client.
Perhaps there are ways to use the debugger to listen to what commands the client executes (and therefore find out what packets it sends) when you click on one or another button during the game, but I'm not strong here.

M
Maxim Moseychuk, 2016-05-07
@fshp

Start with a calculator. Otherwise, you yourself say that you have 0 knowledge, but you are aiming at a project that not every developer with extensive experience can handle.
Then start by building a UML diagram of the server's state machine. What packets it can accept in a certain state, what side effects occur, what states it can go into, etc.
For example, when the client is at the character selection stage, the server cannot accept a packet with data on movement, attacks, purchases, etc. This is what needs to be shown in the diagram. Then, when developing logic, it will be much easier for you to navigate.

A
AxisPod, 2016-05-10
@AxisPod

A similar question says one thing - it's too early for you to think about it.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question