Demo.js
TF2 demo parsing in javascript
Install / Use
/learn @demostf/Demo.jsREADME
demo.js
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
node-connect
354.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
