Inspiration

This project is a port of the source code for demoinfogo that Valve provides with Counter-Strike: Global Offensive. I'm using the source code that builds in Linux as my reference: https://github.com/csgo-data/demoinfogo-linux

I picked this project for a couple of reasons:

  • I've never worked with binary files
  • I've never ported an application from one language to another
  • I've never worked with protobuf
  • I wanted a better understanding of the data inside CS:GO demo files

Features

I've mainly targeted this application at my self until I have time to wrap a web UI around it and make it a service. I had a list of features in mind when I started but I've spent a lot of time struggling with understanding C++(which I've never used) as well as understanding how reading binary files works. My []byte skills are slowly improving.

Features that I plan to implement after I get the full application working:

  • Concurrent message reading

    Messages in the demo file have a timestamp, called a tick, so it is possible to read these out of order and assemble them back into order later

  • Saving to a database

    Saving to a database means I don't have to worry too much about reading messages out of order because the DB will manage ordering items upon retrieval

  • Extra data profiles

    The application I'm porting has a single profile, -gameevents, which can then be filtered to remove things like footsteps or administrative messages. I'd like to make it easier to filter out all kills or deaths and filter on only specific rounds

Built With

  • go
  • google-protobuf
Share this project:

Updates