Alright, I spent most of today sketching out a working system for option 2: Scaling difficulty. Here’s what I’ve got:
My story will have 3 Acts consisting of 20 total Main Story Missions and 20 or more (potentially many more) total Optional Side Missions. (that’s roughly 6-7 main missions per act, and currently an unknown number of side missions per act).
I’m setting the maximum player-level at 60. With an arbitrary 1,000 experience points per level, that’s 60,000 total experience points from level one to level sixty.
Each Main mission will award 2,000 experience points (no matter how the mission turns out, so long as the player doesn’t die) and each Side mission will award 1,000 experience points.
So, by the time you complete the story, assuming you did no side missions, you’ll have 40,000 experience points, or level 40. This leaves an extra 20,000 experience (or 20 levels) the player can rack up should they choose to do side-missions.
For my particular combat/skill system, equipment is what determines your skills. Gun A will buff different skills compared to Gun B… Armor A compared to Armor B, and so on.
With that in mind, I’ve established a tiered list of equipment. Each tier will only become available in the world depending on the player’s level. So, a player between level 1 and 5 will only have access to tier 1 items, thus limiting their skill-values to only what is within that tier.
As an example:
Tier 1 (player level 1-5) items will have fixed skill buffs of 5, 7, or 10.
Tier 2 (player level 6-10) will have 11, 13 or 15.
The minimum buff I’m calling “Minor”, the middle “Intermediate” and the Highest is “Major”
During combat, the player will face either Minor, Intermediate, or Major skillchecks that correspond with these values. The skillcheck values increase with player level in the same way the available equipment values do, so that the player always has access to equipment that is capable of passing the skillchecks.
Below is my subroutine for “scaling” the skill-checks to the player’s level.
*comment this would be placed in my "subroutine" scene. I will run this subroutine whenever a player's level changes; at the end of every mission.
*label skillcheck_scaling
*if ((player_level >= 1) and (player_level <= 5))
*set minor_firepower_skillcheck 5
*set minor_agility_skillcheck 5
*set minor_strength_skillcheck 5
*set minor_charisma_skillcheck 5
*set minor_technical_skillcheck 5
*set minor_shipweapon_skillcheck 5
*set minor_shiparmor_skillcheck 5
*set minor_shipmobility_skillcheck 5
*set minor_shipstealth_skillcheck 5
*set intermediate_firepower_skillcheck
*set intermediate_agility_skillcheck 7
*set intermediate_strength_skillcheck 7
*set intermediate_charisma_skillcheck 7
*set intermediate_technical_skillcheck 7
*set intermediate_shipweapon_skillcheck 7
*set intermediate_shiparmor_skillcheck 7
*set intermediate_shipmobility_skillcheck 7
*set intermediate_shipstealth_skillcheck 7
*set major_firepower_skillcheck 10
*set major_agility_skillcheck 10
*set major_strength_skillcheck 10
*set major_charisma_skillcheck 10
*set major_technical_skillcheck 10
*set major_shipweapon_skillcheck 10
*set major_shiparmor_skillcheck 10
*set major_shipmobility_skillcheck 10
*set major_shipstealth_skillcheck 10
*set insane_firepower_skillcheck 17
*set insane_agility_skillcheck 17
*set insane_strength_skillcheck 17
*set insane_charisma_skillcheck 17
*set insane_technical_skillcheck 17
*set insane_shipweapon_skillcheck 17
*set insane_shiparmor_skillcheck 17
*set insane_shipmobility_skillcheck 17
*set insane_shipstealth_skillcheck 17
*return
*if ((player_level >= 6) and (player_level <= 10))
*set minor_firepower_skillcheck 11
*set minor_agility_skillcheck 11
*set minor_strength_skillcheck 11
*set minor_charisma_skillcheck 11
*set minor_technical_skillcheck 11
*set minor_shipweapon_skillcheck 11
*set minor_shiparmor_skillcheck 11
*set minor_shipmobility_skillcheck 11
*set minor_shipstealth_skillcheck 11
*set intermediate_firepower_skillcheck
*set intermediate_agility_skillcheck 13
*set intermediate_strength_skillcheck 13
*set intermediate_charisma_skillcheck 13
*set intermediate_technical_skillcheck 13
*set intermediate_shipweapon_skillcheck 13
*set intermediate_shiparmor_skillcheck 13
*set intermediate_shipmobility_skillcheck 13
*set intermediate_shipstealth_skillcheck 13
*set major_firepower_skillcheck 15
*set major_agility_skillcheck 15
*set major_strength_skillcheck 15
*set major_charisma_skillcheck 15
*set major_technical_skillcheck 15
*set major_shipweapon_skillcheck 15
*set major_shiparmor_skillcheck 15
*set major_shipmobility_skillcheck 15
*set major_shipstealth_skillcheck 15
*set insane_firepower_skillcheck 28
*set insane_agility_skillcheck 28
*set insane_strength_skillcheck 28
*set insane_charisma_skillcheck 28
*set insane_technical_skillcheck 28
*set insane_shipweapon_skillcheck 28
*set insane_shiparmor_skillcheck 28
*set insane_shipmobility_skillcheck 28
*set insane_shipstealth_skillcheck 28
*return
*if ((player_level >= 11) and (player_level <= 15))
*set minor_firepower_skillcheck 16
*set minor_agility_skillcheck 16
*set minor_strength_skillcheck 16
*set minor_charisma_skillcheck 16
*set minor_technical_skillcheck 16
*set minor_shipweapon_skillcheck 16
*set minor_shiparmor_skillcheck 16
*set minor_shipmobility_skillcheck 16
*set minor_shipstealth_skillcheck 16
*set intermediate_firepower_skillcheck 18
*set intermediate_agility_skillcheck 18
*set intermediate_strength_skillcheck 18
*set intermediate_charisma_skillcheck 18
*set intermediate_technical_skillcheck 18
*set intermediate_shipweapon_skillcheck 18
*set intermediate_shiparmor_skillcheck 18
*set intermediate_shipmobility_skillcheck 18
*set intermediate_shipstealth_skillcheck 18
*set major_firepower_skillcheck 20
*set major_agility_skillcheck 20
*set major_strength_skillcheck 20
*set major_charisma_skillcheck 20
*set major_technical_skillcheck 20
*set major_shipweapon_skillcheck 20
*set major_shiparmor_skillcheck 20
*set major_shipmobility_skillcheck 20
*set major_shipstealth_skillcheck 20
*set insane_firepower_skillcheck 38
*set insane_agility_skillcheck 38
*set insane_strength_skillcheck 38
*set insane_charisma_skillcheck 38
*set insane_technical_skillcheck 38
*set insane_shipweapon_skillcheck 38
*set insane_shiparmor_skillcheck 38
*set insane_shipmobility_skillcheck 38
*set insane_shipstealth_skillcheck 38
*return
*if ((player_level >= 16) and (player_level <= 20))
*set minor_firepower_skillcheck 21
*set minor_agility_skillcheck 21
*set minor_strength_skillcheck 21
*set minor_charisma_skillcheck 21
*set minor_technical_skillcheck 21
*set minor_shipweapon_skillcheck 21
*set minor_shiparmor_skillcheck 21
*set minor_shipmobility_skillcheck 21
*set minor_shipstealth_skillcheck 21
*set intermediate_firepower_skillcheck 23
*set intermediate_agility_skillcheck 23
*set intermediate_strength_skillcheck 23
*set intermediate_charisma_skillcheck 23
*set intermediate_technical_skillcheck 23
*set intermediate_shipweapon_skillcheck 23
*set intermediate_shiparmor_skillcheck 23
*set intermediate_shipmobility_skillcheck 23
*set intermediate_shipstealth_skillcheck 23
*set major_firepower_skillcheck 25
*set major_agility_skillcheck 25
*set major_strength_skillcheck 25
*set major_charisma_skillcheck 25
*set major_technical_skillcheck 25
*set major_shipweapon_skillcheck 25
*set major_shiparmor_skillcheck 25
*set major_shipmobility_skillcheck 25
*set major_shipstealth_skillcheck 25
*set insane_firepower_skillcheck 48
*set insane_agility_skillcheck 48
*set insane_strength_skillcheck 48
*set insane_charisma_skillcheck 48
*set insane_technical_skillcheck 48
*set insane_shipweapon_skillcheck 48
*set insane_shiparmor_skillcheck 48
*set insane_shipmobility_skillcheck 48
*set insane_shipstealth_skillcheck 48
*return
*if ((player_level >= 21) and (player_level <= 30))
*set minor_firepower_skillcheck 26
*set minor_agility_skillcheck 26
*set minor_strength_skillcheck 26
*set minor_charisma_skillcheck 26
*set minor_technical_skillcheck 26
*set minor_shipweapon_skillcheck 26
*set minor_shiparmor_skillcheck 26
*set minor_shipmobility_skillcheck 26
*set minor_shipstealth_skillcheck 26
*set intermediate_firepower_skillcheck 28
*set intermediate_agility_skillcheck 28
*set intermediate_strength_skillcheck 28
*set intermediate_charisma_skillcheck 28
*set intermediate_technical_skillcheck 28
*set intermediate_shipweapon_skillcheck 28
*set intermediate_shiparmor_skillcheck 28
*set intermediate_shipmobility_skillcheck 28
*set intermediate_shipstealth_skillcheck 28
*set major_firepower_skillcheck 30
*set major_agility_skillcheck 30
*set major_strength_skillcheck 30
*set major_charisma_skillcheck 30
*set major_technical_skillcheck 30
*set major_shipweapon_skillcheck 30
*set major_shiparmor_skillcheck 30
*set major_shipmobility_skillcheck 30
*set major_shipstealth_skillcheck 30
*set insane_firepower_skillcheck 58
*set insane_agility_skillcheck 58
*set insane_strength_skillcheck 58
*set insane_charisma_skillcheck 58
*set insane_technical_skillcheck 58
*set insane_shipweapon_skillcheck 58
*set insane_shiparmor_skillcheck 58
*set insane_shipmobility_skillcheck 58
*set insane_shipstealth_skillcheck 58
*return
*if ((player_level >= 31) and (player_level <= 40))
*set minor_firepower_skillcheck 31
*set minor_agility_skillcheck 31
*set minor_strength_skillcheck 31
*set minor_charisma_skillcheck 31
*set minor_technical_skillcheck 31
*set minor_shipweapon_skillcheck 31
*set minor_shiparmor_skillcheck 31
*set minor_shipmobility_skillcheck 31
*set minor_shipstealth_skillcheck 31
*set intermediate_firepower_skillcheck 33
*set intermediate_agility_skillcheck 33
*set intermediate_strength_skillcheck 33
*set intermediate_charisma_skillcheck 33
*set intermediate_technical_skillcheck 33
*set intermediate_shipweapon_skillcheck 33
*set intermediate_shiparmor_skillcheck 33
*set intermediate_shipmobility_skillcheck 33
*set intermediate_shipstealth_skillcheck 33
*set major_firepower_skillcheck 35
*set major_agility_skillcheck 35
*set major_strength_skillcheck 35
*set major_charisma_skillcheck 35
*set major_technical_skillcheck 35
*set major_shipweapon_skillcheck 35
*set major_shiparmor_skillcheck 35
*set major_shipmobility_skillcheck 35
*set major_shipstealth_skillcheck 35
*set insane_firepower_skillcheck 68
*set insane_agility_skillcheck 68
*set insane_strength_skillcheck 68
*set insane_charisma_skillcheck 68
*set insane_technical_skillcheck 68
*set insane_shipweapon_skillcheck 68
*set insane_shiparmor_skillcheck 68
*set insane_shipmobility_skillcheck 68
*set insane_shipstealth_skillcheck 68
*return
*if ((player_level >= 41) and (player_level <= 45))
*set minor_firepower_skillcheck 36
*set minor_agility_skillcheck 36
*set minor_strength_skillcheck 36
*set minor_charisma_skillcheck 36
*set minor_technical_skillcheck 36
*set minor_shipweapon_skillcheck 36
*set minor_shiparmor_skillcheck 36
*set minor_shipmobility_skillcheck 36
*set minor_shipstealth_skillcheck 36
*set intermediate_firepower_skillcheck 38
*set intermediate_agility_skillcheck 38
*set intermediate_strength_skillcheck 38
*set intermediate_charisma_skillcheck 38
*set intermediate_technical_skillcheck 38
*set intermediate_shipweapon_skillcheck 38
*set intermediate_shiparmor_skillcheck 38
*set intermediate_shipmobility_skillcheck 38
*set intermediate_shipstealth_skillcheck 38
*set major_firepower_skillcheck 40
*set major_agility_skillcheck 40
*set major_strength_skillcheck 40
*set major_charisma_skillcheck 40
*set major_technical_skillcheck 40
*set major_shipweapon_skillcheck 40
*set major_shiparmor_skillcheck 40
*set major_shipmobility_skillcheck 40
*set major_shipstealth_skillcheck 40
*set insane_firepower_skillcheck 78
*set insane_agility_skillcheck 78
*set insane_strength_skillcheck 78
*set insane_charisma_skillcheck 78
*set insane_technical_skillcheck 78
*set insane_shipweapon_skillcheck 78
*set insane_shiparmor_skillcheck 78
*set insane_shipmobility_skillcheck 78
*set insane_shipstealth_skillcheck 78
*return
*if ((player_level >= 46) and (player_level <= 50))
*set minor_firepower_skillcheck 41
*set minor_agility_skillcheck 41
*set minor_strength_skillcheck 41
*set minor_charisma_skillcheck 41
*set minor_technical_skillcheck 41
*set minor_shipweapon_skillcheck 41
*set minor_shiparmor_skillcheck 41
*set minor_shipmobility_skillcheck 41
*set minor_shipstealth_skillcheck 41
*set intermediate_firepower_skillcheck 43
*set intermediate_agility_skillcheck 43
*set intermediate_strength_skillcheck 43
*set intermediate_charisma_skillcheck 43
*set intermediate_technical_skillcheck 43
*set intermediate_shipweapon_skillcheck 43
*set intermediate_shiparmor_skillcheck 43
*set intermediate_shipmobility_skillcheck 43
*set intermediate_shipstealth_skillcheck 43
*set major_firepower_skillcheck 45
*set major_agility_skillcheck 45
*set major_strength_skillcheck 45
*set major_charisma_skillcheck 45
*set major_technical_skillcheck 45
*set major_shipweapon_skillcheck 45
*set major_shiparmor_skillcheck 45
*set major_shipmobility_skillcheck 45
*set major_shipstealth_skillcheck 45
*set insane_firepower_skillcheck 88
*set insane_agility_skillcheck 88
*set insane_strength_skillcheck 88
*set insane_charisma_skillcheck 88
*set insane_technical_skillcheck 88
*set insane_shipweapon_skillcheck 88
*set insane_shiparmor_skillcheck 88
*set insane_shipmobility_skillcheck 88
*set insane_shipstealth_skillcheck 88
*return
*if ((player_level >= 51) and (player_level <= 60))
*set minor_firepower_skillcheck 46
*set minor_agility_skillcheck 46
*set minor_strength_skillcheck 46
*set minor_charisma_skillcheck 46
*set minor_technical_skillcheck 46
*set minor_shipweapon_skillcheck 46
*set minor_shiparmor_skillcheck 46
*set minor_shipmobility_skillcheck 46
*set minor_shipstealth_skillcheck 46
*set intermediate_firepower_skillcheck 48
*set intermediate_agility_skillcheck 48
*set intermediate_strength_skillcheck 48
*set intermediate_charisma_skillcheck 48
*set intermediate_technical_skillcheck 48
*set intermediate_shipweapon_skillcheck 48
*set intermediate_shiparmor_skillcheck 48
*set intermediate_shipmobility_skillcheck 48
*set intermediate_shipstealth_skillcheck 48
*set major_firepower_skillcheck 50
*set major_agility_skillcheck 50
*set major_strength_skillcheck 50
*set major_charisma_skillcheck 50
*set major_technical_skillcheck 50
*set major_shipweapon_skillcheck 50
*set major_shiparmor_skillcheck 50
*set major_shipmobility_skillcheck 50
*set major_shipstealth_skillcheck 50
*set insane_firepower_skillcheck 98
*set insane_agility_skillcheck 98
*set insane_strength_skillcheck 98
*set insane_charisma_skillcheck 98
*set insane_technical_skillcheck 98
*set insane_shipweapon_skillcheck 98
*set insane_shiparmor_skillcheck 98
*set insane_shipmobility_skillcheck 98
*set insane_shipstealth_skillcheck 98
*return
And here is how these skillscheck values would be used in an actual *choice block.
example combat:
A bad guy stands in your way.
*choice
#Use my agility skill to take the easy path
*if (player_agility >= minor_agility_skillcheck)
You win!
*if (player_agility < minor_agility_skillcheck)
You lose!
#Use my firepower skill to take the moderate path
*if (player_firepower >= intermediate_firepower_skillcheck)
You win!
*if (player_firepower < intermediate_firepower_skillcheck)
You lose!
#Use my strength to take the hard path
*if (player_strength >= major_strength_skillcheck)
You win!
*if (player_strength < major_strength_skillcheck)
You lose!
I think this system would work. The only things I haven’t written up yet is the code for increasing the player’s level through the experience points (which should be straightforward enough) and the code for determining what tier of items will be available to the player, based on their level. (less straightforward but, I already have it in my head of how to do it).