odota / parser Goto Github PK
View Code? Open in Web Editor NEWReplay parse server generating JSON log events from Dota 2 replay files
License: MIT License
Replay parse server generating JSON log events from Dota 2 replay files
License: MIT License
Hi all
I find the steamapi GetMatchDetails seem no longer provide match replay_salt. How can I get this info now?
I tried to run Main.java and then post the .dem file via cmd and got the error message says that
Then I tried to use docker run the parser and post .dem file via cmd but got an error message (I am a beginner to docker):
Could you please tell me how should I run the parser correctly? Thanks for any help you can provide!
STRATZ_Ken -
@howard You should change
https://github.com/odota/parser/blob/master/src/main/java/opendota/Parse.java#L726
with @OnEntityCreated. When CDOTA_NPC_Observer_Ward is created, store the DtClass().getClassId() in a variable. Then you can compare on ProcessEntity with int == int comparison. I just did this on my side on a lot of things monitored, lowered CPU across the board by 8%.
Howard - Today at 6:06 PM
Thanks, could you log an issue?
Looks like this no longer works:
https://github.com/odota/parser/blob/master/src/main/java/opendota/Parse.java#L513
I think we need to calculate it now from server ticks and subtract paused ticks
Here, it should be 32 instead of 31
parser/src/main/java/opendota/Parse.java
Lines 768 to 777 in 3b1aa72
This is because there are abilities at 31. Looping with i < 31
will skip over the last ability
parser/src/main/java/opendota/Parse.java
Lines 822 to 826 in 3b1aa72
hi,
I am trying to understand the parser output. For example:
{
"time": 676,
"type": "DOTA_COMBATLOG_MODIFIER_ADD",
"value": 1,
"attackername": "npc_dota_hero_bounty_hunter",
"targetname": "npc_dota_hero_bristleback",
"sourcename": "npc_dota_hero_lycan",
"targetsourcename": "dota_unknown",
"attackerhero": true,
"targethero": true,
"attackerillusion": false,
"targetillusion": false,
"inflictor": "modifier_bounty_hunter_track"
}
I read this as bounty hunter tracked bristleback, but what has lycan to do with this? What is the sourcename?
Brisleback and lycan are on the same team, so no lotus orb shenanigans.
Hi,
I recently study data 2 parser.
I tried your parser and I got some output, is there any documentation for meanings?
eg.
{"time":285,"type":"actions","key":"1","slot":0}
whats key:1 means?
and gold_reason, xp_reason?
@howardchung
Thank you very much!
Hello. I am using jdk 12.0.2 The text of the error is as follows:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
skadistats.clarity.ClarityException: oops. no provider found for required usage point interface opendota.processors.warding.OnWardExpired
at skadistats.clarity.processor.runner.ExecutionModel.requireProvider(ExecutionModel.java:123)
at skadistats.clarity.processor.runner.ExecutionModel.requireEventListener(ExecutionModel.java:135)
at skadistats.clarity.processor.runner.ExecutionModel.requireProcessorClass(ExecutionModel.java:79)
at skadistats.clarity.processor.runner.ExecutionModel.addProcessor(ExecutionModel.java:49)
at skadistats.clarity.processor.runner.AbstractRunner.addProcessorsToModel(AbstractRunner.java:37)
at skadistats.clarity.processor.runner.AbstractRunner.addProcessorsToModel(AbstractRunner.java:35)
at skadistats.clarity.processor.runner.AbstractRunner.createExecutionModel(AbstractRunner.java:28)
at skadistats.clarity.processor.runner.AbstractRunner.initWithProcessors(AbstractRunner.java:43)
at skadistats.clarity.processor.runner.AbstractFileRunner.initAndRunWith(AbstractFileRunner.java:37)
at skadistats.clarity.processor.runner.SimpleRunner.runWith(SimpleRunner.java:36)
at opendota.Parse.(Parse.java:177)
at opendota.Main$MyHandler.handle(Main.java:27)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at jdk.httpserver/sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:82)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:692)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:664)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)
I was checking if #26 was working as intended and still found some wards that did not live their whole life without a proper killer.
After analysing some replays we have still have 2 problems:
i have error while trying to parse ANY replay:
java.io.IOException: given stream does not seem to contain a valid replay
at skadistats.clarity.source.Source.readEngineType(Source.java:165)
at skadistats.clarity.processor.runner.SimpleRunner.<init>(SimpleRunner.java:31)
at opendota.Parse.<init>(Parse.java:177)
at opendota.Main$MyHandler.handle(Main.java:27)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at jdk.httpserver/sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:82)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:80)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:692)
at jdk.httpserver/com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:77)
at jdk.httpserver/sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:664)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835)
steps to reproduce:
[dropnz@home]$ wget http://replay138.valve.net/570/5135152728_2083094372.dem.bz2
[dropnz@home]$ bunzip2 5135152728_2083094372.dem.bz2
[dropnz@home]$ curl localhost:5600 --data-binary 5135152728_2083094372.dem
I notice some new items aren't parsed, causing problems. Is this repo still being updated?
It's stored in CPlayerLocalDota, I've spent a few hours now trying to add it myself but my unfamiliarity with clarity (and java) has made the task rather hard.
So I'd appreciate if someone could point me to the right direction or even add it themselves.
I used to have this running a couple years ago for a sideproject. Wanted to pick it back up and grabbed a new version of this parser and reused parts of my old code. When posting a current replay to the parser I keep getting thrown this Exception:
skadistats.clarity.ClarityException: oops. no provider found for required usage point interface opendota.processors.warding.OnWardKilled
I read in #29 that someone was having a similar problem in 2019, however they were running a wrong jdk version. To the best of my knowledge I'm running JDK 8.
I'd love if someone could chime in and help me figure this out.
At your site in docs.opendota I found a method where you get information about the match, along with its replica, as well as more rich information than the public API Dota2 provides. Could show the site of your when you get replay salt?
This might have something to do with #32 as it is also related to the format of new dem-files, but I'm getting a bit different error:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
java.io.EOFException
at skadistats.clarity.source.InputStreamSource.readBytes(InputStreamSource.java:61)
at skadistats.clarity.processor.packet.PacketReader.readFromSource(PacketReader.java:15)
at skadistats.clarity.model.engine.AbstractDotaEngineType$1.parse(AbstractDotaEngineType.java:86)
at skadistats.clarity.processor.reader.InputSourceProcessor.processSource(InputSourceProcessor.java:177)
at skadistats.clarity.event.AbstractInvocationPoint.invoke(AbstractInvocationPoint.java:86)
at skadistats.clarity.event.Event.raise(Event.java:37)
at skadistats.clarity.processor.runner.AbstractFileRunner.initAndRunWith(AbstractFileRunner.java:39)
at skadistats.clarity.processor.runner.SimpleRunner.runWith(SimpleRunner.java:36)
at opendota.Parse.<init>(Parse.java:177)
at opendota.Main$MyHandler.handle(Main.java:27)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
The parser works OK with the older dem-files like this
The information on pick order seems to be in the replay now. Feature request for adding hero pick order to the JSON log events. This is something that could be added to the web UI at some point as well.
parser/src/main/java/opendota/Parse.java
Line 346 in 19046cf
It seems there are no m_iPlayer...
properties for those entities anymore. There are m_nPlayer...
properties though.
So change m_iPlayerID
-> m_nPlayerID
and should be good.
Example match chat with this: https://www.opendota.com/matches/6447885793/chat
12:13 [ALL] joher K
<- chat message without slot
Can I use JDK 8?
Here and at the line after that, I think there's a typo:
parser/src/main/java/opendota/Parse.java
Line 135 in ff69571
Right?
Hi, Ive seen a few issues like this that have been closed but they all seem not to be running your docker image.
Im going to try and be through here so that my steps are clear and also that it helps perhaps in you understand where my problem is.
I was able to build the docker image which i named odotaparser with command
sudo docker build -t odotaparser .
I then run the container with the 5600 container port linkled to the 8000 port on localhost
docker run -p 0.0.0.0:8000:5600 odotaparser
i can clearly see with netstat -ntlp that there indeed is a port 8000 open
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp6 0 0 ::1:631 :::* LISTEN -
tcp6 0 0 :::8000 :::* LISTEN -
I then try and send the dem file from another terminal with the command
curl localhost:8000 --data-binary "/home/stevan/Workplace/junk/parser-master/5628067723_202531792.dem"
the dem file was downloaded from https://www.opendota.com/matches/5628067723
and i get the error in the docker run terminal
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
java.io.IOException: given stream does not seem to contain a valid replay
at skadistats.clarity.source.Source.readEngineType(Source.java:165)
at skadistats.clarity.processor.runner.SimpleRunner.(SimpleRunner.java:31)
at opendota.Parse.(Parse.java:180)
at opendota.Main$MyHandler.handle(Main.java:27)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.AuthFilter.doFilter(AuthFilter.java:83)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:82)
at sun.net.httpserver.ServerImpl$Exchange$LinkHandler.handle(ServerImpl.java:675)
at com.sun.net.httpserver.Filter$Chain.doFilter(Filter.java:79)
at sun.net.httpserver.ServerImpl$Exchange.run(ServerImpl.java:647)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Any idea what im doing wrong here or what the problem is? Ive tried a few replays and its always the same.
Thank you
Currently on a players page in the match list each match is listed as having an unknown skill.
After reviewing the web repo I don't believe this is a bug. It appears that the field is never populated with any data. I checked the clarity protobuf repo and found something that looked promising called AverageSkill. After extracting the value on a few replays I believe the field is dead as the value is always 0.
I checked dotabuff and iirc they used to have a skill rating associated with every match and now it looks like they are using average rank.
After trying to figure out which protobuf value they are using to pull the average rank I came up blank and was hoping someone else would have an idea on what to do. I think this is a cool stat to have and I would like to have it visible on opendota.
Hi, is there a metadata available for the parsed data.
There are a lot of variables describes who's meaning is difficult to interpret. So is there any documentation available like that?
Example "type":"interval", from what I have derived it is just logging the status as time progresses i.e increment in gold, etc. However some others are very difficult to interpret.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.