How does League Replays (unofficial) record full League games using such little CPU?
Please don't shy away from the technical details!
league-of-legends
How does League Replays (unofficial) record full League games using such little CPU?
Please don't shy away from the technical details!
I don't consider Nasus a true tank - he has no real Tank abilities, and serves better as a Tanky DPS / Anti-carry. That said, here's a list of the heroes I consider true tanks in the current metagame.
I'll grant you that Alistar's hard to play optimally, but when he is, the bull's a force to be reckoned with. Two hard CCs (neither affected by Merc Treads). Triumphant Roar makes him an excellent pusher, and his Ultimate and high base health make you an excellent damage soak. Additionally, little of his power comes from items; Pulverize + Headbutt is really good even without any bonus from AP.
Amumu's got two major things going for him: He's a great initiator, and he's a tank who can jungle and gank effectively. Due to the experience bonus, most top teams have a jungler on Summoner's Rift, and Amumu's one of the better ones. He also has two hard CCs in bandage toss and his ult, which can make escaping from him quite difficult (not to mention keeping folks within Despair for longer)
Poor Cho just get nerfed pretty bad in the Nocturne patch, losing substantial damage numbers from feast. That aside, he still is a decent (if not a first pick) tank with a skill shot initiation ability (though Rupture is more easily dodge-able than some other initiators) and an AoE silence. There's also something to be said for the psychological and mechanical effects of having the largest model on the screen. You'll be shielding your allies from attacks simply because your opponents can't find them to click under a fully-feasted Cho'gath. After you've maxed your feast stacks, try using Feast earlier in fights rather than later: it does true damage, and it's a pretty sizeable nuke - carries especially tend to panic when 1/4 of their health (or more) suddenly vanishes.
Mana-regen problems aside, Galio is a strong Tank. His most notable skills are his Ult and his Gust -- an AoE taunt nuke is especially powerful when combined with other AoE ults, such as Annie, Amumu, Morgana, Malphite, etc. Gust is useful both as a chasing mechanic and to help allies escape. Unfortunately, opposite-but-otherwise-like Rammus, Galio's usefulness tends to diminish in matches with primarily physical damage where he can't make full use out of his passive.
Garen is not a "typical" Tank, and works best as an Offtank due to not having a strong initiator or CC other than his silence (which is pretty useful in and of itself). Garen's a tough character who can bring a lot of damage to a group of enemies between judgement and his iconic sunfire cape. His ult is interesting, as it can be difficult to judge when to best use it, though some players dislike it because of its tendency to "steal" kills.
Gragas gets a damage reduction, an AoE Slow, Area Denial, and a massive radial knockback on a relatively short cooldown. He works well as a tank (consider starting with a rod of ages) because of fight disruption alone, and drunken rage and happy-time give him quite a long longevity as well, making him a passable pusher.
Malphite joins Cho in having been hit with the nerf-bat in the last patch, but is still a strong tank. Like Amumu, Rammus, and Shen, Malphite can jungle effectively, and has a combination of an impressive initiator, and a damage-dealing skill that scales off of armor (so even building straight tank items, you can deal a hefty sum of damage). With his Q, he can be especially effective by tunnel-visioning enemy carries.
Maokai is a great tank based around team fights. His ultimate is an AoE damage reduction, which when strategically placed, can turn the tide of fights. He has a snare, which is great to gank with, or focus down the enemy carry, a small AoE slow, and a really strong harass with his ranged sapling. His passive makes him have a very strong laning presence. After every 5 abilities, his next auto attack heals him 7% hp. This is also a incredibly useful skill in team fights, giving him huge survivability potential.
Mordekaiser can be an incredible tank, especially if he gets a few early kills and gets an item and level advantage over the other players. Though I've heard of folks jungling as Mordekaiser, I prefer to see him in a solo lane, where a good player can easily 2 v 1 by abusing Iron Man (well, perhaps less easily, depending on the opponents, but I've seen it done across a number of games). Make sure to get some AP to go with the Kaiser - Rylai's or an Abyssal Scepter and Sorc Boots make for a very offensive tank, especially in the laning phase where his short cooldowns make for an easy harass.
When built properly, Nunu makes a great off-tank. The thing you have to realize about Nunu is that the slow on his E is insane. It's 70% I think at rank 5? If Nunu catches up to you alone, you are not getting away from him if he has the mana to continually iceball you. Also important to note is Consume - the health it restores is not insubstantial, and with a Will of the Ancients, you can easily recover half your health every 10 seconds or so.
Rammus has everything a tank needs - a damage reduction ability (defense curl), an intiator paired with a slow (powerball), hard CC and target peeling (taunt), and team fight presence (tremors adds up fast!). Did we mention that he could jungle and his taunt has a relatively quick cooldown? A top pick for sure.
Shen is probably up in the top 3 with Amumu and Rammus when it comes to tanks (in my mind at least). If you can learn to correctly handle his Energy (which can be a little tricky to get the hang of at first), a good Shen player can be phenomenal. He's got a damage shield, an AoE Taunt, and a global ult / ally savior mechanic. One thing to note is that you don't want to build dodge on Shen - build armor/MR and health instead: it makes his passive come up more often and for more damage.
Finally, Singed. Singed is known for running really fast - make sure to take ghost, as it lets you spread your poison much more handily without having to path around enemies. As singed, you want your opponents to chase you; with your ult you're more than likely faster than them (and insanity potion lasts for an unmatched THIRTY SECONDS) and they'll kill themselves on your poison trail if they chase you for too long. Of course, when they finally break off, that's when you turn around, stick 'm with your adhesive, and then fling 'm behind you into more poison. Fling is an okay initiator, though it takes practice to make sure you're not accidentally throwing the enemies away from your team.
I would say 99% of the time you should go after the largest minion first. Especially in the case of the minions with buffs you should always aquire the buff, which will probably in turn make killing the other minions a bit easier. The killing order overall and the groups you should go after first is based on your skills and your champion, but after your first run through all of the camps you shouldn't be worrying about taking the beating. Also,if you're concerned with taking too much damage ask a teammate to leash the big guy for you.
Best Answer
To the best of my knowledge, the League Replay software operates in the following manner.
During the game, LOLRecorder.exe uses the Riot API to find the game ID and other identifying information such as the region, and then starts a new connection with the riot servers in the background as a spectator of your current game. It then captures the network traffic from the server while observing your game and saves that traffic to a file along with metadata about the game (e.g. which champion the recording player was using, the game length, win/loss, etc). The format of this data is unknown to me, but it is stored in a way that LoLReplay can understand and later playback.
When you replay a recorded file, LoLReplay starts a server on your local machine which will playback the data in the recorded file and launches the standard LOL Client with instructions to spectate a game and to connect to that local server (rather than a Riot server). You can actually verify this by starting a replay and then checking the details of the 'Leageue Of Legends.exe' process. You'll see something like:
You can see the parameter referring to "spectate localhost ...." which instructs the LOL client to make a loopback connection to the LoLReplay program itself.
To answer the secondary part of your question, "how does it use such little CPU", it's because it's simple streaming the information from the Riot Games Server about the spectated match directly to a file. The data itself is not very large (maybe 15MB for a 60 minute game, which averages out to 4 Kb/s) and LoLReplay doesn't need to process this data in any way whatsoever, it simply has to save the data. These two factors mean that LoLReplay can operate in the background quite easily without impacting your game!
This answer provides a technical overview of how the LoLReplay application works, but there are many more details and nuances that I haven't mentioned here or simply don't know. For instance, the application was much more complex before Riot introduced the ability to Spectate games (LoLRecorder had to capture the network traffic containing the outgoing commands of the player as well as the incoming traffic of the game state from the server, and then launch the local server and replay the players commands to itself while also running the normal Riot Games LOL Client against this local server. It was glitchy, to say the least, but it worked!).
If you want to explore more, you could grab a free demo of Red Gate's .NET Reflector and take a look at the source code of LoLRecorder.exe or LoLReplay.exe!