Levelling Up Skills

From Infinite Worlds
Jump to navigation Jump to search

Information icon.svg Player Guide

This page is a player-created guide. Information may reflect personal opinions or playstyles; instruction snippets are examples only. See all guides for more advice.

IW uses a simple skills system where each character has a number of skills with scores from 0 (Incapable) to 5 (Exceptional). These skills are used to determine the outcome of the player's actions. It is possible to outright deactivate this system

However, these skills are fixed, no matter the events of the story. A player can practice a skill as much as they like, or even undergo events that should improve it (for example, magically gaining knowledge in a fantasy game), but the skill value remains unchanged. This can cause incongruities in the story, as the player will typically still fail attempts to use skills and knowledge that they ought to have.

Currently, there is no way to edit skills, even with Storyteller Mode, except through a trigger within the game. World creators may wish to consider triggers which improve skills, in order to allow characters to grow and develop.

It is also common to want to use some form of "experience" counter in order to track progression of a skill. A tracked item is ideal for this. Tell the tracked item to update whenever the player character uses or practices their skill, for example. Then, use trigger events to increase the skill value when the XP reaches a certain level.

This requires one tracked item and possibly several triggers per skill (it may be sufficient to use one trigger per skill which sets XP to 0 again too). It is possible to reduce the effort somewhat by having the AI manage all XP values in a single tracked item (or by using secretInfo). However, you will still need at least one trigger per skill.

Example: Secret Info Leveling[edit]

Here is an example using secretInfo; the corresponding trigger event fires upon the writing of the "Increase" message:

Each turn, write at the end of secretInfo a list of my skills and my experience. The format should be one skill per line, with each skill followed by a number out of 100 which represents my experience with that skill.

Whenever I attempt an action for which one of my skills would be relevant, increase my experience with that skill slightly. A typical increase should be around 5 points, but increase the skill more for difficult challenges and less for easy ones. Increase my experience slightly more when I fail than when I succeed. Also increase this slightly when learning or practicing things relevant to the skill (for example, reading a magical tome may increase Magic experience by a few points, whereas socialising with others may increase Charisma experience by one or two). If my skill has a high value I will find more challenges easy so the increase should be less. Repeatedly attempting the same task over and over or practising in the same way should result in minimal increases, if any. Once my skill is 5, it cannot increase further, so do not increase the associated skill experience variable.

Whenever one of my skill experience variables is 100 or more, decrease it by 100. When you do, write at the end of secretInfo "Increase <skill>!", where <skill> is the relevant skill, and describe in the narrative how my skill level is growing.

While secretInfo is a great way to push forward some information, this approach still means we have to trust the AI to do some math - something it isn't particularly good at. And the triggers per skill require triggers on events - one event per skill to react to the "Increase <skill>!" message. Those are capped at 10 per world, and the AI may misjudge when to fire it.

Tracked Item Leveling with Evaluation Instructions[edit]

So, tracked items were already the first idea that comes to mind for storing information. Setting them up is a bit tedious but they are versatile. This approach will require two tracked items per skill that can be leveled. It will also require at least two triggers per skill, possibly even six in total depending on your needs.

Tracked Item: <skill>_xp_earned_this_turn[edit]

Type: Numeric
Visibility: AI only (might even be world debug tools only)
Auto Update: Yes
Initial Value: 0
Description: Mechanical scratch value for the <skill> mastery system. Holds the raw difficulty of a <skill> action taken this turn, before any affinity multiplier. It is reset to 0 every turn.
Update Instructions: Set the <skill> practice value for this turn: how much real <skill> practice happened this turn, judged against her current <skill> level (glancing use ~2; a few focused minutes ~8; ~30 min focused drilling ~15; ~1 hour ~25; a long committed session ~40; trivial-for-her or unused = 0). Count the effort whether the player succeeded or failed.

The name says it already: This is the XP the player gets per turn, based on the action that was taken. It's reset to 0 every turn, and we're going to enforce that mechanically. This particular version is utilizing custom Evaluation Instructions in which the player actions are split differently from default. Besides trivial actions and skill uses, there's also character interaction (irrelevant here) and discovery actions - those specifying the player discovering or exercising a particular skill. The Evaluation Instructions also point towards this tracked item, so the AI is coming up with the numbers in the evaluation phase of a turn.
Since the player would never see a value other than 0, it can be safely hidden into world debug tools. But it needs to be AI visible for the update instructions.

Tracked Item: <skill>_xp[edit]

Type: Numeric Visibility: Not visible to the AI (wether it's visible to the player is your call) Auto Update: No (impossible due to invisibility to AI. Initial Value: 0 Description: <skill> mastery XP accumulator. Controlled entirely by triggers. Update Instructions: (none)

The total XP for a particular skill. No AI exposure means practically no costs. But in order to use it we need triggers.

Trigger: <skill>_xp_accumulate[edit]

Can trigger more than once: Yes Conditions: 1. triggerOnTrackedItem <skill>_xp_earned_this_turn >= 1

Effects: 1. Add <skill>_xp_earned_this_turn to <skill_xp> 2. Set <skill>_xp_earned_this_turn to 0

The simple variant of just adding the newly earned xp to the counter and resetting it. But since this is a trigger, it also has the power of math built in. The first effect can easily contain a more complicated calculation. Use the AI calculated number and play with it however you want, if the formular is validated, it can be calculated. This isn't done by the AI, so a complicated calculation can be done reliably.

Trigger: <skill>_xp_LvlX_to_LvlY[edit]

Can trigger more than once: Yes Conditions: 1. triggerOnTrackedItem <skill>_xp >= <XP needed to reach LvlY>

Effects: 1. Increase <skill> by 1 up to LvlY 2. (optional) Show Message or add a section to secretInfo ("Give information to the AI) to give a bit of narrative context about the level up. 3. (optional) decrease <skill_xp> by <XP needed to reach LvlY> (if you want one trigger to cover all increases from level 1 up to level 5)

Well, this is the level up trigger itself, could mean one for each level increase wil some narrative flair added to it. In that case I suggest that the Lvl5 trigger would also retire the <skill>_xp_earned_this_turn tracked item by modifying it to be invisible to the AI. Once the skill is maxxed out, the calculation of XP is no longer necessary after all.

Don't sleep on Evaluation Instructions![edit]

The tracked item <skill>_xp_earned_this_turn really benefits from the evaluation instructions being detailed and ideally explaining what a certain skill level actually is. This way the AI will check the player action against whatever metric makes sense for the world. It's also possible that not all skills can be leveled, and mentioning which ones CAN be leveled helps the AI along. Tests have also shown that it can handle vague descriptions like "Primary Power" with said power being mentioned in the character description as well (at least Lynx-Thinking can).

In general evaluation instructions are a very powerful tool. They make the rules if and when a skill is actually evaluated, has to be deemed a SUCCESS, PARTIAL_SUCCESS or FAILURE and what this actually looks like. And if you are building a leveling system for your skills, it is definitely important to nail down what they represent rather than just using the default instructions.

Evaluation Instructions can actually replace the skill system entirely if necessary. It's possible to hide the skills from players and have the evaluation based on all kinds of stuff. In the case of a leveling system this could mean a set of numeric tracked items that work like skills, but are not limited to five levels. Or have the AI evaluate agains the <skill_xp> tracked item directly (although with higher numbers that might be tricky). Alternatively a text tracked item to describe the player capabilities and have that be evaluated (a leveling system could update that tracked item to show the higher capabilities narratively instead of numerical).