andstar &* | plain-text engine for dialogue games with dice, skills, and equipment

Hi y’all :slight_smile: I made a small open source engine for dialogue-driven stories with Disco Elysium-style mechanics, aimed at writers who don’t want to learn a general-purpose engine. It’s not wicked flexible or advanced, it’s just designed to do the one thing!

andstar.org

Not trying to compete with Twine, Ink, et al., this was born mostly because I thought “I want to make a game like DE” and I knew from making 3-4 Twine and Bitsy games last summer that I would spend more time setting it all up than actually doing the creative writing part. Anyway, it has everything you would want like dice checks (retryable “white” vs one try “red”), skills that speak as characters, equipment that modifies rolls, currency, and fail states. A passage in-editor looks like this:

marchand: He leans forward from the dark behind you and shouts over the engine: "Cigarette?" He is not afraid. He has decided not to be.
? senses 6: The exhaust flame is running long and orange. Headwind, or tailwind. The engine knows something about the air that the charts do not.
Your gear is in the sidebar. What you carry on your body changes what you can do.
* Climb, and look for a star to steer by -> climb
* Hold low, under the cloud, and trust the sand to stay where it was -> low
* [white reckoning 10] Run the dead reckoning again, wind and hours and drift, in your head -> drift_yes | drift_no

Skills speak in their own color, [once] and [condition] gates let one passage vary with state instead of being cloned like desert1 desert2 desert3 desert4, and linear stretches just chain with ->. Failed white checks lock until you gain a skillpoint or equip a relevant item(no reroll-spamming), red checks only get one shot, and failure returns the reader to an author-placed checkpoint rather than ending the game. The author decides where to be forgiving, both for red and white since skill upgrade opportunities are author-placed as well. Docs are incomplete, but there’s a language reference in a dropdown below the editor that will get you 99% of the way there until I get a more polished version around.

There are no accounts anywhere, publishing produces a bare link that you can immediately share for people to play on andstar. Your source is a single plain-text file you can export, write in any editor, and import back. The export is one self-contained HTML build that runs offline, so nothing you make depends on my server existing, although I am storing all of the links on a hosted disk so your links stay stable! There’s no marketplace or revenue share either. If you want, you can sell on itch, I just didn’t think my website was a good place for it. The editor does live error-checking with structural warnings (unreachable passages, unused variables) and the preview can start from any passage.

andstar doesn’t have: images or audio, arbitrary scripting (variables and expressions, but no user-defined functions), collaboration features, and no more than one file per game (a very long work will get a little unwieldy). andstar is only trying to do one thing very well, other engines can do a lot more and i was very careful of scope-creep while making this. That being said, it looks the same no matter what. Author customization is limited to font choice, name/skill colors, and background+accent color. Focus for creators is on writing only, from reading some of the other posts in this dev systems section I know that will be a little unpopular, but this is where I saw the most value for myself so that’s what I built.

As a PSA/disclosure: the engine was built with AI assistance! However, the tool itself contains no AI. Nothing generates prose, assists you, absolutely no inference is run anywhere on the site, and published stories are never used for training. This is written into the privacy policy on the home page too. I like AI a lot! I think it’s very cool and helpful, that being said I don’t want it anywhere near my personal writing projects so I chose not to include it at all.

Demo (2-3 min): https://andstar.org/play/demo
Repo (MIT): https://github.com/alaskahoffman/andstar

Plays on any browser, desktop or mobile, though editing is desktop only. I’m very proud of the mobile experience playing through stories, being able to send someone a link on their phone and have them instantly playing through your story is super cool to me! Would love for y’all to look around andstar and let me know what you think, if there’s any anticipated painpoints in use, I’m super open to feedback. Thank you all!!

11 Likes

a day later and 6 likes with no replies, i will take that as a compliment lmao ty!! i pushed some updates this morning after a couple users gave feedback

there is also a docs page now: docs · andstar

Reading

  • Click-to-continue pacing is the default: each tap, space, or enter reveals the next line. There are options for 1s delay and instant reveal instead: @reveal click | paced | off.

  • Text above the newest line dims, so its easier to keep your place.

  • Narration renders at full contrast instead of grey.

  • Skill voices are no longer italic; the name being colored and bold is differentiating enough.

Choices

  • Check and cost tags render visibly without hovering.

  • Red checks outline the entire choice in red, permanently.

  • Choices you’ve picked before turn red. A picked [once] choice stays visible but locks, instead of vanishing which was making it easy to get confused/lost before.

Skills

  • Failed white checks now reopen only when the skill itself is upgraded. Equipment improves rolls but cannot reopen a failed check.

  • New effect ~ skill name +1 / -1: an author-directed change to one skill, announced to the player.

Published games pick all of this up automatically, since nothing is behavior-breaking for the relatively few existing games. (18 btw! which is actually a lot. its epic to see ppl enjoying this)

1 Like

I will comment. I’m finding the text way too small in the browser, and also some of it is dimmed. Is there an adjustment for this?

1 Like

I had a look at this before the latest update, and the dimming of old text is a big improvement in terms of helping to keep my place, particularly playing on a phone screen.

I feel like a few too many clicks are needed with the new click-to-continue pacing; most egregiously, when you click a choice, the text of that choice (which you’ve necessarily already read) gets added to the page, but you have to click again to advance the text.

Am I missing some way to view the games published through the site, by the way? All I can find a link to is the demo.

thanks to you to both for feedback, included this stuff in an accessibility update this morning! probably need additional tweaking but i think i’ve got it feeling a lot better, and some of this is author directed too, like the demo uses a lot of short terse lines but an author’s writing style is going to determine exactly how much clicking the player needs to do.

to answer the question on viewing published games, i have intentionally not included any discoverability or recent games section. i’m open to pushback on this but my gut feeling is that maintaining discoverability, filtering, preventing bot/spam, etc. is more work than its worth, especially when publishing to itch.io is so easy and users can take advantage of their well polished systems. that being said, once i start seeing people’s andstar stories sent my way, and after a little andstar jam that i’m planning soon, i hope to have some standout stuff that i can feature in some way on the site.

Settings

  • Text size options added, from 100% → 150% (thanks @jkj_yuio)

  • Added an “e-ink mode” which renders the game in two-tone, like a Kindle, and includes some little extra symbols+messages to account for what red color does normally.

Accessibility

  • Improved screen-reader support, should now read new lines as they appear.

  • Added a system settings check to disable unnecessary motion/animations if your PC is set up that way too.

  • Space and enter now advance the story as well as just clicks/tap.

  • Default contrast got bumped up so dimmed/greyed text is easier to read everywhere.

  • Because of e-ink and contrast changes, past/”read” text is now shrunken 10% in addition to being dimmed, so it’s easier to keep your place while reading.

General

  • System messages and chosen dialogue options now auto-advance in the reader, regardless of the author-directed settings for text advancement. Probably still some tweaking to do here so feedback is helpful, (thank you @jwalrus )

The animation for this looks great for short passages (less than a line). When it’s longer than a line, the text reflows as it shrinks, which is quite distracting. Could you animate the margins to shrink with the text so that this doesn’t happen?

ooh yes i see what you’re saying, i didn’t notice margin issues testing in fullscreen. thanks again cheers

hi again! biggest update so far, fleshing out gameplay mechanics to give readers more agency. it was a little limp before.

Items

  • Consumables! You can append stat±# (ie; health+1) to an item to make it a one-time use item. Authors can still define predetermined stat changes in-story, so you have choice over one both or none of these methods.

  • Items stack now too, so you can give someone three potions and they show up as “×3,” and in your script you can check how many they’re holding, not just yes/no ([has(cup) > 1]). (i can hear you screaming at me , Alaska just use count!! what are you doing!! and i decided this was more intuitive for non-coders)

  • You can now set up equipment slots, so the player can’t equip every item at once. Each slot can have it’s own max, so you can finally live your 10-rings-in-an-RPG fantasy if you please. Equipment not in slots stays unlimited.

  • To wrap it up, there are now three item types defined by “item”. Equipment, defined by applying a skill modifier, Consumables, defined by applying a stat modifier, and finally “Key Items”, defined by having no modifiers at all, only useful for specific story beats.

Skills

  • Skills can have a description now, so when someone’s building their character they can see what “Sang-Froid” actually means. Players just see them at the start of the game, not at every skill-point decision after.

  • The character builder also lets you pull a skill down to 1, so you can actually min-max. Agency!

Stats & Currencies

  • A stat like health or resolve gets drawn as little diamonds now (◆◆◇◇◇) instead of a plain number, so a resource you’re trying not to lose feels more like one. Give it a max and it’ll cap there.

  • Money reads more like money now, always shown as a float like 340.00 and moved down to the foot of the sidebar so it sits apart from your vitals. Things from the demo like a water supply are better modeled as a stat these days (see above).

Reading

  • On narrow windows and mobile, the past lines scale down in place without rewrapping.

Publishing

  • We now have version pinning on-site. It already worked like this for exports, but now when I push an update like this that changes mechanics, your published games keep looking and playing the way you made them.
1 Like