ChoiceForge — Visual node-based editor for ChoiceScript

Hey all,

If you’ve ever opened a ChoiceScript project, stared at thirty `.txt` files, and silently counted `goto` labels to figure out where Chapter 3 connects to Chapter 5 — this is for you.

I’ve been building **ChoiceForge**, a visual graph editor for ChoiceScript. It’s a spiritual sequel to @BenSeawalker’s

[Chronicler](https://forum.choiceofgames.com/t/chronicler-visual-choicescript-editor/4081)**,

which proved years ago that CS writers want a visual tool. ChoiceForge takes the same core idea (“treat the story as a graph, generate clean `.txt` on the other end”) and rebuilds it as a modern web app + cross-platform desktop, fully open source under MIT.

What you get out of the box:

- Drag-and-drop graph editor with 24 node types covering pretty much every CS command: `*choice`, `*fake_choice`, `*if`/`*elseif`/`*else` `*set`, `*goto`, `*goto_scene`, `*gosub`, `*label`, `*ending`, `*checkpoint`/`*restore_checkpoint`, `*input_text`, `*rand`, `*achieve`, `*stat_chart`, … (24 in total).

- Round-trip safe exports: the `.txt` files run unmodified on the official Choice of Games runtime. No “almost-CS” weirdness.

- Pragmatic importer: drop in your existing `.txt`, `.json`, or whole `.zip` — common patterns become visual nodes, anything weird is preserved as editable raw source so nothing is ever lost.

- Live linter with 140+ keyed diagnostics: undeclared variables, broken labels, mismatched `*save_checkpoint`/`*restore_checkpoint`, unreachable scenes, malformed `*stat_chart`, the usual suspects.

- Submission validators built in: the *Validate for submission* panel runs the **official Quicktest* (exhaustive DFS through every `*choice` path) and official Randomtest, (N iterations, default 1 000, configurable up to 100 000) right inside the app — using the same scripts CoG’s review tool runs. Catches the issues before you submit instead of after.

- Embedded official ChoiceScript runtime: the Play button runs the actual CoG engine in an iframe. Not a homebrew interpreter, not a partial reimplementation — the real thing.

- CodeMirror source editor: drop into any scene as raw ChoiceScript when you want to type, then flip back to the visual graph.

- Trilingual UI: Portuguese, English, Spanish (~165 localised strings).

- Native desktop builds: signed-update macOS `.dmg` (universal) and Windows `.msi` with in-place auto-updates.

Try it:

- Browser (no install, autosaves locally): https://choiceforge.pages.dev

- Desktop installers (macOS + Windows):

https://github.com/viniman27/ChoiceForge/releases/latest

- :hammer_and_wrench: Source (MIT): GitHub - viniman27/ChoiceForge · GitHub

I built this because I wanted to write a CoG game and every time I looked at the folders of files full of interbranching ideas… well, my brain politely suggested I take up gardening instead. Turns out gardening is hard too, so here we are.

Bug reports, feature requests, “you reinvented X” callouts, PRs, and demands for new node types all welcome on the issue tracker.

Massive shout-out to @BenSeawalker — Chronicler showed the path, this is the 2026 take on it.

17 Likes

Congratulations! Shipping a development tool is no easy feat (though the hardest part starts now; supporting it for the foreseeable!). Best of luck!

One minor suggestion: you might want to make it clear in the post that you’ve used AI to help you build this. I’m not sure if it’s a hard rule, or if people feel different about software to writing, but certainly for WIPs around here it’s become the norm to declare prominently whether you have or have not used AI in it’s creation. That’s not to say it’s a bad thing, but opinions are split and people often want to be able to make informed decisions about what they are supporting.

8 Likes

Hey, so I have some notes after just under an hour of trying to use your program. Hope this is a good place for you to receive them:

Almost immediately my problem was there was no easy way to upload the text files to the program. I had to copy and paste the files into the little nodes to the left, and even that wasn’t intuitive, as you have to click the text button towards the top to get to the section that lets you write code in it.

And then, once I HAD managed to do that, the file text section retained the text, but when I swapped it back to the Map, it didn’t show any of the nodes that should have been created by my putting the code in. Basically, from what I’m understanding, in order to use this program for my project (which has over 6k+ lines of code right now) I would have to basically start from scratch and create each node individually.

This would be a MASSIVELY upsetting requirement, as my project is… massive.

That said, more importantly is the usability issues:
The program won’t reliabily click on and display a scene. I’ve had to jiggle and click different sections of the little thingies multiple times per file and click in different places each time to get it to display the text.

And there’s no way to size the screen. Basically, for visual aide due to poor eyesight, I’ve zoomed in my computer screen by 125% by default. There is no where in the app where I can unzoom it, or zoom it or anything. And this means that the menu extends off the side of the screen even when the program is open to full screen.

This doesn’t even begin to touch on the fact that I can’t figure out how we would export the finished game. There’s no file menu, no way of adjusting anything.

All this to say, I think this has PROMISE. I would love to see a working version of it. But as it is, it’s basically unusable. I’ll be following your progress to see how it goes!

2 Likes