Skip to content

Instantly share code, notes, and snippets.

@shaunlebron
Last active September 4, 2023 06:00
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shaunlebron/ff4877c2ffbccccfffcb2e098da7e105 to your computer and use it in GitHub Desktop.
Save shaunlebron/ff4877c2ffbccccfffcb2e098da7e105 to your computer and use it in GitHub Desktop.

I spent a lot of time in high school and college (2005-07) modifying the game Halo—a dark art I learned by finding experts willing to teach me.

I first approached David Skotnicki (TocaEdit) to ask how he added a knob to the Field of View in Halo. He taught me how to use TSearch and Cheat Engine to analyze the effects of in-game actions on locations in memory, how to find locations in code which accessed its values, how to reroute the game to use custom code, and how to package the edits into a VB6 app for distribution.

I set out to use this for a bit of vanity—to keep the camera floating behind the character when walking, as it appeared when driving. David helped me through it and released an initial app, which I continued modifying for a year or so with improvements, like some tricky corrective-aiming that it needed.

thirdperson thirdperson3 thirdperson5

I went on to create other camera-related things for spectating since the game had no such feature. I learned some basic math for free camera control, figured out how to track players, collaborated briefly with another hacker named Mukelo who figured out how to customize the HUD.

I also met an artist, Jahrain, building Zelda maps for the game. I wrote a custom camera to mimick the feel of the source game. The first mode places the camera on a loose leash while always pointing at the player. The second mode is used when fighting, locking both the camera and the player on the targeted enemy.

This got me in trouble since it was an aimbot, which I conceded at the request for a friend to turn into a standalone thing (though I might’ve done this myself anyway out of curiosity). It worked too well, and I handed it to the friend who requested it, with promises of secrecy. In retrospect, I should’ve had more respect for it, because it spread and literally destroyed the online competitive community.

I tried different methods for detecting it server-side, by detecting unnatural tracking in players’ aim vectors. My metrics were mucked by the aimbot’s de-synced framerate and by player latency. Ultimately, I couldn’t distinguish good players from cheaters using my limited knowledge of statistics for pattern detection.

Later, I began corresponding with Sean Cooper (kornman) who had reverse-engineered nearly all of Halo’s engine somehow. He resisted many of my attempts to learn his methods—rightfully so after what happened—but agreed to collaborate after I created a proof-of-concept for running custom C++ code inside Halo, showing a “hello world” message rendering over the game screen. I couldn’t do much without his knowledge of the engine, and it was a compelling use-case for his years of research, so we started working on a project named Yelo, a play on our names bitterbanana and kornman. Sean taught me a lot about the engine and how objects were organized. I felt a bit like a primitive astronomer seeing photos from the Hubble for the first time—it was something.

I drifted from the project, but it grew to what Sean called OpenSauce, a sort of ultimate realization of everything that could be customized in Halo: https://code.google.com/archive/p/open-sauce/wikis/History.wiki

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment