It’s been a while since I’ve written anything here – I’ve been busy doing things like moving to Texas, getting married, and developing replayr.net - a new website that I’m really excited about!
Replayr is all about sharing Starcraft II replay files. The Starcraft II community has these popular people we refer to as streamers. Streamers use a streaming service (typically TwitchTV) to live stream their play sessions so that us mere mortals can observe and (hopefully) learn something from their play.
Every time you finish a game of Starcraft II, a replay file is saved on your computer which contains all of the commands necessary to replicate that exact game from start to finish. It’s a really cool feature – you can fast forward, rewind, play the game in slow-motion, and freely observe the action from whatever perspective you wish. Naturally, these replay files are great tools for learning how to improve your game. Recently, Blizzard has added even more features to replay viewing, which makes replay files all the more important and powerful.
You can read the entire story over at the replayr.net blog, but I basically had an epiphany one evening and decided to build Replayr. Here’s a technical overview of how it works:
- Streamers create an account on the website, and install a Silverlight trusted application called the Replayr.net Uploader.
- When a streamer starts their stream, they also fire up the uploader and sign in with their credentials.
- The uploader periodically scans for new replay files in known locations for Starcraft II replays. When it finds a new replay file, it uploads it to Replayr via a REST API.
- The replay file is processed using Nmpq.Sc2, and saved to a database.
- A notification is sent using SignalR to browsers that are viewing the live replay feed. This notification gets replicated across a web farm via Redis.
Since individual Starcraft II streams can garner anywhere from hundreds to over ten thousand simultaneous viewers, I am using EC2 to dynamically scale based on demand.
It’s a pretty simple concept, but I’ve been really excited to work on it. We will be launching a public beta test as early as next month!