DemoFile 0.2.1
See the version list below for details.
dotnet add package DemoFile --version 0.2.1
NuGet\Install-Package DemoFile -Version 0.2.1
<PackageReference Include="DemoFile" Version="0.2.1" />
paket add DemoFile --version 0.2.1
#r "nuget: DemoFile, 0.2.1"
// Install DemoFile as a Cake Addin #addin nuget:?package=DemoFile&version=0.2.1 // Install DemoFile as a Cake Tool #tool nuget:?package=DemoFile&version=0.2.1
DemoFile.Net
DemoFile.Net is a blazing fast demo parser library for Counter-Strike 2, written in C#. It is cross platform, and can be used from Windows, Mac or Linux.
Features
Feature | Availability |
---|---|
CSTV / GOTV demos | ✅ Full support |
POV demos | ➖ Support planned |
Game events (e.g. player_death ) |
✅ Full support |
Entity updates (player positions, grenades, etc.) | ✅ Full support |
Examples
Note: This library is still under heavy development and the API is likely to change significantly before v1.0
using DemoFile;
using DemoFile.Sdk;
internal class Program
{
public static async Task Main(string[] args)
{
var path = args.SingleOrDefault() ?? throw new Exception("Expected a single argument: <path to .dem>");
var demo = new DemoParser();
demo.Source1GameEvents.PlayerDeath += e =>
{
var attacker = demo.GetEntityByIndex<CCSPlayerController>(e.Attacker);
var victim = demo.GetEntityByIndex<CCSPlayerController>(e.Userid);
Console.WriteLine($"{attacker?.PlayerName} [{e.Weapon}] {victim?.PlayerName}");
};
await demo.Start(File.OpenRead(path));
Console.WriteLine("\nFinished!");
}
}
See also the examples/ folder.
Benchmarks
On an M1 MacBook Pro, DemoFile.Net can read a full competitive game (just under 1 hour of game time) in 1.5 seconds. This includes parsing all entity data (player positions, velocities, weapon tracking, grenades, etc).
Method | Runtime | Mean | Error | StdDev |
---|---|---|---|---|
ParseDemo | .NET 8.0 | 1.501 s | 0.0047 s | 0.0042 s |
Author and acknowledgements
DemoFile.Net is developed by Saul Rennison. The development of this library would not have been possible without demoparser by LaihoE and Manta by Dotabuff, the latter of which depends on the efforts of a number of people:
- Michael Fellinger built Dotabuff's Source 1 parser yasha.
- Robin Dietrich built the C++ parser Alice.
- Martin Schrodt built the Java parser clarity.
- Drew Schleck built an original C++ parser edith.
A modified version of Source2Gen by neverlosecc is used to statically generate the game schema classes and enums.
See ACKNOWLEDGEMENTS for license information.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- Google.Protobuf (>= 3.22.1)
- NerdBank.GitVersioning (>= 3.6.133)
- protobuf-net (>= 3.2.16)
- Snappier (>= 1.1.1)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on DemoFile:
Package | Downloads |
---|---|
DemoFile.Game.Cs
DemoFile.Game.Cs is a blazing fast Counter-Strike 2 demo parser library. |
|
DemoFile.Game.Deadlock
DemoFile.Game.Deadlock is a blazing fast demo parser for Valve's Deadlock. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.27.1 | 120 | 11/2/2024 |
0.26.1 | 114 | 10/29/2024 |
0.25.1 | 263 | 10/12/2024 |
0.24.1 | 124 | 10/7/2024 |
0.23.1 | 148 | 9/27/2024 |
0.22.3 | 120 | 9/23/2024 |
0.22.1 | 121 | 9/22/2024 |
0.21.1 | 166 | 9/14/2024 |
0.20.1 | 153 | 9/7/2024 |
0.19.1 | 113 | 9/7/2024 |
0.18.1 | 529 | 8/16/2024 |
0.17.1 | 135 | 8/11/2024 |
0.16.3 | 126 | 8/2/2024 |
0.16.2 | 72 | 8/1/2024 |
0.16.1 | 77 | 8/1/2024 |
0.15.1 | 583 | 6/1/2024 |
0.14.1 | 173 | 5/26/2024 |
0.13.1 | 210 | 4/30/2024 |
0.12.2 | 146 | 4/12/2024 |
0.12.1 | 401 | 2/29/2024 |
0.11.1 | 210 | 2/19/2024 |
0.10.1 | 110 | 2/17/2024 |
0.9.1 | 145 | 2/9/2024 |
0.8.1 | 204 | 12/30/2023 |
0.6.1 | 168 | 12/23/2023 |
0.5.1 | 364 | 12/19/2023 |
0.4.1 | 173 | 12/9/2023 |
0.3.6 | 181 | 11/25/2023 |
0.3.5 | 134 | 11/25/2023 |
0.3.4 | 136 | 11/25/2023 |
0.3.1 | 141 | 11/25/2023 |
0.2.9 | 167 | 11/12/2023 |
0.2.8 | 128 | 11/12/2023 |
0.2.7 | 140 | 11/12/2023 |
0.2.6 | 120 | 11/11/2023 |
0.2.5 | 117 | 11/11/2023 |
0.2.4 | 126 | 11/11/2023 |
0.2.3 | 121 | 11/8/2023 |
0.2.2 | 125 | 11/5/2023 |
0.2.1 | 184 | 10/29/2023 |
0.1.11 | 154 | 10/25/2023 |
0.1.10 | 155 | 10/22/2023 |
0.1.9 | 136 | 10/19/2023 |
0.1.7 | 152 | 10/12/2023 |