I don't know if you know how to program(if you don't try to learn a programming language), don't try to start with a emulator as your first project, try something simple like a Chat application:
- Make a simple client/server application, then expand it by adding more clients.
- look into communication modes(blocking or non-blocking, suggest looking into Multithreaded and IO Strategies, I would suggest going with IO strategy)
- Create groups of users make them do communication between them(similar how users communicate in the game).
- Try to implement Collective Communication in your application(this is a MPI stuff, but has some good concepts on communications like barrier for synchronizing,
You must be registered to see links
,
You must be registered to see links
,
You must be registered to see links
,
You must be registered to see links
) (
You must be registered to see links
)
- Try to read graphs from data structures to understand the concept(
You must be registered to see links
)
While doing this you will not also learn how to build a server, you will also making the core for the emulator(functionality is similar, start from a simple chat application, then expand to your emulator)
In making a Emulator the first thing you need to know is how you change the server IP and PORT from the client to connect to your server(some use a External file either encrypted or plain text, others have hard-coded, some receive it from the launcher that it gets the IP and PORT from the server, etc)
The second step you change IP and PORT back to connect to their server and you create/use a sniffer to sniff the Packets from the Server and Client Packets for you to analyze later and use for your server(Either you use a tool if you know the encryption, or if you don't know try to find the Encryption or make a tool that hooks to the client and gets the packet before encryption)
After you got the packets, you analyze them and see what they do, and implement to your server, while testing them on the client connected to your server(some data on some clients are found on the disk files).
The hardest part is sometimes the client protections that prevents you to analyze(like packers, anti-debuggers, files obfuscated/encrypted, packet encryption, etc).