novus

2015

Reverse-engineered Server Emulator for an Online Role-playing Game

Back-end
Software Developer
#reverseengineering #serveremulator #videogames #gamedevelopment

A server emulator created to preserve an online role-playing game in case the official game servers were discontinued. By reverse-engineering the publicly accessible game client software, novus reconstructs the server software to allow players to continue enjoying the game. The emulator replicates the client-server communication and gameplay experience, enabling players to log in and engage with the original gameplay experience.

I began development of novus as a passion project in 2015, aiming to ensure the game could live on beyond the potential shutdown of its official servers. The project was restarted from scratch in 2018, with a focus on maintainability and scalability. I developed the entire emulator, employing various reverse-engineering techniques to analyze the game client and replicate its interaction with the server.

The emulator’s key technical aspects include:

  • Reverse Engineering. Techniques such as packet sniffing (Wireshark), binary debugging (Ollydbg, x64dbg), and pseudo-code analysis (IDA) were used to study the game client’s communication protocols.
  • Reconstruction of Server Behavior. Based on insights from reverse engineering, the emulator was developed to emulate the official server’s behavior.
  • Architecture. The project consists of three main services:
    • Login Service. Handles player authentication.
    • World Service. Manages each game world, including character creation, world-wide messaging, and world-level mechanics.
    • Zone Service. Handles a collection of maps within the game world, including movement, combat, and local interactions.
    • Technology Stack. The emulator was originally written in C++ but was rewritten in 2018 using C# for ease of development. Interoperability with C++/CLI allows for low-level memory manipulation, and MySQL is used as the database.

C#, C++/CLI, MySQL

© 2024 Vassiliou. All rights reserved.
Designed with ❤️ by me