Archive for October, 2007

Here’s an interesting post courtesy of Moorgard’s blog: Scott Hartsman spent some time to respond to criticism about the relative quality and complexity of MMORPG’s with a blog post titled: MMOs are bigger than you think. Scott is a guy who has worked on Everquest and Everquest II, so he should know what he’s talking about.

The reason I got into software development was because of video games. My first real career goal as a software developer – the first “dream job” I ever really contemplated – was to work on a great video game. So it was with a certain amount of anger and frustration that I watched as games that I loved to play, and companies who made those games, suffered criticism at the hands of ignorant players.

I’ve long defended the developers of Everquest and Everquest II on various message boards, largely because I, being a software developer, understood the complexities and hurdles that those developers face to bring us these games that we enjoy so much. So it was with great interest that I read Scott’s post today.

While reading his post it struck me how similar his problems are to any other business application. Scott writes:

This is painful for MMOs in particular because of the unique (huge) number of critical, non-sexy things that you have to succeed at, where failing at any one of them can entirely sink your game:

- Pipelines
- Tools
- Infrastructure
- Stability (again, doubling the work – the client and all the servers)
- Scalability
- Stability
- Security (added this in for the blog post – Can’t trust that client)
- Performance (optimize both that client and all those server processes)
- Oh, and..Stability

Are these things really any different from an ERP system, for instance? Looking down the list, I see all the same issues that we (.NET business application developers) face in our domain as well.

Which makes me wonder if part of the problem isn’t the methodology. Scott brings up an interesting point:

MMOs are still really young. To a lot of the people working on them, it very much is creating something entirely new. Compare to movies or single player games, for instance. It’s less of a challenge to staff those types of projects up with people who’ve worked on them before, in all of the right positions. Doing the same on a high-budget MMO remains next to impossible.

I don’t mean “key management” or “leads” like you see in studio announcements and press releases all the time. I mean everyone other than a small number of entry-level folks. Until you’ve done it once, you have no idea what you’re getting yourself into.

But you know what? This is true for all software development, not just MMOG’s.

Just about every job I’ve had, I’ve been asked to develop software that I’ve never done before. Of course, that’s part of what makes this industry so damn cool – we’re always learning new stuff, and we’re always pushing our limits with new technologies, tools and ideas. But the core problem is the same: we work in an industry where we’re asked to do things that we have never done before.

I don’t think this is anything unique to MMOG’s. Sure, there are people in the business application world who have built business software a dozen times. But for every guy who finally achieves a level of expertise with that sort of domain, a dozen other guys graduate from college without any experience.

So I come back to the methodology. In the business software world, we’re learning that Waterfall is a recipe for failure, and Agile is a way to help us succeed. Methodologies like Scrum and Extreme Programming are giving software developers better techniques for minimizing risk and ensuring success. I’m starting to read more and more where game development houses are experimenting with or turning to Agile to help them succeed as well. I think these things add up…

Inexperienced developers is an issue that will never go away; it is going to remain very hard in the future to hire only the people with extensive knowledge in a particular domain. As more new blood enters the workforce, our discipline will continue to be refreshed with talented developers who lack in specific domain expertise. Mentors will always be key, and so will methodologies that help teams succeed.

The trick, as I see it, is to improve the process of software development. When you can accomplish that, even in small measures, then some of the issues Scott raises, like inexperienced developers and “wild miss-scoping” can be minimized.

30 Days of Night

Vampire lore makes it clear that sunlight is one of the few means of certain death. What better location then, to feed on human prey, than a small Alaskan town near the northernmost part of the state where the sun disappears for 30 straight days? That is the setup for 30 Days of Night, a film that bears some stylistic resemblance to recent horror successes such as 28 DaysLater and The Decent, but doesn’t quite live up to the pedigree. That is not to say that the film is bad – far from it considering the lengthy history of horror films, and the vampire genre in particular – just that it never quite gets off the ground. Where those other horror films succeeded in creating a frantic pace that is borne of fear, tension and drama, 30 Days of Night supplants those elements in favor of blood, gore, and… more blood.

The film opens by explaining the nature of the town’s latitude, thus giving the film makers an excuse for the crafty title. Today is the last day of sun; the majority of the town’s five-hundred-plus residents will take leave during the 30 days to warmer climates where the sun behaves in a normal fashion. Stella Oleson (Melissa George) is one of those people trying to get on the last flight out of town. Her estranged husband, Eben Oleson (Josh Hartnett) is the local Sheriff, who spends the last hours on the last day of sun trying to track down a series of vandalisms that have occurred.

The vampires, who have arrived on a desolate looking ship, have sent a familiar, played by Ben Foster, to hinder the remaining resident’s attempts to flee. A helicopter is destroyed, sled dogs slain, and a communications outpost eliminated. Soon night falls and all hell breaks loose.

30 Days of Night is filled with all the typical horror film fare: fast moving blurs on the edges of the screen, shapeless masses leaping out of dark corridors and dragging off unsuspecting prey, loud symphonic blasts that try to get you to jump out of your seat. None of this is new.

What the film does do is restrain itself from patronizing the audience. It is assumed that everyone in attendance knows something about vampires, and thus nothing is ever explained. For instance, the “V” word is only uttered once, and when it is, it’s so late in the film that by now all of the survivors have finally come to grips with the fact that these invaders could be nothing else.

But up to that point the characters in the film behave as anyone would when confronted by a life threatening situation: they shut themselves up in their houses and try to stay safe. There are no shots of teenagers disregarding the sheriff’s orders and slinking off to make out, for instance, only to be nabbed by the vampires. Instead, everyone takes the threat serious, and in terms of mood and atmosphere, that makes all the difference.

Because the characters in the film approach things seriously, it is easier for us to do that as well. Despite the gore and bloodshed to follow. And does it ever follow.

Where 30 Days of Night breaks down – where it is weakest – is where it spends the most time: in the middle act, where the vampires feed on the necks of the townsfolk. The opening act seems too short and condensed by comparison; it feels rushed.

The middle portion of the film spends too much time showing gore and blood and not enough time developing the story or characters. We’re lead to believe that these people may survive for the whole thirty days by hiding in attics and stockpiling supplies, but their situation seems so dire that without the subtitles telling us how many days have passed (Day 18…), one would only think a few hours had transpired. What happens during those days and weeks seems improbable and the director gives us little reason to believe otherwise.

There is some redemption toward the end, however. I will not reveal what happens, but only say that it was not an ending I saw coming. I had not read the source material prior to seeing the film (it is based on a mini series comic book written by Steve Niles) and was pleasantly surprised by what occurred.

The film is shot well and looks good. Roger Ebert says the movie is

well-made, well-photographed and plausibly acted, and is better than it needs to be.

I would disagree with that last part – it’s as good as it should be, and it could be better. I don’t see any reason why these sorts of films should slide by with bad camera work and terrible writing/directing. 30 Days of Night doesn’t elevate its source material to the same level as something like The Descent, but it does an admirable job of taking the horror genre above the B-movie line.

Every now and then I remember to check my blog for trackbacks, postbacks, etc. Today I found this article from .NET Geek titled Blogs vs. CodeProject. I thought it was quite fortunate to run across that particular post since myself and a coworker were just bitching about the CodeProject the other day.

I’ve got to the point where, when I Google something, I skip references to two sites in particular: Experts Exchange and CodeProject.

Experts Exchange pisses me off because they blur all of their answers; they want you to pay so you can discuss software problems and solutions with other “experts”. I find the thought of paying to converse with my fellow software developers so revolting that I want to vomit every time Google links to one of these pages. Experts Exchange is the antithesis of something like ALT.NET.

CodeProject is better because it’s free. But it also has some serious problems…

The first problem is that the vast majority of the contributions to the CodeProject are written in such a way that the author wants you to download their code and use it. This is not an ideal solution. Instead of explaining the principles of a solution that the author is proposing and giving you enough code examples to write your own solution, they force you to download the code they’ve written. The most frequent suggested solution on the CodeProject is to, “download my library and use it.”

Well, I don’t want to download you’re code, CodeProject dude. Half the time (or more) your code is so poorly written and/or designed that I wouldn’t put it in a production environment if you bribed me with hot E3 booth babes. If I end up wanting to use anything off the CodeProject I have to completely re-write the code to make it acceptable, often fixing bugs and errors along the way. It would be a lot easier if the people who author solutions on the CodeProject would just write out the solution in their article, and then point to a reference implementation that you could download if you want to.

Now, someone is going to argue that the code on CodeProject is just that – reference implementations. But the point I’m trying to make here is that I shouldn’t have to download the code in order to understand the solution they are presenting. The concept behind the solution is what should be important, not the author’s library of cryptically written spaghetti code. Folks on the CodeProject spend way too much time writing libraries for people to download, and not enough time explaining how to properly solve a problem.

So, when Kim asks the following question about hit counts on CodeProject articles vs. blog posts:

Or maybe numbers isn’t everything???

I’m inclined to say: I agree. Counts aren’t everything. Ideas are.

CodeProject has one advantage over a blog: it’s bigger, so it’s going to receive more traffic. Unless you’re Ayende or someone else with a fairly sizable audience, then posting your solutions on the CodeProject is a good idea. You’ll reach a wider audience and help more people that way. And from reading Kim’s blog that appears to be what he/she is all about: helping others. And that’s a good thing.

So I don’t want to seem like I’m coming down hard on CodeProject. I love the idea, I just wish more authors would focus on the idea they’re trying to share instead of the assembly they’re compiling.

We chatted about this at work today…

I was lucky enough to have lunch in the same room as Scott Guthrie last weekend at the ALT.NET conference. He gave an impromptu presentation on some of the new features of C# 3.0. One thing that looks really cool is extension methods.

It struck me today that if Vegas were giving out odds on the class most likely to have the most extension methods written against it, that the DateTime class might be the front runner. I mean, is there a more heavily used object in .NET that is a bigger pain in the ass to work with? (I’ll wait here while Ayende comes up with one :) )

I know that I, for one, can’t wait to start extending that bugger and do away with some of the static helper methods we have floating around…


Toyota does World of Warcraft

If you watched the NFL this weekend it was hard to miss the new Toyota ad that incorporated the World of Warcraft. The ad isn’t terribly awesome by itself, but there were two things about it that did stick out, especially to those of us who play MMORPG’s.

First, it signals the first time (that I can think of) that an MMORPG has been used in mainstream advertising on television. I know MMORPG’s have been advertised at movie theaters and on cable TV stations, but to my knowledge no MMORPG has ever been incorporated into an advertisement for another company. And to be shown during NFL games no less. We’re talking about NFL football on Sunday afternoon – the juggernaut of sports in America – the time when every male under the age of 50 is watching. I thought it was a significant leap for World of Warcraft and MMORPG’s in general to be referenced so prominently it a commercial. It showed me that they have finally hit the mainstream in America and that’s pretty damn cool.

The second thing that was neat about the video is that it instantly hearkens to the most famous WoW video of all time: the Leroy Jenkins movie. Even if you’re not a World of Warcraft player or fan, this is one of the funniest videos you’ll ever see. There’s a summary of the event written here:

For those of you who might be unaware of the legend of Leeroy, I’ll lay it out for you, though you’d be best served to watch the video for yourself at www.leeroyjenkins.com. The story goes, Leeroy was away from his keyboard while his teammates waited and strategized about how to defeat the next encounter in the dungeon they were in, which is known as Blackrock Spire. In the midst of the elaborate planning, Leeroy returned and yelled, “Alright, time’s up! Let’s do this! Leeeerooooooy Jeeeeennkins!” And then he charged into the next room. The result was the hilarious death of Leeroy and all his friends. While the video was clearly staged, it was so well done and so classic that it instantly became a phenomenon in the WoW community.

Sometimes I think back to when I started playing roleplaying games – the first time some college friends introduced me to pencil and paper Dungeons and Dragons; the first time I scampered around a MUD with nothing more than a command prompt and my own imagination to fill in the gaps; the first time I experienced a virtual 3D world when I logged into Everquest – and I think about how far this form of entertainment has come. It’s gone from being demonized and misunderstood to mainstream. The Lord of the Rings trilogy showed that Hollywood could take fantasy seriously and still make millions of dollars, and now we have World of Warcraft as a backdrop for Toyota ads. If you’re a fantasy fan, you have to think this is pretty cool.