You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
BotoX 3b723a64e0 fix playback_time on dirty demos 1 year ago
.vscode change pretty much everything so it does what I want :^) 1 year ago
demboyz fix playback_time on dirty demos 1 year ago
docs DEM format documentation 7 years ago
external fix build 1 year ago
premake change pretty much everything so it does what I want :^) 1 year ago
.gitignore Ignore bin output files 7 years ago
.travis.yml Travis CI for osx 5 years ago
LICENSE Initial commit 8 years ago Added Travis CI OSX build badge 5 years ago
Vagrantfile Use shell provisioner 7 years ago better file format? + better silence chunks 1 year ago Removed update/upgrade and building from vagrant setup. 4 years ago


we dem boyz

Build Status

System Compiler Status
Linux 64-bit G++-4.8.4 Build Status
Windows VS2017 Build status
OSX Apple LLVM version 7.3.0 (clang-703.0.31) Build Status

What is it?

Demboyz is a command line tool to convert TF2 STV demos into a human readable json format. Demboyz runs on Linux, Windows, and OSX. It supports the following conversions:

.dem/.json <-> .dem/.json
.dem/.json -> .con

The .dem format is the TF2 STV demo format.
The .json format is the demboyz streaming json demo format.
The .con format is a log equal to what would be produced by TF2
with netmessage/demmessage logs enabled.

Potential Uses

  • Exporting Stats: Parsing for player stats and motion throughout maps.
  • Anticheat: Interpreting player net data for malicious behavior and cheating
  • Anti-Anticheat: Modifying player net data to hide your malicious behaviour and cheating
  • Censoring: Cover up rude communication by removing player voice and chat messages
  • Social engineering: Make your friends seem rude by adding phony player voice and chat messages
  • ConeBone69 revival: Change the names of all players to ConeBone69


./demboyz mystvdemo.dem mystvdemo.json
./demboyz mystvdemo.dem mystvdemo.con
./demboyz mystvdemo.json mystvdemo.dem
./demboyz mystvdemo.json mystvdemo.con

In the first example, mystvdemo.dem will be read from the current working directory, while mystvdemo.json will be written to the current working directory.


For Developers

If you would like to contribute to demboyz, here are a few tasks up for grabs:

General programming experience:

  • Add automated tests to demboyz.
    • Using the Catch C++ testing framework.
    • Unit test the serialization of network messages.
    • System test exact binary matches of dem -> json -> dem transformations.
  • Document the .dem format.
    • Turn the working demboyz serialization code into a reference manual for the .dem fomat.
    • Any amount of work on this helps. Document one struct!
  • Develop an app that uses demboyz.
    • Provide feedback on the usefulness of the json demo format.
    • Create new tools previously impossible to make.

C++ and asm experience:

  • Continue reverse engineering the STV demo structs and serialization (svc_ messages).
    • Many of the reversed svc_ messages still have unknown binary chunks of data.
    • Reverse them for addition to the demboyz source.
  • Reverse engineer the POV demo structs and serialization (clc_ messages).
    • Currently, demboyz only supports STV demos due to POV demo messages being separate and unknown.
    • Work on reverse engineering the clc_ messages just like the svc_ messages.
  • Add a conversion to the replay demo format.
    • The replay demo format would require reverse engineering just like POV and STV demos.

For Users

  • Cheer on the developers.
  • Pressure the developers.
  • Become a developer.

Who Uses demboyz?

Compiling From Source

When following instructions below, the compiled binary will be output in the bin folder.

Using Vagrant

# Launch VM and build
vagrant up

# Patch VM and re-build
vagrant provision

# Manual build
vagrant ssh
cd /vagrant/premake
./ && cd gmake

# Disconnect session and stop VM
vagrant halt

With Visual Studio 2013

# Generate vs 2013 project
cd premake

Open generated VS solution at premake/vs2013/demboyz.sln