Coder Social home page Coder Social logo

jellyr / mvm-reversed Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sigsegv-mvm/mvm-reversed

0.0 2.0 0.0 9.74 MB

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

Makefile 0.15% C++ 99.06% C 0.60% Objective-C 0.19%

mvm-reversed's Introduction

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.

mvm-reversed's People

Contributors

sigsegv-mvm avatar

Watchers

James Cloos avatar jelly avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.