How do you create server code from nothing?
Moderator: Community Managers
How do you create server code from nothing?
I have often wondered how anyone could take a game client and from it make the server code that it needs. When I think about it, it blows my mind. Kind of like working several mixed up puzzles with no box and blank pieces, in the dark!
I am curious, how is it done really? Do you simply capture packets coming from the client and compare them with specific actions being done in the client? I assume that the client receives many packets from the server as well, and since there is no server, how in the world can you work out what the client is expecting to receive? And most of all, where would you even start?
Like, for instance, lets say I want to find out how NPC positions are received. I know I can move about and see my own movement packets coming out of the client, but how could I find out what magic packet tells the client that NPC A is has moved to X.Y without a live server to go by? Do you guys actually reverse engineer the client?
Just curious =)
I am curious, how is it done really? Do you simply capture packets coming from the client and compare them with specific actions being done in the client? I assume that the client receives many packets from the server as well, and since there is no server, how in the world can you work out what the client is expecting to receive? And most of all, where would you even start?
Like, for instance, lets say I want to find out how NPC positions are received. I know I can move about and see my own movement packets coming out of the client, but how could I find out what magic packet tells the client that NPC A is has moved to X.Y without a live server to go by? Do you guys actually reverse engineer the client?
Just curious =)
Re: How do you create server code from nothing?
Hello Arkaan,
Capturing packets is indeed a key element used by the team in creating the new server code. Luckily, they got a good head start on logging the packets before the sunset, so there are tons of logs of communication between the official server and the client.
The team then wrote some tools to do lots of analysis of the packets to figure out what everything means to the client, and start piecing things together from there.
This works for lots of pieces, but there are some things that they see coming from the client that the server doesn't yet understand. So, they have to determine what action in the client causes that packet to be sent, then they create the server side code to handle that action.
This takes lots of patience and great attention to detail, but we have an amazing group of devs here, and they are making wonderful progress
Capturing packets is indeed a key element used by the team in creating the new server code. Luckily, they got a good head start on logging the packets before the sunset, so there are tons of logs of communication between the official server and the client.
The team then wrote some tools to do lots of analysis of the packets to figure out what everything means to the client, and start piecing things together from there.
This works for lots of pieces, but there are some things that they see coming from the client that the server doesn't yet understand. So, they have to determine what action in the client causes that packet to be sent, then they create the server side code to handle that action.
This takes lots of patience and great attention to detail, but we have an amazing group of devs here, and they are making wonderful progress
Re: How do you create server code from nothing?
Lots of trial and error We got a basic UDP server setup that could at least allow the client to connect to it and send the first packet. So, as mentioned by Dinenon, we listen for raw packets and dump them so we can see what's going on. Luckily for us, SOE had(s) a standard protocol that they use for their games that we were able to follow. So if a packet started with a specific number (opcode), we knew what was coming next. From that, we knew what we were supposed to send back based on packet captures of live. It's basically a huge observation and comparison game. We just tried to mimic what live was sending and receiving.
Re: How do you create server code from nothing?
Thank you. It is really impressive what you guys are doing =)
Re: How do you create server code from nothing?
It's easy...
Haiku is easy -
But sometimes it makes no sense.
Refridgerator.
But sometimes it makes no sense.
Refridgerator.