Adding the Whoa (and rekindling motivation) Print
User Rating: / 0
PoorBest 
Written by Xuro   
Monday, 01 March 2010 07:00
"For the prototype aim low and iterate quickly, but don't be afraid to slow down and add the whoa."


One of the challenges of programming as a hobby is keeping the motivation level high, especially when your day job involves programming as well.  To try and keep motivation/productivity up on my first XNA game I've strived to keep tight manageable goals, so I can iterate quickly and keep checking items off on my todo list and making progress.  However, despite that, I recently began to find my motivation waning.

 

I had much of the basic game functionality coded: a game menu, some simple AI, a placeholder HUD, enemies you can kill, a couple different weapons, ammo and crates you can search for more ammo, and I was running headlong towards closing the loop on gameplay - adding a finale to the gameplay and an end-level condition. On paper my prototype version was almost done, and quickly nearing the point where I had been envisioning putting it into playtesting to get some early feedback.  Yet, as I continued to check things off my list it was no longer giving the palpable buzz it had been at first.  Rather than feeling excited about my progress, there was just an intangible feeling of... 'meh'.  Inexplicably, the more I was completing the worse I felt!


It took me a few days of mulling it over to come to terms with what I was feeling, and theorize a solution.  One of the things that helped make the problem "click" for me was talking to a friend about my game.  I mentioned how I had finished adding another weapon, a cross the player carries which they can "fire" in order to shoot what is, essentially, a holy laser beam.  He immediately reacted with a kind of "whoa, that sounds cool" noise and chuckled a bit.  My response to him, unfortunately, was:

 

"Yea, it's... it's not as cool as it sounds."  


My statement was the truth, and a rather depressing one at that, but that moment of letdown later crystallized into the realization of why I had been so down on my game lately.   You see, I had been so focused on iterating quickly, making progress, and checking things off my list that I wasn't really doing things "well", I was just doing the absolute minimum necessary to implement.  This can be good, and to a certain extent is a necessary evil to making sure you actually complete the first project... it can be easy to spend weeks trying to make some facet of your game perfect, and get bogged down and burnt out.  Even moreso for a prototype, the saying "perfect is the enemy of the good" applies.  

With all that being said, however, there are limits.  It turns out I had managed to decisively and rapidly iterate myself into a ho-hum game prototype that was just an accumulation of a bunch of minimalist implementations, "lowest common denominator" design decisions, and "programmer art" placeholders.  There was literally nothing within my game that I could really point to with pride, or justify an enthusiastic whoa.  The animated sprite for my laser beam, for example, was drawn in literally 10 seconds in Paint.NET; and the implementation in-game was just as yawn-inducing as the artwork.


With a better grasp of the sense of malaise that had been gnawing at me, I set about to correct it.  I decided that, damn it, I know it's just an early prototype of my first XNA game, but there should be at least one thing in here that I can take pride in.  Something that hints at my end-vision for the game... that reflects a bit of effort and polish, and helps express the trajectory for what I want this to ultimately become.  With that in mind, I dove back into the project to do a serious overhaul of my "holy laser beam", to try and turn it into the kind of effect where I could say "Yea, it really IS that awesome".  I spent about an hour in Inkscape, trying different approaches to get a more convincing laser beam graphic.  I devoted an evening to coding: tried out a couple different ways of animating the sprite, added a new form of collision detection between an arbitrary rotated line and a rectangle (to supplement my basic rectangle-rectangle collisions), sound effects, and added a charging effect to the holy laser beam attack.  


The results were definitely worth the effort.  My laser beam is not commercial-quality yet, not "finished", and still definitely "programmer art", but a heck of a lot better than where it had begun and it is the most fleshed out weapon I've ever added to a game - an achievement I can take some pride in.  Stretching beyond the minimal implementation also jumpstarted my learning process again, and forced me to research some new things.  With the new animation and collision classes in my toolbox my future "minimal" implementations will be improved as well.  


All in all a bit of a roadbump, but I am confident my project is better off for it, and most importantly my sense of motivation is back at full steam.  Currently I am exploring pixel shaders in order to add another layer of polish - I'm aiming to give my holy laser beam a glow effect and cause it to illuminate the ground around it, and am excited by the prospect.  The lesson I learned from all this?

 

"For the prototype aim low and iterate quickly, but don't be afraid to slow down and add the whoa."

Last Updated on Tuesday, 02 March 2010 12:25
 

Add comment

Security code
Refresh

Sunday, 20. May 2012

Design by: LernVid.com