Giter VIP home page Giter VIP logo

parser's People

Contributors

bitinha avatar dalegaard avatar icewind1991 avatar markddr avatar narcha avatar tails8521 avatar yep-tf2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

parser's Issues

Failures on some POV demos

First of all, thank you for this piece of software!

I tried to parse a big pile of POV demos (3575 files) recorded over many years using parse_demo binary but many of them failed. Here are the errors:

  1. 1006 failures (28%)
    Error: A read game event doesn't contain the expected values, expected type Byte for kills_rank event, got type Long
    
  2. 12 failures (0.3%)
    Error: A read game event doesn't contain the expected values, expected type Byte for kills_rank event, got type Short
    
  3. 15 failures (0.4%)
    Error: Malformed utf8 while reading string
    caused by: invalid utf-8 sequence of 1 bytes from index 0
    
    In 5 cases the index was not 0.
  4. 5 failures (0.1%)
    Error: A read game event doesn't contain the expected values, expected type Long for weapon_def_index event, got type Short
    

That's it so the total number of different errors is surprisingly low :)

And it's also not unlikely that there's been some bit rot.

Malformed string compression table causes panic/abort in parser

The demo file is rather large and I couldn't minify it, but I've attached it anyways.

crash.zip

The crash is

let compressed_data = table_data.read_bytes(compressed_size as usize - 4)?;
, if compressed_size is less than 4, it will either panic on wraparound with debug assertions enabled, or tries to allocate a huge amount of memory in release mode, and aborts. (This could probably be used cause a denial of service by trying to allocate large buffers).

The fix here IMO is to do a checked subtraction there, but also not to trust the value we got from the file for the compressed size. That might be a change in bitbuffer too, which should have tests that trying to read huge amounts of data doesn't crash, and instead returns an error, which it doesn't seem to be doing.

Detailed Summary: Include player positions/velocity

It would be nice to fetch out position, velocity or even projectiles (rockets/stickies/pipes).

Working on integrating this with Rocket Jump/Sticky Jump STV demos. Chat logs has helped heaps but if we can get more data that would be awesome

detailed_summary vs detailed_summaries

In the README.md, it says to pass the detailed_summary argument to print more information.
However it doesn't work because in main.rs the code looks for the string detailed_summaries instead:

let detailed_summaries = args.contains(&std::string::String::from("detailed_summaries"));

Can this log decals as well?

Someone has once asked me if they could confirm in any way if someone possibly had something illegal on their objector, however I wasn't able to help. And in general it'd be interesting to see what people have at any given match on any of their decal applicable items.

DemoParser "new_all_with_analyser" does not report team for each user

Hello, I have been working with this program for quite a bit, modifying it to parse demo files in real time to collect data for machine learning algorithms.

I noticed that when created a DemoParser object with the new_all_with_analyzer function, the team for each user is listed as "Other". However, creating a DemoParser object using the other function new_all properly reports team for each player. I've been trying to fix it but had no luck, fixing this would really help me since I wouldn't have to waste time parsing the demo file twice.

feat: Rocket Jumping/Sticky Jumping extensions

Hi @icewind1991,

First of all, this is an awesome tool and I've used it to ingest chat logs from about 10 years worth of the jump communities STVs! This has allowed us to regain data lost to time (like the old World Records, players, rankings etc) โญ
(from Tempus Jump Network)

It would be awesome for my archiving and enhancement efforts if we could get the following out of STVs (feel free to say no - I'd also be happy to sponsor this project, but there's no button on GitHub ATM)

  • Extract player positions, angle, velocity in a time sequence. (e.g. say I know there is a world record run within some tick range, we can plot this on a website, or visualize the trail, many things to come from this - even a heatmap of all attempts, or attempts over a long history)
    • Extract rocket fired, stickybomb fired/detonated
    • Jump
  • Extract chat message colors? (ranks with color etc)
  • Get server messages to a single player, through sourcemod/metamod plugins (Is this possible?)
  • Player commands, e.g. sourcemod commands, clientside cheats like running thirdperson etc.

I'm not sure if a lot of this is possible, but its a wide wishlist, for discussion.

I look forward to hearing from you soon :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.