Add comprehensive example demonstrating all major features of the Storybook DSL through Lewis Carroll's Alice in Wonderland. Contents: - 12 characters (Alice, WhiteRabbit, CheshireCat, MadHatter, etc.) - 7 relationships with named participant blocks - 3 institutions (tea parties, royal court) - 1 schedule (Mad Tea Party eternal rotation) - 12 behavior trees using new syntax features - 1 life arc (Alice's journey) Demonstrates: - Cross-file template resolution (schema/templates.sb) - Template inheritance and includes - Strict template validation - Action parameters and repeater decorators - Named participant relationship blocks - Species-based character typing - Rich prose blocks throughout All content validates successfully.
337 lines
10 KiB
Markdown
337 lines
10 KiB
Markdown
# Alice's Adventures in Wonderland - Storybook Example
|
|
|
|
A comprehensive demonstration of the Storybook DSL, modeling Lewis Carroll's *Alice's Adventures in Wonderland* with accuracy to the source material and showcasing all advanced language features.
|
|
|
|
## Overview
|
|
|
|
This example shows how Storybook enables complex narrative modeling for agent simulation games. It demonstrates:
|
|
|
|
- **Advanced behavior trees** for complex, context-dependent character actions
|
|
- **Life arcs** tracking transformative character journeys
|
|
- **Schedules** modeling eternal time loops and recurring events
|
|
- **Template composition** with inheritance and strict mode
|
|
- **Bidirectional relationships** with asymmetric perspectives
|
|
- **Cross-file references** creating an interconnected world model
|
|
|
|
## Contents
|
|
|
|
### Schema Layer
|
|
|
|
**`schema/core_enums.sb`**
|
|
- Core value types used throughout: `Size`, `EmotionalState`, `CardSuit`, `CardRank`, `TimeState`, `ManifestationLevel`
|
|
- Demonstrates enumeration definitions
|
|
|
|
**`schema/templates.sb`**
|
|
- Base template `WonderlandCreature` for all sentient beings
|
|
- Specialized templates with `include`: `SizeChanging`, `MadTeaPartyMember`, `Supernatural`
|
|
- **Strict template** `PlayingCard` enforcing concrete values
|
|
- Shows vertical inheritance (includes) and horizontal composition (multiple `from` clauses)
|
|
|
|
**`schema/species.sb`**
|
|
- Species definitions: `Human`, `Rabbit`, `Cat`, `Hare`, `Dormouse`, `Caterpillar`, `PlayingCardPerson`
|
|
- Rich prose blocks describing characteristics and abilities
|
|
|
|
### World Layer
|
|
|
|
#### Characters
|
|
|
|
**`alice.sb`** - The protagonist
|
|
- Inherits from `SizeChanging` template
|
|
- **Life arc `AliceJourney`** with states: `falling`, `tiny_alice`, `giant_alice`, `normal_alice_garden`, `enlightened_alice`
|
|
- Shows how life arcs track transformative journeys with state-specific field modifications
|
|
|
|
**`white_rabbit.sb`** - The anxious herald
|
|
- **Behavior tree `WhiteRabbit_ConstantlyLate`** using selectors (`?`) and sequences (`>`)
|
|
- Demonstrates hierarchical behavior modeling with panic strategies
|
|
|
|
**`cheshire_cat.sb`** - The enigmatic guide
|
|
- **Three behavior trees**:
|
|
- `CheshireCat_AppearDisappear` - context-dependent materialization
|
|
- `CheshireCat_GradualManifestation` - piece-by-piece appearance (grin first!)
|
|
- `CheshireCat_GradualDematerialization` - fading away (grin lingers longest)
|
|
- Shows complex multi-step sequences with timing and state transitions
|
|
|
|
**`mad_tea_party.sb`** - The eternal tea party trio
|
|
- Three characters: `MadHatter`, `MarchHare`, `Dormouse`
|
|
- **Schedule `MadTeaPartyRotation`** modeling the time loop (always 6 o'clock)
|
|
- **Behavior `MadTeaParty_CoordinatedMadness`** showing multi-agent coordination
|
|
- Demonstrates repeater decorator (`*`) for infinite loops
|
|
|
|
**`royal_court.sb`** - The Court of Hearts
|
|
- Characters: `QueenOfHearts`, `KingOfHearts`, `CardGardenerTwo`, `CardGardenerFive`, `CardGardenerSeven`
|
|
- Inherits from `PlayingCard` strict template - card suit/rank must be concrete
|
|
- **Behavior `QueenOfHearts_RagePattern`** - hair-trigger temper response
|
|
- **Behavior `KingOfHearts_SecretPardons`** - background mercy system
|
|
|
|
**`caterpillar.sb`** - The philosophical teacher
|
|
- **Behavior `Caterpillar_SocraticMethod`** - interrogative teaching style
|
|
- Shows question-answer tree structures
|
|
|
|
#### Locations
|
|
|
|
**`wonderland_places.sb`**
|
|
- `RabbitHole`, `HallOfDoors`, `Garden`, `MadTeaPartyTable`, `CroquetGround`, `QueensPalace`, `MushroomTop`
|
|
- Each location has physical properties, symbolic meaning, and narrative significance
|
|
- Demonstrates rich prose blocks for description and analysis
|
|
|
|
#### Institutions
|
|
|
|
**`wonderland_institutions.sb`**
|
|
- `CourtOfHearts` - tyrannical monarchy with interesting power dynamics
|
|
- `MadTeaParty` - eternal social gathering stuck in time
|
|
- `WonderlandDreamLogic` - the meta-institution governing reality itself
|
|
- Shows how social structures can be modeled with hierarchies and rules
|
|
|
|
#### Relationships
|
|
|
|
**`wonderland_relationships.sb`**
|
|
- **Bidirectional relationships** with `self` and `other` blocks showing asymmetric perspectives:
|
|
- `AliceAndWhiteRabbit` - pursuer/unwitting guide
|
|
- `AliceAndCheshireCat` - seeker/amused observer
|
|
- `QueenAndKing` - tyrant/secret rebel
|
|
- `AliceAndCaterpillar` - frustrated student/Socratic teacher
|
|
- Demonstrates how different characters perceive the same relationship differently
|
|
|
|
#### Behaviors
|
|
|
|
**`alice_behaviors.sb`** - Alice's strategic behaviors
|
|
- `Alice_SizeManagement` - learning to control size through trial and error
|
|
- `Alice_NavigateConversation` - dealing with nonsensical logic
|
|
- `Alice_EmotionalJourney` - state transitions from curiosity to enlightenment
|
|
- `Alice_ProblemSolving` - adapting normal-world logic to Wonderland
|
|
|
|
## Language Features Demonstrated
|
|
|
|
### 1. Template Composition
|
|
|
|
```storybook
|
|
template WonderlandCreature {
|
|
current_size: Size
|
|
emotional_state: EmotionalState
|
|
follows_logic: false..true
|
|
}
|
|
|
|
template SizeChanging {
|
|
include WonderlandCreature
|
|
natural_size: Size
|
|
size_changes_today: 0..50
|
|
}
|
|
|
|
character Alice from SizeChanging {
|
|
// Inherits all fields from WonderlandCreature and SizeChanging
|
|
age: 7
|
|
current_size: normal
|
|
}
|
|
```
|
|
|
|
### 2. Strict Templates
|
|
|
|
```storybook
|
|
template strict PlayingCard {
|
|
suit: CardSuit
|
|
rank: CardRank
|
|
// Characters using this template MUST provide concrete values
|
|
}
|
|
|
|
character QueenOfHearts from PlayingCard {
|
|
suit: hearts // Required: must be concrete enum value
|
|
rank: queen // Required: must be concrete enum value
|
|
}
|
|
```
|
|
|
|
### 3. Life Arcs
|
|
|
|
```storybook
|
|
life_arc AliceJourney {
|
|
state tiny_alice {
|
|
on enter {
|
|
Alice.current_size: tiny
|
|
Alice.size_changes_today: +1
|
|
}
|
|
}
|
|
|
|
state giant_alice {
|
|
on enter {
|
|
Alice.current_size: huge
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### 4. Schedules
|
|
|
|
```storybook
|
|
schedule MadTeaPartyRotation {
|
|
18:00 -> 18:01: TeaRound { }
|
|
18:01 -> 18:02: RiddlePhase { }
|
|
// ... more phases
|
|
18:05 -> 18:00: LoopToBeginning { } // Loops back!
|
|
}
|
|
```
|
|
|
|
### 5. Behavior Trees
|
|
|
|
```storybook
|
|
behavior CheshireCat_AppearDisappear {
|
|
? { // Selector: try branches until one succeeds
|
|
> { // Sequence: all must succeed in order
|
|
IsInvisible
|
|
DecideToAppear
|
|
GradualManifestation
|
|
}
|
|
> {
|
|
IsVisible
|
|
DecideToLeave
|
|
GradualDematerialization
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### 6. Repeater Decorator
|
|
|
|
```storybook
|
|
behavior MadTeaParty_CoordinatedMadness {
|
|
* { // Repeater: loop forever
|
|
? {
|
|
> { AskRiddle; ReceiveNoAnswer }
|
|
> { RotateSeats; CheckTime }
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### 7. Bidirectional Relationships
|
|
|
|
```storybook
|
|
relationship QueenAndKing {
|
|
QueenOfHearts
|
|
KingOfHearts
|
|
|
|
bond: 0.4
|
|
|
|
self {
|
|
// Queen's perspective
|
|
role: dominant_spouse
|
|
aware_of_pardons: false
|
|
}
|
|
|
|
other {
|
|
// King's perspective
|
|
role: secret_moderator
|
|
subverts_authority: 1.0
|
|
}
|
|
}
|
|
```
|
|
|
|
### 8. Rich Prose Blocks
|
|
|
|
```storybook
|
|
character CheshireCat {
|
|
---description
|
|
A large cat with a permanent, unsettling grin. Possesses the
|
|
ability to appear and disappear at will, often leaving only
|
|
its grin behind.
|
|
---
|
|
|
|
---philosophy
|
|
The Cheshire Cat represents the absurdist nature of Wonderland
|
|
itself. His vanishing act defies physical law but seems
|
|
perfectly natural in Wonderland's logic.
|
|
---
|
|
}
|
|
```
|
|
|
|
### 9. Cross-File References
|
|
|
|
```storybook
|
|
// In alice.sb
|
|
use schema::core_enums::{Size, EmotionalState};
|
|
use schema::templates::SizeChanging;
|
|
|
|
character Alice from SizeChanging {
|
|
current_size: normal // Uses Size enum from core_enums
|
|
}
|
|
```
|
|
|
|
### 10. Field Modifications in Life Arcs
|
|
|
|
```storybook
|
|
state enlightened_alice {
|
|
on enter {
|
|
Alice.emotional_state: brave
|
|
Alice.awareness_of_absurdity: 1.0 // Absolute assignment
|
|
Alice.size_changes_today: +1 // Increment
|
|
}
|
|
}
|
|
```
|
|
|
|
## Accuracy to Source Material
|
|
|
|
This example stays faithful to Carroll's original text:
|
|
|
|
- **Mad Tea Party**: Time frozen at 6 o'clock, rotating seats, butter in the watch
|
|
- **Cheshire Cat**: Grin appearing first/last, cryptic directions, "we're all mad here"
|
|
- **Queen of Hearts**: Constant "Off with their heads!", card gardeners, croquet with flamingos
|
|
- **Alice's transformations**: Specific size states from the book
|
|
- **Caterpillar's advice**: Terse questions, mushroom sides
|
|
- **Character dynamics**: White Rabbit's anxiety, Dormouse's drowsiness, King's secret mercy
|
|
|
|
## Running the Example
|
|
|
|
```bash
|
|
# Validate the entire project
|
|
sb validate examples/alice-in-wonderland/
|
|
|
|
# Query characters
|
|
sb query "characters where follows_logic == false"
|
|
|
|
# Inspect a specific character
|
|
sb inspect Alice
|
|
|
|
# Show all relationships
|
|
sb query "relationships where bond > 0.5"
|
|
```
|
|
|
|
## What This Demonstrates
|
|
|
|
### For Content Authors (Lonni)
|
|
|
|
- **Rich character modeling**: Personality traits, motivations, relationships
|
|
- **Narrative structure**: Life arcs track character journeys
|
|
- **World building**: Locations, institutions, social dynamics
|
|
- **Prose integration**: Backstories, descriptions, and philosophical notes
|
|
|
|
### For Developers (Sienna)
|
|
|
|
- **Complex behavior trees**: Multi-level selectors, sequences, repeaters
|
|
- **State management**: Life arcs with field modifications
|
|
- **Scheduling systems**: Time loops and recurring events
|
|
- **Type safety**: Strict templates enforce constraints
|
|
- **Cross-referencing**: Build interconnected world models
|
|
|
|
### For Agent Simulation
|
|
|
|
This model could drive an agent-based simulation where:
|
|
|
|
- Alice's behavior tree decides how to navigate conversations and obstacles
|
|
- The Mad Tea Party schedule creates a time-loop environment
|
|
- Cheshire Cat's appearance/disappearance behavior creates mystery
|
|
- Queen's rage pattern generates conflict
|
|
- Relationships determine interaction dynamics
|
|
|
|
## Extending This Example
|
|
|
|
Ideas for additions:
|
|
|
|
- **More chapters**: Mock Turtle, Gryphon, Trial scene
|
|
- **Croquet game logic**: Behavior trees for live hedgehog/flamingo equipment
|
|
- **Size change mechanics**: Fine-grained mushroom nibbling behavior
|
|
- **Dream logic system**: Meta-rules governing Wonderland physics
|
|
- **Alice's awakening**: Final life arc state transitioning back to reality
|
|
|
|
## License
|
|
|
|
Source material: *Alice's Adventures in Wonderland* by Lewis Carroll (public domain)
|
|
Storybook adaptation: MIT License
|