Hyperbole – or why Diablo 3 is the most dissapointed I’ve ever been in a game.

Let me say right off the bat that I almost certainly got my moneys worth from this game. I paid $100 (Collector’s edition you know), and I certainly got more enjoyment than I’ve gotten for other things I’ve paid $100 for, but it doesn’t change my overall opinion.

So let’s get the hyperbole out of the way first. Two months ago today Diablo 3 was released, and in looking back over these two months now, I’ve never been more disappointed in a video game. I may even go so far as to say it has essentially killed PC gaming for me.

Before that, a few stats! I work as a game developer, so I have a lot of friends/associates that are in the industry as well. A very large number of them were stoked about Diablo 3 as I was, and they were on my RealID list. In addition, I’ve played World of Warcraft since launch, and have quite a few folks from there on my list as well. Those first few days after launch my friend list was completely full of folks playing. It wasn’t uncommon to see 20+ people on at any given time.

I just logged on a minute ago and looked at all my friends. It tells me the last time they’ve been on, and aside from a single outlier, not a single friend of mine had been on in 18 days. I had 2 friends who were last on 18 days ago, the vast majority of folks were last on 30-45+ days ago, which means they only lasted 2-4 weeks in the game. Do I have enough data to form any valid statistical conclusions out of this? Of course not, but the fact that the first two weeks the game was out, i had approximately 95% of my friends list playing the game, and these last two weeks I’ve had only about ~3% of my friends list even *log on* (who knows what they did in that time) is damning for a game Blizzard has stated they wanted to last for “years”.

Why has the game been so disappointing though? What prompted such a bold statement to begin with? It’s a combination of things. I won’t even get into launch day problems because they’ve been re-hashed over and over again, but it’s an indicative outcome of their mindset (if you ask me).

There is no way the sheer number of people waiting to play at launch was a surprise, after all they stated themselves that it was the game with the largest number of pre-orders ever. They’ve been running the most successful MMO for years now, they new what it would take to have a successful launch. It would have been expensive though. They would have had to stand up enough servers to handle the launch rush and then had a ton of excess servers doing nothing a couple days later when everyone had settled into their normal playtimes and habits.

Do i understand that? sure. That doesn’t change the fact that they looked at the situation and decided having a large group of their customers having a horrible (and essentially non-functioning) experience was an acceptable byproduct to save some money. Completely inexcusable and the Blizzard I remember from the past would have never made that choice.

Of course, this is all because the game requires a connection to Battle.net to do anything, always online. This is done for the sake of the auction houses (which I’ll get to shortly), but you can’t even *access* the auction houses in game! I mean, really? The vast majority of the game is spent staring at the AH UI which is horrible to begin with. You could have just as much fun playing multiplayer Excel.

I’m no stranger to making a call on whether a particular nasty bug can be shipped or not. It’s an unfortunate necessity when doing any software development, and games are no exception. I’ve shipped games with bugs in them, we all have. Most times these bugs are found very late. Yet some of the bugs in Diablo I wonder how they could have been found late, and how they could have decided it was ok to ship with them.

For example, once you’ve reached maximum level, you get a stacking buff called Nephalem Valor. The “expected” game play needs you to have that buff maxed out at all times. You can lose the buff by leaving the game or changing skills. However, that’s not even true. Let’s say for example, you accidently drag one of your abilities off the toolbar for a moment (not hard to do in a game that requires frantic clicking).  Instantly you lose all your stacks, even if you drop the ability right back where it was. So naturally they have a “lock toolbar” command yes? I mean, World of Warcraft had one seven years ago. Nope, not only do they not have one, they said they would try to add one in a few patches.. ie, months down the line. I mean.. seriously, what? It takes months to add a single boolean variable option which they’ve already *half* implemented? Come on now, seriously?

of course, you don’t even need to do that. You can go to your skill list in the UI and look around, check out some other skills, but ultimately go back to the same skill set you had. You better make sure you click cancel there though, otherwise, if you click OK, you lose your stacks then too.. Even if you DIDN’T CHANGE anything. I mean, come on?

Doesn’t get any better either. What if your internet had a hiccup and you got disconnected for 2 seconds? All your stacks gone. Oh, if loot had dropped and you were about to pick it up when that happened you lost the loot too.

I said a few seconds ago that the stacks of the valor buff were the “expected” way to play, and I gather this because anything that was *not* playing in this way, they’ve nerfed to the ground. Want to kill a enemy with a lot of magic find? Oh, well we’ve made it so those enemies ignore magic find. Want to break vases for gold? Well they drop nothing now. Want to clear a dungeon that’s pretty hard and then collect stuff from the chests? Oh, well chests now ignore magic find too.

The entire *point* of Diablo was farming items, and Blizzard has continually nerfed every ability folks had to farm items somewhat quickly. Why? To “promote a stable economy” or something, but who the hell cares? This is supposed to be an action RPG, I want to play, and get powerful. I want to do this without being forced into the auction house.

Before i get to the auction house though, I just want to reiterate that I sincerely believe someone(s) at Blizzard has lost their way. They’re treating Diablo like it was an MMO which it wasn’t. They’ve continually sacrificed the fun to make something “balanced” (again, who cares?). They’ve continually punished *real* players to try and stop the “bots” from “ruining the economy”, which is ridiculous and has failed anyway. The economy is already ruined, and it has been since the game launched. After all their fixes, has it gotten better? No, prices continue to rise, gold continues losing its value.

The items themselves aren’t even that interesting like they were before. There were items in Diablo 2 that let me use other classes abilities! Now all I get is some +int or whatever other stat I’m going for. On Inferno difficulty you’re essentially forced into 1 or 2 builds for your class to have a chance (so much for build diversity), and the *entire* gameplay is based around gear. Getting 1 shot by an enemy you never saw is not skill. Getting a bit of gear so you can maybe survive that one shot isn’t skill. Kiting an enemy to kill them is skill, but hey, they decided if you couldn’t kill them quick enough, they enrage and insta-kill you. So the little skill you could use is laughed at and you’re told once again “no, get better gear”. Oh, and they *punish* you by dramatically increasing the repair cost of the items if you happen to die. As mentioned, you *will* die, because you will be one shot from something off screen you never saw. Or a huge lag spike (always online remember) will kill you. I feel sorry for those folks playing hardcore. The entirety of Inferno is predicated on you finding better gear.

Will you find this better gear while playing though (even after the “increase in drop rates” – which doesn’t even come close to counteracting the nerfs they put in place)? Possibly, anyone can get lucky, but almost certainly not. You have to get extremely lucky three times in order to get a good item. First, you have to have an appropriate level item drop. Then that item needs to have rolled the right stats for you. After that, the item needs to have rolled into the high ranges of those stats. All of it is possible to happen, but the odds are dramatically stacked against you.

So what do you do? You have to go to auction house, and it doesn’t take long to realize how terrible that is. You can either pay an extraordinary amount of gold for an upgrade, or if you’ve been unlucky and not found anyting to sell (so you don’t have much gold to use because you spent it all on repairs), you can spend real money on upgrades. Everything in the game seems tailored to encouraging you to go to the auction house to get gear. Fun has been sacrificed all over to get you to go there.

Myself personally; any upgrade I could get will cost me millions of gold I don’t have. I will never *ever* purchase anything from the real money auction house because I won’t be giving Blizzard anymore money. So my choices are to bang my head into the desk while I farm the same areas over and over again, never getting anything remotely useful to anyone and never having any sense of progression, spend real money to get said progression, or stop playing. It’s not a hard choice at all.

In Diablo 2 I almost always felt some sense of progression. In Diablo 3 once I hit the level cap (which was extremely easy to do), it basically stopped.

I’m tired of writing so I’m going to wrap this up, and I didn’t even get to some of the other problems Blizzard has caused, such as the “Hey, you paid for the game, but you can’t play it for 3 days” (even if it was a “mistake”, how could you *ever* release that), or the huge nerf of IAS (improved attack speed) items. Imagine the guy who paid $200 in real money for an item to log in the next day and find the items power was cut in half. Yeah, that’s real fair.

To finish with the hyperbole I started with, Blizzard has completely and utterly failed me as a gamer with this offering and their reputation has been soiled tremendously in my eyes. So much so, that I won’t be picking up Mists of Panderia, nor probably any other game they make in the forseeable future. I used to respect that they made games that were fun above all else, but they’ve lost that in my eyes. Ruining the fun of a game to increase it’s profit is a losing strategy, and the Blizzard I remember from 15 years ago would have never been so naive to believe the opposite.

I have every Blizzard game made in the last 15+ years. If there was a collector’s edition of the game, I have that as well. They were the definition of what I considered a great video game company. It saddens me immensely that I’m now saying that in the past tense. Given the only PC games I’ve *really* played over the last 5+ years have been Blizzard games, Diablo has effectively killed PC gaming for me as well.

I suppose it’s inevitable..

I would like to preface this post with the following disclaimer; I am not on the XNA team, nor have I been on the XNA team in almost two years. Do not mistake anything below for an “insider scoop” of anything because I do not know what their current plans are, nor do I know what their future plans are. Everything below relates to XNA version 1.0, and there are still folks who worked on later versions over in that organization. With that out of the way, I shall continue!

Shawn Hargreaves announced the other day he was leaving to move over to the Windows Phone team after six years working on XNA. I’m sure this isn’t a surprise to anyone who keeps even a rudimentary pulse on the XNA scene is subscribed to Shawn’s blog and has read it. However, for me it was a little bit bittersweet.

As the title of this post implies, I suppose it is inevitable. After all, as Shawn points out, he was working on XNA for over six years, and that’s a very long time to be doing one thing. However, with Shawn’s departure, from my recollection everyone that busted their asses to get the first version of XNA out the door has moved on from that team (not entirely true; there is still one person left in that organization who was there at the start of the XNA project, but he’s been on a different role now for quite a while).

The team that started XNA wasn’t very large to begin with, and we weren’t all “publicly popular” (such as Shawn, Kluch and myself), but the small group of us that were there from the start had a huge unknown challenge in front of us, not even sure if it would really work. We had a completely unrealistic release schedule (you want us done before the end of this year? right), were writing everything from scratch, and we had exactly zero customers.

I’m extremely proud of what we accomplished with that first release, and it was probably one of my favorite times at Microsoft. We almost felt like a bit of a startup within the company, and we were successful beyond our original ideas. By version two we had the concept of an “App Store” before Apple did (not to take anything away from Apple, there store is obviously more successful than XBLIG), and people were making money.

As often happens though, time goes on, new people are hired, other people leave. Inevitable. While I was there, we always prided ourselves on our ability to make good hires, so I’m sure the people that remain are top-notch, but it is still somewhat sad for me to look back and realize that everyone that made version one of XNA what it was has now moved on to other adventures in their career. I will always look back at those times fondly. Working with that group of people was a pleasure.

As for what line of code of mine that is executed the most, I can’t say actually since I had a hand in almost ever piece of the xna runtime. It’s impossible to run an XNA game without using some of my code, even now with me gone for a few years. In the runtime itself, it’s probably the graphics device creation still (even though that was changed in v4).. By now it could be the predicated tiling work or even the intro “XBLIG screen” that you see before every game. We should have collected metrics on this kind of stuff!

Writing games and writing platforms..

Much like my love of fiction books, I have been a gamer for basically as long as I’ve been able to be. I have no idea where it started, but the first time I really I remember playing games was at a pizza place back in Saint Louis called Pantera’s. I played all kinds of games back there, although I remember wasting way too many quarters in Rastan. Before that there was Spy Hunter and if we go back far enough, even Pole Position. I’m sure there was probably others before that, but we’re edging back to the limits of my memory, I’m not *that* old after all.

At the time I was playing these though, it hadn’t yet occurred to me that there were people who actually created these wonderful things. Sure, it seems obvious in retrospect, but at the time I was a young kid, I probably would have believed that unicorns and fairies made the games I loved. I knew there was some kind of a computer in there, and that’s what I wanted, but we were quite poor at the time and couldn’t afford one.

Luckily, my mother saved up for a year and she was quite excited to finally give me a computer for Christmas one year, and boy was I excited to get it. It was an amazing piece of hardware called the TRS-80 (that has a nickname now of “trash 80”, but I didn’t care, it was a real computer). Looking back at that now, it’s kind of funny, the very first thing it said when you turned it on was Microsoft (MS did the BASIC for the system). Who would have thought that 15 years later I would actually be *working* at Microsoft, the computer had given me an inspiration I didn’t even realize.

The system came with the BASIC mentioned above and it was fascinating to me. I could type things and stuff would happen. I devoured the few “tutorials” in the book that came with the system and was anxious to find anything more I could. I started out probably the way many kids back then did, by copying huge chunks of text out of a magazine, not necessarily understanding what was going on, but being amazed by the results. Well, after running it the first time, realizing it was broken and then spending hours painstakingly trying to find the single spot I had messed up typing.

With that I knew what I wanted to do when I grew up. I would write games, and despite not even being a teenager yet, I was going to write the best game the world had ever seen. It was here that I learned a very powerful lesson; that being that writing a game was hard. I wasn’t even remotely qualified to do this.

I spent the next several years learning how to be a developer in general, always thinking of games in the background, but learning the basics. I learned new languages, being fascinated by the power of Pascal before migrating to C, and then discovering Visual Basic and realizing that as a development language, this was the beginning of a boon to developers everywhere. It had a low barrier to entry and could explode at any time.

Now, I still wanted to be a game developer, and I still didn’t think I was qualified to be one, so it was then that I decided what better way to become qualified than by opening up game development to the masses and help *everyone* become qualified. By now, I was already working at Microsoft and migrated over to the DirectX team and began a project that intended to bring the power of DirectX to Visual Basic. I’ve told this story many times, so I’m sure everyone knows by now that DirectX for Visual Basic turned into DirectX.NET which turned into Managed DirectX which turned into XNA. By the time I looked up I realized that I had been writing platforms for an entire decade, and still not writing games.

That’s when I switched. I moved over to Microsoft Studios (then Microsoft Games Studios) and started making games. So here we are now, a year and a half later. What have I discovered?

Despite both of them being writing code, and actually, even somewhat related code, the two activities are so very far apart. There are so many things you need to take care of for a platform (such as robust parameter validation) that you simply don’t need to worry about in a game. On the flip side, writing games has extra constraints you just don’t see on the platform side such as game designers. Ok, sure, you could argue that program managers help define the “mechanics” of APIs much like a game designer helps define the “mechanics” of the game, but once the program manager has defined the mechanics, she is done. The game designer must also make those mechanics fun.

There’s so much more creativity required when writing games as well. Sure, there is some creativity in designing API’s and functionality and feature set on a platform, but it’s not nearly the same magnitude. Actually, I suppose that isn’t fair, there is a lot of creativity in developing a platform, just not the type of creativity that excites me the way writing a game does; coming up with narrative, etc.

It’s also taught me that despite spending a decade making game development easier to do, I still have so much to learn. I would feel comfortable developing a platform completely on my own (hell, I have done it before), while I’m not sure I could say the same thing about writing a game. The work game designers do (and the way in which they think about things) is a skill I need to learn, and I’m thankful I have the opportunity to learn from a group of people who are amazing at what they do. Some of my coworkers have done design work on some of my favorite games of all time such as Command and Conquer; Gears of War; Alan Wake; Dungeon Siege; the list goes on and on.

That isn’t to say that I worked with less amazing people before (I’m sure everyone knows who Shawn is, which would disprove that), it’s just a different type of awesome. Developing a platform, the cool things we normally get to see could best be described as tech demos, and while they’re amazing in their own right, you normally have to wait for your customers to write something awesome to fully realize your initial vision.

If there was one thing I missed about being on the platform team it was the intimate knowledge of what was coming next. I just don’t have that anymore, and it is frustrating. I wish someone would say something about XNA and Windows 8 just like everyone else does. However, for where I was in my career and my life, making the transition to making games was definitely the right move for me. I can flex my creative juices and expand in the areas I am weak in.

It’s nice to realize that your dream job at eleven can still be your dream job at thirty six.

Garbage detector from my Gamefest Slides

One of the last things in my slides for Gamefest was a simple little object I had written to help us detect when our code was allocating memory we weren’t expecting. Due to the size limitations of slides I had attempted to to shorten the object to the minimalist version, and in doing so lost a few things. Here is the object I used in its entirety:

Not very much different than what’s in the slides, but a few subtle differences. The most important being whether or not ‘true’ or “false” is passed in during the two calls to GetTotalMemory. What does this code actually do though?

I wrote it basically to allow myself to “wrap” a section of code and measure any allocations from it. At the constructor of the helper object I measure the total memory in use and store how much allocation (in bytes) I expect the code block to take. Then at the end I measure the memory once more and if more memory was allocated than I was expecting I break into the debugger.

A few things to note. First, when you pass in ‘true’ to GetTotalMemory a full collection will occur, so if you are doing this often you will dramatically slow down your application.

Second, you’ll notice that the slides pass in ‘true’ in both spots which is probably not the behavior you want (you’ll notice in the code above that ‘false’ is passed at the end in the second constructor). If you pass in true in both spots, you will only catch allocations that were not garbage because any garbage would have been collected due to the ‘true’ being passed in!

Now, there are times when you do want to know this, so having the option is certainly fine, but the majority of time you want to know about allocations that create garbage, in which case you need to pass in false to the second call.

Another point I brought up during the talk that isn’t obvious is that this code completely ignores other threads. Which means if you have another thread allocating memory in between the two calls, you will get “false positives” that can prove difficult to track down. When I used this method I kept the code I wrapped in this object small to help eliminate them.

To see an example of using this helper in code see below:

Duke Nukem Forever, or when 14 years later is still too soon…

Duke Nukem Forever
Duke Nukem Forever

I first heard about Duke Nukem Forever before I even started working at Microsoft. In my previous job Duke Nukem 3D was one of the games we played constantly and we had more fun than we should have playing it. I was naturally pretty excited when I first heard about Duke Nukem Forever.

Of course, that was sometime around 1997, and I heard it was coming in 1998 if my memory serves me. I heard something similar for 1999 and 2000 or 2001 as well. After a few more years it became a running joke. 3D Realms kept saying it would be done “when it was done”, and “when it was done” seemed to be “never”. After more than ten years of “coming soon”, the game was completely cancelled a few years ago. Take-Two sued 3D Realms for wasting so much time and money and the game had completed it’s life by becoming a laughing stock.

Of course, behind the scenes there were still dealings going on. It turns out gearbox was in negotiations to release Duke Nukem Forever (one of the founders of gearbox worked on a version of Duke Nukem 3D). Finally at PAX last year they announced that the game would finally be released after 14 years.

Duke Nukem Forever ScreenshotI have to say that I was pretty excited. I imagine that nostalgia was kicking in or something, but it made sense at the time. I absolutely loved Duke Nukem 3D and the last gearbox game I had played was Borderlands which was amazing as well (I should write a review about that one sometime, if you haven’t played that game yet, go buy it now, it’s only $15). Between the next version of a classic game I loved being finished by a developer who developed a recent game I loved it was a perfect recipe for awesomeness. Unfortunately, even perfect recipes can be burned.

After yet another delay (minor in comparison to the others) Duke Nukem Forever was finally released on June 14th 2011 and since I had pre-ordered it I received it that day. I was excited to play it when I got home from work that day and jumped right in to do so. I played through a bit before going to bed that night. The next day when asked by a coworker what I thought of it, I summed up my thoughts by saying that “it is a terrible game, but I am glad I bought it”. By the end of the week I realized what a stupid statement that was.

First, the game starts off as a game inside the game and you’re literally pissing (or can be). I suppose that’s sort of funny, or at least it was when I was 11. Worse, the stall next there has a piece of shit you can play with for an achievement, and I’m not even making that up. I’ve been in the game for 90 seconds and I’m already covered in urine and feces? He was saying some classic “funny” lines though, so I forgave that part and continued on. The graphics looked like they were out of the 90s (oh wait, I guess they were), and while I never expected it to live up to some of the modern day games graphic wise, the poor quality of the graphics was jarring. There were mirrors all over and when I jumped, my character in the mirror simply didn’t move. In 14 years, couldn’t the artists figure out how to assign more than 6 bones to the character?

Duke Nukem Forever

I honestly expected most of the graphic inferiority to be a “by-product” of the game within a game motif that you start under. Yet, when that game was over and I was in the “real” world, the graphics were exactly the same, and I was quite dissapointed in that. Of course, who cares about graphics if the game play is top notch right?

Except, game play was horrible as well. It’s like they forgot what made Duke Nukem 3D fun. It certainly wasn’t his witty lines, they added flavour, a nice bonus, but didn’t make the game fun. It definitely wasn’t digitized boobs, and even if it was due to the grahpical inferiority displayed quite a few games out now show you better anyway. They took away the ability to hold every gun in the world down to having just two (which I didn’t like in Halo and still don’t like now). No longer do you have health, but now you have “Ego” which is simply a glorified health/shield combo (again, like Halo and every other shooter in the world nowadays it seems).

Yet, even after taking some of these “design decisions” for more recent games, they completely skipped some of the other ones like helping to improve aiming (via magnetizing or auto-aim or something) which made it into a complete chore to shoot things. Plus, I could barely tell if I was actually hitting the thing I was shooting at to begin with. Oh, and can we make a new rule? Water levels are terrible and they should be outlawed.

Duke also has a reputation for being cocky. I like that actually, I don’t mind arrogance at all, but you need to be able to back it up. Duke had the cockiness down without the amazingly good game to back it up though. Throughout the game he makes fun of Halo (when he see’s master chiefs helmet), Gears of War (Gears 0, Duke 1), Valve games (Half life or portal? who knows, he says “I hate valve puzzles”), all of which are vastly superior to Duke Nukem Forever.

Duke Nukem Forever screenshot

I normally don’t play a ton of multiplayer with these types of games (for a variety of reasons), but since I remembered all of the fun I had playing multiplayer back in Duke Nukem 3D, I gave it a shot here, and it wasn’t terrible, but it certainly had lost alot of the fun. The graphic problems were even more noticeable (it’s one thing when the image of yourself in a mirror is not moving while jumping, completely different when it’s your opponent). It’s still fun to shrink someone and stomp on them though.

After all that, I haven’t even talked about my biggest problem with the game, and that was loading times. I don’t know who worked on the system for loading in this game, but he/she/they should seriously consider a different line of work. I can’t fathom how anyone could look at the loading times this game had and think “yup, that’ll work”. You had 14 years to make this damn thing, loading should not take 45 seconds anytime something minor happens. I’m fighting a boss and I died? The last save point was exactly where the boss was? All you have to do is reset the bosses health and my health and ammo and we’re good to go? Nope, 45 seconds of loading time.

Now, I know that I’m a bit of a stickler for performance and loading times. I mean, I’m giving a talk about this exact issue at Gamefest next month, and I’ve given several performance talks at GDC over the years, so perhaps I’m just naturally inclined to notice them? I’ve had several other people who have complained about them with me as well, so it isn’t just me. These are extremely noticeable and very frustrating. Hell, part of me wonders if it wasn’t done on purpose, because I think I would have to work hard to get things to load so slowly (without putting artificial waits around everything). I simply cannot fathom what was going on during those loading screens other than maybe Duke was praying we would just stop playing.

At the end of the day, I bought this game on nostalgia and little else. For Duke Nukem Forever, nostalgia and 14 years simply wasn’t enough. The game needed a lot more work to be worthy of the gearbox logo if you ask me. It was one of my most disappointing purchases ever.

Nintendo 3DS, now with a price cut!

When the Nintendo 3DS was first announced, I wasn’t overly excited about it. The 3D seemed like nothing more than a gimmick I wouldn’t really care about, and the majority of the games seemed like re-hashes of games I’d long since played and beaten. I will admit to salivating over the prospect of a new Kid Icarus though, but aside from that, I was underwhelmed.

So when it came close to release time, I had decided not to pre-order and take a “wait and see” approach. Shortly before the release date when I saw a few of the augmented reality videos (of the games that came bundled) I almost changed my mind. Few folks at work ended up getting it on launch day (actually before) which wasn’t a surprise so I checked it out then. Certainly a nifty piece of hardware, but wasn’t worth it for me to buy right then, so I decided to wait.. I knew the Kid Icarus release would push me over anyway.

Of course, since then the device apparently isn’t doing all that great. The latest ads I see don’t even mention the much hyped 3D, and the games seem to be few and far between. Which led to Nintendos announcement yesterday that starting on August 12th, they’re dropping the price by about a third from $250 to $170. That’s a pretty big price cut really fast.

Despite that, I’m still not sure if I will actually get one or not. The games still aren’t doing it for me. I guess it does make the decision to pick one up easier whenever Kid Icarus finally does come out though.

Some thoughts on Azure…

With all of the spare time that I don’t seem to have, i’ve been working with Azure a bit for a personal project that I’m not going to go into much detail about (yet). Well actually, I suppose that isn’t fair. Initially I started simply using the hosting I have on this site to do some simple stuff before I quickly got annoyed with it. I didn’t need a web host, I needed some real cloud computing. I briefly looked at Google’s App Engine and Amazon’s AWS before figuring since I work at Microsoft I should probably just dive in with Azure, so that’s what I did!

Once I got over the initial system shock of “what on earth is all of this stuff” and followed through a few examples, I was actually pretty pleased at how simple getting something up and running was. I had downloaded and tried the Azure SDK quite a while back in beta (before we announced it) and it was hard to use, the docs were non-existent, and no samples existed at all. I was completely lost and gave up on it until recently. While I can’t speak for the SDKs for Google or Amazon, the Azure SDK has improved leaps and bounds now and it finally started making sense!

It took me basically a week to write the underlying infrastructure for what my side project wanted when I was using this hosting environment, and a large portion of that was trying to remember SQL, and writing stored procs. I made the equivalent Azure worker role in about a day and didn’t have to write a single SQL statement (unless you count some LINQ in my role, which I don’t) or stored procedure! I also didn’t have to worry about transactions or any of that painful stuff!

One thing that I guess makes me naive is that I was surprised at the potential cost for even the simplest of things! For example, a “small core” on Azure costs $0.12 per CPU hour (and CPU hour is measured by the amount of time the application is deployed). This means for a single core, for an average month you’re looking at $0.12 * 30 days * 24 hours = ~$86. Worse, it’s recommended you run at least two instances, and you have to if you want the “guaranteed” 99.99% uptime. Since each instance is another core, basically double that cost so $172 per month to run your application in the cloud. You can get 3+ years of web hosting for less than that.  That’s just the CPU cost though, you end up paying for storage as well!

At first, storage “sounds” pretty cheap. You pay $0.01 per 10,000 transactions which sounds super cheap, but that adds up as well. In most of the samples for Azure you’ll notice that in the run method it will essentially check for messages in a never-ending loop to see if there is work to do, and will normally check these messages about once every five seconds. The act of checking to see if a message exists is a storage transaction though! Checking every five seconds is 12 times per minute or 720 per hour or 17,280 per day or 518,400 per month or an extra 51.84 pennies per month. Ok, so that isn’t all that expensive I guess. It does start to add up though, and there is an extra $0.15 per gigabyte of data you’re storing.. So a million transactions a month storing 2gigs of data is an extra $1.30, not terrible.

Now, I’m sure that large companies needing cloud computing find these prices to be quite acceptable (the Azure prices seem to be similar to the prices offered by Google and Amazon), and I actually don’t mind them too much, but they do seem to be a decent chunk of change for a developer just starting out. I guess I was just expecting prices to be similar to hosting prices so was surprised by the costs I saw.

I’m no where near an expert on the subject yet, but so far working with Azure and “in the cloud” has been a pleasure. Now if I could just get off my lazy butt and finish this thing…

My thoughts on L.A. Noire

L.A. Noire
L.A. Noire

Last week I purchased the Rockstar Pass for L.A. Noire which gave me access to all of the DLC for the game. Inspired, this weekend I finished the game completely, 100% story, hidden items and achievements. Actually, I think this is a personal milestone for me since I have 1400/1400 gamer score in this game which is the most I have in any single game.

For those that aren’t aware the game is based around the life of a new police officer in 1947 Los Angeles, Cole Phelps. He’s fresh back from fighting in World War II (and winning the Silver Star), and is looking to be the best cop he can be. You will go on cases, collect clues, interrogate witnesses and suspects and try to solve a wide variety of crimes as you move up the ranks in the department!

Now, I do not know what the budget for this game was, but would be surprised if they didn’t spend a huge portion of it on Hollywood talent. I have never before seen a game in which almost everyone was someone I recognized from television or movies or both. One of the early cases had me exclaiming “Hey, that’s Matt Parkman!” Every time I turned around there was another actor I recognized. There are 21 cases in the main game (plus 4 DLC cases currently), each case having at least 3-4 new actors in it (along with the recurring characters). The credits listed at least 100 different actors which doesn’t even count all of the other people involved in making the game. Given the seven year development time, and this list of talent, I’m sure the cost of the game was much higher than I’m imagining.

The technology they used for capturing facial expressions and displaying them to us during the game was absolutely amazing. While they probably could have made the game without using “real” Hollywood actors, I think the game would have suffered for it. Using “real” actors and this technology was incredibly immersive. It was the closest I have ever seen to getting out of the uncanny valley, and part of me wants to argue it succeeded in getting out completely.

Of course, simply having this technology without using it for some game mechanic would have been silly, and the major mechanic for this game is the requirement that you “read” the person you are interrogating’s face to help determine if they are telling the truth or lying. Having real actors here was both a large success and a bit of a letdown. It was a success because they did an amazing job in getting the emotions across, but at the same time, it was a bit too easy for the same reason! For example, if you tell an actor to say “sit there and act like you just lied”, well, they will look like they just lied!  It was relatively easy to determine whether the response to a question was the truth or a lie.

Having only those two options would have made the game entirely too easy though, so lies (by far the more common response) were broken up into two different categories.  You could either choose “doubt” when you thought they were lying but had no proof or “lie” if you thought you could prove they were lying. The “lie” choice always felt entirely too arbitrary though, much like the old adventure games back in the day. If you weren’t following the exact logic the game designer was, deciphering whether or not you had “proof” of a lie was a dice roll half the time. Early on in the game I figured out that accusing someone of lying would sometimes give you a hint as to what kind of proof was needed, and you could always “back out“ of the accusation so that became the way I played most interrogations. If I wasn’t sure if I had proof, I would accuse them anyway, and if I didn’t get a hint that helped, I would back out and choose “doubt”. Sort of a “trial by error” way of gaming that hints at bad design if you ask me.

The game itself was extremely easy to finish if you didn’t care about your “case ranking” (how well you did) or anything. Finding clues was almost done for you, simply walk around and push the A button when the controller vibrated. Once all the clues were found, the game would play a little chime and the music would stop so you always knew when you were done.

The story of the game was another factor that I liked. It was basically broken up into two overarching sections as you worked your way across five different “desks” in the precinct. You start as a lowly beat cop on patrol before working your way through traffic, homicide, vice and finally arson. There’s an apex of sorts at the end of the homicide cases and the final resolution of the game at the end. The story was well told and kept me intrigued through the end, but I have one big complaint about it.

I hated Cole Phelps. If you remember back from the second paragraph, Cole Phelps is the person you’re playing as. Having the person I’m supposed to be playing (and having a connection to) be on my “I hate this guy” list doesn’t seem to be a great way to endear him to me. What’s worse, I get the feeling that I was *supposed* to dislike him! Towards the end of the game they try to redeem him in the story, which falls flat for me because I don’t want him redeemed since I disliked him to begin with. The flashbacks to the war did nothing but make me dislike him more (and why did he treat Jack Kelso the way he did?) The big “twist” towards the end didn’t make me feel sorry for him, it made me feel he got what was coming to him.

I liked all of his partners though, particularly Roy Earle which is weird because I don’t think I was supposed to like him either. Aside from one time early in the game when he slapped a girl though, I always got a kick out of him.

Having said that though, it’s a testament to both the actor who played Cole Phelps as well as the technology they used in the game that I got such an emotional response out his story, even if I didn’t necessarily like him.

There were also minor complaints in that my interrogations would go from calm talking to yelling insanely accusing people of lying back to calm talking in a matter of seconds, but given the huge dialog trees and the various outcomes that were possible depending on how I reacted, I don’t fault them too much for that. Overacting a bit perhaps, but nothing too detrimental.

I also liked how the DLC packs integrated right into the story if you happened to be playing them then. They were simply more of the same from the original game, but since I liked that, it worked out pretty well! Plus, since each DLC case cost 320 points individually, but I bought the pass for 960 points for all four cases (plus a few suits), it was a great deal!

All in all, I enjoyed my time with L.A. Noire, enough to even go searching around for all of the film reels. Enough to buy all of the DLC packs as well.

Game development is still hard…

It’s hard to believe that over ten years ago I joined the DirectX team with a goal of making game development easier. Back then, being a game developer was a relatively “exclusive” club. The barrier to entry for developers who wanted to make games was very high in all aspects.

My first goal was to make the act of writing the code itself to be simpler. DirectX is very powerful, but was quite esoteric if you didn’t use it every day. At the time, it was C/C++ only as well, and while these are great languages the fact was that Visual Basic developers (C# didn’t exist at the time) outnumbered them five to one (at least). Over the next few years many VB (and some C/C++) developers migrated to C#, DXVB became Managed DirectX, which in turn morphed into XNA Game Studio. Through each of these iterations the act of writing the code for a game became easier and easier.

If my only goal was to make writing code easier, then by any measure I can think of I accomplished this goal, but it wasn’t. I wanted to expand beyond the PC as well, I wanted to allow every day folks to write code for their home consoles, and in 2006 (with the first version of XNA Game Studio) that goal was accomplished as well (followed by the ability to publish and make money a year later). People don’t think much about it now, but that was huge back then. Nowadays it seems every device has a public marketplace and an ability for anyone to write apps and make money from them (and you would dismiss them if they didn’t), but it wasn’t the landscape in 2006.

It was all of these “successes” that prompted my exodus away from the XNA team and into a game studio in 2010. I felt I had accomplished all of the goals I had in lowering the barrier to entry for game development and wanted to move on to my passion of actually creating them. The release of Beards and Beaks has given me a bit of time to be introspective somewhat (which isn’t to say I’m not busy, but still).

For all the successes that we’ve had though, the simple fact is that today, halfway through 2011, game development is still hard.  In some ways, I would argue that it is actually even harder today than it was when I started, albeit for completely different reasons.

While we certainly helped remove some of the barriers to entry over the last ten years, we didn’t remove them all, and we’ve actually added a few new ones. For example, it’s still extremely difficult for an up and coming game developer to hook up with an artist, just as it’s hard for that artist looking for things to stick in their portfolio to find a developer. People are still confused about what a good “game idea” is.

Actually, that’s a good enough side track that I need to break off for a moment for a mini-rant. I swear if I hear one more person tell me that they have a great idea for a game, and then begin describe some story I’m going to scream. In the majority of cases, the story is not what is going to make or break your game (and invariably when someone is describing a “game idea” to me in this fasion, they are not in the minority where it matters). You need to know what game mechanic makes your game interesting. Even in story heavy games, the game mechanic is what makes your game most times. If your game idea is essentially “all the game mechanics of Gears of War with a different story”, this isn’t a good idea.

Sorry, with that rant out of the way, I’ll continue. I believe the barrier to entry for a budding game developer is so low now that the real problems are no longer “how do I make games”, but instead “how do I stand out in the crowd”. The barrier is no longer to entry, the barrier is now to recognition. How can your shining gem of a game rise above the cess pool of thousands of terrible games?

If you ask me, this is an even harder problem to solve, and despite rambling on for all this time so far, I’m not about to say some magic incantation that solves it because truthfully, I don’t know how. Sure, I have some ideas which I’ll go into presently, but I have no delusions that they are a sure-fire way to success.

First, as I alluded to above, you need to have a good mechanic (and a fun game). If you’re trying to make a rip-off of Gears of War, well stop it because you’re not helping anyone and just adding to problem. Now, that isn’t to say that taking a formula that works and improving it is a bad thing, but don’t try to copy something whole-sale unless you can do it better. You want to make a game that’s like Gears of War but includes the ability to turn into a dinosaur and eat folks? Awesome! You want to make a copy of Gears of War with a budget of $30 and a diet coke? Get out of here.

When I say taking a copy of a game and making it better, what I really mean (most times) is “polishing” the game. The term is a little weird to begin with, but basically what it means is that the game looks and feels professional. It’s hard to describe, but you can see it when it’s there and will miss it when it’s not.

People think that polish doesn’t matter as much, but in reality it matters probably more than anything. Consumers can tell. Angry Birds is like a printing press that spits out money, but it isn’t an original idea or anything. The exact same game came out years before it, but that game was unpolished and forgotten to the sands of time. Rovio took the basic idea, polished the hell out of it and have made more money than they know what to do with.

Of course, once your amazing game is out, you then need to market yourself. I feel a bit sorry for the single guys (or small teams) in this regard. At Microsoft, we have entire marketting teams, and it’s still a difficult proposition! I hope one day soon to talk more about this and some ideas I have, but right now this post is already way longer than I was intending it to be.

As the title says, game development is still hard.. I suppose I have a lot more work to do..

The Gunstringer and Fruit Ninja Kinect, $40 bundled!

One of the more difficult things about my job at Microsoft is not talking about all of the cool things we have coming up. Luckily we eventually announce things publicly and then I can talk about them, and today was another one of those announcements!

On September 13th (September 16th in Europe) The Gunstringer from Twisted Pixel will be publicly available for $40. If you don’t know who Twisted Pixel is they’ve put out some of my favorite XBLA games to date (‘Splosion Man, Ms ‘Splosion Man, Comic Jumper, The Maw), and having their brand of humor in a puppet shooter kinect game? I’m looking forward to this one!

What’s even better than that, it will come bundled with a code for the XBLA title Fruit Ninja Kinect. If you think slicing fruit with your finger on a phone is fun, wait until you try it with your whole arm.

This bundle is going to be one heck of a good deal if you ask me, and I can’t wait for it!