Fortress Coding Plan

Fortress: Coding plan
Since we're a bunch of loonies spread all over the face of our beautiful planet there won't be any formal code design process. But to avoid one person writing Fortretris and another one Defend the Fortress Quake mod here are some notes about what's going in and what not. A number of below steps can be implemented independently of each other.

Basic elements
UNDER CONSTRUCTION

Here's a list of basic game elements (in no particular order) that should be coded independently before integrating them into a game. Such separation mainly serves as a time-saver -- developers will be able to quickly run separate tests without worrying about the rest of code.

'''This is a general list of TODO tasks. It should be treated as a general guideline, not a plan developers need strictly adhere to.'''

(programmer's art is OK, it's models that count at this point)
 * Castle models 1: create skeleton wall elements
 * Castle models 2: create skeleton square tower elements
 * Castle models 3: create skeleton rounded tower elements
 * Castle models 4: create skeleton gate elements

Each step should of course include data structures design/refactoring phase. After each step all previous tests should be run to make sure there are no regressions.
 * Castle walls 1: straight walls should nicely grow up
 * Castle walls 2: walls should have all the bells & whistles on top (archer slits, cauldrons)
 * Castle walls 3: straight towers (square, rounded) should nicely grow up
 * Castle walls 4: towers (square, rounded) should have all the bells & whistles on top (archer slits)
 * Castle walls 5: gates should should nicely grow up
 * Castle walls 6: walls should be destroyed by a catapult (let gfx effects be replaceable later with code that displays catapult missiles fly, hit the walls, flying bricks that kill random people etc ;) )


 * Terrain 1: bare heightfield terrain with texture blending
 * Terrain 2: runtime modification (for moat digging), water (for moat)


 * Builders 1: make people run from/to destination points, run around in specified area (make the builders look busy); walls/towers should grow to 1/4 of their destination height
 * Builders 2: ladders: (simple version) ladders appear and people use them to build higher wall/tower parts; walls/towers should grow to their full height
 * Builders 3: check if building looks OK on gates
 * Builders 4: implement moat digging


 * Debug console: actually a debug stats screen. It should be a screen overlay displaying various internal information about game in tabular form. Ideally it shouldn't interfere with normal game operation. It should contain: resources info, peasants happiness/head count/food reserves, workers/warriors happiness, ability to hire more, likelihood of quitting, diplomatic relations/taxes, combat rating (affects happiness), planned events (attacks, messengers), advisors'/chauncelors' oppinion updated countinuously (potentially computation-intensive so can be turned on/off?)


 * Sound 1: Sound effects playing
 * Music 1: music plays
 * (optional) Music 2: music changes accorging to what happens on screen; implement as a general API allowing game to freely change played tune


 * Save/load 1: ability to save and load game progress (implement after entire or most of gameplay is implemented)


 * Mini-map 1: mini-map with all elements
 * Factories 1: player can build quarry, sand pit, lumbermill, weaponsmith


 * Battle 1: placing defenders on map
 * Battle 2: defenders and attackers fight (no player control)
 * Battle 3: castle defenses automatically activate (cauldrons, more?)
 * Battle 4: player controls defenders


 * User interface 1: castle design
 * User interface 2: HUD 1 (displaying: minimap, stats, tools)
 * User interface 3: HUD 2 (using tools -- activating castle design, moving defencers, controlling castle builders, setting tax level, collecting food, organizing festivals, more?)
 * User interface 4: messengers' screen
 * User interface 5: warriors hiring screen (LOTR2-style)
 * User interface 6: task assignment screen (LOTR2-style, improved usability)
 * User interface 7: menu structure

Various tasks:
 * Settings

Tasks that need to be properly described:
 * Advisors: TODO (help player rate current situation)
 * Chauncelors: TODO (AI helpers)
 * Equipping warriors with better stuff
 * Messengers
 * Trading with traders, other provinces