Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@nekz/sdp

NeKzor130MIT0.10.0TypeScript support: included

Simple Source Engine demo parser.

Source Engine

readme

CI CD jsr npm

sdp

Simple Source Engine demo parser. Try it out on StackBlitz!

Features

Examples

Read header only

Using Deno + TypeScript:

import { SourceDemoParser } from 'jsr:@nekz/sdp';

const demo = SourceDemoParser.default()
    .setOptions({ messages: false })
    .parse(Deno.readFileSync('demo.dem'));

console.log(demo);

/*
    SourceDemo {
    demoFileStamp: 'HL2DEMO',
    demoProtocol: 3,
    networkProtocol: 15,
    serverName: 'localhost:0',
    clientName: 'Can\'t Even',
    mapName: 'testchmb_a_00',
    gameDirectory: 'portal',
    playbackTime: 3.944999933242798,
    playbackTicks: 263,
    playbackFrames: 253,
    signOnLength: 80641,
    messages: [] }
*/

Read UserCmd messages

Using Node + JavaScript:

import fs from 'node:fs';
import { DemoMessages, SourceDemoParser } from '@nekz/sdp';

const demo = SourceDemoParser.default()
    .setOptions({ userCmds: true })
    .parse(fs.readFileSync('demo.dem'));

const IN_JUMP = 1 << 1;

const registeredJumps = demo
    .findMessages(DemoMessages.UserCmd)
    .filter(({ userCmd }) => userCmd.buttons & IN_JUMP);

console.log('registered jumps:', registeredJumps.length);

/*
    registered jumps: 270
*/

The examples directory contains more examples for Node and Deno.

View Origin

showcase.gif

Used in nekz.me/parser. Updated example can be found in examples/web/parser.html.

Dependencies

Vendored inolen/bit-buffer for TypeScript port + improvements.

License

MIT License