I apologize for being quite silent on this blog recently. I've been super busy with work, personal projects, and my new blog, the Toolsmiths. In general, I'm super excited about the success of the Toolsmiths. We've been hit on reddit twice (with HUGE traffic spikes both times) and the comments have been generally excellent. I'm hoping that the momentum will continue straight into GDC, when I'll be hosting the Tools SIG roundtable to discuss the various ideas for the direction of the SIG in the coming year. The blog was a great start, and I think it has gotten people excited about the Tools SIG again by making it visible. Now we need to leverage that into community projects that can actually help the community.

As a side note, I can really only act on all of these plans if I'm elected Tools SIG chair. If you haven't voted yet, please remember to vote soon, as elections close on Friday.

In addition to the Toolsmiths, I've been working on some small side projects, including a port of Sort to XNA, and a port of Angel to XNA. I know a lot of people are interested in the Angel port, and so far it's coming along very nicely, though it does have a lot of differences from the original Angel (especially in the rendering department, obviously). Hopefully I'll have my first alpha for that available after GDC, but we shall see.

I took part in the Global Game Jam this weekend, and I have to tell you, it was a lot of fun. Version 1 of the game we created, The Game Of Nom, is available from the Global Game Jam site, and was voted third favorite at the location we were participating in, and I think that was a fair place for it to be (Move Mouse To Fulfill Destiny and The Beat were really awesome). I'm really happy with how the game turned out. It had the right feel and I think it really extracted the emotions from players that we wanted. The rules were simple enough that you could easily sit down and play it, hard enough that you could play for a while before winning, and interesting enough to be fun. That all said, the game is fairly buggy, especially when you're moving around flocks or trying to combine them, and that's a huge detriment to the game. At some point, Darren or I may actually fix a few of the issues and post a new version on the game jam site, but don't hold your breath.

So, for my own sanity and for future reference for everyone, I thought I'd do a post mortem of my experience.

What Went Right

  1. Enlisting the full time help of an artist. Amanda did an amazing job of giving us a feel for the game very early. I have no doubt that without her, the game wouldn't have been nearly as fun or interesting, and wouldn't have achieved this balance of fun and message that we wanted. By having a cute style to the game, we were able to present the dark message without seeming overly pretentious, which was awesome. My new rule is "artists make things look cool quickly," so get them involved early and things will look cool early, and get everyone really energized for the rest of the jam.
  2. Having a team. The first game jam I participated in, it was just me. Now, that was great for rapid iteration, but not for making something really interesting. I didn't have anyone to bounce ideas off of, and no one to really keep me focused and in line. Working with Darren not only allowed us to do something a little bit more complicated than we would have been able to do alone, but also ended up producing a much better product.
  3. Not sweating the small stuff. For the most part, I think we did a good job not worrying about some of our problems until later, and getting the game playable quickly so we could test it and refine it as needed, instead of spending lots of time doing things like improving the flocking behavior (which, I'll admit, I spent a little too much time on anyway ;) ). The key to Jams is knowing when things are "good enough," and I think we did a pretty good job with that.
  4. Tools choice. Although we had some problems with it, XNA/C# is a really great prototyping language. Right before the Jam, Darren and I were considering other options, including the beta of Unity that was made available to the jammers. The things was, we didn't want to spend lots of time fighting to get things on screen and working, when we could spend time on the game play. XNA didn't give us a lot of pain for our simple little 2D game, and for that we were pretty thankful.

What Went Wrong

  1. Needing a prototyping framework. XNA is awesome, but it's not a great prototyping framework. As I don't do too much prototyping, I really don't know what I need and what's overkill. I found that the two things I really ended up wanting / needing were a simple object manager and an actor framework / state machine framework. We actually implemented states very late in the process and they were very hacked together. I found myself wishing we'd had OnEnter / OnExit / ChangeState for the little blobs frequently, but implementing states would have taken more time than hacking around them. In this respect, we maybe should have gone with Angel which has that stuff already built in, but it'd come out the day of the Jam, and I didn't want to try to learn it while Jamming (I've learned my lesson from the OLPC jam).
  2. Clear message, not so clear implementation. We knew what we wanted to get across to the player early, but not how to do it, and trying to discuss it mid jam was hard. Another twenty minutes talking about implementation would have helped, though during our initial discussion I was itching to get things running. What we really should have done is a "stand up" style meeting when everyone arrived in the morning to discuss where we were, and where we wanted to be each day. I think it would have helped a lot.
  3. Not enough testing / balancing. We should have pulled in more people to play the game earlier, and should have gotten things for Amanda to play so he should see the results of her art changes quickly. As it was, I spent most of Saturday and Sunday balancing, but was so close to the game that I missed little problems. Having just one person play mid-day Saturday would have exposed lots of problems that could have been fixed by the deadline.

I'd love to know what people have to say about the game. We're rating well, and I think if we get around to fixing the bugs, it will rate even better. Thanks to everyone who organized the Game Jam for this great opportunity!

So, if you haven't noticed, this blog has been a little quiet recently.  It's not because I don't have a lot to say, but because I haven't had the time to say it.  One of those reasons for that is because I've been spending a lot of time working with the IGDA Tools SIG (which I've talked about before) to launch a new collaborative blog: The Toolsmiths!

The new blog has two other great authors, Geoff from Insomniac and Dan from Robotic Arm Software.  I'm really looking forward to the content we'll have over the next year or so, and I hope anyone interested in game tools will take some time out to read our posts.

My first post, on continous integration and build systems, will appear on Wednesday.  Hope you enjoy the new blog!

Okay, I'll admit, I'm sometimes a little hard on articles on Game Career Guide. Which is funny because I've had two articles posted there
myself. So, I thought it only fair that I point out that this article on creating a game programming portfolio is actually very good. Also, since I think most of my readership is programmers, and interestingly a good number of student programmers, I thought I'd point you to it.

I do have two very minor criticisms of the article though. First, I think a lot of really good demos can take the place of one complicated game.  Certainly I always want to see a complete game, but some of the examples he puts down are actually fairly complicated.  Asteroids or Breakout, so long as it's complete, is fine.  I'd rather see something original, but it's not necessary.  If you have a lack of good demos, though, you should go for something more complicated in your full game.

Second, I don't think he puts enough emphasis on how important providing good, clean source code is.  It doesn't have to be perfect, but even if your Breakout game works, if it's complete spaghetti code it won't earn you any points in my book.  Make sure the code you provide shows a good mind for organization and good software engineering principles. That's what I'm more interested in anyway.

Any professional game programmers have additional insight for my student readers?

So, as promised, I have some NXE first impressions. I think it's pretty important to do these "First Impressions" posts, because I think that the success of failure of an interface can really be determined by its first impressions. Once people get used to an interface, they start to forgive some of its failings, and sometimes even get used to them so much that the failure itself is considered a feature, not a failure. But I digress.

First, the positive about the NXE.

  • It's way better than the old blade system. The blades were generally confusing and at some points just unusable. In addition, the blades weren't really extendible. They had limited real estate to offer advertisers. Now, while you may think that's a good thing, it really meant it was hard for you to get information about what had just been released on LIVE, especially if you're not as "plugged in" to the game industry as I'm sure many of my readers are. Despite other failings, the spotlight system actually allows Microsoft (and its advertisers) the opportunity to really get the word out.
  • Avatars are a nice addition. Make as many jokes about Miis and Microsoft appealing to the "Casual Market" as you want. The only people that I know that haven't made an awesome avatar already are casual gamers. Seriously. Avatars are a nice addition, and a great way for you to personalize your experience on the Xbox. The Xbox has always (at least partially) been about personalization, so having avatars is nice.
  • New Features. Netflix, Community Games, Party, Avatar integration into games, all excellent additions. Maybe more down the road? Who knows, but I'm happy for now.

Now, the negative.

  • Sign In is still 3 clicks away. Signing in is normally the first step for most people that have an Xbox that are online. Sure, whatever game you play will immediately ask you to sign in, but if the box has more than one profile, isn't set to sign in automatically, and goes to the dashboard instead of directly into the game (which is a setting), I think there's a 99.9% chance that the person wants to sign in before doing anything else. And honestly, one button to cancel sign in, rather than 3 to confirm (or 4, depending on if you disabled the welcome profile) makes more sense to me.
  • Spotlight is Occasionally Confusing. I'm a smart guy. I couldn't find the community games library on my first try. And I'm not the only one. Worse, even after I found it, I couldn't find it again. The problem is this: the spotlight for Community Games looks like it's the community games section, but it's not. This carries actually throughout the spotlight interface. The spotlight is an advertisement that explains that something is available, but doesn't take you there. In only a few cases, can you get what you want directly from the spotlight.
  • Game Marketplace Spotlight is Always Confusing. This is where I wish I had a screenshot or a video. See, when you go into the main "Game Marketplace" portion of the NXE, it brings up its own spotlight. You have to hit a separate button to go into the actual games marketplace. It's weird! Maybe I'll do a post on this in the future and expose this as confusing with a video or something. Not sure how I'll do that, but I want to.
  • Organization is still an issue. On the marketplace it's still very difficult to find what you want. I'm not sure why this is, as it's 100 times better than it was in the blades, but I can't tell you how many times I still get confused as to where I am, what I'm looking for, and what's available. I wish I could explain better, but really I can't.
  • Hidden Options, Hidden Friends. On the NXE, you can't see all the options available to you. One or two are dimmed out at the top of the screen. I know why Microsoft did this. First was to prevent too much clutter, which is fine. Second, though this is speculation, I'm sure that list is partially populated by the LIVE servers, so they could now add categories without breaking the current functionality. But, the new friends channel I don't understand. Why take up all of the screen real estate with one friend at a time? Most of which is taken up with a background that the friend can't change anyway? Why can't you show me 4 or 5 avatars at a time, that way I can see most of who's on line at once without scrolling through the channel? Sure, I can still use the blade interface but, let's face it, the channel is way cooler, just not as usable.
  • Breadcrumbs? For some reason, I always find myself wanting breadcrumbs in the NXE. I'd like to know where I came from to get to where I am, and where I'm going back to when I hit B. Personal preference.
  • Reports of NXE instability. This is really disconcerting. There have been reports that not only does the NXE crash in the interface itself, but that it causes once stable games to crash more frequently. I didn't believe this until I actually saw some stable games crash on a friend's Xbox. Hopefully this isn't too widespread?

Again, the NXE is 100 times better than the blades. There are just a few places where I feel confused by the interface itself, and that's never a good thing. Thankfully, once I get used to it, I'll probably forgive it of its flaws, and maybe even come to depend on them.

I gave a talk at Becker last night on tools in the game industry, which I called "Tools of the Trade." The talk and its slides are available here, and the entire talk should be in the slide notes. Generally, I'm pretty happy with the talk itself, though if I had to give it again there are a few things I would change, including removing some of the LOLCats. In addition, I think some of the points that I make about the problems with debugging tools actually applies to all tools, but in an attempt to split the talk into three nice sections, I ended up muddling things up a bit.

What I really hope is that the students actually got something from the talk. I'm afraid some of it may have actually gone over their heads, and portions of the talk may need simplification or better explanation. Hopefully they did get something out of it (and if any Becker students have decided to read my blog, I'd love to hear your thoughts!)

I got confirmation today that my proposed talk(s) for GDC have been passed on this year. In this case, I was hoping to get a roundtable on build process into the mix, and I find it really unfortunate that they passed on it. Generally, the "Technical Issues in Tools Development" roundtable (that John does an excellent job moderating every year) spends half of its time talking about build process best practices, which means neither build process nor technical issues in tools development actually get the time they deserve. I talked to John about this, and he believed it was a good idea to get both roundtables more focused. That said, he was pretty certain I didn't have chance of getting it accepted (and honestly, I was pretty sure he was right).

What I find most disappointing is why such a round table was rejected. These are the criteria sited by the selection committee:

  • Your expertise in the subject matter proposed. They have no way of knowing my experience with build systems, as they only ask what positions I've held at various game companies. They know I was an Associate Programmer at Bethesda and Lead Architect at Orbus. That doesn't show them that I designed (or helped design) the build systems at both companies, so in reality, this wasn't and couldn't have been a reason for rejection.
  • The number of years you've been in the industry. Going on 4 years now. I guess seems longer than it is. Really though, does this affect my ability to lead a discussion on build process?
  • Game credits and/or projects you've worked on. Sure, the build system for Aleph Metrics isn't amazing (doesn't have to deal with assets), but I ran in to any number of problems optimizing the assets for Obivion and Fallout 3 (though, to be honest, I'm not sure how much of my asset optimization code is still in Fallout 3). Again, though, there's no way for them to know what I actually did at Bethesda (they didn't ask) so really they're just looking for name recognition of projects. Would think those two would be pretty high up there.
  • Past speaking history; if previously spoken at GDC your evaluation scores are taken into account very seriously. I spoke at GDC once, sort-of. It was a student action roundtable, which kinda died before it got off the ground. That's fine. Whatever. But since then I've spoken at any number of other schools and events, and I've never had a complaint, and quite a few compliments. I mean, I'd love to talk at GDC if they'd give me a chance.
  • The relevancy of your session proposal to seasoned game developers, why is it interesting? How is it important to game development? What will game developers get out of the session? How can the selection committee think this wasn't important or interesting? Technical Issues in Tools Development is ALWAYS full and more than HALF of the time is dedicated to this and we NEVER come out with clear answers or any best practices because the time isn't actually there to talk about it. Would having an extra half hour help? I like to think so.
  • How well you addressed any of the topics outlined in the submission guidelines. This, of course, could have been the key. Maybe I'm not so good at selling myself?

Every year, I just get more and more frustrated with submission process. There's little to no feedback as to why a talk was rejected and, while I can see it with some (any time I propose a game design talk, for example), some really good submissions, like this one seem to get thrown out without actual explanation. I think the only way I'll be okay with this rejection is if another, more experienced developer, proposed the same talk.

What about everyone else? Have people heard? Are you just as frustrated as I am?

This weekend, I was fortunate enough to attend (and present at) Boston Gameloop. I was fortunate enough, partially, because it was co-organized by my boss, but that's beside the point. I presented two sessions, one on distributed version control (which I gave twice), and the other was a co-talk with me and IF luminary Andrew Plotkin about agency / complicity in games. I'm hoping someone took notes at that talk because I think it was pretty awesome, and being able to basically have a public discussion about agency / complicity with Andrew was pretty awesome. In addition to presenting, I was able to attend talks on implied ethics in game rules, see some demos / a presentation on dynamic animation of virtual actors, and spend a little bit of time in a round table on Scrum, all of which was awesome.

So all in all GameLoop was definitely a great experience, and props to both Darius and Scott who organized the whole thing. I'm looking forward to the conference occurring again next year!

Hot on the heels of me praising the Xbox Live Community Marketplace comes this opinion piece on Gamasutra that's actually fairly angry at Microsoft's practices in this regard. I definitely see his problems with the promotion thing, but almost everyone did. That was the single most asked question at GameFest, so I'm sure you'll see a change in policy about it before the fall launch, or probably very shortly after. The exchange rate issue is… interesting… to say the least, but that said, I can see how it's very difficult for Microsoft to track how points were purchased and in what country. I'm sure it hurts foreign developers a lot more than it hurts Americans though.

So, although I think a few of Ron's complaints are understandable, I think he's missing one key component of the XBLCM vision: lowering the barrier for entry so that anyone can make games for a console. As I pointed out in my last post, this is the first time any console manufacturer has ever done this, so, obviously, they may get a few things wrong. The comparisons to WiiWare / PSN I think were completely misplaced here, since hobbyists can't actually develop for those platforms without hacking around the systems. Even then, both Nintendo and Sony have tried to stop such hacks, effectively attempting to close off their console as much as possible.

So I think Microsoft took a very brave step in the right direction. Not only that, but I think it's WAY more than what most hobbyist / community game creators were expecting. To have their games "published" on an actual console, with potential for pretty large returns. I can understand the backlash from indies, since once you have a budget you can get shafted from the XBLA point of view, and price caps, royalty and exchange rates may hurt your actual prospects as a developer, but, honestly, look at this for what it is: a very positive move for creating a new caste of developer who have no budget, no team, and a desire to see their own game on a console, and maybe make some money while they're at it.

If you have problems with the rest of the system (which you should), that's something between you and the XBLA team. I feel pretty good about XBLCM.

So, if you haven't heard, Microsoft announced at GameFest that they'd be deploying a new community market place this fall on the Xbox 360, and that developers will be able to keep (up to) 70% of the revenue generated from games on the community marketplace. While not unexpected, this is pretty huge news.

Before getting on to commentary, I'd like to quickly point out how revolutionary this whole set up is. This is the first time in my knowledge that a major console company has actively encouraged (or even allowed) development on a retail console at any price (Sony had a version of the PSOne you could develop for, but it was not a retail kit). In addition, this is certainly the first time that any console manufacturer has encouraged a community in which to share those games (the Creators Club) and even more importantly, this is the first time a console manufacturer has created a marketplace where anyone can download created games and anyone can make money off of those games. Even with the fact that you are limited to a .NET sandbox, this is pretty huge, and I'm pretty excited about it.

That said, when Community Arcade was announced, and later when they announced Community Marketplace, I was nervous, though I couldn't figure out why. It struck me when I was at a game store over the weekend. There are a lot of freaking games out there now. A ton. And, honestly, 90% of them aren't any good. There are also a lot of XBLA games, and, honestly, about 90% of them aren't any good. With Community Arcade/Community Marketplace, you can be sure 99% of games on there won't be any good. It makes it really hard and frequently frustrating attempting to find those hidden gems that really make it all worth it. Certainly, community reviews, Metacritic, and similar sites help find games, but what do you do for those games that are fringe (and therefore generally ignored or given low Metacritic and community scores), but awesome? Certainly the viral aspects that Microsoft is putting in (send this to a friend and, hopefully, a rating system) will help, but even then many fringe games get overlooked because there's just too much else coming out right at the same time. I just hope that the game industry isn't a victim of its own success, having so much content that none of it makes any real money.

Regardless, I'm not sure it's an actual issue. You can be sure I'm already working on XNA prototype games. I'm not going to miss this opportunity.