Derrik Touve

A developer with experience in Games, Web Apps, and Reverse Engineering.

Links

About SaveMGO

The SaveMGO project was a collaboration between I, Joseph Tartaro, Matthew Halchyshak, and countless others. We created servers for Metal Gear Online 1 (Metal Gear Solid 3), Metal Gear Online 2 (Metal Gear Solid 4), and Metal Gear Online 3 (Metal Gear Solid V). This project is significant as we worked on some of the earliest emulated servers for console multiplayer games, to our knowledge. As a result of our and others' work, the broad game server community has been able to work with the Electronic Frontier Foundation to carve out exemptions from the Digital Millennium Copyright Act. Though not ideal for all cases, these exemptions are a step in the right direction.

I joined Matthew in late 2012 to work on Metal Gear Online 1. This was my first major programming project. With some initial help from the_fog, we were able to get past the initial server checks and connect to our own server. Initially, this simply replayed data from an old packet capture from when the game was still online, but as time went on, Matthew and I learned more and more about what the game was expecting by reverse engineering the game binary. After spending all of these painstaking hours, we were finally able to create and join a multiplayer session for the first time in 5 years! At that point, the server did not need very much cleanup, as the server functionality was fairly light.

Joseph, Jayveer, and others joined us in 2014. Joseph helped me with reverse engineering the initial server checks. After we figured that out, I was able to repurpose the MGO1 server to replay the MGO2 packets that I captured in the past. Compared to MGO1, MGO2 was a lot heavier on the server functionality. Since I missed a lot of network data from my packet captures, and due to packet encryption, I needed to reverse engineer quite a bit more than MGO1 in order to get to the point where we could create and join a multiplayer game. Due to a lot of unknown data, a lot of server data was placeholder and was causing issues down the line, and was difficult to debug. Over the years, I've been able to iron out most if not all the issues due to the extensive reverse engineering I've done on the game.

I spent the majority of my time working on MGO2. I worked on reverse engineering the majority of the server requests and responses, the in-game patcher format, and other numerous game formats with some help, such as audio formats, model formats, texture formats, and game scripts. I created an audio playback / encoder tool, a basic level editor, and a tool for building patches for deploying in-game.

You can view the article and presentation for more! Maybe I'll write some blog posts eventually. Unfortunately, due to my age, I was not able to travel for any of the conferences at the time. You will see me in the credits though! :)

Side Notes: