Two days ago I implemented the last part of the AI system, meaning that the game is now complete. It doesn't have everything I want it to have, but it has everything it needs to have. In game design you usually hear people advice you to always have the game be in a playable state so that you can play test the game during the development. In reality this doesn't really work there are just too many things that you need in order for the game to be playable. How can you reasonably test a game that is missing collision, hit detection, an interface, graphics or AI? If you make a game where you reuse existing technology and the art assets is the majority of your development, you can perhaps make a "vertical slice", say just one level.
Love however is very different. Have you heard about theory of a butterfly causing a hurricane? That´s Love. Everything influences everything. Now that all parts are in, I can finally see how they work together. Let me tell you; it is not always pretty.
Yesterday i spent an entire day trying to figure out why the hit detection didn't work on some characters. (It turned our that the hit detection was working but that the AI failed to understand that the character was dead so they kept living). The worst part is that everything influences everything so by fixing one problem i can easily create many more.
Remember the path finding algorithm that could build its own tunnels and bridges? Its working. Just its working too well. This is what the world looks like after a few hours:
The problem is not that it crashes or fails, its just does what it should do as a last resort, far too often. Each time i make a change, it changes everything, and i have to wait for hours worth of simulation. I have managed to make the simulation run a few hundred times faster then real time but its still a few minutes, and at that speed its very hard to catch what is going on.
It makes me think of a realization i had a few years back:
Most problems are side effects of solutions to other problems.
We really shouldn't be afraid of failure. Failures are easy to spot, and when something doesn't work it wont spread, its when something really works we need to be weary of its side effects. A failure is a lesson we can learn from, but success blinds us.
PS, If you need a good game podcast (While waiting for the GFW Brodeo reunion) listen to gamers with jobs, i was on it a week ago.