Limited Rust implementation of the
Ink markup/scripting language for game dialog.
Using Ink you can easily write a story or create a dialog tree. * Branching is very simple: <> just start your line with an asterix or plus marker. Want nested choices? Add more markers! * * A branching choice contains all information below it of the same level or higher. * * * [I see.] * * Pretty cool, huh? - - Use gather points like this to return all nested choices <> to a single path. * * [Cool!] -> fin * You can organize the story using knots <> and divert (move) to them, like this: -> next_knot === next_knot === Simple and fun. -> fin === fin === Ink is very powerful and has a lot more features than shown here. <> Do note that `inkling` only implements a subset of all its features. <> Hopefully more in the future! -> END
Currently and likely for the foreseeable future the feature set is very limited compared to Inkle's own implementation. Available features are:
- Knots, stitches, glue and diverts, ie. basic story structure
- Choices, of sticky and non-sticky kinds, plus fallback choices
- Nesting choices and gather points
- Line text alternative sequences (sequences, cycle, once-only)
- Simple conditionals for which choices are presented, but only for checking against how many times knots have been visited
- Tagging of lines and choices
- Optional: De/serialization of finished stories through
Likely candidates for further development:
- Line text conditionals
- Includes of other files
Difficult features for which I doubt my skill level to implement:
- Advanced flow control: tunnels and threads
- Verifying that all story branches are complete
- Mathematics and heavy logic
See the documentation or provided example for a minimum viable story processor. Enable
serde de/serialization by activating the
serde_support feature. This feature derives
Serialize for all required structs.
Writing this has mostly been for fun and to create a simple game, hence the lack of features. Contributions are welcome!