I created a Heroes of the Storm Automated Spectator


I have worked on an automated spectator for Heroes of the Storm.

It uses the .NET Heroes Replay Parser by Ben Barrett (who was the original creator of HotsLogs) in order to calculate who to focus for each second in the game and uses a weighted system based on kills, proximity to enemies, camps, taunting (such as dances, or even bstepping).

My spectator is not perfect, but it seems to be good enough for now.

With thanks to the community, who have been uploading replays to HotsAPI, HotsLogs and now ultimately Heroes Profile, all those replay files are accessible from S3, with thanks to the Heroes Profile API, I can consume those replays for the project.

I have an AWS account and I pay to download each replay, its not free since they are hosted by Amazon S3. We’re talking pennies at the size of data, since the Mb for each file is not really anything more than 1.4mb. So its not FREE, but its extremely cheap to consume replays. Running the machine streaming it will be a much bigger cost I am happy to take on as a side project.

The code is open source for others to view and learn. It uses several other libraries, some provided by other developers who have an interest in creating third party content for Heroes of the Storm.

I am running a full dedicated machine in my own home to run this on OBS. Maybe in the future it can run fully on the cloud but for now, its a small project.

The Replay Observer/Replay Interface is a slightly modified version from Ahli, who created the UI in the game and now the UI being used to spectate/observe games on Twitch since the Default Observer UI isn’t quite as good. Thanks to Ahli, I have managed to hide and tweak the UI to make it much more friendly such as completely hiding chat and removing player names where it’s possible.

I understand the player name tags are not visible and so its not possible find the identity of a person so easily thanks to the blizzard #tag at the end, but i still want to do my best and promote watching and calling out hero names rather than individuals.

The “Brand” of the project is under a Twitch account called SaltySadism. But the Project itself is Called HeroesReplay. Yes, I did think about saltymurky as a name but I like Alarak too much.

Basically, this is what it currently does:

  1. It talks to Heroes Profile to get the latest version of the game replays.
  2. It filters those replays to Storm League games
  3. It downloads the replay from AWS S3.
  4. I analyse the replay file to build up a list of focus targets for each second of the replay. I then talk back to Heroes Profile to display the MMR Tier and Bans and show this on OBS.
  5. I launch the game client and load the replay.
  6. I use OCR to get the right hero to target based on the current game time.
  7. Once the replay ends, the game is closed.
  8. Go back to step 1.

What I plan on adding next:

  1. A cooldown period between each replay that is streamed
  2. 1 to 3 minutes, where there is some interlude music and showing a summary of the previous game, such as bans, XP breakdown, the stats of the game etc.

Potential Future plans:

  1. adding a twitch chat currency for voting on which team wins or loses. I will give viewers 2 minutes to decide and place bets (using twitch chat). Similar to salty teemo, a summary screen would show who bet and who is the top of the leaderboard on bets.


Github link: Heroes Replay (github.com)
Twitch link: SaltySadism (twitch.tv)

1 Like

This is pretty cool, you should link this in general so that everyone can see if your still working in it.