No WoW Updates

Man, I have been waiting and waiting for SOME bit of news to pop its head out, but it seems with MoP firmly set to release next Tuesday there is nothing new to say. I am going to have to scrimp and save to find time to actually grind Rey up. Time has been hard to come by of late, and to be honest I have spent most of mine doing non-WoW related things. The powers that be finally released Black Mesa Source (and I highly recommend this game to anyone who: 1) never played Half Life, 2) played Half Life and loved it, 3) played Half Life but hated the graphics; essentially, I recommend this game to everyone).

Black Mesa is a completely beautiful remake of the original Half Life in the Source Engine (the graphics engine used for Half Life 2 and all the episodes). To say nothing else about the game, the graphics improvement is absolutely breath-taking. I loved Half Life, though I only played it a few years after its initial release. In fact, by the time I had played it, Blue Shift and Counter-Strike (and a number of other mods) had been in the wild for a good while.

Which brings me to my next en devour that has been taking up all my time. Many of you know that I have been an avid L4D player for a good while now, but like Half Life I was (somehow) slow to the scene and only started playing the game around 2010. Sure, that is two years ago at this point, but the game was released in 2008 and had been a thriving competitive scene since then. Like arena, I thrive on competition; this stems back from the days of playing Counter-Strike in Cal League and getting to a rather high division (though not Cal-I; made me sad... that was my Gladiator aspiration circa 2000). Unfortunately, the competitive scene for L4D has pretty much gone the way of the competitive scene for Counter-Strike 1.6; that is, it is now dead and gone.

However, there is still a rather large community that still participates in competitive scrimmages from time to time, and if I am ever in a pick-up game with randoms and find one of these people, they will usually start kicking the baddies to make room for their friends for some competitive pub-games. It really is fun to do a lot of the time, but the problem becomes that unless you know someone, you are forced to use Valve's dedicated servers. Now, do not take this the wrong way, but there has been a lot of plugins/mods to improve the state of the game (competition-wise) since the release, and somehow Valve never got around to implementing these until a few weeks ago -- but they only did it for L4D2.

So, this got me thinking that I would just run a L4D server on my work machine when I left for the day. My machine is plenty powerful enough to run a top-notch server, and we have plenty of bandwidth to support it, so it was pretty straight-forward to me. The problem, I found, was that almost none of the competitive plugins were readily available online via Google searches. I have to admit, this has not been a problem for me in almost 15 years: wanting something that I know exists online somewhere and having no idea how to find it. Eventually, even though I had installed and set up my server on my work machine, I had to admit defeat since I could not find any of the needed plugins. After a long process of trying to come up with other solutions, I finally decided that I am a computer programmer and should see this as an opportunity rather than a defeat. There is no reason, given that I know exactly what the plugins I wanted do, that I could not simply write my own versions for each. So, that is what I started out doing.

The first plugin I wanted was something I had seen on only one or two servers before, and they were (like my workstation approach) often offline unless the owner wanted to spin them up to play. The plugin was a module-loader of sorts; it would respond to votes cast by chat communications. For instance, if there were only two players on a server and they wanted to play one on one, they would both have to type "!load 1v1" in chat and it would cast each vote, and after a short time (or after all players voted) it would decide whether the majority wanted to load the 1v1 module, then load it. This was really the lynchpin of my plugin wants and truth be told, I could have gotten around the rest missing with simply being an admin, but the compulsion to have this module overwhelmed me and so I wrote it myself.

Having 2v2, 3v3, and 4v4 configs was enough for those game styles since everything they required could be set up in simple configuration files to be loaded via the load-module, so once I knocked out the load-module, these configs came naturally. However, in 1v1 there are a special set of rules that were enforced on the servers with the original 1v1 module - no wall-kicks from hunters. For a little background, a wall-kick is something a hunter can do if he has not touched a player and has a "loaded" pounce ready (which simply means that he has pounced and come in contact with a wall). If all of these are true, then a hunter can run around silently, jump into the air with his back to a wall silently, and pounce off that wall as if he were doing a standard wall-pounce. What is more important is that hunters spawn in "loaded" to pounce, so there is a distinct advantage in a 1v1 game where a hunter can run around completely silently and make a last-second pounce on a player without that player having time to react. I ended up writing my own version of this as well; it seemed simple enough to put a small timer on a player when he jumps (if he's a hunter) and if he successfully uses a pounce within a short time (a half-second seems to work best), then he likely did a wall-kick and is killed (don't worry, the spawn timers are extremely short in 1v1; this penalty is usually learned once and then adhered to for the rest of the game).

The next plugin I wrote I do not think I actually ever saw in the wild; it might be all my own creation. Essentially, L4D is fun to play as an infected, but the game really opens up when you start getting amazing at the survivor side. In L4D1 (as a polar opposite to L4D2) the most effective infected unit is the hunter. Capable of landing one-forth of a players health in one hit and able to deal it all if not cleared quickly, the hunter is worth practicing both as and against. Learning how to deadstop, or "ds", (hitting a pouncing hunter with a melee thus stopping his pounce) is an extremely effective defensive tool. The more advanced players can also, using a shotgun, land a shot that will instantly kill the hunter mid-pounce, though this is much more difficult. Shooting a hunter out of the air as he comes to deal damage to you (very quickly, might I add), is called a "skeet"; so named for skeet-shooting -- clay pigeons and the like. I am reasonably good at deadstopping hunters on the damage-pounces (pounces from larger distances do more damage; the most being 25 of a player's maximum 100), but my skeeting needs work. I though of another loadable module for the server and decided to write a plugin that would make it so that players had infinite health, but when a hunter pounced a player, the hunter would be slayed and information (remaining health, etc) would be sent to the would-be skeeter.

One problem with the skeetpractice plugin was the no matter how I set up the server configurations, I could never get it to reliably allow a player to switch teams more than once. Essentially, if the game randomly put you onto the survivor team, you switched to infected, and later you decided you wanted to practice yourself (more hunters joined or what-have-you), you would have to reconnect to the server to pick survivor again. This is terrible, so I ended up writing a plugin that would allow anyone to type "!infected", "!survivor", or "!spectator" to switch to those teams. This is another plugin that I had seen on a few servers, but for which I had never been able to find the plugin or source code.

Similarly, in competitive games, there is the expectation that there will be a tank on ever chapter of a campaign, which is easily controlled via a server configuration. I had been on servers that reported who did what damage to the tank after the tank had died or the tank had wiped all the remaining survivors. Again, I could not find this tank reporting plugin, so I began writing my own yesterday and finally got it working last night. It still requires quite a bit of polish before it is ready for an actual game (the numbers need to be ordered descending, there are some colors needed, etc), but it works and as opposed to the versions I have seen in random games, mine will show the report in a HUD rather than the chat (which is small and prone to spamming).

Overall, the coding experience has been extremely fun and rewarding. I am hoping to get my server to the point where I would be proud to show it off to my L4D buddies and actually use it in PUGs or Scrims. The "problem" is that as I continue to write more and more functionality, I continue to find more and more worth-while plugins to rewrite; I am just now considering writing a plugin for witch reporting in addition to expanding my tank report to include more information than just how much each survivor did to the tank (such as how much damage the tank did to each player, how many punches were landed, how many rocks landed, etc).

Oh, and the last bit worth mentioning here is that I am storing all my plugin code on a GoogleCode  repository. That is, my code is open source so that anyone who wants to set up a L4D server need only look to my releases (eventually) for an all-in-one package setup for a server so that no one has to go through what I did to get a server running for a competitive environment.

Bookmark and Share

Very Interesting!

I know that I said I would be aiming for writing posts for Wednesday releases, but this is too interesting to let go for too long. A hacker (and I mean this in the earliest form of the word) who goes by the handle 'Sendatsu' has posted on ownedcore that he has found tracking information in the form of a watermark on in-game screenshots taken by the World of Warcraft client. Without getting too into the details, which you can find at the website linked in the previous sentence, it has been determined that the watermark in question is not jpg compression artifacts although it seems that the developer who put in the watermark did indeed aim to make it seem that way. By default, screenshots are captured at a "quality level 9" jpg, which is a fairly destructive compression algorithm even at that "lossless" level. Kicking the quality up to 10 causes the watermark to disappear.

However, another hacker going by '_Mike' posted a hack that showed the application deliberately removing the watermark when set to a more lossless format (or a level 10 quality jpg). For those who are not following here, _Mike has essentially shown that there is an if-else block of code in the application that says "if really high quality [subtext - so we cannot blame the watermark on compression artifacts], do not show the watermark, else show the watermark". He essentially wrote some assembly code to run at the system level that patches the World of Warcraft application to never satisfy the first if-block and therefore always show the watermark regardless of the quality or image type.

A few other guys on the forum went so far as to decipher the watermarks from their in-game screenshots and discovered that the information is mostly character name, realm ip, and account name. Mostly, this information is innocuous in and of itself except that Blizzard is doing it without telling their user base in either the ToS or contract agreements to which we must agree every time there is a patch. So, if the information shown is just for tracking purposes (i.e., they can tell 'at a glance' who/where/when they are looking at), then to what end are these watermarks used?

I have read through the forum post and it seems that most people have only found screenshots as far back as early Wrath of the Lich King, but there is at least one person who claims that he might have a screenshot from 2003 (well before WotLK) that has the watermark, but he has not be able to decode it like the more recent screens; so far, it seems it may actually be jpg artifacting he is seeing in this early screenshot. Okay, so we have a time-frame with WotLK and that was the most tight-lipped Friends and Family Alpha experience to date.

My guess? I would say that this was put in place to try and fish out who was leaking the early alpha screens to the various rumor sites at the time. The Burning Crusade had the same type of NDA during its alpha/beta phases, but it was basically Blizzard's first go at an expansion and keeping the lid on such a huge project (remember that it had 6+ million users at the time of TBC's alpha all clamoring for info and that population was still growing). When WotLK came around, Blizzard knew what was to be expected of their FaFA NDA, so they probably put this watermark trick in place to see who was the leak. Basically, posting a screenshot to one of the wow rumor sites that was never wrong (I do not recall any of the sites urls, sorry) would show the public an image with that user's account information. As soon as Blizzard sees the screenshot, they run it through a tool they designed and they know exactly which account is to blame.

It is probably too early to tell whether or not there is any real malicious intent from the watermark, but the feeling I get from the examples posted so far seems like tracking in the most devious of cases and probably nothing more than a staple to catch leak-prone insiders. That being said, I will continue to follow the story and post more as information surfaces.

Bookmark and Share

Sorry Kiddies

I went out of town and completely forgot to post anything about the late post this week (and no post last week). That is my bad :-(

Let us get down to business! Guntir and I walked into the 5.0 servers last night for the first time to see what BGs felt like. To say nothing of the hilarious damage getting dished out by some classes *cough*mages*cough*, the 'new game' plays very differently than the previous one. Damage feels a lot slower, which I have always felt was a good thing, but it seems like just about every class and their mother has gotten a cooldown-based self-heal.

Wait... wait... let me back up for one second here. Let me explain something: while I try and play all the classes to some extent and even try and pay attention to all of the various changes happening across all classes, I cannot keep up by myself. I know the Feral changes inside and out at this point and I feel like I have a pretty firm grasp on how Priests will play out, but I have to say that any other class is largely a mystery outside of my cursory knowledge. I know Warlocks will either be DoT-based, Nuke-based, or Pet-based, I know that Rogues will continue being a thorn in my side, and I know that Warriors will continue charging over and over again and dealing rather strong damage while on a target. What I do not know is the specifics of the changes to every other class out there.

That being said, I feel like Feral became a hilarious BG machine. Feral has so many gap-closers that it really should be seen as unfair. A 15s cooldown Wild Charge being the mainstay of the issue. I need to start getting my addons back in place -- mainly my unit frames and nameplates addons as those are the ones that I really rely on for gameplay visibility. I had no idea what debuffs my opponents had on them at any time last night; I kept finding myself applying Rake over and over again because I did not recall whether I had applied it recently or not. Once I get my unit frames back up and running, I should be off to the races again.

One thing that is really annoying is that I have to apply SR again in PvP and really pay attention to it in terms of applying my bleeds. Blizzard may think this is a good design, but I am quite sick of it in PvP. Also, and Guntir is right on board with me on this one, we completely forget about new abilities regularly. I continuously forgot that I had Mighty Bash and Tree Posse, though I was using Mighty Bash much more often, and I had the macro of Cenarion Ward to Guntir, but having to press it every 30 seconds when we got into combat was a bit hard to remember, particularly under heavy stress situations. Toward the end of the night we started getting back into the swing of things; I was getting used to the SR rotation, applying bleeds, and trying to deal meaningful direct damage, and Guntir was healing like the best of them and coordinating moments of nuking.

Overall, we both liked how well Feral and Discipline meshed together. I had taken Glyph of Cat Form and was taking enough healing to get by, and even without Symbiosis (Dispersion), I was having a pretty straight-forward time surviving between Barkskin and Survival Instincts; I had Might of Ursoc on my survival-buttons-bar, but I never found a need to use it. I felt like my burst damage was a bit lacking, but that could be due to my opponents having hitherto unknown survivability buttons (like Warlocks having a 30% self-heal) as well as not having the level 90 PvP gear and thus missing out on Ravage. Tree Posse still feels like it does pretty good damage coupled with a 5s stun, but my Shreds just did not feel like they were hitting very hard, and FB really relies on being used at 50 energy to deal meaningful damage.

Bookmark and Share