SkillAgentSearch skills...

Demo.js

TF2 demo parsing in javascript

Install / Use

/learn @demostf/Demo.js
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

demo.js

Build Status

Parsing of TF2 demo files in node.js and the browser

Note that this isn't actively maintained anymore, consider using the rust parser instead, which is much faster, more correct and can be compiled to wasm for use in browsers.

usage

cli

node bin/analyse demo.dem

api

var Demo = require('@demostf/demo.js');
var fs = require('fs');

fs.readFile("example.dem", function (err, data) {
	if (err) throw err;
	var demo = Demo.fromNodeBuffer(data);
	var analyser = demo.getAnalyser();
	var head = analyser.getHeader();
	console.log(head);
	var body = analyser.getBody();
	console.log(body.getState());
});

more information from packets

Using the javascript api it's possible to get far more information out of a demo file than the basic state provided by the cli interface.

var Demo = require('@demostf/demo.js');
var fs = require('fs');

fs.readFile("example.dem", function (err, data) {
	if (err) throw err;
	var demo = Demo.fromNodeBuffer(data);
	var analyser = demo.getAnalyser();
	var head = analyser.getHeader();
	var match = analyser.match;
	for (const packet of analyser.getPackets()) {
		// where you can either get information directly from the packet (see ./src/Data/Packet.ts)
		// or use the `match` object which has contains an (incomplete) state of the match at the current tick
	}
});

A note on POV demos

During the development of this project the main focus has always been on parsing STV demos. Although there are currently no known issues iwth POV demos parsing them is a lot more error prone.

Credits

Special thanks goes to

Without the information provided by these projects this would not have been possible

Related Skills

View on GitHub
GitHub Stars48
CategoryDevelopment
Updated10mo ago
Forks10

Languages

TypeScript

Security Score

87/100

Audited on May 31, 2025

No findings