Not only has the I Was a Teenage Exocolonist fandom kept the story going with fic (336 works and counting on AO3), they’ve been busy modding the game and making rad fan merch. Northway Games has always granted permission for anyone to sell fan merch of our games using their own original art. It feels so amazing to have a piece of Exocolonist fandom hanging from my bag or dangling from my ears, out here in the real world.
Exocolonist artist Mei (@bkomei) just announced preorders for the cuuuuuuuutest wooden character charms, with unique shapes and different pictures on the two sides. They’re so slick! I love that they’re in a different chibi style than Mei used in the game, but they still give 100% Exocolonist vibes.
Mei’s also selling several prints of their in-game illustrations, and making these cool interactive CD jewel case charms that are just beautiful and all kinds of nostalgic. These will be a limited run so get one while you can!
Exocolonist writer/artist Lindsay also has semi-official prints available on Inprnt. I love this one of the gang telling stories around a campfire, the colors are sooooo purdy. There are also prints available of Lindsay’s creature art from in the game.
Poayo’s shop recently added keychains from guest artist Begonia
With everything from stickers to acrylic standees to body pillows, Poayo’s Etsy shop covers a lot of ground featuring their own fanart style. They regularly post new goodies on r/Exocolonist (Reddit profile) and the Seraphic Discord, so keep an eye there to snag the new-and-hots before they sell out.
This overhaul of the first year of the game introduces a bunch of new characters, even animated and on the map. New storylines, locations, backgrounds, cutscenes, activities, items. It’s really a LOT more than you imagine.
They’re calling it a beta and I hope we get to see more, but in its current state ExtraColonist is absolutely worth playing once you reach the end of the official content and want more. It’s easy to install and jump into with a fresh game (you can keep your groundhogs/past memories). Team Seraphic (Patreon / tip jar here) has done an amazing job. What an absolute labor of love.
New scenes with characters old and newI love this kid
We’ve done five plushies through Makeship and although these are one-off productions, I have a few squirreled away under the bed (literally) for some future giveaway. Makeship has also been bugging me to do another doll so you never know… join the Official Discord to hear more!
🚀I Was a Teenage Exocolonist🚀 is two years old this week! We’re celebrating our second Exoversary with a Steam daily deal (let’s make that a week) and two new Makeship plushie campaigns. The first 200 sales of each doll includes a free Steam key!
Hopeyes leap around on a single foot and live in colonies with up to 100 others. They can be fierce little creatures when their friends are threatened, so don’t underestimate them!
They love cuddles.
🐲🐛 The Dillypillar (Socks)??
Xenosaurus polyped
Dillypillars can sometimes be seen in the western Wresting Ridges. They’re generally solitary, and can grow up to 100 pairs of feet!? This particular dillypillar is just a wee four-legged juvenile, named Socks for her white-colored feet.
She loves cuddles too.
🍄🚀 Crowdfunding-style campaigns
Makeship is giving us one month to reach a minimum of 200 orders. On September 25 the campaign ends, and if we’ve met our goal then every plushie will be made-to-order for our backers. After that, no more will be made!
The estimated shipping date is December 14th so you miiiight get yours in time for the holidays, but if you’re planning to gift one to somebody, maybe have a nice card ready just in case your xenofauna is a little late. (Steam keys will be given out to the first 200 backers as soon as the campaign ends.)
🕘🕚 Limited time only
We did Nomi, Sol and vriki campaigns earlier this year, but Socks and the hopeye are the final Exocolonist plushies we have plans to make. I may change my mind later because you know I love making merch, but you’ve been warned: these might be the last!
So ✨ visit Makeship ✨ to preorder one (or both for 10% off) before the campaign ends on September 25th 2024!
Another Exocolonist plush is on the way! This time it’s a limited-run Nomi-Nomi doll, only available in a Makeship campaign ending on July 2nd 2024.
The first 200 will include a free Steam key, and since it’s a special Pride month event 10% of all sales go to the Trevor Project, and include a cute pride flag cape.
I do wish we could keep selling these dolls after the campaign ends, but storing and shipping plushies is a humongous pain. Interestingly, we’ve spotted some bootleg vriki dolls on Chinese cosplay stores since our last campaign ended. Is that a sign Exo has made it?
Get your limited-run Nomi-Nomi doll 🏳️🌈 here 🏳️🌈 during the month of June! Happy Pride!
This is such a dream come true for me – I love merch and plushies are kind of the ultimate, aren’t they? We’re creating them through Makeship, which runs limited time campaigns sort of like Kickstarter. We need to reach our minimum goal of 200 sales before January 5th 2024 to get them made. So if you’ve been waiting for an Exo plush, lemme say it again:
The first 200 sales of each doll comes with a free Steam key for I Was a Teenage Exocolonist, which I’m told make excellent gifts (as do plushies!) if you’re in the holiday gift-giving spirit. Makeship hasn’t made them yet, except for these product samples I get to play around and take silly pictures with, but they should be shipping out by the end of March.
Once again: these are a one-time run available only for a limited time until January 5th!
There are so many neat details, like the Vriki’s tentacle suckers and Sol’s removable jacket. They use a combination of printing and embroidery, and the material is so, so soft. They even fit together so Sol can ride the Vriki? Which is not exactly canon, but Vrikis can technically grow big enough, so I’m allowing it.
We’re doing these as a limited run not to torture people who are reading this after Jan 5th 2024 and missed out (I am SO sorry), but because we can’t handle fulfillment ourselves, so this is the only way they could get made. Imagine how much space 2,000 plushies would take up if I had to order that many!
Although that would be a pretty cool looking apartment, hmm…
How a Unity scene with 1600 lights was optimized for consoles.
Final product: Glow Season in I Was a Teenage Exocolonist
Taking a game from Unity prototype to Switch and PlayStation can involve compromises, but what you need most are some good tricks and custom shaders. Our narrative deckbuilding RPG I Was a Teenage Exocolonist is set on the alien jungle planet Vertumna, which you run around and explore as you grow up. I was still getting to know Unity when I created these outdoor scenes, and mistakes were made. But over five years I learned how to make our complex outdoor scenes fast and efficient.
I’m Sarah Northway, co-founder of Northway Games and creator (/designer/coder/co-writer/art director) of I Was a Teenage Exocolonist, as well as the narrative city-building series Rebuild and other games. I work with different artists for every game, from Flash browser games, to mobile, PC, VR, and now consoles.
I might be best known for traveling the world with my husband for five years when we first went indie. It was the jungles of Central America and the coral reefs of Southeast Asia that inspired Exocolonist’s lush landscapes and focus on the natural world.
Exocolonist Glow Season Concept Art by Sarah Webb
To bring this world to life, I worked with concept artist Sarah Webb, illustrators Meilee Chao and Eduardo Vargas, and 3d modeler Sarah Roland on our beautiful outdoor scenes.
Quiet, Pollen, Dust, Wet, Glow
In the main colony region, all the plants, terrain textures, and weather effects change with the season. Some plants have yearly lifecycles, growing taller or flowering then returning to buds. 3d elements like rocks and colony walls are tinted to match the weather, which includes rain, snow, heat shimmer and clouds of pink pollen.
Our seasons have cute names (Quiet, Pollen, Dust, Wet) but are roughly equivalent to winter, spring, summer, fall. There is no night cycle, but during the fifth season, Glow, Vertumna’s two suns are below the horizon for several weeks. During that time, nature comes alive with firefly-like particles and light-emitting plants.
The five seasons of the planet Vertumna
Exocolonist’s lighting is flat with only painted-in shadows, no normal maps or specular sheens. I used the built-in render pipeline and forward rendering to layer hundreds of semi-transparent Sprite-based plants. The Terrain uses a tri-planar shader and swaps its TerrainLayer textures when the season changes. 3d rocks have soft gradients applied based on their orientation, and plants and other 2d objects are billboarded to face the camera. The overall effect is of a painting come to life.
During Glow season, the colony gates close, characters hide indoors and the lights come out, all toggled by Components that enable or disable child objects based on the season.
There. Are. 1600. Lights
Here’s where things got complicated. Some plants emit light in Glow season: the bobblesprouts, mushtrees, and gnarlwood. Naively thinking “Unity will handle this for me”, I initially just embedded point lights into every plant prefab, which I toggled on or off based on the season.
The result was 1600 lights in one scene, up to a thousand at a time in the camera’s field of view, all affecting each other, the ground and the player. It was glorious.
Original Glow prototype with over a thousand lights
Glorious and slow. I cranked the concurrent pixel light count to 20 for screenshots (default for “Fantastic” quality is 4). The scene above was performing 6000 draw calls per frame, most with multiple lights, and ran at roughly 1 fps on my target low-end PC.
Batching Plants Blanches Pats
Let the optimization begin! I considered Unity’s tool for adding grass sprites to Terrain, but I couldn’t get the control I needed. Instead I dove in to custom shaders and prepared to batch the plant draw calls by tossing their art into an Atlas together.
I wrote editor tools to place a variety of plants in an area at once, clumping based on species parameters, avoiding duplicate art too close, and randomizing their angles and sizes. Then I tweaked them by hand to compose little vignettes.
Some plants wave, others breathe or bounce
Every plant is an individual object in the scene, rippling, bobbing, and bending when the player walks through it. Some species swell up and seem to breathe, showing the thin distinction between flora and fauna on the planet Vertumna. But they all use a single material, and up to a thousand can be rendered with a single forward-pass draw call.
To do this I used a custom vertex shader based on Unity’s default Sprite shader. Unity threw a wrench in by not supporting custom material property blocks on SpriteRenderers, so I passed the values I needed to calculate plant movement through the unused RGBA channels of SpriteRenderer.color. I was simultaneously horrified at my terrible hack, and pleased with how efficient it was.
Shader programming in a nutshell.
Batching took scenes down from 6000 draw calls to about 6. Next, I removed the Light components from the plant prefabs, and removed Unity’s lighting from the vertex shader. I wouldn’t need these where I was going.
Bloom
I stopped tinting the plants black via scene lighting, and instead I baked the tint in using Photoshop. Only the light-emitting parts of the plants are fully colored, and a murky fog tints distant ones. Then I started adding Post-process effects.
Everything looks better with Bloom and HDR, it’s a fact. I pushed it too far, then brought it back one notch. This gave the bobblesprouts and mushtrees the impression of emitting light into the world around them. And the geodesic greenhouses look fab.
Bloooom!
HDR porting gotcha: We had an issue on the Nintendo Switch with our post-process highlighting effect, which draws a glowing outline around interactive objects when you’re near them. We were using the alpha channel to store hidden info about the edges of objects, but with HDR enabled, the Switch ignores alpha during post-processing to save bits for the R, G, and B channels. To fix this we had to disable HDR on Switch, then adjust for the lower-bit alpha (even with HDR disabled, alpha is capped to 1). Luckily this was our only tricky rendering issue during porting.
Bake it Till You Make It
For the greenhouses and spaceships, I used an emissive texture map to layer additive light over a regular texture. Exocolonist’s 3D objects all use the same custom surface shader which includes Unity lighting, with soft Lambert shading and few shadows. But rather than render most lights on the fly, I switched to Unity’s baked lighting system.
After taking all 1600 lights out of the plants, I still wanted key areas of the ground and buildings to be lit by glowing flora. So I added back in baked lights here and there, matching the plants’ glowing colors. I did the same for the artificial lights on the colony walls and beside doors while I was at it. Only a few watchtower spotlights are still realtime, so they can illuminate the player and other characters moving under them.
Prototype (left) versus Baked lights (right)
The Baked Lightmaps system creates textures based on light positions that can later be additively applied to 3d objects while the game is running. As usual with optimization, I was trading increased ram (3-5 extra textures in memory per scene) for faster processing time. What made this possible was using Addressables to store most of our art in the filesystem when it wasn’t being used.
One catch: lightmaps had to be disabled when the seasons changed. I added a component to 3d objects which remembers their Renderer.lightmapIndex and sets it to -1 when not in use.
The Lightbearer
The floating particle effects just worked, they’re mad efficient out of the box. My only optimization was to make their world-space emitter a limited size volume that follows the player around.
But the player character still needed one final touch: a dynamic light they “hold” which illuminates everything they walk near – ground, plants, structures, and characters.
The ParticleSystem using a texture sheet and noise turbulence
I played around to find an efficient way to do this. Since the plants already knew the player position to be able to bend out of their way, I used it to calculate the light in my vertex function:
The playerLightColor is then added in per-pixel during the fragment or surface method. I update _PlayerPos via Shader.SetGlobalVector as the player moves, and _IsGlowSeason when the season changes.
The Result?
Well, it’s a whole hecka-lot faster now! Glow season is a smooth 60fps on most systems.
I was ready to have to rewrite the reflective water shaders or downres our textures to 2k for Switch, but it didn’t come to that. Once Glow was settled, most of our porting woes involved controller support, ugui menus, and save timing. Oh, and being forced to upgrade Unity at the 11th hour (you’ve been warned!).
Enjoying Glow Season with your buddy Dys
If we ever port to mobile I’m sure I’ll revisit some of these decisions and find more ways to reduce gpu cycles and lighten the load in ram. But I’m proud that Exocolonist has come so far, from “let’s throw a bunch of lights together hey that looks cool” to scenes that are attractive, consistent, stable and fast.
I Was a Teenage Exocolonist launches on Switch, PS4, PS5, and PC/Mac/Linux on August 25th.