| Crates.io | striga |
| lib.rs | striga |
| version | 0.0.4 |
| created_at | 2025-12-24 12:34:44.572754+00 |
| updated_at | 2026-01-09 11:23:30.463287+00 |
| description | A narrative procedural generation engine. |
| homepage | |
| repository | |
| max_upload_size | |
| id | 2003121 |
| size | 149,469 |
Outline wave language: a procedural generation kit for narrative structures.
Striga takes an owl file (which is essentially just an xml file with specific tags) and uses it to generate a narration-friendly outline.
For example, this owl config:
<topic name="Act" min="6" max="9">
<choice name="One" position="required first" consecutive="2-3" followed-by="One, Two" />
<choice name="Two" consecutive="2-3" followed-by="Two, Three" />
<choice name="Three" consecutive="2-3" followed-by="Three" />
</topic>
Will set up a narrative generation with the following rules:
Striga will generate a node structure describing its output, which is deterministic given a specific seed - I.E., the same rules and the same seed will always create the same node structure.
Actually putting the node structure into play involves materializing it: using a set of serde-friendly rust bindings, you can take an owl graph and traverse it.
The most direct parallel to the topic/choice split is an enum. So for example, on the rust side, you can create a materialized view of the nodes by making an Act enum:
enum Act {
One,
Two,
Three
}
It needs to have the following derives: