[gameprogrammer] Re: Current game projects...

  • From: David Olofson <david@xxxxxxxxxxx>
  • To: gameprogrammer@xxxxxxxxxxxxx
  • Date: Tue, 1 Mar 2005 23:46:28 +0100

On Tuesday 01 March 2005 22.50, Alan Wolfe wrote:
> wow...you couldnt have said it better, I didnt know it was that way
> for other people too hehe

I think pretty much everyone is struggling some version of this 
problem. As always, the big difference is in how people deal with 
things. Realizing that this problem exists and actually trying to do 
something about it could make a world of difference.


> i too code professionaly (not games though either), and when i
> started (i was a hobby coder for a long time before i was a pro
> coder)

Pretty much my background too. I've been hacking since the age of ten.


> a big difference  i noticed was i couldn't just stop when i got an
> idea working, that last 5-10% or so of spit and polish really is a
> pain in the ass :P

That polish part is basically the difference between commercial 
software and Free/Open Source, Freeware, hobbiyst level Shareware 
etc. The latter usually don't get all that much of that, which often 
results in the difference in quality appearing to be much bigger than 
it actually is.


I think another common issue with non-commercial or "hobbyist level" 
development is that there is too much perfectionism ("if we can't do 
it Right, we'll just leave it alone for now"), and/or too much focus 
on other things than delivering "the full package."

In most cases, in the *real* world, a somewhat broken or imperfect 
feature is much better than not having the feature at all.

So, if you desperately need to solve some customer's problem, you hack 
some solution that does the job, and the customer is happy! The code 
might not be beautiful, and it might not do as good a job as it 
theoretically could - but at least it's there, and it gets the job 
done.

If you're just hacking for fun, you might consider the problem at 
hand, and after some deep theoretical thinking, you conclude that 
there's no way to fit it into your current (estaethically perfect, of 
course!) design without some major hacks, and it would be "lots of 
work" to refactor the design to deal with the problem nicely. So, you 
write a note in the TODO, and then nothing much more happens. You 
still have your nice, clean, sexy code, and it still doesn't solve 
the problem you ran into.


My advice would be;
 * "Hack away" more! If it's dirty and ugly, just
   scribble TODOs and FIXMEs all over the place, so
   you can find it when you figure out a better way
   of doing it.

 * Keep things as simple as possible, until there is
   proof you need more sophistication. Designing and
   implementing logic that you don't need is just a
   waste of time - and if you don't test everything
   thoroughly, whether it's used or not (where the
   latter is a BIG problem), you're headed for
   disaster...

 * Refactor constantly! If things are structured the
   wrong way, fix it as soon as you realize what the
   Right Way is. You *have* to do this sooner or
   later, and being too scared of ripping your code
   apart every now and then will only have you throw
   it all away and start over eventually.


That way, you'll always have a code base that "feels good", and you'll 
have a much better idea of what happens if you make "major" changes 
in order to deal with problems you didn't think of before.


> my boss gave me good advice though... he said if you work on
> something a little bit consistantly you'll be amazed how quickly you
> get there.  If you have "no time", if you still do something like
> work on your code for 30 mins a day or even 30 mins a week but just
> keep to the routine, before you know it you will have alot more done
> than you thought possible. 

That's very good advice!

I should live by that to much greater extent. :-D

It's amazing how much you can do in very little time, once you've 
figured out what to actually do. The problem with just hacking around 
the clock is that you frequently get stuck and just waste time 
confusing yourself and getting frustrated, desperately trying to 
figure out why things aren't working as intended.

To avoid totally wasting valuable hacking time when I get stuck, I try 
to have a few projects going in parallel, and switch whenever I get 
stuck for too long.

This has the positive side effect of requiring cleaner code and 
interfaces, since there's just too much to keep in mind when hacking 
multiple projects with messy code. (Same problem as multitasking on 
machines with heavy weight contexts - like the C64, where you had to 
swap zeropage and stuff. ;-)


//David Olofson - Programmer, Composer, Open Source Advocate

.- Audiality -----------------------------------------------.
|  Free/Open Source audio engine for games and multimedia.  |
| MIDI, modular synthesis, real time effects, scripting,... |
`-----------------------------------> http://audiality.org -'
   --- http://olofson.net --- http://www.reologica.se ---


---------------------
To unsubscribe go to http://gameprogrammer.com/mailinglist.html


Other related posts: