How to build a text game with consistent “challenge” throughout the entire story?

I’ve been arguing with myself lately over a pretty fundamental aspect of my work-in-progress: difficulty and how to structure my game around it.

(When I say difficulty, I’m mostly referring to “skill” checks in choices. Meaning:
“*if agility < 5, player fails” type of check)

The way I see it, there’s 2 ways I can structure my game to maintain this illusion of challenge… and at least one way to make my life 2000% easier.

1. Static Difficulty

This is my current structure. It’s been very tedious to write since all the values have to be planned out. All scenarios are at a fixed (but tiered) difficulty level. Meaning, all Act 1 missions will feature skill checks from 0-10 points, and all gear the player can find during Act 1 of the story will have a maximum skill-buff of 11 points. All Act 2 missions will feature skill checks from 11-20 points, and all gear found in Act 2 will have a maximum skill buff of 21 points. And so on.

2. Scaling Difficulty

This one is more complicated to pull off, but feels way less “choppy” when you play it. The player will have experience points and “levels” or milestones they achieve through increasing their experience points. You’d gain experience points through completing missions/parts of the story. Based on the player’s “level” or experience milestone, the skill checks would scale to maintain a consistent level of challenge, no matter where in the story the player is. The gear available to the player in the game would also depend on their level. Higher-level gear being non-existent until the player reaches the level that warrants it.

3. No Challenge

Option three is to just throw out the idea of progressively increasing values/skills/skill checks and just have a small list of gear with unique skill points which can be used to complete the entire game from A-Z. The only thing the gear affects at that point is whether you will take one choice or another depending on what skill it requires (and what skill your gear provides). This is pretty much my nuclear option, and is by far the easiest to accomplish.

I’ve also had a thought about making the game properly annoying, through the use of some clever RNG:

In theory this could work with any of the above “difficulty” structures, it just adds a twist. Instead of skill-checks being a guaranteed pass or fail depending on whether or not the player’s skill value is higher or equal to the skill check’s value… the pass-or-fail would be determined by chance. A higher skill means a higher chance, a lower skill means a lower chance, but there is never a guarantee that you will pass or fail.

So lets say you have a skill of Agility 80, and are trying to pass an Agility skill check of 100. Attempting the skill check activates a RNG subroutine where, if you roll 1-80, you pass, but if you roll 81-100 you fail. Thus you have an 80% chance of passing the check… but a 20% chance to fail it. If this sounds familiar, it’s pretty close to how Bethesda Game Studio’s Fallout “speech” skill worked. At least in Fallout 3, I’m pretty sure.

I was planning on implementing this as a totally optional feature (if at all), since I know how frustrating it would sound to people if they could still fail a skill check even when their skill is maxed out lol

Still, I think it’s a neat concept on its own.

So… thoughts? Opinions? Other options I didn’t think of? Raging about how cruel and abominable and unnecessary it would be to use RNG for skill checks?


It would indeed be cruel and abominable to use RNG for any narratively important skill check.

This is just me, but I enjoy ChoiceScript games first and foremost for the story. I would go so far as to say that I derive the purest enjoyment from those with no significant stats at all, like The Saga of Oedipus Rex.

I’ll admit that I also derive some satisfaction from reading and wrangling with the code of stat-heavy games like The Lost Heir trilogy to produce ‘perfect playthroughs’, where everything I want happens the way I want it, but there’s always at least a faintly masochistic undertone to that. I could happily do without the stat-heaviness of such games, and I only bother wrangling with them because I enjoy the story.

All of which is to say… I, personally, would be most likely to read your story if you just went with the ‘No Challenge’ option (and you’d probably be more likely to finish writing it too).


100% hear you about preferring story over stat-heavy “gameplay”. I mean ideally, the stat-heaviness should be seamless with the story, to a point where it doesn’t feel like it really gets in the way for the reader/player. And I am trying to make it so, being a lover of narrative first, lover of programming second.

Edit: I should mention, I also have a soft-save system in place to mitigate the disaster of failing important skill checks. That is, if you die (you can die, by the way) you’re able to load to the most recent “checkpoint” rather than having to start over. I’m strategically placing checkpoints in places where, the player is free to leave, prepare more, then return, so that they can come back and succeed where they otherwise had failed.

This doesn’t include failures that don’t result in death, because failing can be just as narratively interesting as succeeding :slight_smile:

The WIP in question, if you’re interested:


I enjoy reading/playing all kinds of approaches to choice games. However, being a fan of RPGs, I am working on a game following more or less option 2. The game mechanics are this: The Dark Order [updated 29/05/2022] - #34 by nocturno

I can confirm that this approach is difficult and complex, even for someone like me who is used to programming, and if implemented poorly, it could lead to a game that is impossible to play or complete. On the other hand, if it works, it could result in an incredible reading and playing experience. Whatever your approach is, I’ll be available to help with testing when you feel it’s necessary. Good luck!


Including RNG is an unusual structure for ChoiceScript games, but the game is clear upfront about how it works, why not give it a go?

If you do go for it, I’d suggest making the challenge difficulty being more visible than is usual in ChoiceScript. Fallen London is a browser/text game that comes to mind when I think of incorporating RNG into challenges. It’s very effective, and part of what makes it pleasing to play is seeing “near-impossible” as a difficulty, trying it anyway, and succeeding despite the odds.


Usually I would advise against RNG in gamebooks. They make sense in TTRPG because you’re physically rolling the dice,but if you just press a button and go to the next page where you succeed or fail is not nearly as fun (imo).

A game I’ve seen recently that does it well is Wayfarer. It’s a Twine game. What I think it does well is that “failure” is not a show-stopper. The story just continues in a different path, just as interesting. I never felt the urge to reload because I failed a skill check.

On a different note, you could have a static challenge rate for “proficiencies”, for example, lock-picking, lore or athletics. Basically, anything that is static.

But have dynamic scaling difficulty for enemies (anything “alive”), so that the player is not overwhelmed or underwhelmed anytime in the game. This includes combat skills but also social skills like intimidation, seduction, deception, etc.


I actually added a ttrpg mini game in Season Two of UnNatural. I was worried about that so I tied it to a choice the player can choose to either “roll high” can be 4-6 "roll low’ can be 1-3 or “rely on luck” can be 1-6.


I am of the belief that you can’t go wrong with options. That being said, I don’t care how difficult or annoying you make a game, just as long as there are options to make it easier or even eliminate the challenge completely. Take the Archangel job for example. There are options to make the game Super difficult and annoying, or interesting for some. Then there is the option to eliminate challenges completely, like entering Cheat Codes or lowering levels. Either way, options exists for everyone, making it a delight. You just can’t lose with options.

1 Like

I don’t think that’s the only problem. In a piece of interactive fiction, your choices are limited by what the author already decided you could do in the past. While in a TTRPG, you can come up with out-of-the-box solutions to predicaments, or you can let the other party members cover for you, or even just rely on the mercy of the GM, none of which will work in IF. Also, if your character dies in a TTRPG (excluding resurrection options), you can just roll up a new character and join the adventure again. In IF, at best you’ll be sent back to a checkpoint or saved game, but for published ChoiceScript games, you’re usually sent right back to the start and given the choice to either slog through stuff you’ve already done or just to… not play any more.

Now, obviously this applies to any kind of difficulty in CS/IF games, but randomness adds a whole extra level of frustration to it, and frustration is very much something to be avoided.


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

*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

*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

*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

*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

*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

*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

*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

*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

And here is how these skillscheck values would be used in an actual *choice block.

example combat:
A bad guy stands in your way.
	#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).


Agreed. Randomness can be frustrating for players. Especially when it is do or die. One way to manage the fallout from that kind of failure is to make defeat interesting.

Either have the character learn something special from a particular failure or else move to a different dramatic point in the story. Kind of like how James Bond gets captured but then later has a chance to escape after hearing the bad guy monologue. Yes, a bit cliche and therefore to be used sparingly… but also memorable.

In Apex Patrol there was a special sequence that initiated a time-loop if the PC failed a certain task. There was a small penalty to the score but also an achievement that was unlocked.

Fresh example: Does the PC fail to avoid the bite of a poisonous snake? If the snakebite doesn’t kill them (perhaps instead there is impairment and suffering), then perhaps they earn a resistance to it the next time they are bit. A second bite and recovery may render immune. Then, when the chief antagonist tries to use a deadly venom against the PC, the PC can rightfully respond with a cheeky line such as “I thought the tang was familiar. Tiger snake. Eastern tiger snake. Young.”


The Great Tournament on HG is a uses d20 rolls and a difficulty setting, with chances to increase skill points through the game. It might worth snooping in the code. Personally, not a big fan of using RNG for checks in choice games, but it might be acceptable if the outcome can be controlled to some degree (and failing doesn’t automatically translate to “instant death, game over”).

1 Like