I'm about to start working on my next game, and I'm trying to decide what the best approach is to reduce potential risk. When I was in college I took some classes that dealt with the System Development Life Cycle. Most of those models are of course too bulky for development of small games, but I think RAD models like Prototyping can be useful. We must know as quickly as possible whether a game idea is good or not, which is where prototyping comes in.
As many of you probably know, there're two primary types of prototyping -- evolutionary and throwaway. In evolutionary prototyping, a prototype is created with the possibility of being turned into the final product. If it gets the green light it's cleaned up and finished. In throwaway prototyping, a prototype is created as quickly as possible (sometimes in a different language than the final product) just to see the product's viability, and if it gets the green light the prototype is totally discarded and the project begins from scratch. The advantage to evolutionary prototyping is that there isn't a duplication of effort, but you could end up with a not-so-great code architecture. And a throwaway prototype can probably be created faster, but is only good to test an idea.
So what I'm wondering is, what's the best way to go for the kind of development that we do? Does it make sense to create a throwaway prototype or would this be too much wasted effort? If you've done prototyping, what was your overall experience?