<img src="https://kataru-lang.github.io/_media/logo.svg" alt="Yarn Spinner logo" width="100px;" align="left">
# Kataru 「カタル」 The minimal dialogue system written in Rust.

Kataru 「カタル」is a system for interactive dialogue based on YAML, parsed in Rust.
Kataru is similar to [Twine](http://twinery.org/) and [Yarn Spinner](http://yarnspinner.dev) except with more support for organizing passages and sharing common functionality across multiple characters.
```yml
---
# Define what namespace this file is in.
namespace: global
state:
coffee: 0
$passage.completed: 0
# Configure the scene. List your characters, commands, etc.
characters:
May:
June:
commands:
Wait:
duration: 0.3
$character.SetAnimatorTrigger:
clip: ""
onExit:
set:
$passage.completed +: 1
---
Start:
- May: Welcome to my story!
- June: Want a coffee?
- choices:
Yes: YesCoffee
No: NoCoffee
YesCoffee:
- May: Yeah, thanks!
- set:
$coffee +: 1
- May.SetAnimatorTrigger: ["drinkcoffee"]
- call: End
NoCoffee:
- May: No thanks.
- Wait: { duration: 1 }
- June: Want to end this story?
- call: End
End:
- May: The end!
```
## Features
- Simple and lightweight
- Organize dialogue, state, characters, and commands into local namespaces
- Character-specific commands
- Syntax highlighting and Unity integration
As well as conditionals, variables, and everything else you expect in a dialogue language.
## Getting Started
Read [kataru-lang.github.io/#/installation](https://kataru-lang.github.io/#/installation).
Once downloaded, check out the examples in [examples/simple](examples/simple).
## Getting Help
For bugs or feature requests, file an issue. For other questions, contact kataru-dev@gmail.com.
## License
Kataru is licensed under the [MIT License](LICENSE). Credit is appreciated but not required.
---
Made by [Josiah Putman](https://github.com/Katsutoshii) with help from [Angela He](https://github.com/zephyo).