Archive for January, 2009

More Left 4 Dead Ranting

Wednesday, January 28th, 2009

After dealing with Rational products as a developer for many years, I can safely say I don’t have high expectations when it comes to desktop software functionality. So…when I see something basic that just doesn’t work, I get angry. At first, it’s a medium grade mouse-sailing-across-the-room anger. But it can quickly build to a blistering LCD-out-the-motherf*ckin-window anger. I’ll make up a table detailing all relevant anger levels later.

Anyway, I was very much looking forward to playing some L4D this evening after a dry spell. The zombie horde can’t be left unchecked…think about the children. My friends and I always play on a dedicated server that’s running on my Ubuntu box. An 8 player game (4 vs. 4) has minimal bandwidth, CPU, and memory requirements. Plus, we can usually get a full match going without much fuss (rage quitters notwithstanding). But tonight I ran into a bug that is so irritating and so seemingly trivial to fix that, well, I’m writing about it.

Shortly after we got a game started, I noticed my machine was running a bit sluggish. I alt-tabbed out of the game to kill some idle programs that were eating up memory. I got back just in time to move my character 10 ft before getting kicked out the game for being idle. Oh well…was my own fault. “No problem”, I thought. I’ll pop back into my old spot real quick. When I tried connecting from the main menu, the server taunted me with a simple message,  “Game is full”. I checked the server console and there were still only 7 people playing. Restart the game and try again? Nothing. Connect manually from the dev console? Forget it. Beg my friends to invite me to join a game running on my own f’in box? Loser! Nothing I tried would let me back in the match.

At this point I’m on the verge of kicking my server (out of pure frustration if nothing else). I managed to join again only after someone voluntarily quit (read: I kicked them because their handle was stupid and took their spot). But…the server was still under the impression we were full with only 7 people and we never got the game balanced again.

The screenshot below pretty much sums up why this is so infuriating. Notice the server console clearly shows 7 people in the game, while the game shows 8. It’s beyond me how this could happen. If I can ask the server console for the player count and get the correct answer, why can’t the game? Is the game messing with me out of spite? Perhaps the server is lying to the game in an attempt to kill my inner child. We’ll never know…

I’ll wrap up all this bitching with a plea to the dedicated server developers at Valve. For the love of God (if you happen to worship one), fix this!

Left 4 Dead Bug

Why does the game hate me...?

Of Mice & Metal

Thursday, January 22nd, 2009
We wants it!

We wants it!

I’ll admit, I buy more gadgets on impulse than I should. I think my Chargepod should have shipped with a flyer for an electronics anonymous group, a hotline number, or…something. Anyway, I normally don’t have much of a knee-jerk reaction to new hardware design anymore (Apple’s new MacBook not withstanding), but this thing really impressed me.

This is probably the sexiest mouse I’ve ever seen (a title I didn’t think I’d ever give out, much less blog about). It’s been a couple years since I last played WoW (I think they do actually have support groups for those of you that still do), but I can imagine this thing being pretty popular with WarCrack addicts.

Check out SteelSeries’ site as well, they make some decent gear.

Source SDK Development Woes

Thursday, January 15th, 2009
It hurts right around here...

It hurts right around here...

I had mentioned in my first post that I wanted to focus a lot of the content on this site towards two software projects I’m working on in my spare time. One of them is a PC game demo I’m writing with some friends.

When we started the project, everyone was dead set on creating the demo as a Halflife 2 mod using the Source Engine SDK (we’re all loyal Valve fanboys). We spent about three weeks heading that direction and finally gave up. We’re currently in the process of starting over (possibly using XNA).

A lot of the reasons we decided to dump the Source SDK are summed up in this thread on the hlcoders mailing list. It’s getting a bit long though (and has strayed off topic more than once). So after spending some quality time with the SDK, here are my primary gripes:

  1. API Docs – This is probably my single biggest complaint. The Source SDK is a huge and complex chunk of code. Without API docs, new developers are basically forced to read the header files (which are sparsely commented at best) and waste a lot time on trial, error, and guess work. I know that commenting and documenting source is royal pain and a bane of all hackers (even the good ones), but it’s still vital. This is especially true for something being released to the public. Doxygen has been around a long time, and is used in at least a few open source rendering and game engines. Given Valves resources, I don’t see a reason for this.
  2. The Source SDK Wiki – This was a great idea that I think has just been poorly executed. Valve started this wiki around the summer of `05 as a central source of documentation for the modding community. The content is poorly organized, most if it isn’t written very well, and a lot of it is simply outdated. It seems as if Valve just installed MediaWiki on a server somewhere and said “Here…enjoy.” I’m all for community edited documentation and version control, but I think Valve has to set standards…and the community needs to keep to them. Installation instructions and beginner tutorials should probably be written by or at least approved by Valve developers. This would help keep the learning curve from getting too steep and provide a reference for people that want to write more advanced content.
  3. Source Code – The first steps to creating a new Source mod are very straight forward. You open up Steam, launch the Source SDK tool, tell it to create a new mod, and you’re off. The code that it dumps in the project directory is a bit of a mess though. When you open the generated Visual Studio (VS) solution, two projects are presented: one that builds a client DLL and another that builds a server DLL. The base source code directory for the client project contains no less than 315 files. The sub directories contain even more and they’re not organized in any seemingly logical fashion. In addition, the project doesn’t build clean (read: without warnings) right after you create a new mod. Some of the warnings I fixed by tweaking some header code, others could have been suppressed in the project settings. Finally, as of this post, the VS solution generated by the mod tool is a VS 2005 solution. Converting it to a VS 2008 solution creates more problems that need to be fixed. Overall, the base source code seems sloppy and poorly organized.
  4. Design Documentation – Another problem with the complexity of the Source Engine is that new developers can easily get overwhelmed. I got frustrated and confused many times because I just wasn’t sure how the pieces fit together. Often times the in-game dev console would spit up errors and I’d have no idea why, where they were coming from, or how to fix them. A good design doc would go a long way to alleviate some of this. Something that described at a higher level how the different parts of the engine and SDK talked to each other and where to find the code for each piece. This could also be helpful as a road map to the API docs as well.

I know a lot of this is just ranting (and I’m not the best coder in the world by any stretch). But overall, I was really disappointed with the Source SDK. As a gamer, I’ve bought everything Valve has ever released. A few of their games are in my top ten as well. I think they listen to their customers and genuinely try to improve products after their initial release (Left 4 Dead and Team Fortress 2 are great examples). I was excited to try my hand at Source development after reading about the origins of Portal, CounterStrike, and Left 4 Dead as mods. But as a developer, I feel like a lot of the work on the SDK was shoddy. I know others have similar grievances, and I hope Valve addresses some of them in the future.

When Grammar Strikes

Friday, January 9th, 2009

I’ve been reading Penny Arcade for about 5 years (give or take a year). The dialogue bubbles can get pretty extensive sometimes, but I don’t think I’ve ever seen an obvious grammatical error. Here is proof that even geniuses make mistakes. I copied the image in case they fix it. Here’s the original link.

Locked In Brutal Combat

Ranting About Left 4 Dead

Tuesday, January 6th, 2009

I just got out of a Dead Air campaign in L4D on expert mode. Made it through the entire mission…didn’t get the achievement for it. I’m not sure what kind of gorilla math the game is doing to figure out the achievements, but it’s a little annoying sometimes (read: all the f’in time).

The only thing I can figure is that you have to survive every level individually in order to get the campaign achievements. I know for a fact that the entire team can die and you can restart whatever level you happened to be on. Even with the restarts, everyone still has a shot at the achievement.

I think Valve could do us a favor and show all the achievements you can possibly get at the start of EVERY game, and then cross them off as you lose eligibility. For example, every team playing a campaign starts off with the chance to get “Safety First” if no one takes friendly fire damage. Then, when someone gets shot by a teammate, the game could tell you that you’ve lost eligibility for that achievement. They could even have some fun with it and flash a status window showing who shot who on the screen along with an animation of the achievement icon getting smashed or something.

Sorry, just venting out loud…end rant. :)

I hate vans!

I hate achievements!