The Making of Side 7 | GUNDAM EVOLUTION Private Server Project

The Making of Side 7 | GUNDAM EVOLUTION Private Server Project
Logo Design by Gendo Ashina (Discord handle @gendo.); 3D render of logo by Dwheim ( www.youtube.com/@dwheim )

Project community server: https://discord.gg/side7

On September 20th, 2022, the live-service first-person hero shooter "GUNDAM EVOLUTION" was launched. A little over a year later, on November 29th, 2023, it abruptly reached its end of life. As a passionate enthusiast of hero shooters and the Gundam franchise, the game's discontinuation deeply saddened me. Despite its management flaws, I genuinely enjoyed playing it. Naively, I pondered, "I've never developed a private server before, but with my backend web development experience, how difficult could it be?" With this aspiration, I embarked on the journey. Although I lacked comprehensive knowledge in server development, my background in backend web development was a starting point. Fortuitously, the creators of "GUNDAM EVOLUTION" provided a timely notice about the game's end of service (EOS), affording me ample opportunity to start capturing game data packets. This early start laid the groundwork for what would eventually evolve into Side 7.

Crafting the Initial Prototype

In the realm of software development, I've always been pragmatic, believing that many people will be dismissive of an "idea guy". To get others attention, there needs to be substance of substance. There needs to be at least a prototype to prove the dedication to the idea's to fruition. With this mindset, I embarked on creating the first prototype, hoping to attract other developers by showcasing tangible progress.

The straightforward approach would have involved intercepting the game's network functions to reroute traffic. However, this method posed two significant challenges: my lack of experience in creating such intercepts and the potential conflict with the game's anti circumvention measures.

To avoid these issues, I opted for a development-only solution using MITM proxy scripts to intercept and modify the game's official URLs to redirect to localhost. Initially, this method faced obstacles, particularly with the game's resistance to HTTP redirections from its original HTTPS setup. To resolve this, I configured my local environment and mitmproxy to operate securely over HTTPS, ensuring smooth redirection.

Developing the prototype involved scripting hardcoded responses based on the MITM logs, a task that proved to be painstakingly difficult. The game's error handling was rudimentary at best, offering little to no guidance on debugging, as errors were often non-descriptive HTTP status codes following a freeze. Thus, refining the prototype's API involved a tedious cycle of hypothesis, testing, and numerous game restarts, each time navigating through the game's lengthy intro and login sequences.

After four months of diligent data collection and integration, I launched the first publicized test, just 1 month and 20 days before the game's scheduled end of service. This preliminary test marked a significant achievement, demonstrating the game's operational capabilities on our independent master server. At this juncture, users could customize settings and mobile suits, and access queues and "offline" modes like training and tutorials, despite the absence of a live matchmaking system, game servers, or other players. Although not fully interactive, this milestone underscored the success in establishing a master server entirely our own.

Game Server Discovery

Armed with a functional prototype, I felt emboldened to seek collaboration for reviving this beloved game. My outreach to various Unreal Engine modding communities garnered significant interest from modders possessing a wide range of skills. While many lacked the availability for a full-time commitment, their contributions edged us closer to a deeper understanding of the game. Thanks to the support from the UEDumper community, we managed to bypass additional security measures. This success facilitated the use of a specialized version of the renowned UE modding tool, RE-UE4SS, modified for our purposes with the help of a community member. This tool granted unprecedented access to in-game memory objects and enabled console commands, a powerful feature typically off-limits in multiplayer games.

Intent on preserving the game's integrity rather than exploiting it, I delved into exploring the console commands at my disposal. An attempt to use a basic UE4 command to open a game map unexpectedly resulted in a 401 Unauthorized Error. This error revealed that the action of opening an official game map attempted to register my game client as a server, a process swiftly blocked without official authorization. Although initially thwarted, this discovery hinted at a deeper layer of potential within our project.

Despite the official servers' rejection, our master server prototype offered a glimmer of hope. If we could mimic the expected server response, we might overcome this hurdle. With assistance from the UEDumper community, we analyzed a memory dump of the game, enabling us to craft a mock response that prevented the client from crashing during its unauthorized server registration attempt. Further investigation unveiled an intriguing anomaly: my game client was attempting to bind itself to UDP port 7777, suggesting that our game client could, under certain conditions, attempt to behave like a game server.

my game client was attempting to bind itself to UDP port 7777

Game clients don't need to bind ports like that? Unless...this wasn't just a game client?

I now have a game client trying to bind a server port, and I have console access. The next best course of action here is to stand up a second game client and try connecting.

Game client #1 is set up to operate as a server.

Meanwhile, Game client #2, after #1 is set up, is given a simple command. open IP:PORT, targeting the IP of the first game client.

Cue test milestone #2, 15 days before End of Service:

Game Client #2 connecting to Game client #1, now acting as a server

To those familiar with game private servers, setting up a master server might seem straightforward; the real challenge lies in configuring the game servers. Although UE4's source code is accessible, the specific modifications for "GUNDAM EVOLUTION" are not. We might manage to decode the packet compression and encryption, but accurately replicating the physics interactions and other backend processes without direct reference could take years of speculation and still fall short of the original gameplay experience. Ideally, establishing a new UE4 server from the ground up would be more practical than retrofitting a game client into a server—an endeavor fraught with complications. Unless....

GUNDAM EVOLUTION's game client included the entirety of the game server code in the client.

However, a pivotal discovery emerged during this test. Employing the open MAP command allowed the client to attempt a connection to another client modified to function as a server. This makeshift server successfully loaded the correct map, though with glaring issues: incorrect team names, the connecting player defaulting to spectator mode, and the inadvertent activation of Training Mode. Despite these flaws, the game operated: gates opened, timers counted down, and rounds concluded in draws due to the absence of active players. Remarkably, in the second round, the new "client" transitioned into an active player, albeit with significant bugs, such as the inability to capture points due to not being assigned a team. Nonetheless, this anomaly confirmed that core physics interactions and player abilities were functioning as intended, mirroring the official game's behavior.

Normally, the game doesn't utilize open/connect commands, suggesting that our approach bypassed certain initializations, hence the erratic game state. At this juncture, it became increasingly apparent that the game client could potentially serve a dual role in the ecosystem of game client, master server, and game server, acting as a critical component on both ends of the spectrum.

Recruiting a team

Empowered by the breakthroughs, I returned to the Unreal Engine modding community with a second technical demonstration. This time, I showcased a functional proof-of-concept for both a master server and a game server, aiming to attract a developer capable of deconstructing the game further to transform it into a genuinely playable platform. As the game's closure loomed, it became crucial to also build a dedicated community. To this end, I established a Discord server and appointed an early and passionate supporter from my social media discussions as a community director, allowing me to concentrate on development while he advocated for the project's revival.

Very quickly, the forming community stepped up and took it upon itself to round out and handle community efforts, such as creating logos, promotional videos, livestreaming development progress, and

I successfully enlisted an engineer with expertise in reverse engineering desktop applications by the name of Samuel Siviero . Although unfamiliar with "GUNDAM EVOLUTION," his knowledge of Unreal Engine and interest in our progress proved invaluable. His skills quickly overcame the game's security measures, enabling us to redirect the game client to a new network address without relying on makeshift mitmproxy solutions. This breakthrough significantly accelerated our debugging process. Over the course of a month, through meticulous examination of SDK and kismet analyzer dumps, alongside strategic runtime injections, hook implementations, asset swaps, and API enhancements, we reached a pivotal milestone just nine days post-service termination:

Our game client functioned as an authentic player, integrated into a team on a heavily modified client-now-serving-as-server setup. This achievement marked the culmination of our efforts, assembling all the necessary elements to recreate the complete "GUNDAM EVOLUTION" experience. The following month was spent in collaboration with my developer colleague, overhauling the API service entirely. We refined our injection methods and sought external consultation to navigate the challenges posed by the game's executable, which was packed by HyperTech CrackProof, which we had previously managed through timed DLL injections after launch.

Launching the Initial Playtest

Following a thorough overhaul of our platform, we assembled a select group from our burgeoning community to conduct the inaugural private server playtest. This event featured a finely tuned API coupled with a hastily modified game client, together facilitating a custom lobby for gameplay. Traditionally, the game supported a competitive queue, a casual queue, and custom lobbies. For simplicity and focus, our playtest exclusively utilized custom lobbies.

Customarily, players would create a new lobby, automatically generating an 8-digit code for others to join. In celebration of our maiden game session, occurring 37 days after the game's shutdown, we implemented a unique lobby code of 0000 0001. This special session was hosted on my home HTPC, powered by an aged Intel i7-4770k processor and running Windows 10. Despite the makeshift arrangement, we successfully completed a full 12-player match, marking a triumphant first playtest.

Private Beta

Following our inaugural playtest's success, the first quarter of 2024 marked a phase dedicated to refining our infrastructure. Samuel and I focused on resolving API edge cases to enhance stability and prevent client crashes. During this period, we also welcomed a seasoned infrastructure developer to our team, William Turner, whose expertise enabled us to streamline our hosting solutions, notably transitioning our game server operations to Linux. This shift not only improved our server efficiency but also set the stage for expanding our hosting capabilities in preparation for a wider release. Additionally, we assembled a content team tasked with creating in-game assets and producing a release trailer to herald the game's comeback.

Over the next three months, we engaged our private beta testers in a rigorous schedule of playtests, integrating new hosts and meticulously analyzing game performance across various hardware setups. Over 500 matches were played, many filled with instances of crashes, bugs, and various anomalies, our collective efforts culminated in a significant milestone: the March 28th, 2024, end-of-quarter release. This launch saw the presence of more than 25 game servers, hosted by our committed community, and introduced a new in-game icon to commemorate the revival of "GUNDAM EVOLUTION."

Public Alpha

Trailer by Dwheim ( https://www.youtube.com/@dwheim ) 

Current Community and Progress Update

As of this writing, our community has surpassed 4700 members, experiencing a surge of over 1200 new members within just five days following our public announcement. Our servers are bustling, hosting over 1600 games on the Side 7 infrastructure, indicating a robust and engaged player base.

The stability of lobby and menu interactions has been a highlight, with games proceeding smoothly in-match. At present, the team has already fixed a slew of in-menu lobby interactions and has mitigated a number of in-game crashes resulting from abrupt player disconnections. These are few among many of the several quality of life improvements we are committed to implementing in the near future.

While a dedicated project website is still under development, interested parties and potential new members can find us and join the growing community via our Discord server at: https://discord.gg/side7