How To Not Get Anything Done
October 3rd, 2009 game development, XNA RSS 2.0 feed 2 CommentsSo I noticed the other day that I’m quickly coming up on the one year anniversary of my joining the XNA Creators Club Online. A short bit of retrospection and a peek into my Projects folder lead me to the obvious conclusion that I haven’t accomplished a damn thing in the year I’ve been working with C# and XNA.
Normally I would not be bothered by this kind of thing. I’m fine with taking my time with something – especially something new to me like game development – and learning the intricate ins and outs. What does bother me though is that I have not yet taken what I have learned and applied it to a tangible project. This is amplified by examples of stellar projects such as Noogy’s Dust: The Elysian Tail where Noogy himself admitted he had only been working with XNA for seven months or so.
So the question I’ve been asking myself is where did I go wrong? After a lot of thought I think I’ve narrowed down two of the major roadblocks that have prevented me from really producing anything of note so far. I’d like to share these with you in the hopes that if you haven’t run into them already, you can avoid them.
Constantly Worry About Semantics
If you want to get absolutely nothing done with XNA and C#, then you need to constantly worry about the minute details of the code you do manage to produce. By this I mean such important things as where to place your private fields vs your public fields vs your public properties vs your static fields vs the constructor. Do you shun singletons like the plague? What naming convention should I use?
The point here is that from a classroom or textbook point of view these things may matter, but if you actually want to complete and ship a game then worrying about things that your player can’t even see does nothing but waste your time. Instead consider spending time on further developing the core fundamentals on your game, add an extra level, or spend time on that UI polish. You know, something that actually matters and adds value to your end-user.
Develop Technologies You Do Not Need
So you’re an aspiring young game developer. You’ve spent months studying books and the internet, lurking on the XNA CCO forums, and experimenting with dozens of small projects. You now feel like you’re ready to set out and work on your first full fledged title, ever. What is your first step? If you’re like me, you may naively say… write an engine, of course! After all, you need a foundation on which to build this game and all of your future endeavors, right?
After months of wasting my time on this I can answer with a resounding WRONG! You do NOT need to spend your time building an intricate engine or framework to host your new game. You do NOT need to develop an extensible, reusable, generic input framework to handle simple keyboard and gamepad polling. You do NOT need to spend months developing a flexible and robust physics system from scratch.
Don’t let me deter you if these kind of things are your focus, but we are talking about creating and shipping a game here. If you have not yet pushed a game out, you do not yet know how to write an engine. You do not even know what your needs for an engine are yet!
If you feel that an engine is vital to your needs then look at one of the pre-existing projects like FlatRedBall or Farseer Physics to handle your needs. Odds are what you think you need is already out there in one form or the other.
The fact is that if you spend your time working on things you may need for your game instead of what you do need right now for your game, you’re wasting your time. I suggest at least a bit of planning ahead to try and analyze what system your game will need, and then decide if one of the many 3rd party solutions out there meet your needs. In the long run you’ll save yourself a lot of time and bring yourself one step closer to actually making something.
October 8th, 2009 at 1:49 pm
You are so right, that’s exactly where the past TWO! FRACKING! YEARS! went oh wait THREE! this December… I’ve been at this gig since the days of managed Direct-X 9 and that died before it hit Rev 2. and I’m not going to work out how long ago that was :-(
October 9th, 2009 at 2:07 pm
I’m glad I’m not alone in feeling this way. :) I’ve already made great strides in the new project I’m working on. With the complexity of level design it will need, I’ll probably need to sit down and create a basic visual editor for myself eventually… hand-crafting them in XML just won’t work. That’s as far as I plan on taking any kind of meta-development for the game, though. The focus is solely on getting something done now. :)