Skip to Content

SQL Server XML

Apparently, since I last touched SQL Server they’ve added some pretty awesome XML support.

SELECT
    SpecId as "@Id",
    Name as "@Name",
    Description as "Description"
FROM
    tbSpecs
FOR XML PATH('Spec'), TYPE;

Returns XML straight out of SQL Server. The best thing? The “TYPE” clause on the FOR XML part makes it return as an XML data type (which is also something new), meaning you can do some cool things like write functions that return XML that you can use to build up collections, which can be included in your XML (I use it for collections of children, pretty much solving the hierarchical data problem I always used to have).

I know this is really ancient news for anyone who works with SQL every day, but it’s been a few years for me, and I thought it was pretty awesome.

Obsidian Portal Offline Backups

I played around with some XSLT last night and came up with a pretty nice-looking design for viewing Obsidian Portal’s offline backups. They’ll be adding them soon, and I’ll post one on here when they do!

Obsidian Portal is a great site for managing a D&D campaign. My group just started using it and it’s really a step up from anything else I’ve used. If you’re running a D&D campaign and want a little more tracking of characters/locations/events, I definitely suggest checking it out.

Also, the Cartographer’s Guild has some awesome tutorials on map making techniques.

Edit: It’s up! http://blog.obsidianportal.com/?p=476

Acid Boots

Mike messaged me late last week with a challenge: make a game in under 10 hours and in less than a week. This is the result, from the bit of free time I’ve had after work:

Acid Boots

You can download the game here:
Download the game

You’ll need XNA installed to run it.

Xna Color Charts

I saw Brandon’s Xna Color Chart linked on Twitter, and thought it’d be great if the colors were sorted based on hue and value, so I went ahead and made some variations:

Large Boxes:
Colors, by Name
Colors, by Hue
Colors, by Hue (bands)
Colors, by Hue (luminance sorted)

Small Boxes:
Colors, by Name
Colors, by Hue
Colors, by Hue (bands)
Colors, by Hue (luminance sorted)

My favorite is the small hue bands.

Hello World

Seems like forever since I updated.

What have I been up to you ask? Well, getting married to my sweetheart mostly. I also got a new job and moved to the Seattle area (all of the above within about 2 weeks). The dust has finally settled a bit, so I’m here to tell you that I’m still alive and kicking, and now live within a stone’s throw of Microsoft (literally – assuming I can throw something across the street).

I’m working at Digini (now known as Blade Games) on Blade 3D. What is Blade 3D you ask? I imagine you would – I didn’t know what it was when I first looked at it.

Blade 3D is a game engine with a full-featured IDE, built with XNA and covered in awesome sauce. At first glance it looks like a level designer. Delve a bit deeper though and you’ll find the extensible component system and the scripting system (scripts are written in full C#, complete with IDE!) Don’t like touching code? No problem! You can do all the logic through the logic diagrams – just add nodes of functionality and connect them together.

Basically, it’s a game designer’s dream. You can edit a scene really easily, then add gameplay logic just as easily. Don’t have art? No problem! There’s a marketplace with lots of free art, and plenty of really nice assets at a cheap price.

I really suggest viewing the video tutorials on the site for more information about the product – they give a pretty thorough look at all the different features. There should also be a trial version coming along soon.

So what do I work on? Well, I just finished a long two months with the FBX SDK. If you’ve ever seen it, you’ll know how exhausting figuring it out can be. Not to mention it’s all in C++, which is a bear to fight with once you get really used to C#. After a long battle with the SDK though, I finally produced a very functional importer for FBX, Collada, 3DS and OBJ files. This replaces the outdated libraries we were using and gives us the ability to really spit-shine our art pipeline.

Aside from that, I’ve been working a bit on the logic diagrams system, as well as various other areas in the engine.

So that’s what I’ve been up to. I got married, employed, and moved late last year – all within a span of two weeks. It’s been pretty crazy, but completely awesome as well.

Step Seven: Alpha 1

The alpha is public! Tell all your friends!

Download the Windows Installer

Download the Xbox 360 ccgame (creator’s club subscription required)

Enjoy the game! It’s stable, has local multiplayer, and is pretty fun. Pablo did some amazing artwork, and it was great to work with. I’ll be writing something about those cloud shaders soon.

Let me know what you think. I’m still in need of some music, I need more art, I need to change some sounds around, I need more UI, etc. etc. But the game is ready for playing, and the more feedback I get, the better I can make it. I’ll be getting married in a few weeks, but one the dust settles and XNA 3.0 is out, I’ll likely be adding Live support to this game and putting it up on the Creator’s Club Marketplace!

That’s the plan at least – we’ll see how crazy busy my life gets.

More information is included in the readme file, which you should definitely read for the Xbox 360 version (it’s not included in the setup):
View the Readme

Ziggyware Fall 2008 Article Contest – Win an Xbox!

Ziggyware is running an XNA Article Contest from now until November 30th. Write an article on an XNA topic and enter it in the contest and you could win! The prize is an Xbox 360 Elite!

I’ll definitely be entering! ;)

Read more about it at Ziggyware.

Coming Soon!

About two weeks ago I thought, “hey, it’d be cool to make a game in 24 hours.” That of course meaning 24 hours total, not one day. So I made up a design for what should be a small game, and started off. Then the design grew (as these things do), and the number of players grew (because competition is fun!), and I even added a velociraptor. However, I also had a lot of stuff come up over the last couple weeks, which made me lose track of my time entirely – so I’m probably somewhere between 24 and 48 hours for this so far.

So I wanted to give all you readers a preview of the public alpha I’ll be releasing by the end of the day (assuming I don’t get loaded down with real life priorities between now and then). It runs on Windows and Xbox, supports up to four players, supports mouse and gamepad control (and keyboard if it makes it in), and is pretty entertaining. I just need to stamp out a few bugs, clean up some more interface stuff, and work on the initial difficulty curve before I’m ready to put this up as a public alpha.

Step Seven

The art is almost entirely by Pablo Poffald, a wonderfully keen artist I’ve had the pleasure of working with in the past. I added a few things here and there (and wrote a shader to emulate some Photoshop effects – look for a tutorial on that in a few weeks).

So if everything goes well, I’ll be putting up an Alpha of this later today, for both Windows and Xbox. I’ll of course appreciate any feedback and bug reports.

Voice-assisted AI

A little while ago I read through the engineering publications from Bungie. Some of the AI papers discuss one of the worst problems in game AI: recognizing the player’s intention. The next time I played on Xbox Live, I picked up my controller, put on my headset, and had an idea: why not use voice to help AI figure out what you’re thinking?

For example, if you say “fall back,” the AI could recognize that and do it. If you have the thermal vision of the group and you see enemies around a corner, you might say “enemies around that corner.” Even though you didn’t tell the AI which corner you meant, they could either guess, or – since they’re controlled by the game system – use information in the system to figure out which corner you mean. It’s cheating, but it improves the user experience, so it works.

So why isn’t this in games already? Aside from localization issues there really aren’t any barriers. Speech recognition works pretty well – it’s a bit slow and not always accurate – but that’s good enough to provide help to an AI in a game (not to entirely guide it – I’m talking about a layer on top of the normal AI you’d find in a game). The only other issue would be that not everyone has a headset. But if you only use voice to assist AI, you can still provide a quality experience otherwise. We should at least be seeing this sort of thing in top-tier games.

In fact, to demonstrate how easy it is to get some very rudimentary speech-driven AI working, I decided to code a little test tonight. I set aside some time for it and went to work. 15 minutes later I was done. Turns out .NET 3.0 has speech recognition built into the System.Speech.Recognition namespace. The result is this:

Download it here
(requires .NET 3.0 and XNA 2.0)

You say some variation of top, bottom, left, right or center to move the ball to that position on the screen. It’d be trivial to translate that into a 3D space based on a first-person perspective (though “front” might be a good word). It could also be more context-sensitive – e.g. maybe “on the left” after “the door” would refer to the left side of the hall instead of the player’s current “left”.

So what are your thoughts? Why aren’t we seeing this in games already? Are there games that do something like this? I know there are games that use sound recognition, but why wouldn’t the more popular games use voice recognition? I looked for patents, and there are a couple, but they seem very specific, and not really applicable to the first-person genre. Other than taking system resources (which with more powerful systems should be less of an issue), what reasons are there for this not being in games already?

Interaction Design

Dodgeball

So, I woke up this morning excited to try out the new XBLA game, Pirates vs. Ninjas Dodgeball. As soon as I downloaded it and started the game, my fiancée said “hand me a controller, this looks like fun.” Now, there aren’t many games which pique her interest too, so I was even more excited. Ten minutes later, we gave up.

The bad thing is, I think I gave up before she did. What is a wonderful concept is made difficult by some of the controls. Our first 15 seconds with the game were like this: move around, do some more moving, try to find a ball, figure out why they’re on our side of the line, pause. The next few minutes were spent with an extremely complicated set of instructions for the controls, of which we gleamed that X threw the ball (or attacked), A jumped, B caught the ball (though we never got this to work), and Y did some sort of special attack if you had a meter full – which I couldn’t find.

Three minutes should be enough to tell you whether or not to get the game. It certainly was with Castle Crashers (which we’re playing through a second time now). But with PvNDB, something I’d waited for excitedly, I just can’t enjoy it like I’d like to. We played against easy difficulty AI, and got destroyed every time. Here’s a short list of issues I take with the game:

  • It’s hard to find the ball, then pick it up. The “pickup the ball” radius is too small.
  • It’s easy to target (well, not a specific opponent), but almost impossible to catch. B never seems to catch.
  • I had to read the instructions to figure out the controls, and even then I couldn’t do the cool stuff the computer was doing without another 10 minutes of reading. I shouldn’t have to read to enjoy the game.
  • It took a while to figure out how to select our team. Plus, when looking at characters, we kept tilting the stick ever slightly left or right, changing our team. Select teams, then characters. Not both at the same time.
  • Seriously, why can’t I just hold down X to charge a firey shot like the computer was doing?

And the list goes on. It looks like a phenomenal game, and I’m sure that with enough play time I could figure out the controls enough to enjoy it – but with so many other phenomenal games to play, I just don’t feel like devoting the time it’d take to learn the controls for this game. Especially when I’d then be that guy when I invited my friends over to play. And honestly, this game demands local play – 2v2 matches could be awesome.

But the controls need to be really intuitive, and need to work well. With the difficulty selecting teams (expand the horizontal dead region to fix), the difficulty catching a ball (my fiancée said “I held B the whole time, why didn’t it catch it?”), and other general accessibility issues (the viewing angle is so low that it’s hard to move up and down to get the ball – graphics over gameplay in this case) – it’s just not that fun.

Your controls are how you present your game to the player. Make sure they’re simple, intuitive, and don’t require 10 minutes with a manual to learn. I don’t want to invite my friends over and say “here, read this manual while I make a snack” – I want to sit them down and play the game with them.

Shredding

The other XBLA release this week was Shred Nebula. It looks like a pretty fun game, and I had a decent time with it. But I just can’t understand why I can’t move the left stick to move my ship. After Geometry Wars and countless other top-down space SHMUPS, you’d think that left joystick = move would be a no-brainer. But in Shred Nebula, left stick turns, left trigger accelerates, left bumper is reverse thruster, and Y activates “hyper drive.” I can understand having a button to activate “abnormally fast” mode, but not to move. I can also understand moving in reverse…though it’s really awkward. (Note: I may have these controls wrong – but there are buttons for everything I mentioned)

Okay, so then you have right stick to gather things (can’t this be done automatically? It seems to be done automatically half the time anyway.), X to fire (I think), right bumper to shield, and B, A and Right Trigger do something too. Now, from a player who has access to all buttons while playing Halo (I wrap my index finger around to the front to access ABXY), I had problems with these controls. Most of them could have been solved by mapping movement to the left stick.

Interaction Design

All of these problems have to do with Interaction Design – one of the more important areas of Usability studies for game designers. Over years and years of playing games on consoles, we’ve developed expectations about which buttons do what on a controller when we’re presented with something on the screen. Left stick almost always moves. Be it a side-scroller, first person shooter, top-down SHMUP, or anything – moving the left stick always moves your character.

The rest varies a bit, but B is usually cancel (on account of being red), A usually does something like accept commands or jump, X is used for shooting and commands, Y is used for less-used features (on account of being farthest away from the right stick for the thumb – read up on Fitts’ Law). The triggers can be used, or the bumpers, but not usually at the same time (except by more advanced players).

In general, trying to keep games to about 5 different controls is best for games meant to be easily accessible, and up to 9 for more advanced games (or less-used functions). This is based on cognitive psychologist George A. Miller’s research, which determined that the human brain can deal with about 7, plus or minus 2, different choices at once. Past that things become confusing, or need to be broken up into smaller tasks.

PvNDB does this fine – there are 5 controls – move, throw, catch, jump and special. However, they don’t react as expected (B doesn’t always catch, X can be used for many different throws). Shred Nebula on the other hand uses almost all of the controls on the gamepad, but does so unintuitively – requiring a button press to move. Both games seem like excellent designs with great gameplay, but they’re rendered unenjoyable because of the controls – the way the player explores the gameplay.

The bottom line is, please do some reading on usability (and take a course or two if you can!). There’s plenty of good materials out there specifically related to computers and games (you’ll find a lot on website design, which can be helpful) – Donald Norman’s The Design of Everyday Things is one of the best out there. It talks about everyday things – a teapot, a microwave, etc. If you can understand why those might be hard to use though, you should certainly be able to understand why a controller with 17 buttons and two joysticks could be difficult to use if the software it’s controlling isn’t designed well.

Edit: To add some final notes – I know that asteroids has the “push button to move, turn to aim” style of play, and that the controls on PvNDB aren’t that bad – but I had some trouble enjoying both of these games this morning in the 10 minutes I gave each of them (due to controls), and I’ve been paying games for almost 20 years. While they’re both decent games, I feel like the controls are holding them back from being phenomenal – at least to me (and my fiancée – who has trouble with controls anyway).