Hello, community! I want to share my project with you.
It started several years as a Telegram bot t . me / BrightwoodBot (sorry I can’t post links, you need to remove spaces) that implemented an interactive story created by my daughter. I built my own test story while working on that to test the engine. Later I also created a card game in Telegram using my story engine. All these stories are available in the bot, unfortunately, they are all in Russian as my bot initially was only in Russian.
Now it’s also in English, so everyone is welcome to check it. Recently, I started building an online builder tool to create such stories online. It’s called Brightwood Builder and can be found here: brightwood-builder . onrender . com (sorry I can’t post links, you need to remove spaces)
Using this link you can view and edit the latest story I’ve added to the bot using this builder: brightwood-builder . onrender . com/?edit= h t t p s ://associ . ru /api/v1/stories/359e097f-5620-477b-930d-48496393f747&lng=en (sorry I can’t post links, you need to remove spaces)
The bot allows creating your own stories and editing them as well. Check it out!
My next steps are:
- Add “low-code” functionality to the editor to add state to stories and make them work conditional depending on state. State in already supported by the engine, I just need to add its configuration to the editor.
- Make possible sharing and publishing stories in the bot. Currently, all of them are private except the ones created by me. No one else has created a story yet so this functionality is kind of postponed (though I can manually publish any story too).
- Add story test runs to the editor itself.
Long-term goals:
- Make the engine work in browser and on other bot platforms.
- Introduce subflows (building blocks) to make complex flows faster.
The bot is built in PHP + MySQL and the editor is TypeScript/React. Both projects are open source so anyone contribute to them.
The intermediate story format is JSON. Here is the source of the story mentioned above (the Kolobok one):
associ . ru /api/v1/stories/359e097f-5620-477b-930d-48496393f747 (sorry I can’t post links, you need to remove spaces)
Some more details on the engine:
- Every story is a graph of nodes and links between them.
- There is a special story pseudo-node (it doesn’t exist in JSON).
- There are four other node types: Action, Redirect, Skip and Finish.
- Action represents choice and gives a user buttons to press. That way the user selects the story path.
- Redirect nodes have branches, one of them is selected randomly based on their weights.
- Skip node just shows some text and goes on to another node. It’s useful for consolidation paths or just to display intermediate text.
- Finish node is the end of story, it can contain only text.
- The engine also has a special Function node that allows to put arbitrary code inside of the node. It has a text as an input and produces actions as an output as Action node. I plan to do something similar in the editor later but it’s quite an advanced thing to do.
- This is not yet in the editor, but engine allows each node to modify the state and also there can be conditions on links.
Recently I realized that I’ve been building a choice-based interactive engine all this time.
I am looking for people who can try creating stories using my tools and for general feedback too.
What do you think?