Skip to content

server game code for TF2 MvM, reverse-engineered from x86 assembly to approximate C++

Notifications You must be signed in to change notification settings

sigsegv-mvm/mvm-reversed

Repository files navigation

What is this

This is a project to reverse-engineer the MvM-related parts of Team Fortress 2. I go through the binaries, one function at a time, and attempt to turn the raw x86 assembly code into the C++ code that would have originally been used to program the game.

There is no intention for this project to be compileable, but I do intend for the source code to be fully valid. I'm using C++11 and C++14 features, because I can.

Things that are not related to MvM, especially including things that can be found in the public Source SDK, are omitted.

This project is currently based on the 20151007a revision of Team Fortress 2 (October 7, 2015 @ 00:35:00 UTC).

Goals

  • Better understanding of how the NextBot AI system works
  • Precise information on fields and values allowed in pop files
  • Making it easier to track down bugs in the game
  • Making it easier to produce mods for the game

Structure

Population: pop file stuff

  • Populators
    • RandomPlacement
    • PeriodicSpawn
    • Mission
    • WaveSpawn
    • Wave
  • Spawners
    • Mob
    • SentryGun
    • Tank
    • TFBot
    • Squad
    • RandomChoice

NextBot: generic AI system

CTFBot: Team Fortress specific AI system

Useful: useful resources for reverse engineering

  • SDK-*: symlinks to Source SDK 2013 headers
  • classgraph: dumps of the RTTI class hierarchy
  • paths: string dumps of source file paths
  • vtable: dumps of virtual function tables

Progress

Done

  • IContextualQuery
  • CKnownEntity
  • IEventResponder
  • Behavior
  • Action
  • IPopulationSpawner
  • CMobSpawner
  • CSentryGunSpawner
  • CTankSpawner
  • CSquadSpawner
  • CRandomChoiceSpawner

In progress

  • CTFBotSpawner (90%)
  • IVision (50%)
  • CTFBot (1%)
  • INextBotComponent
  • NextBotPlayer
  • INextBot
  • CMissionPopulator

To do

  • Other populators
  • CPopulationManager
  • IBody
  • ILocomotion
  • IIntention
  • Path
  • CTFBot actions

Legality

Most of this is probably legal via fair use. I wouldn't bet my life on it though.

About

server game code for TF2 MvM, reverse-engineered from x86 assembly to approximate C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages