Originally posted by Carl Jonhson: and what do you mean "all over again when adding anything"???This is a somewhat poor analogy, but I'll give it a go:
Paint the walls in your house. Then put a bunch of furniture in the room. Now paint it again, but without moving the furniture AND without getting paint on the furniture.
One of two things is gonna happen: Either you're gonna get paint on the furniture and have to replace it, Or you're going to miss spots that are behind furniture and ultimately have to repaint anyway.
This is, in essence, what happens when you do things in coding. Every time you add or change something in the proverbial house, you have a large chance of screwing up something you've already done. This is why often times games have recurring bugs that come back every other patch or so.
So if you do ALL of the optimizing and bug fixing and tweaking up front, The next time you add literally anything, Even something as innocuous as a new item, Chances are you're going to break at least half your work on optimizing and bug fixing- The bigger the thing added or changed, the more likely things are to break, and the more things are likely to break at once.
So basically, If you optimize and bugfix at the start, then add something, you then have to once again optimize and bugfix after every new change or tweak or adjustment or removed system or added system. And so the resulting production process becomes something like:
Optimize, Bugfix, Add, Optimize, Bugfix, Change, Optimize, Bugfix, Add, Optimize, Bugfix, Remove, Optimize, Bugfix, Change, Optimize, Bugfix, Add, Optimize, Bugfix, Change, Optimize, Bugfix, Add, Optimize, Bugfix, Change, Optimize, Bugfix, Add, Optimize, Bugfix, Change, Optimize, Bugfix, Add, Optimize, Bugfix, Change, -> Finished Product.
Note how much repetition goes on there.
So instead, what alpha development is typically about is adding and changing everything that needs to be done FIRST, with very minimal bugfixing and optimization- Literally just enough to keep the game mostly playable for most of the player/tester base, and do sweeping fixes and optimization LAST.
Which gets an approximate production process of:
Add, Change, Add, Change, Add, Change, Add, Change, Add, Change, Optimize a little, Add, Change, Add, Change, Bugfix a little, Add, Change, , Lots of optimizing, Lots of bugfixing -> Finished product.
TL;DR: Basically, doing heavy optimization/bug fixing at the front end before everything is in the game just results in an absolute crap ton of repeated work and only serves to lengthen development time. Yes, It might suck to play at 30fps instead of 300, it might even be unplayable for certain people under very specific circumstances...But the alternative is still not having a finished game 10 years from now, And currently we'd still be back on alpha 8 or 9 if it was done the way you're suggesting; Barely any forwrd progress comparatively due to huge amounts of time spent fixing things they'd already fixed.