Expand description
This is a Rust port of inkle’s Ink, a scripting language for writing interactive narratives.
bladeink
is fully compatible with the reference version and supports all
its language features.
To learn more about the Ink language, you can check the official documentation.
Here is a quick example that uses basic features to play an Ink story using
the bladeink
crate.
// story is the entry point of the `bladeink` lib.
// json_string is a string with all the contents of the .ink.json file.
let mut story = Story::new(json_string)?;
loop {
while story.can_continue() {
let line = story.cont()?;
println!("{}", line);
}
let choices = story.get_current_choices();
if !choices.is_empty() {
// read_input is a method that you should implement
// to get the choice selected by the user.
let choice_idx:usize = read_input(&choices);
// set the option selected by the user
story.choose_choice_index(choice_idx)?;
} else {
break;
}
}
The bladeink
library supports all the Ink language features, including
threads, multi-flows, variable set/get from code, variable observing,
external functions, tags on choices, etc. Examples of uses of all these
features will be added to this documentation in the future, but meanwhile,
all the examples can be found in the lib/tests
folder in the source code
of this crate.
Modules§
- choice
- A generated
Choice
from the story. - story
Story
is the entry point to load and run an Ink story.- story_
error - Errors that happen at runtime, when running a
Story
. - value_
type - A combination of an Ink value with its type.