The Narrative Octopus of I Was a Teenage Exocolonist

Originally posted to in August 2022:

How the home-rolled scripting language Exoscript helped us design a flexible open world narrative of nearly 600K words.

Solving a Mystery with the Gang
Solving a mystery in I Was a Teenage Exocolonist

My favorite narratives are ones where the reader – or player – is a participant, taking the author’s text and telling their own stories with it. For our narrative RPG I Was a Teenage Exocolonist, I wanted this: organic worldbuilding, characters with their own lives, replayability, and major events as signposts in a larger narrative space the player can explore. Not a linear visual novel, but a loose and vast narrative intertwined with deckbuilding and stats raising, dynamic yet deterministic.

I’m Sarah Northway, co-founder of Northway Games and creator of I Was a Teenage Exocolonist, as well as the narrative city-building series Rebuild and other games. I grew up an avid reader and writer before games became my life. I even considered writing a young-adult sci-fi novel instead of this game, but I know my strengths lie in programming and game design, and it would be a waste not to combine them with the story I wanted to tell.

With Rebuild 3, the similarly large 200K word narrative was delivered as an assortment of procedurally generated events involving a post-apocalyptic settlement. But for I Was a Teenage Exocolonist, I had a new challenge: to tell a coherent narrative along a 10-year timeline, involving characters who grow up, change dramatically, and may (or may not) even die mid-game.

I worked with co-writer and narrative designer Lindsay Ishihiro to produce Exocolonist’s huge and complicated narrative, with approximately 6 novels’ worth of text and 800 triggered events.

Collecting Roots in the Prosaic Plains
Clicking a question mark while exploring will start a story event

The Octopus

With our focus on replayability, I wanted players to only see a small amount of the narrative during each life, but without forcing them into one track at a time. For a dynamic open world, we’d need events to occur with or without you there to witness them, and you could pop in on a plotline in the middle of some crisis which might be too late to solve.

I wanted you to see the world from different points of view as you grow up in the game: as a child or an adult, as a farmer or a soldier, as a romantic or a rebel.

A branching narrative wasn’t going to cut it, or at least not just one. We needed many different plotlines overlapping and affecting one another, and hundreds of one-off triggered events to build a narrative world you could explore at will. And we couldn’t always control what order events would fire in, or what state the world would be in when they did.

Our narrative wasn’t a branching tree, but a juggling octopus. Flexible and interconnected, with a core narrative and many wriggling limbs.

Closest thing we have to an Octopus: the Vriki
What passes for an octopus in Exocolonist: the vriki

Event Categories

Our 800 narrative events break down into these types and trigger methods:

1) Main plot

These occur in every playthrough, and tie the game together with the consistency of changing seasons. Every year there is an event for your birthday, then the Vertumnalia harvest festival in midyear, then an event during glow season as the planet begins to reject the colonists’ presence. Unique challenges happen during specific years, always on the same date in every life, but the outcomes can be changed by your decisions and skills.

The predictability of main plot events provides an anchor as the months tick by, and reinforce the current mood of the game as it grows darker over time.

2) Sequential threads

Spend time in geoponics, and you’ll discover a friend’s secret pet, which over ten events grows up to be a huge problem. Work in the command wing, and you’ll get embroiled with a secret club with plans to free the colony from tyranny. There’s a series of world-building events as you improve in each of the twenty-five school, hobby or career paths, which often give the player a choice between two or three cards to build their deck, representing how the player is growing as they increase particular skills.

Sequential events always happen in order, but might be skipped if you’re too old. They’re triggered with the main plot events after you do an activity for the month. If two or more happen at once, I try to pick the highest priority one and delay the others.

3) Friendship events

Characters have love meters which trigger sequential events as you get to know them. These tend to be less connected to larger colony plotlines, and they’re optional, requiring you to walk up and talk to the character when they have a speech bubble over their heads.

Relationship Events
Some of the most emotional moments are in friendship events

4) Exploration

These appear as signposts, creatures or floating question marks out in the wild, and feel like miniature RPG encounters. Many involve a card battle or a skill challenge, and they’re scattered around semi-randomly depending on the region, season, and year.

5) Barks

In addition to our 800 triggered events, there are 1800 barks: short single paragraphs with no choices that play when there’s nothing else to say. They’re highly conditional, based on anything from the weather or your combat skill to obscure choices you made as a kid.

Enter Exoscript

Exoscript with N++ Syntax Highlighting
Exoscript with syntax highlighting in Notepad++

I considered various commercial scripting systems, including Inkle’s ink and the Unity asset store Dialog System, but none were quite right. I was planning to hire a co-writer, so I wanted something that would be easy for a non-programmer to learn and use. I wanted script that would look like plain English and feel simple and natural to write in, lightweight with a limited set of powerful features that we could use in complex ways. I wanted to be free to easily extend it, integrate it into the Unity project, and change events while running the game.

Ink came closest, and I would recommend it to someone in the same situation. But I was bitten by the desire for full control, and writing my own parser sounded like fun!

In the end creating Exoscript was indeed fun, and didn’t take as long as I’d expected. About a week to get the base features in, then another few weeks of optimization and upgrades gradually as we needed them. Co-writer / narrative designer Lindsay (who turned out to have a background in code) quickly got the hang of complex conditionals and started asking for more.

Example of Exoscript
Exoscript with choices, skill gates, and method calls

In this example, choosing “Try to distract it” sets an event-level variable (“~set var_distract”), then returns to the previous list of choices while removing itself (“>>>”). This will reveal a new choice to “Attack the monster!” now that you’ve distracted it (“~if var_distract”), which triggers a card battle (“~call battle(combat_10)”). But it has an additional bravery requirement (“~ifd skill_bravery >= 10”) which must also be met. If you win the battle, a new illustration will show (“~set bg = nearby_close”) and a permanent variable will be set (“~set mem_savedTonin = true”) to remember this for future events.

A Terrifying Encounter
Screenshot of the above Exoscript in action

Calls and Conditionals

Call statements like “~call battle()” use reflection to jump into a C# library of about a hundred methods that gradually grew through development. If they have parameters, those are automatically validated when the scripts are parsed, along with parameters used in any “~set” or “~if” commands. I wanted to be sure we’d catch typos in the IDs of skills, backgrounds, characters, or cards as early as possible.

The validation step also checks that referenced variables have been set at some point, and for unlikely cases like jumps causing infinite loops. This made my job as an editor much easier, and will be handy if players mod the game to add their own events.

Closely connecting Exoscript with the Unity project made it easy to trigger visual effects, for example “~set left = marz” slides the character Marz in to the left side of the scene, and changes the color of text in double-quotes to her color, blue.

Anemone's Barks
Anemone’s Barks

Our in-line conditionals (eg “[if skill_bravery >= 50] How brave you are! [else] Scaredy cat! [end]”) work like “~if” to determine which block of text to show. We use them all over the place, but prefer to put them around full paragraphs. This is both easier to read, and if we ever decide to localize one day it will make translators’ jobs easier.

Groundhog Day and Our Process

A key narrative feature in I Was a Teenage Exocolonist is a mysterious wormhole that lets you remember bits of past lives. On your second playthrough onward, new choices appear in events you’ve previously encountered. These can be used to shortcut difficult challenges, like curing a disease without spending years researching it, so you could eventually combine many lives of knowledge into one “perfect” life.

In honor of the classic Bill Murray movie Groundhog Day, these are called “groundhogs” or just “hogs” in the code.

Double Vriki
Wrangling our multidimensional octopus was no easy feat

The simplicity of Exoscript was a relief given how much we had to keep track of. Generally our system was: I blocked events out, Lindsay wrote them, then I edited and tested them in the game. Lindsay pulled in the direction of romance and longer prose, and I pulled towards blunt gameplay-oriented choices, and together we found a great balance. We hashed out the trickiest parts of the narrative together on Discord.

We had notes and spreadsheets of facts and jargon, and Exoscript was easy to skim for references, but writing Exocolonist really only worked because both of us were able to hold the entirety of the narrative in our heads for a few years.

The Future of Exoscript

The Stratospheric in Space
Launch is only the beginning

I mentioned modding above, which I hear Exocolonist fans are already doing before the game is even out! They’re adding their own events, and have even ported the syntax highlighting to other text editors. I tried to make modding easier by storing the story files in the filesystem in plain text, and if there’s enough demand I might implement Steam workshop support after launch.

Localization is something else we’ve wanted to do but have been unable to so far due to the enormous nature of Exocolonist’s narrative. But fan translations may also be possible some day via a modding system. And I’ll be using Exoscript again for my next (unannounced) game.

I’m looking forward to seeing what players think of the game, what stories they tell inside it, and how it inspires them creatively in their own writing and art.

I Was a Teenage Exocolonist launches on Switch, PS4, PS5, and PC/Mac/Linux on August 25th.

Beautiful Ugly Xmas Sweaters

Colin modelling a prototype Exo Xmas Sweater.

As you may know, I can’t seem to stop making Exocolonist merch.

I’ve been intrigued by Jacquard loom woven textiles that are getting easier to make on-demand. The design is woven into the stitches instead of printed onto fabric! I bought a cool scarf from the A MAZE Berlin festival this year, which might have been made by German company

They have an online creator and no minimum order size, so of course I was instantly hooked.

Colin and I at A MAZE, playing a game that involved permanently affixed fake nails.
I’m wearing the scarf!

Automated knitting has been around since the dawn of the industrial revolution (and lead to the first computers!), but only now is it automated enough to let us consumers easily design our own knitted fabric.

Yes, you too can create a singularly unique ugly Christmas sweater. Or you can buy the Exocolonist-themed one I designed!

Chunky knit sweater with acrylic yarn. I don’t think we’ll sell any of these officially, but you can order it directly from the manufacturers here (size chart):


These are made on demand. I suggest you get a size up to go for that loose and bulky look.

Another option: fine knit sweater with cotton yarn.

These are tighter knit with thinner yarn so there are less visible stitches (2 stitches per pixel). These look less like a hand knit sweater and won’t keep you as warm. They’re thinner and softer, fancier and more expensive (Compare):


Wildemasche also makes Beanies, Football Scarves, and bolts of custom-knit fabric you could sew into whatever. My Exo design doesn’t tile easily since every row has a different tile width, but here is the raw file if you want to modify it.

You could also conceivably knit this pattern by hand!

It’s easy to change yarn colors, just hit Edit Design!

You can drop any image in the Wildemasche creator to start designing, but if you want to do a traditional stitch sweater, here’s what I did:

  • pick yarn colors first (4 max, limited selection)
  • pick size: size S acrylic is 226×242 pixels and XXL fine-cotton is 347×324, I don’t know the others but I used 300×300 with a gutter at top and bottom which worked for most
  • draw your pixel art image
  • paste it into their designer on all four pieces, and set the images to 100% scale (200% for fine-cotton)
  • you can also use their editor to tile if your pattern supports tiling (mine doesn’t)
  • line up the sleeves and the front/back by matching the bottom of the images
The sweater design in progress
The final design

If you buy one, or modify this one, or make your own, I’d love to see it! Make sure to tag us on socials or come show it off on the Finji Discord!

Exocolonist’s Original Design Docs

August has been Vertumnalia fest on the Finji Discord, featuring a talent showcase of fanart, fiction and food, and culminating in a live art stream and developer Q&A today (August 25th) at noon PT!

(My Exosona, or what I would look like if I was in the game world, a gift from our artist Mei! I never wrote myself in as an actual character, but it’s a hidden asset in the game files)

It’s been a year since I Was a Teenage Exocolonist launched, and just over six years since I started working on it. We’re doing a Q&A soon but to be honest, I couldn’t remember answers to questions like “how did you come up with the characters”. However, thanks to the magic of version control, I can travel back in time to August 2017 and read through my original design document to see what the heck I was thinking.

Some of the answers may surprise you. Maybe even upset you!

Themes: Kids should think about the future before they are adults. Politics matter. Colonialism sucks. Parents aren’t always right – distrust authority.

Like an explorer sifting through the glass sands of the Western Wresting Ridge for remnants of a previous civilization, I skimmed through 60 pages of notes, scraps, rants and ideas, trying to remember how it all began. Here’s what I found.

Wolf children
Destined to love
Oregon trail
Princess maker

Early character design – spoilers incoming!

It seems the central dateable Strato characters were invented all at once one day, after listing possible skills and jobs. I named them as if they were archetype classes from Rebuild 3: “the fighter”, “the scientist”, “the politician”. Some things changed, but so much stayed the same.

Growing up in Exocolonist
The fighter, energetic and normal. Red haired freckled woman does what’s told, seems to dislike female gender norms. If you don’t date her, she’ll get an overbearing boyfriend. He’s a rival. Energetic and excitable when she has a task, doesn’t care much about pro or anti alien politics…? Or maybe dislikes aliens only because they’ve killed her friends and she wants revenge.

The scientist, jaded woman wants to help cure earth problems, thinks bigger than the rest but always too busy working on it, can help her cure earth at the cost of this planet. Hard to date because busy. No rival. Long blonde hair held back in a ponytail, Asian features. Future person. Would probably would throw aliens under the bus to help earth.

The explorer, dreamer man hates people and secretly loves aliens. Leaves the camp a lot, befriend for alternate (non skill) way to meet and get in good with aliens. Sometimes depressed. Dates secret alien if you don’t date him. Dark short hair, sad pale face.

The politician, woman hates aliens misses earth. But earth is dead to her and she wants to recreate it only better. Dates the head construction team guy then dumps him for the head gatherer, then dumps him for another politician if you don’t date her. She’s confident and sexy and likes to sex. Straight dark brown hair, dark skin.

The farmer, manly worker, idealist man likes aliens and alien plants but frustrated by tech and politics and war, just wants to work hard and live happily in peace and compromise. Dates a kind of dumb girl if you don’t date him. Dad figure. Curly brown hair and brown skin. Might be religious, Muslim?

The mysterious alien man who is really no/all genders. Hangs with explorer and may date if you don’t date either one. Important part of the good ending, though in many runs you will never meet him because it’s a secret. Aliens are alien looking but this one appears as a tall lanky pale man with long black hair which maybe isn’t really hair. He’s trying to look human, like the explorer specifically.

All can fall in love with you regardless of gender.

(Cleaned up a teeny bit.) I wrote that hastily, and possibly late at night or on my phone, and you might be able to guess who all those characters became (including the “kind of dumb girl”, I’m sorry). Obviously they all got far more fleshed out over the next five years, especially once co-writer Lindsay joined the team.

Using archetypes for the different directions the player’s own life could go in was a good decision, but I came to regret defining their race/appearance so quickly and relying on tropes (vengeful soldier, cold scientist, simple farmer). We appreciate our sensitivity readers for helping us identify these early issues, and inspiring us to dig deeper into each character and bring forward what made them unique.

Dys’ theme song is Smith’s How Soon is Now.

If you date Mars, you do a lot of making out while you should be working.

I’m surprised I was thinking about romance this early! There’s also a longer description of Marz’s love life, and yes the people mentioned above became Rex, Utopia and Lum. We removed teens having crushes on or dating young adults for legal/bizdev/yuck reasons, and they barely even consider the existence of sex before age 17, as unrealistic as that may be.

We all agree not to think about Sym’s actual age (20,000 years give or take?).

What if aliens aren’t biological, they are data? an indigenous culture, or an ancient weapon? both?

Forgotten characters

Another treasure trove of old design notes was my original spreadsheet of characters, places, skills, jobs, events, and endings. There were many more adult characters circa November 2017:

Some of them are still mentioned in passing during events, but were never given art. Most were cut so we could focus on the teen characters, plus one adult council member for each department.

The player’s sister Vestibule and several younger kids were cut when we steered the game away from a Handmaid’s Tale-esque story involving forced childbearing to populate the new planet. It was too heavy, and it was more fun to instead try to make gender (and race, and sexuality) as inconsequential as possible in the utopian world of Vertumna.

Gameplay changes from early prototypes

really seems like it needs a minigame where you run around the jungle finding stuff. or maybe the whole thing needs to be like harvest moon style. how hard is that really….

I found notes outlining the main plot of the game, which didn’t change as much as I thought, but originally you were going to move to a new colony every year and design it yourself as part of a base-building feature. There was also a farming mechanic, colony defense minigame, and a lot more contact with Earth. Most of this was cut to focus on the narrative and characters.

Running around on 3d maps almost got cut from the game too, and it was a difficult decision to keep since it added over a year of development time. But it feels so good to walk around and feel Vertumna surrounding you! And it helps to set Exocolonist apart from other visual novels.

Enjoying Glow Season with Dys

The card game was a late addition, and it took years to settle on a design for it. Ironically, it seems I had the seed of the idea back in 2017 but dismissed it as silly and forgot all about it:

incorporate poker, yatzhee type stuff?
this is getting VERY random…

There was so, so, so much more in there, many other random ideas and notes that only I could understand. Gradually, over years, I edited and pared this document down to only things that would go into the game.

Naming I Was a Teenage Exocolonist

Colin tells me we were on a hike with our friend Justin when I finally decided on the name I Was a Teenage Exocolonist.

The prototype codename was Princess of Mars, after the 1912 Edgar Rice Burroughs book I’ve never read, but which has inspired everything from Indiana Jones to Avatar. Initially the vibe for Exo was going to be more swashbuckling and pulp and a little less trauma. Also “Princess” for “Princess Maker” which was a major inspiration.

I’ll leave you now with a section of the original doc regarding names:

Long name like Voices of a Distant Star
or Nausicaa and the Valley of the Wind
maybe a phrase like Thomas was Alone or She dreamt in neon
should have some word like Child or Youth in it?

growing up
coming of age
what sprouts from alien soil
emerging from our chrysalises
i was a teenage exocolonist
same old problems on a whole new planet
growing up on Vertumna-82d
ten earth years on Vertumna
a decade on Vertumna
the stuffed up mouse who couldn’t see the stars
faraway high
faraway home
beyond the horizon
beyond the heliosphere
in the twinkling of a binary star
children of earth colony Vertumna
colonization of a new world
children of a new world
children of a distant planet
children of the planet Vertumna
Growing up on Vertumna
My life on the planet Vertumna
Your life on the planet Vertumna
Life as a child of the planet Vertumna
where the trees breathe
growing up exocolonist
my life as an exocolonist on the planet Vertumna
Life on Vertumna
Vertumna: Earth’s first exocolony
How we came to Vertumna
we came to settle Vertumna
building Vertumna
what happened at Vertumna colony
we didn’t mean for this to happen
it wasn’t supposed to be this way
how we escaped the earth
we came to find a home
on the soil of this planet
face down in the alien mud

Help us pick a plushie!

Would you like a real-life squeezable Cal? A huggable squiggly Vriki? We’re still in the early planning phases but we’d like to bring an Exocolonist character into the world as a stuffed toy.

The burning question is… which one??

Don’t think of this as a “which is your favorite Exo character” quiz; think of it as “who would look coolest as a teddy bear version of themselves” or maybe “what would I be the least embarrassed to put on my bedroom shelves”?

Yes, Vace is on the list. For some reason.

Here is the Google Forms survey

Also! There is a small Patch #4 coming soon to Steam, and now up on the testing beta branch. Deets are in the Discord!

Exocolonist Merch

If you’ve seen me in the last year, I was probably wearing some sort of Exocolonist merch.

Between finishing Exocolonist and waiting for it to come out, I entertained myself by making basically an entire wardrobe of test pieces. They didn’t all work out… well honestly most did not! One of them is currently for sale in the Official Finji Store, which is the limited edition Hawaiian shirt Mei designed. Colin and I both love the pink version:

Sarah and Colin wearing Mei's pink Hawaiian shirts at GDC 2023
Sarah and Colin wearing Mei’s pink Hawaiian shirts at GDC 2023,
where Exocolonist was in the IGF!

Also in the Official Finji Store, we now have stickers, pinnies, and a t-shirt with design by Eduardo (in both regular and crop top versions). Mei designed the stickers and pin and they are the cuuuuuutest.

Wormhole design crop top by Ed, from the Finji Store
Hopeye Pinny Arcade pin in situ on my denim jacket, also from the Finji Store

Physical Card Game

Another merch item I was keen to make was a real, in-your-hands, physical card game. I imagined we’d use these as business cards and give them out at events like PAX, with the idea that if you collected enough you could play a micro-game to try to make the highest-scoring hand just like in Exocolonist.

They have the same names and art as in the game and feature some of our amazing 100 card artists, but I had to tweak the values and rules a little to be playable on a tabletop.

Exocolonist physical card game, from The Game Crafter
Winning hand for a sample game:
⭐ flush of 3 (red)
⭐⭐ 4 of a kind (1s)

Alpha version (left) versus 1.0 (right)

It was worth doing, because dang, this little game turned out to be fun! Colin and I took prototypes to events so we could playtest it with friends. The rules are simpler than the actual game, because adding up a lot of little numbers is more easily done by a computer than in your head. Instead, you need to arrange five cards from your hand of seven to earn bonuses from a list. For example a pair is worth ⭐, or having all cards of the same color is worth ⭐⭐.

You win if you can get three stars, which is almost always possible, but sometimes pretty hard. We play a multiplayer variant where we both draw a hand and try to find the best score, then swap and see if we can find a better one.

It’s 52 beautiful cards in an adorable little tin box, available made-on-demand at The Game Crafter.

“Secret” Unreleased Merch

Now I’ll let you in on a secret! Once the Hawaiian shirts sell out, if you’re still desperate to get your hands on one, you may still be able to get one printed on demand from the source at ArtsCow. Some of my unshipped experiments are in there too!

Velvet jacket with pattern by Madeline Berger (environment artist on Chicory!) from Artscow
Chiffron dress featuring screenshots from the game also from ArtsCow

I also have a couple designs up on HugePOD, another place that offers on demand all-over prints. These shops print the art onto flat fabric first, then cut and sew like they normally would. It’s a neat process that means they can have hundreds of styles to choose from, although they do take extra time to ship because they have to make them after you order.

Though most of these designs will never go beyond my own wardrobe, it was so much fun to do. Let me tell you, it’s a bit addictive (and way easier than you’d think) to design your own clothes!

Me layering Exo clothes. I made over 20 different test designs
Mei, Colin and I at PAX West 2022, wearing various Exo duds