OW2 deserves a developer api [👍]

wot could we build, as a community?

I know for a fact the community would build some really cool things.

Here are a few examples of what could be built, given the support:

  • Determine my win (or loss) rate for a given map? Against a certain hero? On a certain hero? On a hero on a given map? Do I lose every game I pick hanzo on volskaya?
    • We know this is possible, because the Overwatch league did it.
  • View accurate winrate stats for certain heroes? In a given rating? During a given timeframe? During a given region?
    • We know this is possible, because the Overwatch league did it.
  • Build a tool that analyses the key events in a match (who dies first, ultimates I’ve whiffed, ultimates I’ve shut down)?
    • We know this is possible, because the Overwatch league did it.
  • Push lots of stats through third party services, like IBM Watson, to identify trends
    • We know this is possible, because the Overwatch league did it.
  • View detailed match history over a long period of time?
  • View what hero I lose against the most?
  • View what ultimates cause me to lose the most fights after I use them? Win the most fights after using?
  • Find replay codes of people playing a certain hero in a high rating? Opt in to have my replay codes publicly searchable?
  • Suggest replay codes of players who, statistically, do certain things better than me on a given hero and map?
    • imagine if we had this + a lightweight, optimized, quick to launch replay viewer that could open replays from browser links?
  • Support exporting & storing things like stats, win/loss, replays for longer periods of time beyond a 10 game history
  • and that’s just off the top of my head.
    • I am not a creative person, either.

Yes, all of this is cool stuff that we “could” have built in to our profiles, but that’s more work for blizzard than simply providing the data and letting the community visualize it themselves.

Think about the effect the workshop had.

Before it existed, the only real way to practice your aim was to either play something else, play a real match, or shoot at bots in a custom game. But now, people now have all sorts of tools from situational aim trainers, reaction time trainers, rollout practice, and even just a lot of fun or chill gamemodes.

What’s better, blizzard building custom modes, or giving the community the tools to build their own custom modes? No brainer. Give the community the tools. :brain:

When it comes to tracking performance and stats, “overbuff” is “shooting bots in a custom game”, and “proper api support” is “the workshop”.

wots wrong with overbuff?

The lack of a robust api hasn’t stopped the community from trying to build cool things.

If your career profile is public, anybody can pull your stats from your profile at https://playoverwatch.com/career/pc/battletag-1234 - this is where sites like Overbuff source their data.

Overbuff is cool, but it could be better. Their stats are corrupted by untracked accounts, private profiles by default, accounts not being tracked by default, data not being tracked properly (if I play 500 games on an untracked account and register it to overbuff, it shows up in one big session for that day). But it’s not just that the stats are inaccurate, they’re also incomplete. They’re working with only what’s on your career profile. It’s limited, and it’s not granular. It can’t be.

It’s not completely their fault. The tools just aren’t there.

but blizzard would never want to give us cool stuff!

I disagree :confused:

I think OW1’s confusing development is the real reason we’ve not gotten cool features like an api or a map editor. I bet OW2 and ActiBlizz tomfoolery siphoned away everyone’s attention from the cool things we could have had.

Hope they don’t forget us during OW2 :clap:

10 Likes

There was an api but it was taken down afaik

This is also why overbuff is completely unreliable.

I’ve checked on and off for a few years and it’s always been missing from their developer portal. There’s also no section on their api forums. The only references to an overwatch api I’ve ever found were hacky workarounds that scrape your profile for you.

technically, the career profile -is- a public api, it’s just… not very useful

Not exactly. Just because league was done doesn’t mean it’s doable on non controlled spectrum. While we will have more stats, It’s unlikely to have that kind of info. Only if the person do it as today, review and analyze.

Same as above, only if you track. They have all the data, doesn’t mean they would share it. More access to data it’s a double edge sword, while can provide some useful stuff can also help “not well intended” behaviors using that kind of data. Like knowing how bypass the system by boosting.

They could improve the replay system, they even put F9 fuction isn’t perfect but can be useful.

They promissed more detailed data, but I doubt that they would provide that detailed data you want. Maybe you could use watson to track accurately by creating a history on him about the info pulled from your account. But again, would be more “individual” thing not exactly a colective one.

Possible, but I wouldn’t bet it. It’s costly for them to store that much data and detailed data. You could save it on watson like currently you can, but not much detailed.

Unlikely. The data it’s from you, you don’t have access to others data, you could manually input, but would be innacurate. Because folks can swap heroes.

Unlikely. Really low odds they save that kind of data and even if said, there’s too much parameters about it. You can win a teamfight but lose objective, solo ultimate killing 4-5 foes while your team are dead, also don’t provide good data.

If the game wasn’t public, unlikely. The cost to implement it would high. Not “worthing” the hassle.

Tournaments/championships tho, could be doable. Mainstream not.

Unlikely

Only if replays become media themselves and saved locally. Otherwise unlikely.

Most of the data you quoted already can be done if the player itself decide to make it. But from raw data.

They will give us more data about certain stuff. But I doubt that you will have that kind of data you want. Because it’s really unlikely on a non controlled environment.

  • Cost = not willing to do.

naturally, every example I listed should come with the obvious assumption of “if they are willing to expose that” but if we disagree they are willing, then so be it :grin:

be mindful not to misunderstand - I’m not saying I want blizzard to provide literal endpoints like “httpget /profiles/kazooie/what-hero-does-he-lose-against-most” rather endpoints that prove more digestible (and useful) data to allow someone to build that functionality themselves… most likely in terms of matches played with statistics scoped to that match rather than aggregated ontop of your profile’s existing history with every game played.

There’s a few pretty straightforward ways you could go about it low-cost (if cost of storage is your concern). If storage cost isn’t a concern then you can just store lots of match history. If it is a concern then you can still store the detailed stats of a past handful of matches and allow thirdparties to query those and expect them to archive them at their own expense. Alternatively you can not store history at all, and delivery that data via webhooks to services that are subscribed and, again, let people store it at their own expense.

Yes storing detailed history for millions of accounts is expensive (and likely why we only get limited to 10 replays), but a smaller third party storing thousands, tens of thousands, or at most a few hundred k accounts is much less expensive, especially when it’s only tracked from the point you sign up → onwards. Given that they are usually opt-in, it likely wouldn’t have a huge bandwidth impact either. Noticeable, but not absurd depending. And since the point is to enable the community to build the tools, not be spoon-fed the results, if it becomes too expensive for a third party service they can always tackle that solution in whatever way makes sense for them (put up with it, throw out super old data, charge people to show more data like slack does with message history, etc)

To be honest I’m not entirely convinced… I’ve heard it before, but it’s not a unanimous enough of an opinion to really convince me, and I’ve seen more transparency without those imaginary horrible (like “people will figure out how to break our rankings if they have stats like winrate”)"

I would guess they (blizz) are more concerned with “not well intended” behavior like harassment than boosting (“this hero has a really bad winrate and we dont want people to get flamed for playing them”)

but to that point you could start a philosophy debate :stuck_out_tongue:

Impossible to say for 100% sure without insider perspective, but i am guessing they already are media in the form of a bundled up event stream from the server’s perspective

really i only have two guesses as to why we don’t already have the ability to export replays:

  • trying to keep everything squeaky clean and consistent (non-breaking changes)
  • or perhaps there is a technical hurdle that they haven’t had reason to overcome yet - for example perhaps it doesn’t support streaming from a local file and you currently need a “server” running to stream to the game client

but it’s anybodies guess.

?

those are actually pretty straightforward to determine if you (or a service) is able to catalog match history from a given point onwards. you just have to be able to access data about the match you played, such as the map, whether you won or lost, the heroes that were played, for how long, and when (in the event that you want to get fancy and tell who was on the field vs who at a given time - but that’s a little extra).

if you’re worried invasiveness or privacy, you shouldn’t be. you were there for that match, so the data was already exposed to you. but it’s not an unreasonable step to obfuscate battletags of people set to private, or omit them entirely with the exception of yours. you could determine those just fine if all you knew was who you played.

OW2 was unlikely :stuck_out_tongue:

regarding the last half, keep in mind that it would be up to the person using a tool to determine if the tool’s analysis is useful,

regarding the first - “low odds they save that kind of data”, I’m actually not even sure if they “saved” it in the first place when they were running those stats during the league

I’m a little in the dark about how they accomplished it. I remember they had a lot of really unique stats, but I dont think it’s known if they:

a) had someone literally watch all of the games and catalogue the obscure or situational stats like (“bumper died first on his team here”), (“a teamfight starts after x seconds of no fighting and ends after conditions y and z”)
b) had the replay itself replayed and analyzed automatically post-facto
c) sat down before-hand with devs and mapped out all of the stats they would like to display, to have the server track them (least likely option, i think - they would most likely still have that meeting but it seems like an odd way to go about it unless i am misunderstanding how digestable the replay streams are)
d) had access to a more specific stream of key events to analyze than the raw replay
e) something else

It’s not a new paradigm to work with eventstreams and replay them to backfill stats that were previously untracked. If I had to guess I would think that’s the most likely way they got some of those as opposed to tracking them in the first place given that they did store all of the replays for the league

The details of it it’s the problem. Storing A it’s easy, storing A+B isn’t that easy, Storing A+B+C way worst.

The current replay system it’s “solid chunk of data” but not “handled”. When you have the other perks you mentioned that data becomes problematic. They could help you to store replays, but wouldn’t be that great on end-user. Also, the end user would store up 10 replays and they’re located on different servers, meaning on a match having the possibility of 12 replays. While in reality if the most, blizzard only consolidate one on their end, still spent bandwidth with 12 for a brief period of time, like a patch or so that often they delete afterwards if you don’t pin it.

Tbh, on this world, data is “money”. I expect them to be careful about that.

The replay part being saved locally, could be a feature for end user. But would require a ton of space, like the highlight current perk. If you want more “accessibility” on that kind of data/footage. Some would play the replay and use “3rd party software” to save it. Which it’s more likely what Streamers do with their VOD, intentionally or not.

“filtered” data would be really unlikely to have, replays themselves most likely doesn’t have either. Most likely they have data on “per player basis” not “per match basis” Considering their metrics of “per minute”, while some they could have per match basis like highest value in a single match of something.

Which, most likely, they don’t have. Only stat like “highest”. On League they use specific set of tools for that kind of thing and even those are often reliant or 3rd party stuff like Watson. I don’t think they would have that kind of “expense” for general public or collect that amount of date of each match, most likely only on contenders, some leagues and OWL. Stretching a bit more, maybe comp. But I wouldn’t bet on it.

That kind of data relates a ton of what all those 12 players do, even today I didn’t saw that kind of filtered data on OWL considering enemies, they had about hero X and map Y, but I mean. OWL it’s like at maximum of something like 300 players data across like 20 teams or so. It’s really easy to fetch that kind of data without even using much of in game stats for it, you can consolidate that kind of data with their actual data of something else, filtering those stats.

But for an average player? Really unlikely. I really doubt they would use a fancy filter system inside of their game logic for it. IBM Watson it’s using that kind of thing to provide those data without putting burden on their dataset.

Actually wasn’t, they had plans. How to make these plans be what they want were their question mark. They had fear of OW2 becoming a flop, that halted OW1 for 2 years. Then when they saw what had done, they noticed that could simply make 2 different games at same client, like what other games from them done. SC2 by example, D2 and D3 also.

OW2 PVP should had on OW1 live servers already, still isn’t because their complicated development. Paired with internal issues within the company. The moment they decided that OW1 would receive PVP portion of OW2 the fate was already decided. They just stalled for either to reflect on what PVP would become and how they could make things work.

At least this time, they’re planning. Even if the plan doesn’t work the result would be far more acceptable than 2-2-2 half baked implementation.

Most likely they use IBM Watson features about it, cross referencing data from raw footage and in game stats.

IBM Watson can achieve some great stuff if you know what you want to filter.

Like I said, they’re improving several aspects and data oriented info, but it’s really unlikely to have “cross reference” data with other peers. Most likely that kind of “filter” would be needed to 3rd party tools and some “manual” handling.

I’m not quite sure what you’re getting at when you say “The details of it it’s the problem. Storing A it’s easy, storing A+B isn’t that easy, Storing A+B+C way worst.” because it’s a bit of a loaded statement. There’s context that isn’t being given.

I’ve worked with filestorage, database admin, building restful apis, and depending on the situation, the difference between storing and exposing A+B or A+B+C can be trivial, almost nonsensically so. It depends on the situation.

In the situation of storing the results of the past few matches and the raw statistics from those matches (not aggregated against your profile), to expose them via an api, I don’t see where you conclude that it becomes difficult enough to raise objections at the very idea of it.

I can understand not sharing things like geolocation, personal info (email addresses, names, phones, etc), or anything that can link back to you personally.

I don’t understand the concept that they should not openly share data about things like winrates and match history, especially when considering that you can anonymize that data/who is contributing to it.

No, you’ve got it backwards. Storing a match in footage is the most bloated way to store it. The replay, if it is truly just an event stream, should use space roughly equivalent to the bandwidth a single match… which isn’t much by modern storage standards.

You’d probably use up more space trying to store a 480p vod of your match. I’d bet money your 10 second highlights probably take up more space than the entire replay file.

If by “filtered data” you’re referring to this:
“d) had access to a more specific stream of key events to analyze than the raw replay”

Then I don’t know why you’d say they wouldn’t already have that, given that it would be a subset of the events that are already in a replay that they would have.

If that’s not what you’re referring to, then you’ve got me lost lol

Even if Blizzard doesn’t have those stats, I’ve already explained how using a public api would allow people to calculate those stats on their own from the present date → forward. So I’m not sure why it’s important if Blizzard doesn’t have historical data. Historical data is always “nice to have”, but it’s usually not mandatory.

Also, it’s not rocket science. It’s hardly even data science. You don’t need “3rd party stuff like Watson” to determine your win/loss rate on a given map, if you’re able to pull match results from the present day onwards. You don’t need Watson to determine your win/loss rate against a certain hero, on a certain hero, or map, or what hero you lose against the most. What you do need is match-specific statistics, which we do not get currently.

I think there’s a common misunderstanding here. When I mentioned Watson, I didn’t mean “Blizzard should run our replays through Watson and give us the result.”

That’s absurd. It’s also marrying the api to Watson, which is also absurd. I meant that, if they chose to support exposing digestible replay files (likely in the form of a stream of more useful events, rather than all of the match events), then the community could run them through whatever analysis they wanted, if they could figure it out. And believe me, the tinkerers would probably figure it out even without documentation.

But it’s also not a necessity. You don’t need digestible replay files to have a functioning rest api that allows players to poll their stats and match history. It’s just a cool thing that could be built.

I’m really having trouble following the first paragraph. If you put it through a translator, I’m sorry, but it didn’t stick. :grin:

As for the second:
I’m not sure why you’re married to the idea of Blizzard running the analysis. I’m not talking about that at all. That’s the opposite concept of building an api that empowers the community to do their own data driven analysis. All I’m asking for is that they expose the data we’re already shown, without aggregating it against our career profile. :skull:

It was unlikely from the communities perspective. What was that Jeff quote? Don’t see the world for what it is, but for what it could be? :stuck_out_tongue_closed_eyes:

Yet I’m talking about building an api to allow players to pull (or authorize an app to pull) their data, a la overbuff.

That is precisely the type of third party tool I’m saying an api like this would allow people to build.

When you have several variables and datasets, you try to keep your base more consistent as possible. If one in a million entries would use a particular “variable” or “entry” on the base you are spending resources of each entry to satisfy that individual entry.

Pareto’s Principle, with 20% resources you satisfy 80% of the situations. Planning more resources for those other 20% situations it’s not wise, considering that could had be done on other ways.

That was the logic of that statement.

That is filtered data, while they could have “timeframe” or “log of that data” already. It’s unwise to use other kind of metric. You would spend too much resources to satisfy 20% of the situations. They have raw data, if they have raw data of each entry that kind of filter would just need “date-ranges”, that most likely the case on competitive seasons by example prior to having all those actually, while having several competitive modes you would have to tag them by mode and time ranges or a variable specifing what season is.

That’s the difference between “storing” A+B+C(it’s comp? it’s that mode? it’s season x? ut’s within this date-range?) against A+B (it’s comp? it’s that mode? it’s within this date-range?) to A (it’s comp? it’s within this date-range?)

Having more variables instead of using already created data it’s expensive. Because what’s the purpose of store certain data if they can fetch that data on other ways?

The analogy was about raw footage and raw data. Using those data to generate the information that are showed for us. The website data alone, can give a ton of information, but wouldn’t have information like “who killed you” and “who as killed from you” by example. For that we could get from a replay by example.

Tastes, what kind of hero you pick more often, several marketing and preferences can be picked from it. Remember that they sell several products, do skins and stuff like that. Knowing what kind of thing most folks get attracted to it means more info about their “profile” tastes. Any data if used wisely would provide a ton of benefits.

Win rates, makes folks assume forced/rigged matches, Match history makes folks assume rigged system of enforcing victories and defeats in a row.

You can make it without mentioning anyone, but still you trace a “profile”. That profile it’s gold, on in this case can mean “money”.

They do balance changes considering those aspects by example. Jeff already said in the past that winning rates on each mode differs from others, defense and attack also has different winning odds. They use that kind of data to adapt the matchmaking to give the players between 40-60% “starting odds”. Trying to have a fair match for them.

Replay matches have different stances, isn’t just one replay per game. If you play with 5 folks and be located on different regions accross the world, each player would have different replay. That’s why can be tricky to narrow down some hacks. Often when I would report someone using hack I ask for 2-3 friends on the match about their replay, we live way far from each other, the info I get can be different of what happened. Having more 2-3 samples can help me to narrow down what happened on server side of it.

So they have at least 12+1 versions of what happened on the match, what each player saw and what actually happened. At least on replay wise.

If was just one stream, the data would be consistent between several players with different latencies and each replay from them would have the same code as yours, which isn’t the case.

I even think they store some part of it on the user’s machine but only playable through in game engine.

In theory, it’s what watson would do. As spectator in the match registering those kind of things picking the log from the match, based on damage done of each player, the kill log.

The game doesn’t use that kind of metric on anything else, so it’s plausible to have either access to game log or be a espectator on it.

On replay could have done and pick on those, also. Considering that most of league statistics are confrontation of consolidated data to the current stream of data done by Watson.

Also OWL matches happens some minutes prior to the match happening, to avoid any kind of cheating or gathering intel prior to the match.

They most likely have, just not explicity. Just having “an average” stat or a per minute metric already shows they “count” and have some patterns on it. They have timestamps for each match and events. That’s for sure, other than that they wouldn’t bother to create a variable to fetch that data. The stats we see are filtered data, they could provide more filtered data or the simple raw data, but again raw data has it’s own benefits to be hidden.

Roadhog stats against reaper hinted that he was a counter for reaper. Right now if he don’t kill on his first sequence the table turns to reaper’s favor. That kind of data they have based on information on the perks of those heroes. When they nerf something they account those kind of things. That’s why animation duration have a ton of impact and often players try to abuse it.

We can gauge based of experimentation and several tests, because they don’t provide the raw data about it. That’s the point. Anybody right now can do any of those metrics you asked for, but would be tiresome and would be based on the period it started and the period it ended, considering the variance of previous values to the newer values.

Yep, match specific metrics can only be obtained by the log of the match or replay. At least as far I’m aware. They could have some specific data that eventually would be merged to the database to create the average metric, but certain specifics of who killed who and where the shot was landed, it’s a fair assumption they don’t store it. Not after the match, maybe as temp state on memory for something like 20-30 seconds. Which would happen based on the object state function they explained on some old GDC video.

Well, at least it’s most likely the way they’re picking those data. Considering that watson it’s being used on those stats you mentioned.

That’s why I said that it’s really unlikely based on the range. It’s unreasonable to consider it even on Competitive stats because the size sample of it.

That could be built, still even on OWL they use watson for that kind of stuff. How they feed watson with it we can’t know for sure, only especulate. Still it’s a fair assumption that if that kind of data was easily obtainable they wouldn’t use Watson in the first place. You get what I’m saying?

Each “object player” have states, those states can be related with other object states. Those interact with each other for short periods of time. Those states are discarded after grace period of time. Using watson to fetch those data related to Player A as Hanzo killing with Storm Arrows the Player B as Moira and count the occurence of it on each match, getting how many times on “the season” happened it can be done. Outside of the match will be not that easy, mostly because they wouldn’t link Player B deaths as victim of Storm Arrows, that particular “stat” would be on Player A without any reference of Player B, while Player B would have only “death” without any reference of Player A.

Having a smaller sample and the compute power of Watson you can get that data being fetched, treat that data and relate it to a specific hero it’s doable. Stat that otherwise would just say: “Player X killing with Storm Arrows” instead of “Player X killing with hanzo’s Storm Arrows particular hero or player”

My argument it’s that most likely they don’t have particular data, without watson, similar to those examples:

Those are state data, not raw data. They don’t preserve state data. It’s how their code works. That’s why using workshop you can by example put several players or bots to sleep if by example those players are tank role. You can effectively make all tank heroes in a single match be at sleep state or just being killed. Each state data gets “erased” and not saved. What you save it’s consequence, like I mentioned above. Hanzo has stats on it’s Storm Arrows killing but not stats of it’s victims, because they don’t save that kind of data and perk around it, at least as far they explained on GDC conference.

Well, where he is and what happened with his game? Makes me sad that he had a good intent and idea, but money dictates the world.

Unless they change how to interact with states and decide to save them, folks wouldn’t be able to fetch that kind of data from it. I think I explained better this time, why.

English isn’t my first language and I often interact with several ones at same time, can be tricky to type properly while doing other stuff.

Which they are being careful about it, after “DOTA” some changes were done to protect their IP, takes awhile for them “to prevent” those kind of events. I can’t say “they’re wrong” by adopting that kind of defensive instance tho.

People could create really good things with that, so people doesn’t like. Simple as that

I can tell you know what you’re talking about, but it doesn’t seem like we’re on the same page. It feels like we are talking about two different concepts, so I don’t really think it’d be useful for me to respond :confounded:

1 Like

What I meant:

They can’t give data they don’t persistently save. Certain aspects you asked they save on “states” that aren’t saved anywhere on a physical disk by example, was a temporary allocation on the memory. Unless they put more fields on the database to save those data. The api will not fetch that kind of data. If they had those data, they wouldn’t need Watson to give those data on OWL.

The game doesn’t have a “storage” location for it, it’s a temporary state that most likely Watson catches.

Having a powerful API, wouldn’t provide most of the data you considered, because wouldn’t be able to fetch it.

I appreaciate the kind response even if you couldn’t understand what I meant on the previous post.

OW2 deserves developers… that care about overwatch

1 Like

I want it, alongside mod support for PvE, but both are unlikely as hell.

1 Like

More importantly than a developer API: some public, anonymised stats about Competitive mode would be fantastic. Things like hero usage, winrate (per hero, per map, attack/defend, mode, etc).

1 Like