PKHunter Postmortem

After a long run, Asheron’s call has finally shut down for good. As such, I’ve also shut down the data processing for the 2 related site’s I’ve run for ~15 years:  TrophyHunter and PKHunter.  Here’s a post about statistics, info, and details about PKHunter.  At some point i might do a similar post about TrophyHunter.  There’s a little less stats involved there, but the final kill map looks a lot more like Dereth than the PK-only kill map Smile

Some stats

First processed update 10/20/2002 10:01:02 pm

First tracked kill: 10/18/2002 12:04 am Shrek-Pk killed Sigma Cubed (a test character I had on DT)

Last processed update 1/31/2017 10:00am

Last tracked kill: Elder Slug killed Plazma Infuzion on Darktide at 9:02 am on 1/31/2017

Total service time: 5218.5 days = 14 years, 3 months, 12 days, 12 hours

Downtime between eras: 565.66 days = ~1 year, 6 months, 16 hours

Active service time: 4652.84 days = ~12 years, 8 months, 12 days, 4 hours

Total submissions by users: 3,121,839

PKHunter had a very active first 3 years. Incoming data almost doubling each year.  Then?  World of Warcraft, and a delayed expansion (which broke 3rd party tools) decimated the player base.

submitted player kills

See that big dropoff starting after August of 2004? That’s when a lot of people seemed to get into World of Warcraft betas. WoW officially released in November of 2004.

Legacy PKHunter Era

The original plugin (C++) until the “Throne of Destiny” update in July 2005. Originally, PKHunter was envisioned as a “ladder” system, like in chess. In order to move up the ladder, you have to kill someone above you on the ladder. This didn’t work very well because of how AC tracks kills. One person might get the kill “shot”, but someone else might have done the majority of the damage and has “looting rights” to the corpse.

First tracked kill: 10/18/2002 12:04am Shrek-Pk killed Sigma Cubed (a test character I had on DT)

Last legacy kill (2): Mage of Cruor killed Heltik and Spiritual Frenzy II killed Lamir at 1:04 am on 7/18/2005.

After the ToD update occurred, the plugin system that PKHunter (and all the other plugins used) called Decal, was broken and unavailable for nearly a year. Even after it was available it took me a while to learn C# (which was relatively new at the time) and convert the plugin to the old C++ plugin to the new version of Decal.

legacy player kills

Modern PKHunter Era

The 2.0 plugin (C#) released after the ToD update was released on 2/3/2007. The scoring First modern kill: 2/3/2007 ~5:07 pm. In the new system, killshots were tracked separately from the kills according to looting rights on the corpse. A killshot alone was worth 1 point, looting rights worth 5. so you could get 6 total for a kill. The 2.0 plugin also recorded monarchy+patron information, location of kills, and kept track of who witnessed the kill. (everyone who submitted the kill), where the original one only kept the record of “x killed y” but didn’t track who submitted that. The website was updated to be able to show kills on a map. I stopped actively playing AC, and basically just kept the site running, never actually finishing a lot of the “todo” things that still show up on the website.

First tracked kill: Magic-Tcm killed Eggburt of holtberg at 5:07 pm on 2/3/2007.

Last processed kill: Elder Slug killed Plazma Infuzion on Darktide at 9:02 am on 1/31/2017

modern player kills

Character stats

PKHunter has a record of every kill that was witnessed by anyone running the plugin while playing. Because the scoring methods were different in the 2 eras, there is a “modern users” and “legacy users” table with statistics:

modern legacy
total characters 243,541 186,224
characters submitting updates 93,435 73,543
% characters submitted at least 1 update 38.4% 39.5%
distinct update sources 14,407 15,203
estimated characters/person 6.5 4.8

64,505 users were seen only in the modern era, and 7188 were only seen in the legacy era, leaving 179,036 characters that were seen over both the legacy and modern eras. That means ~73% of characters who’d played prior to ToD in the legacy era were also seen at some point in the modern era, even though there’s a gap of a year and a half between those eras! AC players were dedicated!

Interestingly, it appears that in both eras, nearly 40% of tracked characters were using the plugin at some time and submitted at least one update. By tracking submitted updates, it that most players were submitting data for 5-6 characters across servers.

tracked characters

The drop in users was a bugfix and cleanup of duplicated users that had slowly occurred over the lifetime of the service, see below.

modern legacy
total kills 508,197 3,334,239
total suicides 70,776 65,241
kills by “suicide” 2,372
suicide rate 14.4% 2.0%
total witnesses 669,224
average # witnesses 1.3
most witnesses of a single kill 38
suspect kills 889

Even though there were eventually more players tracked in the modern era, the legacy era players were a lot more active. There were 3.3 million kills tracked in that 3 year period, compared to 500k kills of the last nearly 10 years!

The suicide rate seems to be a lot higher in the modern era. This might be because of the kill/killshot distinction? Not sure. Strangely, it wasn’t until relatively recently that I realized that while I was tracking suicides from killshots, it appears that a player named suicide appears as a killer as well, as the “killer” that got kill credit as well, but wasn’t properly filtered out by server processing. On Darktide, the “suicide” character on that server ended up being the #17 overall rated player, with a lifetime perfect 1758-0 kill/death ratio.

In the modern era, most kills were submitted by more than one person, with an average of 1.3 witnesses for every kill. In many cases, this is probably from both the killer and victim submitting information.

The most witnessed kill was submitted by 38 people, when Rawrsticks killed Biffard R Nasty on 2/8/2007 on Leafcull.

Of all the data submitted, there were only 889 “suspect” kills, generally where submitted data had some kind of issue, usually when a player showed up as being killed twice (or more) in a period of time that shouldn’t have been physically possible given the time it takes in AC while a player is “safe” from being killed. I have an unconfirmed suspicion that some of these might have occurred during things like Daylight Savings Time, where that same hour occurs twice, and maybe kills during that time could get really confusing?

tracked kills

I believe that jump in kills in 2009 was a backlog of a couple weeks of unprocessed data due to hardware failures and rebuilding the database?

Patron / Monarchy stats

Asheron’s call had a very unique patron/vassal and monarchy system, where players pledged fealty to a higher level player (their patron) and fed a percentage of their own experience points up to their patron, based on leadership and loyalty skills. The patron player could pledge to another higher level player, creating another vassal:patron pair. This could continue up until someone who had no patron, and that person was the “Monarch” of a tree of players.

Since the modern era plugin collected vassal and monarchy information, with kills, we can see some statistics of that. This information is probably incomplete and possibly inaccurate. People could change patrons, etc, so this is just from some simple queries against the DB that don’t take any of that into account.

Player with most vassals: Drunk Al-Night had 52 vassals with 437 total kills

Player with most effective vassals: Imor had 2 vassals with 5866 kills!

Monarchy with most players (and kills): Ocom had 580 monarchy members with 12026 kills!

The most dangerous place in Dereth

It appears that the most dangerous place for PK players was near a lifestone up by the Empyrean Ice Propylaeum, in the north east corner of Dereth, which isn’t intuitive to me. There are some cottages and mansions nearby, so I’m not sure if that was a thing I never got into, or if the landblock+coordinates there are actually inside a dungeon, so it just shows there on the map. Some of the other hotspots are near starter cities, near Holtburg and Cragstone, which makes a lot of sense to me. Given that there is an amount of deaths shown in the water in the Inner Sea, I have a feeling a lot of those are actually landblocks that represent the inside of dungeons. If I find time, I really want to generate a higher resolution, more accurate version of this map. (or if you want to, let me know!)

most dangerous places

Technical Specs

The original Decal plugin was written in C++. The backend had a website written in PHP, with a mysql database, sitting on top of Apache on Linux, in the early days, making it an old school “LAMP” app for a time. Later on I moved to IIS when I moved from linux to Windows Server, which eventually I migrated all to a VM on Azure instead of running out of my home office or garage. The backend processing was done by an hourly script which invoked processing done in Java. The modern version of the plugin was written in C#, and lived and worked for almost a decade without any updates. Over the years the source was in subversion, then TFS (tfvc). I believe I also tried Perforce, but wasn’t a fan. I’d really wished git would have existed at the early days, but git didn’t show up until 2005, and wasn’t commonly popular until well after that. I moved from subversion to tfvc at some point because I was used to a centralized repo that could be backed up seperately than how I’d been doing subversion and copying repos around. I have many random versions of the code in various forms, but I’m almost positive that I couldn’t build any version of it today if I tried!

At some point (~June 2009) there was a massive hardware failure, which took out the machine hosting the site and the database. I had the code backed up, but had to build a new machine and rebuild the database from a backup. I even sent one of the hard drives off to a disaster recovery company to get what data off of it I could, as it had other things backed up on one that I wanted to save. At another point, an upgrade of PHP (December 2013?) introduced a method into the PHP built in runtime that had the same name as a method I had in code, (which actually did the same thing but subtly differently) that also broke things for several weeks until I figured out what was going on.

Over the 14 years, the service ran on various hardware: a linux box in my home office, then a couple different mini atx or then micro atx machines in my office, then later in the garage once my office became a nursery. For a while, the hardware was in a custom PC I’d built into an old Mac Plus, complete with an LCD screen where the original Mac CRT had been. After overheating / airflow issues, with that, I built a server machine in a standard case, and that lived in the garage until I moved everything to an Azure VM instead. I looked into converting from mysql and php to sql server and on Azure, but at the time there were limits on sqlazure that would have made it problematic.  That, and i wasn’t actively playing anymore, so even testing any of my changes would have been a problem.

The plugin submitted data regularly while playing, either every 5 minutes (iirc) or when a certain number of kills were seen, or when a user logged out of a server. These submissions were batched up and processed hourly. Unlike the “Trophy Hunter” service kills weren’t processed real time. In the legacy days, since things were a ladder, kills had to be processed in sequence, as killing a very high rated player could dramatically affect your score, so if someone else saw your death, and logged off (submitting that death) before you hit the 5 minute autosubmission of a kill you’d had 4 minutes ago, it could have drastic effects on the ladder. This was one of the reasons I went to a straight up point version in the modern era. Now that there’s no new data being submitted, someone could re-process the data using one of the real ladder algorithms and come up with a final ranking if they really wanted to. Batching things up also generally ensured that any duplicate submissions were processed together.

Random telemetry

In the early days, I had google analytics hooked up for tracking, and hooked up google adwords to try to cover hosting expenses or domain names or something. I believe I got one payout from google when I hit the $100 minimum payment value. I never got anything from google about my account after that payment. I believe at some point they “lost” my payment information and stopped attempting to pay me. At some point I got notification that my account was now “dormant” for too long, so all of the unsent money went to the State of Washington and I have to do work to collect it from them? How convenient, that they couldn’t get a hold of me by any means until that mail. I used google analytics every once in a while just to see usage, but that’s about it.

In late 2013, my group at work got re-orged and retasked with working on Application Insights, Microsoft’s publicly available telemetry solution. Eventually in early 2015 I added Application Insights telemetry to the service and the website using the PHP version of our sdk. Within a few days of doing that, I’d found 2 bugs that had apparently been in the backend processing for probably a decade.

  • One bug (2 characters in a php script) meant that there was a small race condition where a user with the same name could be created twice. After that user existed more than once, the bug ensured that forever after that, whenever that user attempted to use the plug-in, they’d get yet another user with their name created. Worst case, there was one character with 5067 duplicate entries! After fixing the bug, identifying the duplicates and deleting 19653 duplicates, the plugin started working for those 13 people who’d had random failures. This is the dip of users in the chart in Feb of 2015.
  • The second bug was people failing to authenticate, because their user was showing up as named “LoginNotComplete”, either an issue first logging in, or possibly upon logging out and attempting to send a submission? I’m not sure when this started happening, but it was probably some change in the AC client. Once I found it in failure telemetry, I found a way to work around it in most cases.

In Sept of 2015 telemetry also showed me that something was wrong as all submissions dropped to 0. I worked backwards through all my stuff, only to find out it was a massive AC server migration, so nobody could play, so nobody could submit updates.

The end of telemetry. There’s an interesting little uptick of PK activity the last day or so before the shutdown. end of processing

Posted in General Tagged with: ,

MetalCloak “Gold Standard” lift install

For a while, I’d been looking at options for a “small” lift for my jeep.  Nowadays, there are an infinite amount of options, from leveling kits, to suspension lifts, to body lifts, offered by tons of different vendors.  After setting a budget and evaluating all my options, I’d eventually settled on something.  And then a post on changed my mind.

MetalCloak adopts the “Gold Standard”

Every once in a while, MetalCloak has done this special package where if you pay with 1 ounce of gold, they’ll sell you a 2.5” – 3.5” lift kit at a pretty good discount and give you free shipping.

So I went on the local hunt for gold, and eventually found a 1oz. gold bar, and shipped it off.  A few days later, the lift was here in all its pieces and parts.  It came in 6 separate boxes delivered by 3 different UPS trucks on the same day.

A few weeks later I finally had time to install it, with the help of “the Garys” from the Northwest Jeepcast podcast.  I went over to Gary’s garage, which they call the “Mechan-hack shack”, where they had all the tools (and knowledge) to do the install.

pieces, parts, and tools before the install.  look how clean the floor is!


Work begins.  the front wheels are off, the front end is up on stands, and a jack to hold the front axel while we start taking things off.  a hilariously small amount of tools is out and on the ground so far…


by here, a bunch of things are out, and we’ve already replaced the brake lines on this side with the new (red) ones.  time to start putting things back together.


control arms comparison.  the new ones are much cleaner, much shinier, much heavier and adjustable.




springs and bumpstops are in, and the shocks are going in.  I swear every picture I got of Gary he looks like he is mediating.  He might be, I’m pretty sure Jeep things are where he finds his Zen.


most of the install was pretty straightforward.  I’d never done anything with brakes or suspension stuff myself before, but once you get things up off the ground and the wheels are off, most of the swapping out of parts is pretty self explanatory.  the only thing that’s really a pain is that on the passenger side there’s part of a plastic piece of trim and the battery compartment that block you from getting tools at the top of where the shock goes.  so that took a little while to dremel out just enough here and there to get everything out of the way enough to make room to get it all in.  The only other issue we had was trying to get the new track bar in.  the big bushings make it hard to just push into place, and lining things up wasn’t cooperating either. first we tried putting the bottom end in, then trying to align the top end, but we just couldn’t get things over far enough to get the bolt in.  so we took it out, started the top bolt, then used ratchet strap across the frame to the axel to pull that end over just enough to get the bolt started.  (I’ve seen some stuff online that the easier way is to actually do this step very last, with the wheels back on and with the full weight of the jeep on the suspension.  then you can rock/push the body of the jeep in the direction you need to go instead of trying to push the axel+suspension hanging up in the air?)


this is one of the few pics I got of the rear.  by this time, I think Gary is contemplating which order to do things.  the instructions have one order, but I’m pretty sure it turns out that if you do the track bar last, there’s a lot more room to get the springs in?  if you do things in the order MetalCloak has in the instructions, then I think there’s the bump stops and the track bar relocation bracket in the way on one side, and bump stops and the track bar in the way on the other side.


All done.  that’s a lot more space between the wheels and the fender than I had before!  all told, when we measured, we’d gained exactly 3.5” of height after the install, everywhere we’d measured.  (I measured from the center of the wheel to the bottom of the fender, and then Gary also suggested measuring from the frame to the ground right behind the front wheel and right in front of the rear wheel.)  We looked at the numbers stamped on the springs and the boxes to see if maybe we’d gotten the 3.5” lift parts instead.  There was also the possibility that it was the 2.5” springs intended for a 4 door JK instead of a 2 door?  The Monday following the install I called MetalCloak, and they told me that the numbers stamped on the springs are the 2.5” parts, that it would settle some, and that there was the possibility that the stock springs had already sagged some from having aftermarket bumpers+winch installed, and that the new springs were just probably handling that weight better.  That’s a good enough explanation for me 🙂

If you want to hear a discussion of some of the MetalCloak parts, and a mini interview with me while we were doing it, you can check out the MetalCloak Game Changer installation episode of the podcast.  (The kit I got isn’t quite the “game changer” kit they have, that comes with an additional set of replacement rear brake lines, and rear upper and lower control arms that the gold standard kit doesn’t come with. but we’d got the names wrong when we did the interview and they did the podcast.)


The one thing we didn’t get to when at the ‘shack was installing the brackets to hold the sway bar end links up out of the way when disconnected. it was something I could do in my garage by myself, and you don’t need to do it until you actually need to disconnect them. So a couple weeks later when I had some free time on a Saturday I decided to do them.

After disconnecting the sway bars, and getting the front wheels off, I started looking for the place to mount the brackets to hold them when disconnected.  in the picture, they show the sway bar tucked way up underneath out of the way.  so I tried to do that, and… it doesn’t go anywhere near that far:


The sway bar would only go up until it got to this pipe sticking through the frame.  When I moved the sway bars back down, I noticed this:

that shouldn't be shiny!

I’m pretty sure that tube sticking through the frame isn’t really supposed to be shiny! So over the last who knows when, apparently my sway bars have gotten up high enough to rub on that pipe, on both sides.  the bracket is intended to go forward of that, on the frame right on the other side of that mount.  without being able to move the sway bar up any higher, there’s literally no place that the sway bar end links will reach where I could mount the bracket.  so out came the dremel multimax and the little angle grinder I have.  on the driver’s side I had to cut off like 1/8” of an inch of the pipe.  on the passenger side, a lot less work, I really only had to grind it down a touch.  a touch of spray paint to cover it up, and then the actual work I intended to do could start. 

installing the brackets just requires drilling a couple holes and installing some self tapping bolts.  all done!


Posted in General Tagged with:

Fun with Spray Paint

In a random ad email from Extreme Terrain, i saw a star grill insert, and had an idea to go with the theme of my jeep. I thought: “We have red and blue spray paint…”


So i ordered one, and busted out the masking tape…


Can you see my silly mistake in masking?  i see saw it as soon as i finished spraying.  You’ll see it in a second when the masking tape is removed… 😐


My garage spray paint booth and heat lamp.


now can you spot the masking problem?  derrrrrrrrp.  i had to mask off the whole thing again just to paint a tiny blue part.  i thought about spraying some blue paint into a paper bowl or something and brushing it on, but i figured that would end up being worse than just painting that part again.


After re-doing part of the blue, and then doing the red, we have the final product, a start that looks (to most people!) like a Captain America shield. i thought about doing another white and red stripe, but it seemed like overkill.


The finished product, on the jeep.  the only “bad” thing is that the winch and bar hide a lot of the shield if your looking straight on.  But that’s ok, i wanted it to be somewhat subtle.

Fun with spray paint part 2

After how well the grill came out, a few months later i realized just how faded the shield on the spare was getting.  the red is almost pink!

So, given how the spray paint worked on the grill, i decided to try to paint the shield as well.  I’m looking for a better (metal) one, because the plastic costume one i have is both faded and cracked in a couple spots. 

masking circles is a pain

Masking circles is a pain.  Masking a really big circle like the silver ring and the center star is a giant pain.

it looks so red

Red goes on.  It looks really red compared to the pink that was there.  I’m not sure it was ever this red, even when i got it new..

needs a coat of clear

all done, masking removed.  now for a few coats of clear that will hopefully protect it some from the elements.  i’m still not sure if this clear coat has any kind of uv protection or not.  we’ll find out real fast.

done painting

the finished product, all good to go.  I was worried that the blue would look really faded after i did the red, but the blue looks pretty much fine. 

before! after!
WP_20151108_17_06_09_Pro_LI back on the jeep
Posted in General Tagged with:

What I (used to) work on: CodeMap debugger integration

Every once in a while, you run into one of those problems while debugging where you just don’t get what’s going on.  you’ve stepped through the debugger 10 times, and you see it happening, but you just don’t know why.

I ran into one of those a few weeks back, while porting one of my apps to windows 10, where sometimes, when you clicked the back button, nothing would happen.  if you clicked it a second time, it went back to the page you were on.  And when this state was occurring, there were some other strange things going on that weren’t quite right.  I’d been stepping through it over and over, and i got to a place where the same breakpoint was getting hit 2 times, with the same stack when i navigated to the page in the first place.  This seemed like a very strange thing.  i couldn’t for the life of me figure out how that was possible. did i find some strange subtle bug in the Win10 UWP framework?  I figured that to be highly unlikely, i was certainly doing something subtle myself.  So i thought, “Hey, self, you used to work on debuggermap, i wonder if there’s something i’m not seeing here..”

So i restarted the app, hit the breakpoint, and pressed “show on codemap”  my stack window was then shown as a graph:

debuggermap before

yes.  that’s the same thing i’ve been looking at the whole time.  the red dot is where the breakpoint is, the green chevron was where my cursor was in a file while i was looking through the stack when i took the screenshot.  i pressed F5 to go again, since i knew i was just going to end up right back here in a second when the debugger hits the breakpoint again, and…:


Waaaaaaaaaaaaaaait a minute!  there’s a triangle here! two different places are calling NavigateTo!  how did i not see this before? i had presumed earlier that it was the same exact stack twice, like i somehow had added a listener twice or something, so the event was occurring twice, or something like that.  i didn’t realize i had two paths through my own code that were doing this. one of those 2 arrows shouldn’t be there at all! the back button was working just fine: going back once went back to another copy of the page, so it just looked like nothing was happening when you pressed back.

Within 5 seconds of the graph updating, i knew exactly what the problem was.  i deleted the one extra call to NavigateTo, and the problem was solved. I’d been banging my head on this for like an hour up to this point, trying to figure out what the repro was, and then staring at the same stack window and code over and over and getting nowhere.

Sometimes you just need to look at the problem a different way!  DebuggerMap for the win!

Posted in General Tagged with:

What I’ve been working on: Open Live Writer

It was announced this morning that what used to be Windows Live Writer has been forked, modified, and open sourced under a MIT license as Open Live Writer.  Prior to Facebook, i used to post a lot more stuff here on my blog, and when i did, i did most of that posting using WLW.  Microsoft stopped actively developing it after the Windows Live Writer 2012 release and most of that team was moved to working on making apps for Windows 8. I still used WLW after that, but slowly over time the plug-ins i used stopped being supported, and it became a little bit harder to use.  And Facebook made it easy to post little things, and life always has a way of finding other things to do. I always mean to post more stuff here, and i probably have 10 or more unfinished drafts either as WLW .wpost files, or saved as drafts in WordPress.

So when there became a push inside Microsoft to see if Windows Live Writer could be open sourced, since Microsoft had no plans on reviving it, I volunteered to help.  I don’t have a ton of free time (kids!), but i still wanted to see what i could do to help.  I didn’t do a lot, and most of what I did commit was deleting massive swaths of obsolete code (one of my favorite things to do! :)) It was really interesting to be on Skype video conference things with internet / Microsoft celebrities like Scott Hanselman and Jon Galloway and Martin Woodward.  Fun fact: Scott Hanselman is king of meta. He’s 3d printing a 3d printer with a 3d printer, while using Open Live Writer to blog about Open Live Writer.  It’s hilarious to hear the 3d printer’s “i’m finished!” song while he’s on a call, and then shows you what fantastic thing just finished printing. 

Open Live Writer is open source on github, and people are 3d printing 3d printers.  Welcome to the future!

Posted in General Tagged with:

Random Review: Deadpool

I randomly got Deadpool for xbox 360 from my queue. I have no idea when I added it, I’m presuming a long time ago since this game was released more than 2 years ago.  But it finally came up to the top of the queue, so I played it.  Went in with low expectations, since it was so old…

It was hilariously awesome…for adults!

My kids love Deadpool in the Lego: Marvel Superheroes game; he has lots of funny animations, and quips like “I’m not dead.  I don’t have a pool.”, and so my children will just say that, for no reason at all while playing.  But there’s no way I would ever let them see me playing this game.  It is brutally violent, has tons of swearing, and lots of sexual innuendos, hence the Mature 17+ rating.  Playing this game made me super excited for the upcoming movie with Ryan Reynolds!

Posted in General Tagged with:

Random Review: Dragon Age: Inquisition

Simply stated: Dragon Age: Inquisition is the best game I’ve played in a long, long time. It was so good, that now that I’ve finished, (twice! After I finished the first time, I loaded a save from several days prior and did several companion quests, finished up some loose ends, and finished the main storyline a different way), I am kindof on a Dragon Age hangover.  I really just haven’t been in the mood to play anything. Since I’m not in the mood to play, I figure I better write about it!

I loved the original, Dragon Age: Origins. It is one of the few games I’d played where I really cared about the decisions I’d made, and in one case, one of the decisions haunted me; I’d been used, and by the time I realized it, it was too late to undo.  After completing the game, I’d started over, hoping to change that decision (and finish on nightmare mode or whatever), but I never finished the second time, there were other games to play.  To this day, I still feel bad about it.

And interestingly, in Dragon Age: Inquisition, I could change that choice.  Well, not in the game, but in a tool they created to let you set up the world, which they call “the keep.”


The Keep is amazing.  If you’ve played the previous 2 Dragon Age games, it can import your world state, bringing in every decision you made in every quest or plot point throughout the games.  It knows which companions you met, if they liked you enough to do their story quests, if you’d romanced anyone, who died, who became king, every little detail.  At Penny Arcade Expo I went to a session where the developers talked about the giant decision network that powered the whole thing, it tracked something like 200+ decision points, of which many had more than one possible outcome.  That makes like 2200+ possible world states, but was much more complicated, because depending on some decisions, entire subsections of the graph was impossible.  After PAX, I signed up for beta access, so I could finally fix that decision I’d made.  And going through the keep was so cool.  It shows you, in beautiful graphics all the decisions, what the choices are, what you’d chosen, and what other things in your world state might not be possible if you made that change.  There were a lot of things that I didn’t remember doing, or things that I never even got to.  There was even a companion I missed completely!  And once I looked at the decision I’d made, that I hated all that time, I realized I couldn’t change it.  I mean technically I could, I just couldn’t go through with it.  While it seemed like a bad decision at the time, as the world has continued on, my decision might have had bad short term repercussions, over the long term, I think it was the better decision.  If you hadn’t played the previous 2 games, the keep lets you make all those decisions as if you had, to customize the starting world the way you want it.  You then use the keep to mark that world state as the one you want to start with in the game.

All of that wall of text up there, and you aren’t even to the game  yet!  When you start a new game, you tell it to import your world state from the keep, and you start making decisions about your new character and this game!

Without giving away any spoilers, there were several characters that were awesome.  Many characters from the previous games return, some playable, some in “advisory” roles.  When you talk to them, you can learn about what happened to them in the time between the previous games, and how your previous choices had affected their lives.  This kind of engrossing story really makes the world feel like your world, and made me care about the decisions I was making.

In DA:I, there was one main choice, do something yourself, without knowing the effects, or let someone else in the party, who has volunteered, do it.  After finishing the main story line, I went back and looked at achievements I’d missed, and one of them is related to that decision.  So I had to find a save from before that point, and work forward again, making the alternate decision, just to get an achievement.  Odd.  But in this (now alternate) version of my universe, I also took the time to finish several other companions’ story quests, because I hadn’t done them in the first play through.  I really wish the character quests had been a little more obvious, there were some where you really had to pay attention to what someone said or did, or go to a specific place and buy something, etc.

All in all I thought it was one of the best RPG’s I’ve played, certainly the best in a long time!

Posted in General Tagged with:

Pretty, Pretty Quiet!

with gripsAlmost a decade ago, I posted my original review of my springfield 1911.  Over the years, little mods have taken place, like different grips, a different magwell, etc.  The newest piece is a modification to the gun to enable an addition.  I replaced the standard barrel with a threaded storm lake barrel, so that I could attach a suppressor!  And yes, silencers are legal!WP_20140920_16_47_59_Pro 1

The silencer here is a SilencerCo Osprey 45, which has a unique profile: it isn’t round like other silencers!  The effectiveness of a suppressor is directly related to the internal volume of the suppressor, which captures the expanding gasses as they escape from the barrel.  In order to maximize the volume, most silencers are cylindrical.  And the bigger the cylinder, in both radius and length, the better it works.  however, with a pistol silencer, you don’t want it to be too long, or it quickly becomes too heavy out there on the end of a pistol.  And you can’t increase the radius of the cylinder too much, or you’ll interfere with the pistol’s sights!  For rifles, neither of these are usually an issue, as overall length isn’t as big of a deal, and most rifles already have sights elevated over the height of the bore for other reasons.  But on a pistol, the only real way to increase the volume is to make the suppressor a shape other than a cylinder.  So the Osprey is an eccentric shape, basically a rectangle with rounded edges.  the flat top edge makes most pistol sights still visible, and because of the design of pistols and the location of recoil guides and springs below the barrel, the bottom edge generally doesn’t interfere with any lights or lasers that might be attached on a pistol’s bottom rail, if you have one.

But if the suppressor isn’t a cylinder, a new problem arises: it isn’t symmetric, you can’t just thread it onto a barrel and have it line up!  With cylindrical cans, you just rotate it until the suppressor stops, and it doesn’t matter which way the suppressor ends up.  But with the osprey, that wouldn’t work.  so there’s a locking cam mechanism. You rotate the osprey on normally until it stops, then unlock the lever, rotate the silencer until it is the right orientation, then lock the lever.  from then on, whenever you take it off and put it back onto the same host, it will line up!

At the range, the osprey definitely adds some weight to the front, but doesn’t make the pistol too front heavy, and the weight out front seems to help a little with muzzle rise.  As with any suppressor, the blowback in your face might be a little surprising, so make sure to wear your safety glasses!  And, again, like any suppressor, it does get hot fast, so remember to bring gloves!  I need to buy an ove-glove or something to put in my range bag!

Posted in General Tagged with:

Random Review: Dead Rising 3

Way back when the XBox 360 came out (2006!), I did a review of Dead Rising.  It was  a great game, one of my favorites of that first generation of 360 games.  When Dead Rising 2 came out in 2010, it was lost in a sea of other games, so I never ended up playing it.  I did play through part of their free “preview” game, Dead Rising: Case Zero, but I never finished that either…


When the Xbox One released a few months ago, Dead Rising 3 was one of the launch titles.  I didn’t buy an Xbox One right away, instead I waited for the holiday drama to subside, and watched for people selling consoles they might have bought only to flip to people that were desperate for one during the holidays.  And indeed, I did get a great deal on a bundle with an extra controller, Dead Rising 3, and Lego Marvel.

My review of the 3rd installment would be very similar to the first one.  It was awesome.  Hilariously awesome.  Execution wise, very similar to the first game.  You have a limited amount of time to follow through the story, rescue people, and wreak mayhem amongst the hordes of zombies.  and on the xbox one, they are literal hordes.  It was amazing to be standing on the roof of a car, and its just zombies, everywhere, as far as the eye can see.  Thousands of them.

Dead Rising 2 apparently introduced the “combo weapon” concept, where you can take 2 random things, like a rake and a car battery, and turn them into an electrified rake.  Or a giant stuffed bear, a machine gun, and a radio (or whatever) to make this automated bear machine gun that sits on the ground and taunts zombies, then kills them.  And many of the combo weapons can then be combined with something else to turn them into “super-combo” weapons that can do amazing amounts of damage or maybe small amounts in a very hilarious way.  One of favorites was “the ultimate shout”, a combination of an orange traffic cone, a speaker, a battery, and a portable radio.  To use it, you’d hold it up and yell through it, causing all zombies, vehicles, and items in like a 30 yard cone in front of you to be destroyed and sent flying.  Another was the “Electro ice staff”, which was a traffic light combined with a battery and then liquid nitrogen.  you could swing it like a staff, or ram it into the ground, freezing everything around you, or aim it like a gun and fire it to freeze zombies in front of you. 

And this electro ice staff leads me to one of my favorite features in the game (well, in the XBox One in general), called “Xbox record that”.  While playing any game, you can just say out loud “xbox record that” and it will save the previous 30 seconds of whatever just happened.  Then later you can edit it and share it.  Here’s an example,of me using said “electro ice staff”, racking up a HUGE combo of 525 kills:

As you can see in the video, my character looks a little.. out of the ordinary?  Prior to this, there’s a section of the game where you have to infiltrate an area filled with special forces soldiers.  You have several options for getting into the area, like attacking, guns blazing at the front door, sneaking in through a high window, or blending in by finding a uniform. Like the other dead rising games, there are clothing options scattered throughout so you can change clothes and look like whoever you want.  prior to this point in the game, I was always wearing a “Mr. Rodgers” style red sweater, which I thought looked rather stylish :).  It turns out, if you’re wearing the uniform, special forces soldiers won’t shoot at you until provoked… So I took advantage of this for the rest of the game.  I picked up other clothing to try to get achievements, but I always went back to the SF outfit.  And my crazy outrageous head is a Blanka (of street fighter fame!) mask.  It turns out the mask can be combined with other things to make a mask weapon as well, but I wore it because it looks hilarious.  Even more hilarious than running around killing zombies with a blanka mask on?  Cutscenes with a blanka mask on!  

None of the other people in the game seemed to notice that I was wearing a hilariously outlandish mask. I swear there was a kissing scene that I recorded, but I can’t seem to find it on the game dvr.  If I find it, I’ll add it here.

The only thing that I ran into that I didn’t like was that you never know if a main story mission is going to jump you way ahead in time.  When I was near the end, with less than 24 hours (of the initial week) left, I completed what I thought would just be the end of that chapter.  Yes, it completed the chapter, but also skipped all the way to the end of the 24 hour period, right to the last phase of the game, putting me in a timed section where I couldn’t do any of the rest of the side stories that I had in progress!  and not only that, the last part had checkpoints, so when I got about 3/4 of the way through it, I realized that mistakes I’d made at the beginning of the section were going to make it impossible for me to finish what I needed to do before the bad guy finished what he needed to do.  So I restarted that chapter.  Which apparently aborts any and all side missions that were in progress?  Once I completed the game, it lets you start over but keep everything you’ve found, your level, etc.  So I tried to restart the chapter I’d been on before I’d accidentally finished so I could complete all the side missions… only none of the side missions I’d completed to that point were done.  you can redo that chapter, and start any missions that you can find in that chapter, but none of the survivors you’ve rescued are available, etc.  If you want to do any side missions you missed, you pretty much have to start over again from scratch.  Bummer.  Like in the Lego games, I wish there was a prompt before you did something that was going to make it impossible to go back. Or if not a prompt, some other kind of indication that you can’t go back…

All in all, dead rising 3 was a great game.  The story was good, the forced timeline forces you to make some decisions about who you’re going to try to save, and how much extra stuff you’ll try to accomplish.  The characters are believable to a point, and then they throw all believability aside because, well, it’s a video game about zombies that started with mutant cows to produce cheap hamburgers.  While violent, a lot of the violence is hilariously cartoony, like driving a steamroller combined with a motorcycle that shoots flames.  So fun!

At one point, Dead Rising 2 was free in the Games for Gold program, so I did download it (I think!), now I’ll just have to find time to go back and play it, so I can fill in the parts of this story that didn’t make sense!

Posted in General Tagged with: ,

Random Review: Surface Pro 2

I’ve had a Surface since they originally came out.  I bought a day one Surface RT of my own, and used it all the time.  I really liked the idea of the surface pro, but since it had like half the battery life of the RT, at like twice the expense.  But when the surface pro 2 was announced, it was with a much more efficient Intel i5 “Haswell” processor with much better battery life.  And much more available memory. And a much bigger drive.  So I pre-ordered the Surface Pro 2 with 8g of ram and the 256g drive.  After using it for several months now, as a tablet, a laptop (and now as my entire desktop replacement!), here’s my bullet item pros and cons random review.


  • can run everything windows!
    • Being full windows, not windows RT, I can run pretty much every app I’ve ever needed ever.  Although, aside from doing development or playing games, I’m finding that there are windows store apps for almost everything I need.
  • this means Steam games are “game on!”
    • Shadowrun Returns plays great with pen and touch input.
    • I’ve also played Star Wars: The Old Republic on it as well, although I do have to set scaling to 100% or the UI gets confused and clicking doesn’t go where you think it does!
  • visual studio!  I can use this as a dev box!
    • In fact, I have to, since my old desktop machine doesn’t have hardware capable of running the windows phone emulator.  But the surface pro does, so I can work on phone apps and windows apps.
  • skydrive OneDrive integration is awesome
    • except that it now requires sign in with a microsoft account, you can’t even open the app at all on a domain joined machine at work (which is probably safer, since you can’t accidentally save stuff there when you should be saving to Skydrive Pro OneDrive for Business at work anyway…
  • Windows Live Writer!  I still don’t understand why there’s no version of live writer for Win8 yet.  that would be even better
    • plus, you can set the drafts directory to OneDrive, and POOF you have those synchronized across machines too
      • to do this, using regedit, go to HKEY_CURRENT_USER\Software\Microsoft\Windows Live\Writer, and add a new string value “PostsDirectory”, and point it to whatever directory under your C:\Users\[user]\SkyDrive\Documents folder that you want to be your live writer “cache”.  (since the name change, I haven’t checked to see if they’ve also re-named the directory or not!)
      • then, in that directory, right click the folder and set its Skydrive settings to “Available offline”.  without this step, writer didn’t seem to see the posts synced from the other machine.
    • You can also use 2 finger zooming to zoom in on the text part of live writer, even though there doesn’t appear to be any mention of zooming anywhere.  I’ve read some things online that said ctrl-+ or alt-+ used to zoom, but that only worked for zoom out for me, and I found 2 finger zoom gesture by accident. But it does work awesome!
  • Pen input is pretty cool.  I wish i could draw better!
    • I use it  all the time to take notes in meetings, and then using the ink to text features of onenote, it is (mostly) turned into searchable notes.  about the only thing that I have had problems with for that is if I underline or cross out things, that ink stays behind but doesn’t match up with the text anymore.  that can be confusing.
    • The pen also works very well in Shadowrun Returns. 
  • Surface Pro dock + USB3, ethernet!
    • I Have the SP2 hooked up to a 10 port USB3 hub when I’m at home.  Attached to this hub is a USB3 blu-ray drive, a USB3 hard drive enclosure with a bunch of drives in it, and various other random things, like the fitbit dock thing.  Also, standard keyboard and mouse.  
    • Also, hooked up through minDV to a big monitor, so when I work from home, the SP2’s touch screen is always showing outlook and lync (or skype), and the bit monitor is remote desktop’d into one of my machines running VS


  • gets a little hot when running games
  • noticeably heavier than a Surface
  • the new type keyboard doesn’t have physical buttons on the cover’s trackpad, so I didn’t get one.  I’m still using the type cover 1 on my Surface Pro 2, and the touch cover 1 on our Surface RT. 
  • the multi monitor scaling support on windows 8.1
    • It doesn’t make any sense to me!  Supposedly, by unchecking the “Let me choose one scaling level for all my displays”, it does some kind of different scaling per monitor.  But there’s no independent settings for each monitor?  When in this mode, I want the SP2’s screen scaled up to the 150% (default) setting, so I can use touch more effectively.  But I want the external monitor completely unscaled.  This doesn’t appear to be possible.  No matter what I choose, things on the secondary monitor are sometimes scaled, sometimes blurry.  Office does one thing, Windows does its own thing.  The taskbar gets scaled up, like it it is on the main monitor.  I don’t understand why there isn’t an explicit scaling setting on each monitor on the “Screen Resolution” control panel.  It seems that windows is trying to guess what I want, instead of letting me tell it explicitly what I want. 
Posted in Uncategorized

XBox GamerCard

Recent Flickr