.. | ||
README.md | ||
sample.isd |
Interactive Story Draft
- File Format:
.isd
The Interactive Story Draft (ISD) format is a story format language designed for drafting interactive fiction before implementation in Twine’s Harlowe or similar engines. It allows authors to structure branching narratives, define conditions, and track variables efficiently.
Specifications
-
Passages:
- Syntax:
:: PassageName
- Description: Defines a new passage or section in the story.
- Syntax:
-
Links:
- Syntax:
[[Link Text -> TargetPassage]]
- Description: Creates a navigational link to another passage.
- Syntax:
-
Variables:
- Syntax:
$variableName
- Description: Represents a variable to track states or information.
- Syntax:
-
Variable Assignment:
- Syntax:
(set: $variableName to value)
- Description: Assigns a value to a variable.
- Syntax:
-
Input Variable:
- Syntax:
(input: $userVariable, "Placeholder")
- Description: Allows the user to input data.
- Syntax:
-
Conditional Statements:
- Syntax:
(if: condition)[Text if true]
- Description: Displays text or content based on a condition.
- Syntax:
-
Else Clause:
- Syntax:
(else:)[Text if false]
- Description: Follows an
(if:)
statement to handle the false condition.
- Syntax:
-
Drop down:
- Syntax:
(dropdown: $variableName to "Option 1", "Option 2")
- Description: Assigns a drop down menu with the given strings as options.
- Syntax:
-
Random Number Generation:
- Syntax:
(set: $variableName to (random: min, max))
- Description: Sets a variable to a random number between
min
andmax
.
- Syntax:
-
Text Styling:
- Syntax:
''italic''
,'''bold'''
,^^superscript^^
,~~subscript~~
- Description: Applies basic text formatting.
- Syntax:
Example
:: Introduction
Welcome to your adventure! You find yourself at a crossroads.
[[Take the left path -> LeftPath]]
[[Take the right path -> RightPath]]
:: LeftPath
You walk down the left path and encounter a mysterious stranger.
(set: $hasKey to true)
The stranger gives you a key.
[[Continue -> Crossroads]]
:: RightPath
You walk down the right path and find a locked door.
(if: $hasKey)[
You use the key to unlock the door and discover a treasure!
]
(else:)[
The door is locked. You need a key to open it.
]
[[Return to the crossroads -> Crossroads]]
:: Crossroads
You're back at the crossroads.
[[Take the left path -> LeftPath]]
[[Take the right path -> RightPath]]