Anyone wanna share their techniques for writing large programs? Programs such as RPGs (or any type of game), word processors, libraries, anything bigger than the console really are considered here.
I'm beginning to write bigger and and more complex programs and was wondering how everyone planned out their programs? What I need to keep in mind while planning... all that fun jazz. :D
On a recent project that I joined (RPG) there was a list of various functionality that was to be implemented, but no documentation defining how it would be implemented. There was a nice long list of things like "Enemy AI - 20 hours, Shops - 15 hours, Weapons - 5 hours, etc."
While that sort of organization for architecture definition isn't very effective, defining what the application will do in full definitely is. I took the list, wrote each individual task on an index card, and then threw the stack of cards at the ground. From there I started organizing them based on relevance and possible implementation similarities, and that formed the basis of the system architecture. During the process I was free to remove and add cards, as well as take a card and break it down into more fundamental parts.
I ended up with a few groups of cards, and these groups defined the systems composing the game.
After that, I went to pen and paper to make outlines of each component and how they would interact. This translated almost directly to UML and, eventually, implementation.
Won't cutting a hole in the box void your warranty? Okay kidding...
But seriously, I still feel like I haven't written any really large programs... I also feel like writing large programs is easier in C (which is true for smallish enough large programs when you're still not that brilliant at C++ design).
I think the biggest issue has been lack of effort and direction, sure. Design is important but don't let it bog you down, etc. think about what the program does then write it... using classes and functions that don't yet exist (and then make them) maybe?
Momentum is the biggest issue, after doing at least one large project you should be more confident and able to actually seriously think about all the different recommendations for large projects but until then they could just serve to slow down momentum.