I’ve been pondering something lately, as to how complex designs tend to resolve into simpler forms over time. While the human mind does have an upper limit on the amount of complexity it can accept, it’s not that I’m getting stupider as I work on Seasons. It’s not that I’m getting lazier, either; it’s that looking at the code, I can see not only that some functionality just is not necessary (see here), but that what needs to be done can be done in a less convoluted fashion.
The complexity of any coding project generally follows the life-cycle of a star. As a star is born, grows into a red giant, and then collapses into a dwarf star, so a project’s complexity starts low, rises to high, and then abates to some degree or another. I think many programmers do not spend enough time on their projects, and release them before the final stage is reached. As a result bugs and worldview inconsistencies abound.
If you look at many commercial projects, you’ll find the programmers figuratively out of breath and celebrating as they cross the finish line: the code has been delivered by the deadline! Yes, the project works (mostly), the date has been hit (so management gets their bonuses), but the application is simply not as good as it could be; it is still a red giant. When you have to patch or extend the code, or support the project, you end up spending an inordinate amount of time making it work or explaining it because it is still overly complex.
In IF, the support staff is usually the author, so what happens? Either the game is a buggy junk pile and further releases must be created to fix problems, or the author abandons the game and decides not to fix the problems at all. The end result is a game that’s not as good as it could be.
The only thing that allows us to reach that final stage is the passage of time. Apparently the mind needs enough time to analyze the deeper patterns in something fashioned, or repeated exposure yields up the glaring complexities; most likely it is both. Both writing and IF design must be “edited cold” or otherwise they are not mature. I think of the stage of maturation as an aged wine; you can drink wines before their time, but you miss the experience of a good wine. Incidentally, this is why Speed IF almost always produces a horrible game.
So in short, a good motto for IF designers (and programmers as a whole) would be to release no project before its time. Let it reach full bloom and then unfold that beauty to the world.