Announcement

Collapse

Forum Rules

  • No flaming or derogatory remarks, directly or through insinuation.
  • No discussion, sharing or referencing illegal software such as hacks, keygen, cracks and pirated software.
  • No offensive contents, including but not limited to, racism, gore or pornography.
  • No excessive spam/meme, i.e. copious one liners in a short period of time, typing with all caps or posting meme responses (text/image).
  • No trolling, including but not limited to, flame incitation, user provocation or false information distribution.
  • No link spamming or signature advertisements for content not specific to Dota 2.
  • No Dota 2 key requests, sell, trade etc.
  • You may not create multiple accounts for any purpose, including ban evasion, unless expressly permitted by a moderator.

  • Please search before posting. One thread per issue. Do not create another thread if there is an existing one already.
  • Before posting anything, make sure you check out all sticky threads (e.g., this). Do not create new threads about closed ones.
  • It is extremely important that you post in correct forum section.

  • Balance discussion only in Misc.
  • All art related (such as hero model) feedbacks go to Art Feedback Forum.
  • All matchmaking feedback should go here: Matchmaking Feedback
  • All report/low priority issues should go here: Commend/Report/Ban Feedback
  • No specific workshop item feedback. These should go to workshop page of that item.
  • When posting in non-bugs section (such as this), use [Bugs], [Discussion] or [Suggestion] prefix in your thread name.



In case you object some action by a moderator, please contact him directly through PM and explain your concerns politely. If you are still unable to resolve the issue, contact an administrator. Do not drag these issues in public.



All rules are meant to augment common sense, please use them when not conflicted with aforementioned policies.
See more
See less

Dota 2 Demo File Format

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hi I'm trying to port demoinfo2 to linux and osx. After minor tweaking I have working executable, but when I try to parse demo file it complains "CDemoFile::Open: demofilestamp doesn't match."

    And indeed demo files I'm try to parse have different PROTODEMO_HEADER_ID, "PBDEMS2" not "PBDEMS" that original demoinfo2 expects(defined in demofile.h).

    I guess this has something to do with dota 2 migrating to source 2 engine? If that's the case where can I get the updated protobuf files to parse demo files from dota 2 reborn clients?

    I found several repositories in GitHub but would like to know if there is any "official" version of protobuf files 3rd party developers can use.

    Thanks
    Last edited by himynameis; 11-23-2016, 02:07 AM.

    Comment


    • Hi,

      It's been more than 3 years since the last reply. I'm currently writing my own Parser in Java, taking advantage of functional interfaces, hash maps, google protobuf library [1] and lombok [2] to read each demo command more quickly and transform them into another format (either XML or JSON). I don't use google's protobuf compiler (protoc) because I think it creates huge files, larger than necessary. I'll probably create a repository so that other developers can have a look.

      As a reference of each structure, I use SteamDatabase Protobufs [3] to create each necessary class to parse. I also got inspiration by other 3rd party projects (i.e. Dotabuff's Manta [4] and Skadistats' Clarity [5]). I'm basically done with all structures according to "demo.proto" and the parser can already read the complete file without any issues (so far).

      Now I reached a point where I'm stuck. The issue is the "data" format of following demo messages:

      * CDemoPacket
      * CDemoSaveGame
      * CDemoSendTables
      * CDemoCustomData
      * CDemoStringTables.items_t
      * CDemoUserCmd

      I got an idea by the other projects, but I'm lacking documentation about those messages, the meaning of their data and how to parse through it. Doesn't Valve have a parsing structure for Source 2 posted on one of there websites (like Valve Developer Community [6])? I'm looking for something documented within the past 2 years (not older).

      [1] https://github.com/protocolbuffers/p...ee/master/java
      [2] https://projectlombok.org/
      [3] https://github.com/SteamDatabase/Pro...e/master/dota2
      [4] https://github.com/dotabuff/manta
      [5] https://github.com/skadistats/clarity
      [6] https://developer.valvesoftware.com/wiki/Main_Page

      Comment

      Working...
      X