Preventing feature creep

As some of you may have noticed I’ve written a few 4k games recently… I was trying to analyse why I’m enjoying them so much and I think its the ability to actually finish something (which is remarkably unlike me).

When I write a normal size project it just gets bigger and bigger as I think of more and more I’d like to put in. Is this what people refer to as feature creep? If so… how do you prevent it? (other than of course limiting yourself to 4k size ;))

Kev

Limit in time ?
Like 20/40 hours projects…

Chman

Don’t start programming until you know exactly what to do. In case of a game build a design doc and gather all your game requirements then design your architecture that will satisfy you. Only when you get a good idea to calculate the time you will need to build it, omly then start coding. I think this is what will prevent feature creeping since it happens mostly because lack of planning. The programmer doesn’t know exactly what he is going to need so he starts adding stuff in fear that he may need it and not because he really needs it.

Just implement what you really need right now. Never implement something you are not 100% sure of if you will need it. That keeps your code simple and makes it easier to refactor when new requirements come up later. Yes, plan as much as possible before you start coding, but unfortunately, you will never know everything at the beginning. Experience helps here a lot :slight_smile:

Are you aware of extreme programming?

I’m well aware of extreme programming and for that matter design docs and estimating :slight_smile:

The problem is that when its a game and a hobby project often you:

a) Don’t think of ideas until you have something up and running.
b) Don’t know how long something is likely to take because its a new technology.
c) Get excited too much by the game itself.

I’m not really talking about software features (i.e. what I need and don’t need withing the source), more features that are part of the game… i.e. wouldn’t it be cool if those rockets bounced off like this.

Kev

Yes, I know what you mean. I often make the mistake that when I have an exciting idea I want to see results too fast and start making shortcuts etc.

I’m trying this: I reduce my game idea to as few elements as possible and stick to that. Whenever something new comes up, I ask myself: does this really add a new element or is it just a nice-to-have feature which doesn’t change the game at whole? So what I try to have is a playable game prototype that covers most of my idea. Because I really have to play with my game to see if it is actually fun.

Why prevent it anyway if it’s just a hobby? Just so long as you get version 1.0 complete you can go on fiddling with it for months…

Cas :slight_smile:

I love feature creep ;D It means I never get bored with a project and I can keep updating it. I like Cas’s opinion. Especially if you get a 1.0 version and sell it, your buyers would love free updates that include new features. Heck you COULD just keep tinkering and tinkering until you get so many new features you can re-sell it for 4/5 the original price and call it an expansion pack :slight_smile:

Having more features than those that are required is not the same thing as being feature creeped. Yeah your buyers will love that you give them more features for the same price. As long as you are good enough to beat the competition.

As I understand Kev right he actually enjoys finishing a game. Even as a hobby programmer you don’t get much if you get lost in your features and can’t see the target line anymore

Kev, do you want to try making some micro-games for Puppygames? I’ve got this neato LWJGL framework for creating them, takes care of the user interface, nag screen, registration, sprites, etc., etc. Set yourself a 40hr limit and you should be able to write any old arcade game and sell it inside a week.

Cas :slight_smile:

I’d love too :slight_smile: I’ve promised I’d get Gravity Battle finished (from my end at least) and thats what I’d like to do… just two more sets of levels to do!

I am of course obssessed with little games at the moment so if you send over the framework I suspect I’ll find some time :slight_smile:

Kev

One thing you could try is a modification of Kernighan’s quote “First make it work, then make it fast.”

Try “First make it work, then make it pretty.”

In other words you get this fantastic idea while coding, instead of acting on it, write it out or put it in as a “TODO” comment in your code. Then when your code is complete you can go back to all your TODOs and remove them or build them.

[quote]I’ve got this neato LWJGL framework for creating them, takes care of the user interface, nag screen, registration, sprites, etc., etc.
Cas :slight_smile:
[/quote]
Cas is that the SPGL? There doesn’t seem to be any files for it on Sourceforge. It sounds useful, any chance of a copy? ;D

[quote]Cas is that the SPGL? There doesn’t seem to be any files for it on Sourceforge. It sounds useful, any chance of a copy? ;D
[/quote]

Cas doesn’t make versioned releases available from the SPGL, you need to pull the latest CVS copy instead.

Ah, gotcha. Cheers for that. ;D

SPGL is just one half of it, the other bit’s not open source yet (probably won’t be either as it’s quite closely tied to how I do things bizwize as well)

Cas :slight_smile: