IDtension is based on the principles of goals, tasks and obstacles, what means, that a story is structured into goal, that have to be achieved by fulfilling task which can be blocked by obstacles. IDtension doesn’t offer a graphical authoring interface. Instead the story is written in directly in a XML (story structure and rules) and a CSV file (final wording), which can be edited by common software (Eclipse for XML, OpenOffice for CSV).
Conditions are connected to obstacles, effects to goals. The figure below shows a graph-like model of a simple story in which the user wants to marry the princess, but is not attractive enough. He can raise his attractiveness by neutralizing his enemy and has therefore the two options of fighting with a knife or with bare hands; the latter one being more difficult, because the enemy is stronger.
![]() |
Marked in green you can see the condition for the obstacle Not_attractive. The description “(actor,attractivity)<1;” means, that this obstacle cannot be overcome as long as the actors (users) attractivity value is below 1. The additional valeu “0.9” next to the condition is the probability with which this obstacle occurs. So there’s a 10 % chance, that the user is able to marry the princess directly. The figure below shows the above described facts again in the already known structure.
![]() |
To raise his current attractivity value he has to reach the goal Enemy_neutralized. Marked in red the effect of reaching that goal is shown: “{attractivity=+0.8,protagonist}”. This means that the current attractivity value of the user is raised by 0.8 after achieving the goal. The arithmetic operator “=+” is a short version of writing “attractivity = attractivity + 0.8” and means exactly the same as “attractivity =+ 0.8”. The figure below shows the previously described facts in more detail, based on the already known structure.
![]() |
This example could also be written in the known IF-THEN-ELSE formalism:
Attractivity Obstacle (without random chance of 10 % to overcome the obstacle): IF ( User_attractivity smaler than 1 ) THEN ACTION: System_tells_user_that_he_is_not_attractive_enough ELSE ACTION: Perform_task_named_Seg_get_married Enemy Neutralizing Goal: IF ( ( Task_named_Seg_fight_performed == true ) OR ( Task_named_Seg_fight_with_knife_performed == true ) ) THEN EFFECT: User_attractivity := User_attractivity + 0.8