A modern dialogue executor and tree parser using YAML.
This crate is for building(ex), importing/exporting(ex), and walking(ex) dialogue trees.
convo
promises an emphasis on documentation and user-friendliness, but also performance. All retrievals, searches, and side-effects to the conversation tree are in O(1) constant time.
Sections
Motivation
The intent is to safely import and export conversation trees, as well as walk complex conversations easily and efficiently. Conversations resemble a traditional dialogue tree model, and can be cyclic. YAML format makes creating dialogue trees intuitive and easy, even without a formal editor (but a GUI editor will come eventually).
State
convo
is usable and in active development. Future releases will follow SemVer compatibility.
Using convo
The easiest way to use convo is by adding the lone dependency to your Cargo.toml
file:
convo = "0.1.2"
Getting Started
Terminology
- Tree - the parent container for a conversation tree.
- Node - a node in a conversation tree which acts as a fork of decisions by wrapping prompting dialogue and a list of path options (called
Link
s). - Link - a uni-directional path to a [
Node
].
Examples
Check out these important examples:
- Building a conversation
Tree
imperatively - Importing/Exporting
*.convo.yml
files - Walking a conversation
Tree
Formatting Rules
For specific rules and formatting information, please check FORMATTING.md
Issues
Don't hesitate to file an issue or contact @simbleau by e-mail or @ThomasHoutart by e-mail.
Contributing
I encourage all contributions by pull request. Please check the issues first if you'd like to help.
The Rust code of conduct applies.
Help needed
- Create examples using the
serde-yaml
crate for serialization and deserialization. - Create a GUI for editing and creating convo files.
License
This project is dual-licensed under both Apache 2.0 and MIT licenses.