o.k. so where have we got to in terms of requirements of the tech engine.
(comments not relevant to the coding in italics)
1) Tech comes in at some number per turn, this varies throughout the game based on some yet to be determined factors (i.e. your economy).
2) Each Research Project has a cost that is described as X RP a turn for Y turns.
3) If your surplus RP income this turn, i.e. income minus your current turnly commitments, is less than X, you can't start that research project.
4) If your income this turn is less than your total commitment (i.e. the sum of the X's for all projects you have started that haven't yet spent Y turns 'active') then the lower priority items get suspended (i.e. this turn doesn't count towards their Y turns) until . This requires a mechanism to set and change the relative priority of projects. It should also be possible to outright cancel a project, we have not yet decided whether to provide any compensation to the player for the loss on their investment in this situation.
A question, if a 100RP/turn project gets suspended, because you are short by 20Rp/turn, are you then allowed to start a 15RP/Turn project that turn? Or do you have to wait until you actually have 15Rp/turn more than your commitments? What if you're empire is shrinking (due to war or invasion) and the 100Rp/turn project is the only one going on and you are unlikely to ever get 100Rp/turn unless you can get some research done and start fighting back? Are you stuffed? Do you have to cancel the big project and lose your progress on it? Will this question solve itself when we decide what to do about canceled projects? Will the Lone Ranger rescue Tonto in time? tune in next week...
5) All research projects are assigned to one of a set of categories.
These categories will be named to match different (and as seperate as possible) parts of the gameplay.
6) research projects may have prerequisites on which research must be completed before they can be started.
7) research projects come in (at least) two types.
"Theories" are projects which have limited practical benefits (i.e. no bonuses, no new unit types/buildings etc.) , and are primarily present to act as prerequisites to a group of other projects, they will mark the 'levels' of the tech tree. They will mostly only have the previous theory (theories if parallel paths through a category are wanted) as prerequisites.
"Applications" on the other hand are primarily to provide practical benefits (e.g. improved weapons, ship types, buildings, improvements in production rate etc.). They will generally require as a prerequisite at least the theory directly above them, and often other applications in the same category, or (less often?) in other categories.
The distinction between theories and applications may well be 'just' naming from the point of view of the code, since both(might, this should be a data choice) require prerequisites either type as a prerequisite. Though if we decide to report the tech level in a category based on the 'most advanced' theory researched irrespective of the level of applications researched then theories will be treated differently in this respect at least.
We are not yet sure quite what to do about any RP generated in a turn which is not allocated to a project.
9 ) we
may want a way to eliminate some techs from the tree, chose at psuedo random. If needed this would require at least a mechanism to set some techs as 'un-removable', and probably to set 'groups' of techs that must be removed as a single unit, and probably also to set 'alternatives' i.e. at least one of these groups/techs must remain.
It's quite likely we won't, but I think it'll be a lot easier to code a system where you can, and choose not to, than code one where you can't and then try and patch it up if we change our mind. Trust me, there is nothing more annoying as a dev than being told "you know that thing we specifically said we didn't want it to do, any chance it could?" Same goes for the next point
10) we may want a way to alter the values X and Y for (a given tech/ a group of techs/ a category of techs/ all techs) for (all empires/some empires/individual empires) at (game start/certain points/any turn) for (then on/ specific periods) based on (researching certain techs/ some investment model of surplus RP yet to be decided / racial bonuses / special events). I.e. values X and Y for a given tech are not guaranteed to remain constant throughout the game, nor are the relative values of X and Y between techs.
That said, they probably won't be constantly be shifting about all over the place, because it'd make life difficult for players
11) We might possibly want a generic refinement level (just one or one per category or something similar) that improves various (related) stats gradualy as improvements are made in it (this is one of the possible uses for surplus RP being considered).
Other engine requirement's I've missed?