Sign in to follow this  
matthughson

Man Moments - Post Mortem (Dream Build Play XNA Project)

Recommended Posts

Trailer
For anyone interested, I thought I'd take some time to write about the development of our Old Spice Challenge entry, Man Moments. I'm always curious what tools, development methodologies, and challenges, other teams have used and/or suffered through; so I figure others might be curious as well.  This isn't meant to be a list of what to avoid or a blue print of success.  It's simply a record of what went into making this game, so others can compare it to their own experiences. This post is more geared towards others who competed in the competition, so it might not make much sense to those not familiar with the Dream Build Play event. You can read all about it here. The first line of code for Man Moments was written on January 16, 2010, and the last change went in March 4th, 2010.  In the month and a half between those two check-ins, a few thousand lines of code were written (just a guess, I haven't actually done any metrics), the entire game was designed, and almost 3 gigs of content was created. We started production with no real engine in place.  I had gone through the XNA tutorials a few months back out of curiosity, but had done nothing with it beyond that.  Man Moments is the first XNA game for everyone on the team. That team is made up of a lot of a couple different people, with varying degrees of contribution. There are 2 coders: me and my girlfriend.  We both work day jobs in the game industry, but had little-to-no experience with C#.  As such, most of our code ended up being C++ written in C# (not literally, just as far as design and architecture goes).  When we hit a conflict in feature-sets, between C# and C++, that's when we'd have to dig a little deeper into the language.  One critical mistake that came with this mentality was ignoring the garbage collector and its implications.  We were calling new like there was no tomorrow!  It all felt so liberating coming from the world of C/C++... until a few days before the end of the compo when we started seeing the GC Stutter...  I don't want to go into to much technical details here, but this is significant enough that I think it warrants mention.  I think this and this should be mandatory reading before starting a project! We used Google Code to house the project, and RapidSVN to access the project.  Although getting this set up on each artists machine was a little bit of a hassle, having it in place was a god send.  Not only did we have an easy way up passing content around, but we have revisions of every change to every file in the project.  This means you never have to worry about a change completely screwing up the build; if it does, you just revert that change. As I mentioned, the engine was written from scratch for this project.  The only 3rd party library we used (beyond the standard .NET framework and the XNA framework) was SoftImage's XSI Runtime for rendering and animating our 3D models.  This was hit and miss.  We obviously gained a lot of features right out of the gate because we used it, but there were a lot of issues to work through.  Most if not all that I ran into have been worked out now, so I will hopefully find some time to post a thread on that some point, to save others from the same issues.  Now that our XSI usage is pretty solid I will likely continue to use it for future projects.  In fact I plan to look into using it for more than just models: lighting, cameras, even level construction can be done within XSI Mod Tool. I won't go too deep into the art side of things, since I'm not an artist, but I can give you the high level description of what we did.  This 3D content was created in Maya and then exported to dotOBJ and imported into XSI Mod Tool.  Inside Mod Tool the animations, texturing, and final clean up was done.  Finally it was exported as dotXSI through the Mod Tool XNA integration (which is very cool!).  Our lead artist hadn't used XSI before so there was a pretty steep learning curve, but by the end we had a pretty smooth work-flow going (aside from the odd animation just breaking for no reason...). All in all, it's been an insane month and a half.  For the core team it has meant literally spending every waking (man) moment on this project.  For me that meant, waking up for my day job at the usual times, getting home from that by 6-7pm and then working until 1-2am on this project.  Everyday.  Rinse.  Repeat.  My girlfriend and I live in Vancouver, and had to all-but completely forgo the Olympics in order to finish this project.  Luckily we found an artist who was willing to dedicate the same amount of time and energy (often more!); this project would not have been finished if it weren't for him (maybe he'll hop on here and give his run down from the artist's perspective).  We found all of our outside help through the Help Wanted forums on this website. Although it's been extremely draining at times, it's been completely worth the time an energy we put into the project!  I'm absolutly blown away by what we've been able to create in such a short time span. It's not the most polished game I've ever worked on, but it's with out a doubt the one I'm most proud of! [Edited by - matthughson on March 5, 2010 12:04:16 PM]

Share this post


Link to post
Share on other sites
Sign in to follow this