BREAKING CHANGES: - Relationship syntax now requires blocks for all participants - Removed self/other perspective blocks from relationships - Replaced 'guard' keyword with 'if' for behavior tree decorators Language Features: - Add tree-sitter grammar with improved if/condition disambiguation - Add comprehensive tutorial and reference documentation - Add SBIR v0.2.0 binary format specification - Add resource linking system for behaviors and schedules - Add year-long schedule patterns (day, season, recurrence) - Add behavior tree enhancements (named nodes, decorators) Documentation: - Complete tutorial series (9 chapters) with baker family examples - Complete reference documentation for all language features - SBIR v0.2.0 specification with binary format details - Added locations and institutions documentation Examples: - Convert all examples to baker family scenario - Add comprehensive working examples Tooling: - Zed extension with LSP integration - Tree-sitter grammar for syntax highlighting - Build scripts and development tools Version Updates: - Main package: 0.1.0 → 0.2.0 - Tree-sitter grammar: 0.1.0 → 0.2.0 - Zed extension: 0.1.0 → 0.2.0 - Storybook editor: 0.1.0 → 0.2.0
340 lines
7.4 KiB
Markdown
340 lines
7.4 KiB
Markdown
# Day in the Life
|
|
|
|
This example models a complete day for a baker character, showing how schedules, behaviors, and life arcs work together to create a rich daily simulation.
|
|
|
|
## The Baker
|
|
|
|
```storybook
|
|
use schema::core_enums::{Season, DayOfWeek};
|
|
use schema::beings::Human;
|
|
use schema::templates::SkilledWorker;
|
|
|
|
character Martha: Human from SkilledWorker {
|
|
age: 42
|
|
occupation: "Master Baker"
|
|
skill_level: 0.95
|
|
energy: 1.0
|
|
mood: 0.8
|
|
|
|
uses schedule: MarthaDailySchedule
|
|
uses behaviors: [
|
|
{ tree: BakerRoutine, priority: normal },
|
|
{ tree: HandleEmergency, when: emergency_detected, priority: critical }
|
|
]
|
|
|
|
---backstory
|
|
Martha has been baking since she was twelve, learning from her
|
|
grandmother. She now runs the most popular bakery in town and
|
|
is known for her sourdough bread and apple pastries.
|
|
---
|
|
}
|
|
```
|
|
|
|
## The Schedule
|
|
|
|
```storybook
|
|
schedule MarthaDailySchedule {
|
|
block wake_up {
|
|
04:00 - 04:30
|
|
action: routines::morning_wake
|
|
}
|
|
|
|
block early_baking {
|
|
04:30 - 07:00
|
|
action: baking::prepare_morning_goods
|
|
}
|
|
|
|
block open_shop {
|
|
07:00 - 07:15
|
|
action: shop::open_for_business
|
|
}
|
|
|
|
block morning_rush {
|
|
07:15 - 10:00
|
|
action: shop::serve_morning_customers
|
|
}
|
|
|
|
block midday_baking {
|
|
10:00 - 12:00
|
|
action: baking::prepare_afternoon_goods
|
|
}
|
|
|
|
block lunch_break {
|
|
12:00 - 13:00
|
|
action: social::lunch_with_family
|
|
}
|
|
|
|
block afternoon_sales {
|
|
13:00 - 16:00
|
|
action: shop::serve_afternoon_customers
|
|
}
|
|
|
|
block close_shop {
|
|
16:00 - 16:30
|
|
action: shop::close_for_day
|
|
}
|
|
|
|
block evening_prep {
|
|
16:30 - 17:30
|
|
action: baking::prepare_dough_for_tomorrow
|
|
}
|
|
|
|
block family_time {
|
|
18:00 - 21:00
|
|
action: social::family_evening
|
|
}
|
|
|
|
block sleep {
|
|
21:00 - 04:00
|
|
action: routines::sleep
|
|
}
|
|
|
|
// Saturday: Market day
|
|
recurs MarketDay on day saturday {
|
|
block market_prep {
|
|
03:00 - 05:00
|
|
action: baking::market_batch
|
|
}
|
|
|
|
block market_sales {
|
|
06:00 - 14:00
|
|
action: market::sell_at_stall
|
|
}
|
|
|
|
block market_cleanup {
|
|
14:00 - 15:00
|
|
action: market::pack_up
|
|
}
|
|
}
|
|
|
|
// Summer: Extended hours
|
|
block summer_afternoon {
|
|
13:00 - 18:00
|
|
action: shop::extended_summer_hours
|
|
on season summer
|
|
}
|
|
}
|
|
```
|
|
|
|
## Behaviors
|
|
|
|
### Morning Routine
|
|
|
|
```storybook
|
|
behavior BakerMorningRoutine {
|
|
then morning_sequence {
|
|
WakeUp
|
|
WashFace
|
|
DressInWorkClothes
|
|
|
|
// Check the sourdough starter
|
|
then check_starter {
|
|
ExamineStarter
|
|
if(starter_healthy) {
|
|
FeedStarter
|
|
}
|
|
}
|
|
|
|
WalkToKitchen
|
|
LightOven
|
|
}
|
|
}
|
|
```
|
|
|
|
### Baking Behavior
|
|
|
|
```storybook
|
|
behavior BakerRoutine {
|
|
choose baking_priority {
|
|
// Handle special orders first
|
|
then special_orders {
|
|
if(has_special_orders)
|
|
then fill_order {
|
|
ReviewOrderDetails
|
|
GatherSpecialIngredients
|
|
PrepareSpecialItem
|
|
PackageForCustomer
|
|
}
|
|
}
|
|
|
|
// Regular daily baking
|
|
then daily_bread {
|
|
then sourdough {
|
|
MixDough(recipe: "sourdough", quantity: 10)
|
|
KneadDough(duration: 15m)
|
|
FirstRise(duration: 2h)
|
|
ShapLoaves
|
|
SecondRise(duration: 1h)
|
|
BakeLoaves(temperature: 230, duration: 35m)
|
|
}
|
|
}
|
|
|
|
// Pastries if time permits
|
|
then pastries {
|
|
succeed_always {
|
|
then apple_pastries {
|
|
PrepareFillingApple
|
|
RollPastryDough
|
|
AssemblePastries
|
|
BakePastries(temperature: 200, duration: 25m)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Customer Service
|
|
|
|
```storybook
|
|
behavior ServeCustomer {
|
|
then service_sequence {
|
|
GreetCustomer
|
|
if(customer_is_regular) {
|
|
RecallPreferences
|
|
}
|
|
|
|
choose service_type {
|
|
then take_order {
|
|
if(customer_knows_what_they_want)
|
|
AcceptOrder
|
|
PackageItem
|
|
}
|
|
|
|
then help_decide {
|
|
if(not customer_knows_what_they_want)
|
|
OfferRecommendation
|
|
ProvidesSample
|
|
AcceptOrder
|
|
PackageItem
|
|
}
|
|
}
|
|
|
|
CollectPayment
|
|
ThankCustomer
|
|
}
|
|
}
|
|
```
|
|
|
|
### Emergency Handling
|
|
|
|
```storybook
|
|
behavior HandleEmergency {
|
|
choose emergency_type {
|
|
then oven_fire {
|
|
if(oven_overheating)
|
|
TurnOffOven
|
|
GrabFireExtinguisher
|
|
ExtinguishFire
|
|
AssessDamage
|
|
}
|
|
|
|
then ingredient_shortage {
|
|
if(critical_ingredient_missing)
|
|
CheckBackupSupply
|
|
choose procurement {
|
|
SendApprenticeToMarket
|
|
SubstituteIngredient
|
|
AdjustMenu
|
|
}
|
|
}
|
|
|
|
then equipment_failure {
|
|
if(equipment_broken)
|
|
StopProduction
|
|
AttemptQuickFix
|
|
choose fallback {
|
|
UseBackupEquipment
|
|
CallRepairPerson
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Life Arc: Career and Energy
|
|
|
|
```storybook
|
|
life_arc MarthaEnergyLevel {
|
|
state rested {
|
|
on enter {
|
|
Martha.energy: 1.0
|
|
Martha.mood: 0.8
|
|
}
|
|
on energy < 0.5 -> tired
|
|
}
|
|
|
|
state tired {
|
|
on enter {
|
|
Martha.mood: 0.6
|
|
}
|
|
on energy < 0.2 -> exhausted
|
|
on energy > 0.7 -> rested
|
|
}
|
|
|
|
state exhausted {
|
|
on enter {
|
|
Martha.mood: 0.3
|
|
Martha.quality_output: 0.7
|
|
}
|
|
on energy > 0.5 -> tired
|
|
}
|
|
}
|
|
```
|
|
|
|
## Relationships
|
|
|
|
```storybook
|
|
relationship MarthaAndApprentice {
|
|
Martha as mentor self {
|
|
patience: 0.8
|
|
investment: 0.9
|
|
} other {
|
|
sees_potential: 0.85
|
|
}
|
|
|
|
Elena as apprentice self {
|
|
dedication: 0.9
|
|
learning_rate: 0.7
|
|
} other {
|
|
respect: 0.95
|
|
admiration: 0.8
|
|
}
|
|
|
|
bond: 0.85
|
|
years_together: 2
|
|
}
|
|
|
|
relationship MarthaAndRegularCustomer {
|
|
Martha as shopkeeper
|
|
OldManGregory as regular_customer
|
|
|
|
bond: 0.7
|
|
years_known: 15
|
|
always_orders: "sourdough_loaf"
|
|
|
|
---dynamics
|
|
Gregory has been buying Martha's bread every morning for
|
|
fifteen years. They exchange brief pleasantries about the
|
|
weather and local gossip. He is her most reliable customer.
|
|
---
|
|
}
|
|
```
|
|
|
|
## Key Takeaways
|
|
|
|
This example demonstrates:
|
|
|
|
1. **Schedule-driven daily flow**: Precise time blocks govern Martha's entire day
|
|
2. **Seasonal and weekly variations**: Summer hours and Saturday market
|
|
3. **Layered behaviors**: Emergency behavior preempts normal routine via priority
|
|
4. **Realistic action sequences**: Baking modeled step by step with parameters
|
|
5. **Energy management**: Life arc tracks fatigue affecting mood and output quality
|
|
6. **Social connections**: Relationships with apprentice and customers add depth
|
|
|
|
## Cross-References
|
|
|
|
- [Schedules Reference](../reference/14-schedules.md) - Schedule syntax
|
|
- [Behavior Trees Reference](../reference/11-behavior-trees.md) - Behavior syntax
|
|
- [Life Arcs Reference](../reference/13-life-arcs.md) - Life arc syntax
|