Go to file
2018-01-11 01:40:50 -05:00
demboyz Updated SVC_VoiceInit for latest TF2 version. 2018-01-11 01:40:50 -05:00
docs DEM format documentation 2015-07-03 00:27:45 -04:00
external Updated SVC_VoiceInit for latest TF2 version. 2018-01-11 01:40:50 -05:00
premake Added vs2017 project generation 2017-05-24 23:27:23 -04:00
.gitignore Ignore bin output files 2015-10-11 09:55:52 -07:00
.travis.yml Travis CI for osx 2017-05-27 17:42:45 -04:00
LICENSE Initial commit 2014-10-28 23:41:34 -04:00
README.md Added Travis CI OSX build badge 2017-05-27 20:05:09 -04:00
vagrant.sh Updated Vagrant to install g++ dependencies 2016-06-27 02:06:14 -04:00
Vagrantfile Use shell provisioner 2015-10-11 09:55:36 -07:00

demboyz

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

Usage

./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.

Contributing

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
./gmake.sh && cd gmake
make

# Disconnect session and stop VM
exit
vagrant halt

With Visual Studio 2013

# Generate vs 2013 project
cd premake
vs2013.bat

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