Every game has a database of possible skills. The database can be edited on the fly.

Skills have:

- Name: eg, “handgun accuracy”
- Point cost: how many skill points do you need to increment this skill. Note that the game can bypass the point system by procedurally incrementing the player’s skill.
- Maximum skill level: how high can this skill be incremented. Again, the game can bypass this by procedurally incrementing the player’s skill.
- A graphical icon representing the skill.
- Prerequisites list: other skills you have to have before incrementing this skill.

The skill tree isn’t hardwired into code. Instead, there’s an in-game skill tree editor which you can use when you’re in god mode. We should also provide facilities so that two different games can easily share a skill tree.

The engine should provide a built-in character progression screen, so that the player can spend skill points to advance along the skill tree.

When a player comes into a game, he brings his skills with him. There are two preliminary checks: first, that he hasn’t spent too many skill points. Second, every skill he has is checked against the skill tree. If he has acquired a skill in violation of the prerequisites, then that skill is “greyed out” until he buys the prerequisites.
