Making a game is a lot like moving house. That may seem like a strange analogy but it really works for me right now.
So you have this big project full of interacting scripts and whatnot. Every time you add a new feature, it’s like a whole bunch of boxes have arrived at your new place. Then you have to unpack them and make them work with everything else. Once that’s done, the place is clear, and you start unpacking more boxes. So in this analogy, programming new content is like unpacking boxes.
While you’re unpacking, you’re figuring out the best place for everything and making sure it all works.
In some cases, it’s best to unpack the boxes in waves, so you can still move around. You unpack, tidy, and then see what space you have and which boxes to unpack next. Then you can start on the next box. In programming we make a new feature, test it to see if it works; like tidying or organizing the boxes, then move on to the next tasks/boxes.
Right now Blacksmith is in the stage where I am about to move on the last set of boxes; some main story cutscenes and a dragon. Then it will be to tidy the boxes and make sure they all work properly. Then finally cleaning before calling the job ‘done’. The difficulty is in not knowing just how much organizing, cleaning and tidying (bug fixing) will be needed and also whether there will be any glaring gaps that need filling.
‘Done’ in quotations because immediately after completing this move, we will be going to IKEA and redecorating. ‘Done’ in the sense that the place is habitable and not too shabby. That means adding a whole bunch of new boxes, assembling them, tidying and cleaning again. Naturally with more feedback, we can make better decisions on what our priorities should be and how best to arrange everything.
Building a house is probably a better analogy, but I’ve never done that.