Prototype/Dev Thread: Choose-your-own-adventure in Twine

Hey all.

A Fluffy Twine Project

I’ve been curious about using Twine for building text adventure games for a couple years now, mostly because it’s free, and can do some cool things with interactivity.

brave_i5bmuj2mfZ

I’d like to share something I’ve been working on: a “Choose Your Own Adventure”-type game using Twine. It’s currently unnamed; when/if it comes to it, I’ll change it. However, I wanted to put this somewhere so that if other people were similarly interested in using Twine, they could find my source code.


:arrow_right: Play the game here: NeoCities :green_book:
:arrow_right: View the source on Gitlab here: cyoa-fluffy on GitLab :man_technologist:

Update Log (Last Update: 2025-03-18)

2025-03-18: Added text and process for FluffMart to keep people from rolling for Fluffies endlessly, including a cost ($10 from the budget) to decide to come back another day. Need to rewrite flavor text here, but learning as I go when it comes to being able to do conditionals, event pools, etc.

===

2025-03-17: Finalized SVG design, fixed a bunch of shit when it came to “actually doing the CSS properly.”

===

2025-03-16: Added a “Fluffy in a tank” CSS art, and an animation, too! Going to explore this a bit.

===

2025-03-13[2]: Started the cityscape scene/downtown scene. Added a couple branching paths and introduced some rolls (placeholders for now). Need to figure out how players can influence the downtown scene - maybe something unique.

2025-03-13[1]: Added horns and wings to the Fluffy art.

===

2025-03-12[2]: Added a rudimentary Fluffy art CSS art widget with replaceable/recolorable mane/skin. This should be useful for illustrating your Fluffy. I’ve also made a “Roll Test Page” (accessible from Page 1) which you can mess around with.

2025-03-12[1]: Probably my last big technical update (finger’s crossed). I also outline all the systems I’ve built, how they work, and what my next little bit is going to be focused on.

===

2025-03-11: Added weighted randoming. See update here.

===

2025-03-09: Added a bit to the Forest section, created new system of dynamic variables and other “make writing easier” stuff. More details here.

===

2025-03-08: Added item descriptions as some gruntwork. Should interface pretty well with the inventory system I integrated yesterday.

===

2025-03-07[2]: Added a lot more clarity to the character select section; it’s funny how understanding the code better lets you just remake things. Added a Mature Content checkbox (will likely be useful one day).

2025-03-07[1]: A pretty big update involving macros, Fluffy generation and other stuff. A bit too big to summarize here, but also added some story content to the Human Forest branch in order to test.

===

2025-03-06 [2]: Figured out a cool way to do dice rolls and branching paths when it comes to story beats and events. Started writing out some events from the previous flow chart.

2025-03-06 [1]: Generated a list of 100 Fluffy names for males and females; please don’t hesitate to suggest any yourself.

===

2025-03-05: Added a flow chart for my story progression, and an explanation of it.

===

2025-02-27: Added item descriptions for FluffTV, blocks, two sizes of balls, and a smell station. Planning to add collars and other “typical pet” stuff.

===

2025-02-26: Wrote a bunch of item descriptions today for Fluffmart and elsewhere; I figure that Fluffy items would probably be sold in places like grocery stores, or as part of the shelter, as well. So far, I have: food bowl, litter box, Sorry Stick and Box, as well as an Auto-Feeder and Auto-Litter (expensive). Other items planned include stuffy/enfy toys, litter pals (possibly, I haven’t decided as to whether I’d include yet, since it’s another “character”), as well as Pillowing and Gelding Kits. Sketty will also be sold in packs of 8 or 24, or in vending machines as solo cans.

I figure I can pull these descriptions into passages as needed, and I needed to do them eventually.

===

2025-02-25[1]: I added a summary of some of the features I’m working on, and how they might influence the story, here.

2025-02-25[2]: I jumped to a different part outside of Fluffmart just to get somewhere fresh; I started writing the story for the human arriving home for the first time. I created flags for buying a couple things (litterbox, food dish, sketty) and created another one of those random story variables.

I also figured out how to assign the Fluffy’s mane color to automatically color the Fluffy’s name, which I think will be cool for helping visually distinguish it. For instance, setting Sparky (my test Fluffy)'s mane to “Yellow” automatically colors any mention of his name yellow.

I also set up cycling variables for the player’s house type, and a hobby they could take part in (and have to move in order to make room for a Safe Room). I figure that I’m going to assume all human players will have a Safe Room (rather than something else) because that’s the simplest option right now, and committing to outdoor/coop/other Fluffy settings will take me forever to finish.

I’ll add some other buyables later (Sorry Stick, etc) but for now I just wanted to test to see if it works. There’s a link to test it from the “Human Start” passage, but it won’t live there forever.

===

2025-02-24: I added some flavor to the Fluffmart sections to introduce privacy glass to the pens. I wrote more about the discount area, and came up with a script for basic “generate me 3 fluffies using different variables (name, mane color, skin color) and the arrays of possible options, store them, and let me call them later.”

I’m still learning JavaScript while doing this, but it’s been very interesting. I think I need to focus more on the writing aspect of it, rather than getting sucked up into code.

===

2025-02-21: Fleshed out Fluffmart a little bit (added descriptions to the adult and foal areas). Also added some colors/buttons to the Human Start page, and picked out some colors for the initial “Where would you like to go?” menu. Going to be spending this weekend trying to figure out how to generate fluffies randomly from a pool of mane/skin colours, races, names, genders and temperaments, so the Fluffies players find in each area are a bit randomized. This might be me digging my own grave, but who knows. I think if I have an idea of the character of the fluffies and then have small things randomized/carried over in variables (colors, maybe like, having a “dominant temperament” that changes 1-2 passages every now and then) it’ll be kinda fun.

===

2025-02-20: Didn’t have a ton of time to write tonight, but fleshed out some options of where the player can go while at Fluffmart, and gave some brief things to consider in flavor text. As for yesterday’s question, I like introducing some variation, but don’t like completely altering the player’s personality arbitrarily. I’ve decided to have each “roll” to remember something store a result of 1, 2 or 3 (“yes”, “no”, “maybe”). The idea would be that either a player could “lock in” the memory now, or potentially have the opportunity to remember later; this leaves 2/3 of the potential rolls to not close off potential plot.

===

2025-02-19: Added more to the Fluffmart section of things, and was curious about some formatting for random variables vs player choice. See the post here.

===

2025-02-18: I’ve decided I’m going to work on the Human branch of the game first. I debated adding in a “guiding emotion” for your dialog (pick an emotion at the beginning, and it’ll affect your tone/options) but that seems a bit ambitious. Mostly just going to start creating branches and finishing them.

I’m hesitant to add a ton of stats, so I’m basically just starting with money for a Fluffy right now, and saying “Hey, choose where you find your Fluffy. Some may be cheaper, or free, depending on where you go, but they may come with challenges.”

===

2025-02-17 [2]: Yeah fuck it I’m not gonna use dev-testing branch until I have something to mess up. As it is right now, everything’s going to be directly published to main until I have something more substantial.

2025-02-17 [1]: Latest versions are published today, so main has no polish on it whatsoever. Work will be done on the test version and then pushed to main once there’s something presentable. Will be changing bug tracker link in footer to this thread.


Bugs/Feedback

Each page has a “bug” icon at the bottom which will give you a copy-pastable Page ID that you can use to submit bug reports/feedback/suggestions. I originally had it in a Notion database, but I think that might be a bit too broad; I’ll be pointing people to this thread.

If you have any feedback or suggestions, please post it here. I’m also open to people making art for individual pages/branches, if they want (credit can be provided on-page with links, etc).

Roadmap

Stage Status Notes
Systems Development Done Need to move on from creating more systems, mostly because the more I create, the more I’m not going to finish the story. List of most of them can be found here.
Human Branch (Adult Fluffy) In Progress Planning is mostly done in flow chat form. Trying to avoid falling into the pit of “more technical systems” while working on it. Looking to complete all “getting your first fluffy” scenarios before moving onto event pool.
Human Branch (Foals) Not Started Unsure if this will happen, mostly because of vastly different events, and the need for a persistent time/Fluffy Age to signal maturity. Possible winstate includes keeping them alive until maturity.
Fluffy Branch (Male Not Started I figure male fluffies are going to have a different route than female ones. Hopes include Feral/Domestic routes, but this is ambitious.
Fluffy Branch (Female) Not Started Different branch due to mummah/children storylines; hopes to include feral/domestic routes, but this is ambitious.
Smarty Branch Not Started If able to do it, would love to do an Oregon Trail-esque herd simulator.

“Is this going to actually be completed?”

I know Fluffy Game projects tend to go in a particular way:

  1. Ambitions are high, so scope becomes huge
  2. Enthusiasm is high initially, and wanes as interest from the community does
  3. The project dies, unfinished

I’m a really technical guy and want to challenge myself writing fiction more. While I have branches for all fluffy main races and humans (and both genders for either), I know that’s a mountain of work that’s unlikely to ever be finished.

However, I want to try to commit to building smaller scenarios that can be completed in bursts. An example would be a human scenario that starts and ends at hosting a dinner party with friends with a Fluffy present, or “getting your first fluffy.” These don’t have to be epochs or anything; they can be small, short tastes of fiction that I write based on what I feel like writing at the time.

If the project dies, hey, the whole source is on the GitLab, and can be used for anyone else. The license is share-alike non-commercial, so I’d just like it to be credited, and my work not sold to anyone as a product. If anything, this will be a nice experience in learning Javascript and HTML, and learning to think like a game dev.

More Boring Stuff

Technical Twine Details

Here’s some stuff that might help people understand the game a bit better:

  1. This game is built on Twine with Sugarcube 2 as the story engine. I thought it was apt.
  2. I use Tweego to decompile and work with the Passages of Twine individually in a text editor, rather than in the Twine program. Here is a guide to compiling, decompiling, etc with Tweego.
  3. If you want to edit the story in Twine, feel free to import the html file. You can either download it from Gitlab or add index.html to any URL (ie, https://recent6284.neocities.org/test/index.html) and download that.
  4. I use VS Code and git to sync things. I use NeoCities’ command line interface in order to sync with NeoCities. There’s a command at the bottom of the page for Git Hooks to auto-sync when you sync git.
Goals and Priorities
  1. Finish a branch, any branch, lol.
  2. Don’t suck.
  3. Experiment with Twine’s capabilities for more creative fiction than “just follow the links to go to different branches.”
  4. Make peoples’ choices matter.
Bug Tracker
10 Likes

Interested to see how far you’ll get. Depression Quest leaves a bad taste in my mouth

2 Likes

This could be interesting, i have seen people make pretty decents choose your adventure games on Twine in the past

2 Likes

I’ve never heard of Depression Quest but based on the name, it sounds fucking retarded.

2 Likes

The game that launched a thousand ships.

1 Like

From the person who drove Alec Holowka to suicide

3 Likes

I used Twine for the original go at Fluffy Breeder, it’s been a while since I touched the code but some food for thought:

Two ways to deal with this - you can encode an image directly into the HTML (I forget the encoding format off the top of my head); this is compact but can get unwieldy and really bloats the HTML file since the encoding format supported is not compressed.

Other option is to use a sub folder, but this adds the issue of packing it with the HTML file and making sure users unpack it.

One issue that pretty much killed Fluffy Breeder was a strange bug with math in Twine - it just was not reliably doing basic math. More of an issue for that game since it was a semi-simulation so there was alot of math. Obviously never figured that out, but something to keep in mind.

2 Likes

I appreciate the thought! I think if anything it’s just gonna be for basic stats (money, happiness, sanity, whatever).

So I assume there was a very justified controversy surrounding it?

It’s in the wikipedia article for it; it was just a dumb joke to throw in the OP, and I’d rather the topic not focus on it.

Wasn’t aware there was a Wikipedia article since I’ve never heard of it before now. lol

Small update: I’ve decided I’m going to work on the Human branch of the game first. I debated adding in a “guiding emotion” for your dialog (pick an emotion at the beginning, and it’ll affect your tone/options) but that seems a bit ambitious. Mostly just going to start creating branches and finishing them.

I’m hesitant to add a ton of stats, so I’m basically just starting with money for a Fluffy right now, and saying “Hey, choose where you find your Fluffy. Some may be cheaper, or free, depending on where you go, but they may come with challenges.”

Worked a little bit on the Fluffmart section of the human story today. I had an idea, and I want some feedback on it:

I was debating having an option to “remember” a certain fact, but I felt that there wasn’t a reason for someone to not remember the thing for later. My way around this was putting all the possibilities (“You remembered this.” “You didn’t remember this.”, but not literally) into an array, and having that randomly be selected for the player and stored for later (true or false, whether they remember this or not).

I mostly thought it’d be good to introduce some intrigue and perhaps some replayability, but it takes away player control, as most players want to “win” and not be ignorant. What do you think? Is player control better? I’d be making it obvious that this was a random roll variable, so to speak.

Didn’t have a ton of time to write tonight, but fleshed out some options of where the player can go while at Fluffmart, and gave some brief things to consider in flavor text. As for yesterday’s question, I like introducing some variation, but don’t like completely altering the player’s personality arbitrarily. I’ve decided to have each “roll” to remember something store a result of 1, 2 or 3 (“yes”, “no”, “maybe”). The idea would be that either a player could “lock in” the memory now, or potentially have the opportunity to remember later; this leaves 2/3 of the potential rolls to not close off potential plot.

Fleshed out Fluffmart a little bit (added descriptions to the adult and foal areas). Also added some colors/buttons to the Human Start page, and picked out some colors for the initial “Where would you like to go?” menu. Going to be spending this weekend trying to figure out how to generate fluffies randomly from a pool of mane/skin colours, races, names, genders and temperaments, so the Fluffies players find in each area are a bit randomized. This might be me digging my own grave, but who knows. I think if I have an idea of the character of the fluffies and then have small things randomized/carried over in variables (colors, maybe like, having a “dominant temperament” that changes 1-2 passages every now and then) it’ll be kinda fun.

Go on.

1 Like

Trying!

If it helps at all, this is the code for generating fluffies in Fluffy Breeder and the attempted rebuild. It’s all genetic based so might not be applicable to your method but might at least give some ideas.

OG (Java script): FluffyBreeder/src/js/genome.js at main · eidalac/FluffyBreeder · GitHub
Newer-ish (godot): Fluffy-Breeder-Rebuild/Genome.gd at main · eidalac/Fluffy-Breeder-Rebuild · GitHub

1 Like

It’s likely a little bit beyond my project, but I at least enjoy the stats being laid out; that’ll probably help in terms of deciding.

1 Like

If it helps you and/or the OP, there’s something you could try: many coding languages use +, = and others for non mathematical purposes, and that messes up the math. In the majority of those languages, you double up the symbols to force a mathematical equation, so ++ instead of +, == instead of =, etc. If either of you encounter math problems again, try it out.