World Weaver is an AI-Guided "Choose Your Own Adventure" game, also known as "Infinite Worlds Game".
This game is similar to playing D&D by yourself, where an LLM is your game master, but one that listens to you, if you want to overwrite a decision. It's providing you the means to explore any setting that interests you in an interesting interactive way.
All the Menus should be pretty self-explanatory, but let's focus on the main UI for a second:
- The button in the upper left corner of the screen takes you to the menu.
- The button with the pencil below the text will allow you to edit the output text. This way, if you don't like something the AI generated, you can change it without paying for another generation.
- The eye button next to it will allow you to look at and edit secret information for the current turn. Using that is basically cheating.
- The eye button below the image will show you the description that was sent to the Image UI. Well, to be exact, it's the description that was generated by the LLM, the description that is sent to the image AI is possibly prefixed and postfixed with additional information. This is called Styles and can be configured in the Option menu
- The 3 big text-buttons are proposed actions. If you click them once, their content is copied into the action-text-edit. If you press them again, the action is submitted
- Below those, there is the action-text-edit, here you can type whatever you want to do next.
- Next comes the GM-instructions-edit. Here you can give the AI instructions about the next generated turn that it will follow as good as it can. I barely ever use it, but sometimes it's handy.
- The go button will submit the turn. Alternatively, you can press enter in one of the text-edits
- You can go back in time, like your browsers back button, this won't lose your progress.
- The change turn button gives you a menu where you can describe how the current turn should change, then the LLM will take a new attempt at it. I use it occasionally, when the LLM did something I fundamentally disliked.
I wrote this mostly for myself, and now publish it basically as a "Portfolio-piece", so I didn't put effort into stuff I don't need. Like prebuild binaries. If you're not a programmer, but want to use it, do the following:
- Install Rust: https://rustup.rs/ (always use the latest stable version)
- Open a new terminal and run
cargo install --locked --git https://github.com/KnorrFG/world_weaver world_weaver - Now you can run this by simply typing
world_weaverinto your terminal - You might have to install additional dependencies that are required by iced, Error messages when attempting to start World Weaver should be instructive. I'd love to be more precise here, but the iced dependencies vary by platform, and I couldn't find an explicit list.
Disclaimer: I only tested on Arch-Linux. The code should be platform independent, but honestly, if it works flawlessly on Mac or Windows, I'd be surprised.
While this program is free, you will need to pay for the AI. There are multiple supported LLMs and image models. Currently, for LLMs, there are Claude Sonnet, Claude Haiku, Aion1 and Aion2. For the image model you can choose between Flux1 and Flux2.
Depending on what you want to use, you need accounts and API-keys at https://claude.com/platform/api, https://openrouter.ai/, https://replicate.com/ and possibly https://bfl.ai/. The API keys must then be configured in the game's option menu.
Flux1 is slower (~1 minute per request). Flux2 is faster (~20s) but moderated, and that moderation is quite trigger-happy. Using Flux2 via Black Forest Labs costs roughly twice as much as using it via Replicate.
Claude-Haiku and Aion-2 are much cheaper than Claude-Sonette and Aion-1, but they also are worse at following many instructions at once, and more prone to contradicting themselves.
I'm open for PRs, but I also reserve the right to reject them if I dislike them. If you want to make a PR, take a look at the Architecture first. And make sure the tests pass, it's not worth setting up a CI for this, but I'll run the tests manually.

