Repository navigation
Releases
v0.2.1: The new look
The screen, made over before milestone 3. The panels lose their boxes, much of what you point at explains itself, the game fits on a small screen, a few things move, and you can pick your colours. How the sprites live hasn't changed.
What's new
- Panels without boxes. The inspector and the event log sit on soft shades instead of inside lines, and the map runs to the edges of the screen: 54 by 24 tiles at 100×30, where you saw 52 by 21. Text is coloured by its job: headings in cyan, gains in green, losses in red, keys in bold. The inspector's tabs sit at the right of its title row, and a click opens one.
- Help for the screen you're on.
?opens the help at the page for where you are: the world, the inspector, the sprite list, the population graph or the family tree. Type to search every page at once. A key that would do nothing just now is greyed out in the hints rather than hidden, so they stop shuffling about. - A command palette.
:opens it: type what you want to do, such assave, and it lists what matches, each with its key, andEnterdoes it. Handy for a key you've forgotten. - Point at things. Rest the mouse on a drive, a chemical, a gene or one of the log's filters, and a tooltip says what it is in a sentence: what makes a sprite hungry and what eases its hunger, say, or what a gene does. Anything that can explain itself is drawn in a soft blue in the default colours. Point at a sprite's name in the event log to light it up on the map, and click it to select it.
- Small screens. The game plays in a terminal as small as 20×5, giving up a part at a time: under 100 columns the inspector waits until
iopens it over the map, under 30 rows the event log goes, and on the smallest screens the map is drawn alone. It isn't much of a view at 20×5, but it works. The title screen needs 60×20; on a smaller screen, start with--seed 7, say, to go straight into a world. - A bigger inspector.
imakes the inspector fill the screen, its lines in two or three columns, andPgUpandPgDnturn its pages.iagain, orEsc, brings the map back. - Square tiles.
odraws each tile two characters wide, so a square patch of grass looks square. - Motion. A death flashes and leaves a ghost that fades to grey. An egg flashes faster and faster in its last 100 ticks, then its shell cracks and splits as the hatchling climbs out. A drive's bar surges when it rises fast, and fills a third of a block at a time (
░▒▓█), so you can see it move. Tabs sweep in, pop-ups fade, the view glides over to a sprite, and a faint trail follows the one you've selected. Most of it calms down at 4× and up, and--no-motion, or the settings screen, turns it all off. - Palettes. Five sets of colours: the default, high contrast, colour-blind (never red against green), mono (bold and reverse video only), and Game Kid, greens on black, like an old handheld's screen. The characters are chosen separately from the colours: the usual ones (CP437), plain ASCII, or a theme file of your own for either. With
NO_COLORset, the game starts in mono, unless you pick colours yourself. - A settings screen.
Ctrl+Topens it: glyphs, colours, motion and square tiles, a row each. What you pick is saved insettings.ronin the game's folder, so you only choose once. - Removing it cleanly. These notes, and each download's
README.txt, end with how to remove the game and everything it wrote, and theREADME.txtlinks to this release's version of the manual.
Fixed
- The look you pick now stays with you on the title screen and into your next world. It used to switch back to the one the game started with.
- The
F3overlay's box no longer lets the pointer through. Pointing at it moved the Cursor to the tile underneath, and a click on it landed on the map.
Before you upgrade
- Your worlds carry on. Saves and autosaves from v0.2.0 load as before. A world from v0.2.0 keeps the game's data it started with, though, so pointing at a drive or a chemical in it says only what kind of thing it is. Start a new world for the full explanations.
- Replays from v0.2.0 play only in v0.2.0, and the first v0.2.1 session writes over the last session's replay. Copy
last_session.replayout of the game's folder first if you want to keep it. Ctrl+Topens the settings screen, where it opened the theme menu. The same choices are there, with motion and square tiles beside them.--asciichanges only the characters now, so on its own it draws ASCII in the default colours, with shaded panels, and with--themeit draws your theme's colours in ASCII. Pick high contrast or mono on the settings screen for lines between the panels again.- A theme file of your own from v0.2.0 still loads, and draws lines between the panels until you add a
panelssection for shades. Put it in thethemesfolder and pick it on both the Glyphs and the Colours rows to use both its characters and its colours.
Known problems
- Grown sprites die of hunger or thirst, and try to eat while too full, a little more often than planned, and partners keep each other in sight a little under half the time (#332).
- Over many generations, sprites evolve to live more than twice as long, but not to do better: in a fresh world, the evolved ones raise fewer young than the first sprites' genes do (#332).
- Resting never counts as relief from tiredness, so sprites can't learn that it helps (#125).
- The downloads aren't signed, so Windows or a Mac may balk the first time (the zip's
README.txtsays what to do), and Windows with Smart App Control on won't run it at all: install it with Rust there instead (#352). - On a terminal with a light background, such as a Mac's Terminal in light mode, the panels are dark and their writing hard to read. Press
Ctrl+Tand pick mono for Colours, or use a dark terminal profile (#403). - In the sprite list's filter,
#1finds every first-generation sprite too, not only Sprite #1 (#335). - Loading a save hides the
F3overlay until you pressF3again (#336). - On a keyboard that isn't US English, such as a German one,
:and?can stop opening the command palette and the help if you let go of Shift before the key. Press it once more and let go of the key before Shift, and they work again (#408). - On a screen only 5 or 6 rows tall,
:opens the command palette without showing it, and it takes what you type until you pressEsc(#404).
Install
Download the zip for your computer from this page's Assets, below: Windows, Mac (Apple silicon) or Linux. Each has a README.txt that says how to run it, and, on a Mac, how to open it the first time, since it comes from a developer Apple doesn't know. Or, with Rust 1.97.1 or newer:
cargo install --git https://github.com/Keazra/terra-sprites --tag v0.2.1 --locked terra-tui
Either way, it's best in a terminal of 100×30 or more (on Windows, Windows Terminal), though it plays on a smaller one.
Uninstall
Delete the folder you unzipped, the zip if you kept it, and on Linux terra-sprites from the folder on your PATH if you moved it there. Or, if you installed it with Rust, run cargo uninstall terra-tui. Your worlds and settings stay in the game's own folder until you delete that too, so a newer version finds them:
- Windows (PowerShell):
Remove-Item -Recurse "$env:APPDATA\terra-sprites" - Mac:
rm -rf ~/Library/Application\ Support/terra-sprites - Linux:
rm -rf ~/.local/share/terra-sprites, or$XDG_DATA_HOME/terra-spritesif you've set that
The game writes nothing anywhere else. A Rust install also leaves the code it downloaded in Cargo's folder: the manual's Uninstalling says how to clear it.
v0.2.0: Generations
The second milestone. Sprites now hatch, grow up, pair off, raise their young and grow old, and each child gets a mix of its parents' genes, now and then with something nobody asked for. Water is scarce, so a newborn on its own rarely makes it unless its family, or you, step in. Leave a world running and the species changes, not always for the better.
What's new
- A title screen. A light finds a sleeping sprite in the dark, and a terrarium wakes up around it, already going about its day without you. Any key skips the scene. In a world,
Escnow offers the title screen as well as quitting, and both save first. - Life stages. Sprites hatch young: small (
ö), slow, curious and quick to learn. They grow up after about an hour at 1×, grow old about five hours in, and die about an hour after that. A hard life wears a sprite out sooner, as hard lives do. - Eggs. Every sprite hatches male, and a grown male who sees no female for a while turns female for good. It's a practical arrangement. A fed, watered and rested pair lays an egg (
o), which hatches about ten minutes later. You can carry eggs in Grab mode, but not throw them. Only grown-ups ever court or mate, whatever their genes or your data files say. - Courtship and families. Sprites call for a mate (
♪), heard up to about 30 tiles away, dance (♫), and pair up, usually for life. Partners stay near their egg, and near their young until those grow up, and an anxious parent, tinted light green, goes back for one it can't see. Sprites shy away from courting their kin. - Room to breed. A world holds up to 100 sprites and eggs, and a sprite with four or more grown-ups near it holds off breeding, so sprites keep roaming rather than settling into a crowd.
- A harsher world. Water is scarce, in a few big lakes. Sprites act only when something moves them, so many stand and watch, and the young wander little: a newborn far from water rarely grows up on its own. Food and drink share one gut, and berry bushes now seed. The old, watery world is still there: put
gentle.ronin apresetsfolder in the game's folder (?shows where that is), and New world offers it. - Genes that change. Copying isn't perfect: most hatchlings have a number or two that came out different, and about one in ten a whole gene doubled, lost or changed. Hidden flaws only bite when a sprite gets the same one from both parents. The Genome tab opens with the news, and the log mentions anything new.
- Learning by watching. The young learn from whoever they watch, their parents most: a youngster that sees its mother drink learns that water helps thirst, and where the lake is. Your pets and zaps rub off on onlookers too, so mind what you do in front of the children.
- Remembered places. A thirsty sprite with no water in sight walks back to water it remembers. If what it remembers is gone, like a bush that died, it forgets the place and doesn't dwell on it.
- The family tree (
k) shows grandparents, parents, partner, young and siblings, living or dead, andb's lineage mode lights up a sprite's relatives on the map. - The population graph (
p) shows the whole run, split into eggs, young, adults and old, with each moment's generations underneath. - Story and Lab worlds. Story is the game as it's meant to be played, up to 4×. Lab is for experiments, up to Max. A world keeps its mode for good, so choose with some care.
- Fast-forward.
terra-sprites --fast-forward 200 --seed 7runs 200 hours of play with no screen, then saves the world and writes tables for a spreadsheet. About ninety generations pass in the time of a long dinner. - The view past the wall. The map scrolls out past the terrarium's glass, into space and drifting stars. The sprites haven't noticed any of this.
- Smaller things.
/filters the sprite list,F3shows how well the game is keeping up,--versionsays what you're running, a renderer makes clips of the game, and the game is now yours to share under MIT or Apache 2.0. - Downloads. No Rust needed: each release has a ready-made game for Windows, Mac (Apple silicon) and Linux.
Improved
- Lessons last. Good lessons fade over about a lifetime; bad ones, and anything you teach with the Cursor, last for life. They remember now.
- A tidier inspector. The Brain tab groups lessons under what they're about, a selected sprite shows in reverse video at any age, the mouse wheel works in menus, and the top bar counts the seconds since the world saved, rather than saying "just now" for a whole minute.
- A manual. The README is a short front page, and everything else lives in the manual.
Fixed
?and capital letters work in kitty-protocol terminals: kitty, WezTerm, foot and Ghostty (#124).- A sprite could stand frozen for most of a minute when its target moved out of reach. It now gets on with its life.
- A sprite walking to one bush could eat a nearer one instead, even a thornbush.
- While paused, a loaded world's names and your grabs show at once, and letting go of
?always registers. - Damaged saves and replays are refused with a message saying what's wrong, rather than crashing the game.
- Installing with Rust 1.97.0, which builds the game wrong, now stops and asks you to update.
Before you upgrade
- Story worlds stop at 4×. Start a Lab world (
--lab) to go faster. Worlds from v0.1.0 load as Story worlds. - Worlds from v0.1.0 never breed. They load and carry on, and their sprites now grow up and grow old, but never have young. Start a new world to see sprites breed.
- Replays from v0.1.0 play only in v0.1.0.
- On kitty-protocol terminals,
>,_,{and}no longer stand in for.,-,[and]. - A
--datafolder from v0.1.0 with a changedchemicals.ron,loci.ron,brain_io.ronorcategories.ronwon't load: start again from v0.2.0's copy of that file. Themes still work.
Known problems
- Grown sprites die of hunger or thirst, and try to eat while too full, a little more often than planned, and partners keep each other in sight a little under half the time (#332).
- Over many generations, sprites evolve to live more than twice as long, but not to do better: in a fresh world, the evolved ones raise fewer young than the first sprites' genes do. Nobody promised evolution would be progress (#332).
- Resting never counts as relief from tiredness, so sprites can't learn that it helps (#125).
- The downloads aren't signed, so Windows or a Mac may balk the first time (the zip's
README.txtsays what to do), and Windows with Smart App Control on won't run it at all: install it with Rust there instead (#352).
Install
Download the zip for your computer from Assets, below: Windows, Mac (Apple silicon) or Linux. Its README.txt says how to run it. Or, with Rust 1.97.1 or newer:
cargo install --git https://github.com/Keazra/terra-sprites --tag v0.2.0 --locked terra-tui
Either way, you need a terminal of at least 100×30 (on Windows, Windows Terminal).
v0.1.0: A Sprite Lives
v0.1.0: A Sprite Lives
The first milestone: a terrarium of sprites that eat, drink, play, get hurt and learn from all of it, and a Cursor you can reach in with. Sprites live and die, but they don't breed or grow up yet; that's v0.2.0.
What's new
- A terrarium from a seed. Berry bushes grow from seedlings, fruit, spread and die. Thornbushes spread, water sits in pools, and balls roll, bounce, knock other balls on and squash berries. The same seed gives the same world every time, on Windows, Mac or Linux.
- Sprites that run on instinct at first. A hungry one goes to a bush and eats, a thirsty one drinks, a bored one kicks a ball, a lonely one goes over to the others, and a tired one rests. One that gets hit usually backs off, sometimes hits back, and fights if it's cornered.
- Sprites that learn by doing. Bite a thornbush and get pricked, and the log says it learned "thornbushes are bad". Sprites learn what's good when they're hungry or thirsty, which habits don't work, and who to steer clear of, without turning shy of everyone. Lessons fade unless they're renewed, and instinct is never wiped out, only outvoted.
- The Cursor. In Train mode a click pets a sprite and a right click zaps it, and it learns from both. In Grab mode you pick things up, lead a sprite somewhere, throw things and shove sprites. The Place menu adds berries, balls, bushes and new sprites.
Fmakes the Cursor follow a sprite, andHlets the sprites see it, so they learn to like or fear it from how you treat them. - A look inside. Select a sprite to see its body, its Brain tab (what it's paying attention to, why, and everything it remembers), its chemistry and its genes. You can name it, and save its genes to place a copy later.
- Time, saves and replays. Pause, step, and run from ⅛× up to 16× and Max. Worlds save and load, and save themselves every 10 minutes. Every session is kept as a replay you can watch again, or take over partway with
Ctrl+R. - Your own world. The ground, the plants and toys, a sprite's body and instincts, and how the map is drawn are all data files you can change, with
--data,--presetand themes.
Known problems
- In terminals that use the kitty keyboard protocol (not Windows Terminal),
?doesn't open the help, and names you type lose their capitals (#124, fixed in v0.2.0). - Resting never counts as relief from tiredness, so sprites can't learn that it helps (#125).
- This version opens straight onto a terrarium; the title screen came in v0.2.0.
Install
You need Rust 1.97.1 or newer (1.97.0 builds the simulation wrong), and a terminal of at least 100×30; on Windows, Windows Terminal.
cargo install --git https://github.com/Keazra/terra-sprites --tag v0.1.0 --locked terra-tui
terra-sprites --seed 7