CrimsonHunter/draft/README.md
2025-02-22 13:21:34 +00:00

96 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Interactive Story Draft v0.5
- **File Format:** `.isd`
The Interactive Story Draft (ISD) format is a story format language designed for drafting interactive fiction before implementation in Twines Harlowe or similar engines. It allows authors to structure branching narratives, define conditions, and track variables efficiently.
---
## Specifications
1. **Passages:**
- **Syntax:** `# PassageName`
- **Description:** Defines a new passage or section in the story.
2. **Links:**
- **Syntax:** `[[Link Text -> TargetPassage]]`
- **Description:** Creates a navigational link to another passage.
3. **Variables:**
- **Syntax:** `$variableName`
- **Description:** Represents a variable to track states or information.
4. **Variable Assignment:**
- **Syntax:** `(set: $variableName to value)`
- **Description:** Assigns a value to a variable.
5. **Input Variable**:
- **Syntax:** `(input: $userVariable, "Placeholder")`
- **Description:** Allows the user to input data.
6. **Conditional Statements:**
- **Syntax:** `(if: condition)[Text if true]`
- **Description:** Displays text or content based on a condition.
7. **Else Clause:**
- **Syntax:** `(else:)[Text if false]`
- **Description:** Follows an `(if:)` statement to handle the false condition.
8. **Drop down:**
- **Syntax:** ``(dropdown: $variableName to "Option 1", "Option 2")``
- **Description:** Assigns a drop down menu with the given strings as options.
9. **Random Number Generation:**
- **Syntax:** `(set: $variableName to (random: min, max))`
- **Description:** Sets a variable to a random number between `min` and `max`.
10. **Text Styling:**
- **Syntax:** `''italic''`, `'''bold'''`, `^^superscript^^`, `~~subscript~~`
- **Description:** Applies basic text formatting.
## 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]]
```