O.R.B.S.

Operational Relic Bewitching System · a game in development at Blackhearth Games

/tower

O.R.B.S. - Operational Relic Bewitching System

scrying lens ................ [ ok ]
ley-line uplink ............. [ ok ]
grimoire index .............. [ ok ]
laboratory .................. [ ok ]
archive ..................... [ ok ]
battlements ................. [ not found ]
menagerie ................... [ not found ]
forge ....................... [ not found ]

the orb warms to your touch.

O.R.B.S.

A wizard stares into his scrying orb and finds a computer terminal inside it.

A text-only game played through a fantasy command line. You tend a wizard's tower by navigating a filesystem that is your duties - then write spells that do the work without you.

genre
terminal · idle · roguelite
built in
Rust · Bevy
platforms
Windows · macOS · Linux
status
in development · phase 1 of 9
store page
none yet - say hello instead

the loop

tend
brew, ward and scry - by typing
automate
write spells; the orb works unattended
descend
enter a siege, where something clever attacks your automation

Artless by design: no sprites, no illustrations, no key art beyond the screen itself.

laboratory

brewing · /tower/laboratory · built

There is no command that brews a potion.

Five instruments. Brewing is moving material through them - clear one, load it, set it working, collect what it made. One line only makes a potion if you wrote that spell yourself.

stage        instrument           heat      leaves behind
preprocess   mortar_and_pestle    -         husks
process      balneum_mariae       athanor   sediment
combine      flask_and_rod        -         dregs
distil       alembic              athanor   phlegm
(heat)       athanor              -         ash

the fire

The athanor burns fuel the whole time it is lit, and heats two of the five stages. They are not adjacent - so the efficient play is:

light → digest → damp → combine → relight → distil

Getting it wrong costs fuel, never progress. A spell that damps the fire is simply cheaper than you are.

archive

research · /tower/archive · built

Every command in the game is found, then understood, then used.

You begin with two verbs. The rest are fragments recovered from sieges and hidden directories, carried back here and deciphered.

orbs:~/archive$ decipher fragment_0x1f

  the sigil resolves. it is a sieve - it lets
  through only what matches, and holds back
  the rest.

  learned: sift

  the grimoire grows.

Shell verbs, domain verbs, conditionals, loops and triggers all unlock on this one track.

grimoire

spellcraft · /grimoire · being built now

A spell is not kept in a room. It is a book you carry.

orbs:~/grimoire$ cat night_watch.spell
#!/orbs/invoke
# runs each dusk

ward --upon north_gate --strength 3
invoke brew_clarity --qty 2
purge --byproduct --above 60%

if scry --enemy --within 2leagues; then
    ward --upon all --emergency
fi

orbs:~/grimoire$ bind night_watch.spell --to dusk
Bound. The orb will remember.

brew_clarity is a spell you wrote, not a command the game ships. Spells calling spells is the beat between automating one chore and a tower that runs itself.

why automation wins

  • Some things cannot be done by hand at all - triggers you cannot sit and watch for.
  • A manual action holds its pane for the whole duration. A spell does not.
  • The orb is simply faster at it than you are.

and why that is dangerous

A bound spell runs unattended, on inputs it never questions. A siege does not out-damage you - it poisons what your spells read.

manual

how to play · /recall/manual · covers the current development build

You are a wizard with a scrying orb, and inside the orb is a terminal. Everything you do, you do by typing at it. There is no mouse, no menu, and no button that brews a potion for you.

This page is the same manual the orb carries. In the game you reach it with recall - bare, it lists every word that works where you stand; given a word, it opens that word's page.

the prompt

Type a line, press enter, read what comes back. That is the whole interface.

The parser is built to forgive phrasing rather than to test your memory. It resolves what you meant, then writes down what it understood - so a command that went somewhere unexpected tells you where it went and why, instead of failing silently.

  • abbreviation works. att lab reaches attend laboratory. grim reaches the grimoire.
  • word order is not a puzzle. The orb reads for intent, not for a fixed argument list.
  • tab completes, and the arrows walk your command history.
  • speed buys nothing. No mechanic anywhere requires fast typing. A slow typist is not a worse wizard.

When the orb does not understand, it says what it tried, not just that it failed.

finding your way

The tower is a filesystem, and the filesystem is your duties. Moving through it is the primary navigation.

word use does
attend attend <place> go somewhere in the tower
survey survey [place] list what is here, or what is there
peruse peruse <file> read a file or a spell
sift sift <pattern> <file> keep only the lines that match
verify verify <name> check something for tampering

survey is the one to reach for first in an unfamiliar room. It tells you what is here; recall then tells you what you can do to it.

the tower

Your rooms hang below /tower. /grimoire is a sibling, not a child - a spell is a book you carry, not a shelf you walk to.

place what it is
/tower your tower. the rooms are below you, and no work happens up here
/tower/laboratory where reagents become potions, one instrument at a time
/tower/archive shelves that run further than they should. things are lost here
/tower/lens another wizard's orb, sealed with four sigils of six
/tower/sanctum where you ward the tower. the barrier fades while you work
/grimoire where your spells are kept. no work happens here either
/arsenal finished work, kept where every room can reach it

the work

Every room has words of its own. They only mean something where their instrument stands - grind is the mortar's word and says nothing in the sanctum.

the laboratory

Five instruments and a fire. Brewing is moving material through them: clear one, load it, set it working, collect what it made.

stage instrument heat leaves behind
preprocess mortar_and_pestle - husks
process balneum_mariae athanor sediment
combine flask_and_rod - dregs
distil alembic athanor phlegm
(heat) athanor - ash
  • kindle <reagent> - light the athanor
  • grind <reagent> - crush a reagent in the mortar
  • digest <reagent> - steep a reagent in the water bath
  • mix <reagent> with <reagent> - combine two reagents in the flask
  • distil <reagent> - draw a potion off in the alembic
  • move <reagent> to <place> - carry something from one place to another
  • wield <place> - set an instrument working
  • empty <place> - turn an instrument out into the store

The athanor burns fuel the whole time it is lit and heats two of the five stages - and those two are not adjacent. So the efficient play is kindle → digest → damp → combine → relight → distil. Getting the order wrong costs fuel, never progress.

recall clarity walks a whole brew end to end, naming each step and what it leaves behind. That is usually faster than reading this table.

the archive

Every command in the game is found, then understood, then used. You begin with two verbs; the rest are fragments recovered and deciphered here.

  • research - open a way into the stacks
  • wander - walk the stacks by hand, with the arrows. esc gives the prompt back, and a step costs the tower no time at all
  • follow <way> - move the reading one square

Reach the way out for a fragment. Four in the lectern, then wield it.

the lens

Another wizard's orb, sealed with four sigils of six.

  • dial <socket> [<sigil>] - turn one dial of the aperture
  • probe - press a figure against a far orb's seal

Both are free. aligned counts the sigils in the right socket; astray counts the misplaced.

the sanctum

Where you ward the tower. The barrier fades while you work, so this room is a race against your own upkeep.

  • muster - draw a fresh course of wards up out of the wellspring
  • haul <station> to <station> - carry the topmost ward from one station to another

Haul them all to the barrier, and never a ward onto a lesser one.

spells

A spell is a text file you write yourself. This is the game's real progression: you are not buying bigger numbers, you are teaching the orb to do your job.

  • scribe <name> - write a spell. A spell is written where its work is, so attend the room first
  • bind <script> - have the orb hold a spell, and run it on a trigger
  • invoke <script> - cast a spell once, where you stand
  • weave - look at what the work has bought
orbs:~/grimoire$ cat night_watch.spell
#!/orbs/invoke
# runs each dusk

ward --upon north_gate --strength 3
invoke brew_clarity --qty 2
purge --byproduct --above 60%

if scry --enemy --within 2leagues; then
    ward --upon all --emergency
fi

Spells can call spells. brew_clarity above is one you wrote, not a command the game ships - and that is the beat between automating one chore and a tower that runs itself.

Why automate at all:

  • Some things cannot be done by hand. A trigger you would have to sit and watch for is not something a person can hold.
  • A manual action holds its pane for its whole duration. A bound spell does not.
  • The orb is simply faster at it than you are.

And why that is dangerous. A bound spell runs unattended, on inputs it never questions. Later in the game something arrives that does not out-damage you - it poisons what your spells read, so a perfect spell does the wrong thing perfectly. verify is the authoritative detector, on every surface and every frontend.

asking the orb

word use does
status status how the tower stands
recall recall [topic] ask the orb what it knows
unfurl unfurl read back through the record
undo undo take back the last command
meditate meditate <count> let the tower run without you
weave weave look at what the work has bought
quit quit put the orb down and stop

status enumerates everything in flight. When you have a dozen things working at once, it is the one command worth typing on reflex.

meditate is how an idle game passes time on purpose: the tower runs, your bound spells fire, and you come back to what they made.

careful

Two words destroy something, and the orb treats them differently for it.

  • stop <place> - halt what is running. Work in progress is lost
  • purge <name> - destroy something

Catastrophic targets are protected in character rather than by a confirmation dialog. The tower itself will not let you purge it.

keys

Almost everything is typed. These are the exceptions.

key does
F2 cycle the phosphor theme
F3 cycle the CRT effect, including fully off
F4 switch focus mode - deep or wide
F5 toggle the linear text stream
F7 cycle the tonal register
F10 quit
F12 screenshot
PageUp / PageDown scroll the record
↑ / ↓ walk your command history

F10 rather than Escape is deliberate: the moment there is a text field, Escape is "clear the line" muscle memory, and quitting mid-sentence is not a recoverable surprise.

saving

The game saves itself. There is no save verb, and you will never be asked whether you want to.

The world is written to orbs-save.toml beside the game's executable, about once a minute and on quit. If that file cannot be written - an install directory that is read-only, say - the game says so once and carries on rather than failing quietly every minute for an hour.

Point ORBS_SAVE at another path to keep the save somewhere else, or set ORBS_SAVE=off to play a session that persists nothing.

a note on where this is

O.R.B.S. is in development - phase 1 of nine. Four domains exist and three do not; the siege, which is the second half of the game, has not been built yet. This manual describes what is there now, and grows as the game does.

the siege

the second half of the game · /siege · not yet built

Urgency is consensual. The tower is safe; a siege is something you walk into.

Real-time, and genuinely losable. Your bound spells fight as an autobattler while you diagnose and repair under pressure.

why go
The only source of certain reagents, fragments, and knowledge of your enemy.
what you keep
Scales with how far you got. Farm the easy opening and bail, and you earn little.
what attacks
Not a bigger number - a log that is subtly wrong, so a perfect spell does the wrong thing perfectly.

screens

captured from the running game, never mocked up

There is no key art. The screen is the art.

The O.R.B.S. screen at cold start, in amber phosphor on black. A box-drawn pane headed '/tower  F4 deep' curves slightly at the edges from the CRT barrel distortion. Inside: 'orb 0 181 cold start', then 'laboratory 8 ok' and 'archive 4 ok' with the 'ok' in green, then a four-column table of the verbs the orb currently knows. Below, a second pane headed 'orb' shows telemetry reading 'tick 1'. At the bottom, the input line: 'david $' with a block cursor.

the tower at cold start. Two domains found, five still undiscovered, and every verb the orb knows so far. The bow in the borders is the game's CRT shader.

the same frame, as text

The game can print any frame as text through the same painter that draws it - here at an 80×22 grid.

┌ /tower  tick 0  tier 1  80x22  wide  F4 deep ────────────────────────────────┐
│  orb 0 181 cold start                                                        │
│  laboratory 8 ok                                                             │
│  archive 4 ok                                                                │
│  bound 0                                                                     │
│  attend place     survey place     peruse file      sift pattern             │
│  status           recall topic     verify name      unfurl                   │
│  meditate count   move reagent     wield place      empty place              │
│  stop place       purge name       divine fragment  scribe name              │
│  invoke script                                                               │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘
 david $

More arrive as the domains do.

roadmap

solo · commercial · demo first, then 1.0 - no early access

phase                     status
0.  vertical slice        closed
0.5 interlude             closed
1.  core loop             in progress
2.  siege                 -
3a. breadth               -
3b. remote hosts          -
3c. engine upgrade        -
4.  onboarding + demo     -
5.  ship                  -
done
Parser, cell renderer, CRT, boot, and the two starting domains.
now
World clock, script engine, failure taxonomy, sabotage, balance.
next
The siege.

Phase 0 set itself a gate: eight outside testers, 85% of inputs reaching the intended action first try. It has not been run - deferred rather than passed, because there are no external testers yet and the author cannot stand in for one.

pillars

what every decision is checked against

1
The terminal is the fantasy, not a UI.
2
Understanding beats memorisation. The parser forgives phrasing.
3
Automation is progression - and automation is attack surface.
4
Urgency is consensual.
5
Everything converges in the siege.

what this is not

  • Not a Linux tutorial. Terminal literacy helps, and is never required.
  • Not a typing game. Speed buys nothing.
  • Not illustrated.
  • Not multiplayer.

battlements

defence · /tower/battlements · not yet built

Walls, gates and wards - where a siege lands, and where the automation you wrote in calmer hours either holds or does not.

lens

scrying · /tower/lens · not yet built

Feeds, logs, intelligence. Scrying is deduction: parse noisy output and find the truth someone hid in it.

This is the room that catches sabotage - spacing that drifted, an alignment that slipped, a record malformed in a way no machine would produce.

menagerie

summoning · /tower/menagerie · not yet built

Familiars and constructs. Spend resources, get something that fights on its own - whether or not that is still a good idea.

forge

enchanting · /tower/forge · not yet built

Imbuing items and wards: a sequence and a cost, for something that stays true after you stop paying attention.

about

made by
Blackhearth Games - David Yurek, solo
status
In development. Phase 1 of nine.
built with
Rust and the Bevy engine
platforms
Windows, macOS, Linux
licence
GPL-3.0-or-later - built in the open
contact
[email protected]

No store page yet. When there is one, it will be here.

credits

typeface
unscii-16 by Viznut, public domain - the face the game renders its cell grid from.
colours
The game's own four phosphor themes, converted from its source.
source
MIT · github.com/millidavids/orbs_website

the long documents

manual
how to play - the same manual the orb carries
health
health & safety - the CRT, the flicker, and the switch that turns it off
privacy
privacy policy - what the game and this site store, which is almost nothing

The short version: no cookies, no analytics, no trackers, no third-party scripts, and no networking code in the game at all. Your phosphor choice lives in your own browser and is never sent anywhere.

health & safety

Draft - pending legal review. Please read before playing.

photosensitive seizure advisory

A very small number of people may experience a seizure when exposed to certain visual images, including flashing lights or patterns that may appear in video games. Even people who have no history of seizures or epilepsy may have an undiagnosed condition that can cause these "photosensitive epileptic seizures" while watching video games.

These seizures may have a variety of symptoms, including:

  • Lightheadedness, altered vision, eye or face twitching
  • Jerking or shaking of arms or legs, disorientation, confusion
  • Momentary loss of awareness or loss of consciousness
  • Convulsions

Stop playing immediately and consult a doctor if you or anyone else experiences any of these symptoms. Parents should watch for or ask their children about these symptoms - children and teenagers are more likely than adults to experience these seizures.

reducing the risk

You can reduce the risk of photosensitive epileptic seizures by:

  • Sitting farther from the screen
  • Using a smaller screen
  • Playing in a well-lit room
  • Not playing when you are drowsy or fatigued

If you or any of your relatives have a history of seizures or epilepsy, consult a doctor before playing.

O.R.B.S. specifically

O.R.B.S. is a text-only game. There are no sprites, no particle effects and no explosions - the screen is a grid of glyphs, and most of what happens on it is text arriving a line at a time.

What the game does draw over that grid is a CRT simulation: barrel distortion, scanlines, an aperture grille, vignette, a slight colour fringe at the edges, and a dim phosphor bloom around lit glyphs.

Two of those deserve naming directly.

The hum band is slow and spatial, on purpose. Old tubes have a faint band that rolls down the picture. Modulating the whole screen at CRT frequencies would land squarely in the photosensitive band, so the game does not do that: the band is a moving position on the screen rather than a brightness the whole screen shares, and it moves slowly. This was a design constraint, not a tuning afterthought.

The barrel distortion curves straight lines. The game's panes are drawn with box-drawing characters, and the tube bows them. Some people find that curvature uncomfortable, in the same way some people find a wide field of view uncomfortable.

All of it can be turned off. Press F3 to cycle the CRT effect, including fully off, which leaves a flat panel of plain text. This is a real switch: it disables the whole pass rather than turning the individual effects down, so nothing in the game can quietly bring it back. Accessibility settings in the options screen do the same thing without a keypress.

The game reserves a screen flash for one future event - a breach during a siege. The siege is not built yet, so no build available today flashes the screen at all. When it ships it will be covered by the same F3 switch and by its own option, and this page will be updated to say so precisely.

Four phosphor themes are available (F2): amber, green, muted violet, and monochrome. If one of them is harder on your eyes than the others, use another - no theme is mechanically advantaged, and no meaning in this game is carried by colour alone. Every coloured tell also has a glyph or a word.

eye strain and fatigue

O.R.B.S. is a reading game. You will spend more continuous time looking at small text than you would in most games, which makes the ordinary advice more relevant here rather than less:

  • Take a 10–15 minute break every 30–45 minutes of play
  • Sit at a comfortable distance from the screen - about arm's length
  • Adjust the brightness of your display so it is not too bright or too dim
  • Increase the game's font size and cell scaling rather than leaning in
  • Avoid playing when you are tired or need sleep

The phosphor themes are low-contrast against a dark background by design. If that is hard to read for you, raise the contrast in the options screen or switch to the monochrome theme, which is the highest-contrast of the four.

If persistent pain or discomfort continues, consult a doctor.

repetitive strain

O.R.B.S. is played almost entirely by typing. To avoid repetitive strain injuries:

  • Keep your wrists in a neutral position and your keyboard at a height that does not make you reach up to it
  • Stretch your hands, wrists and fingers regularly
  • Take breaks away from the keyboard, not merely between rooms
  • Stop playing at the first sign of pain, numbness or tingling

No mechanic in the game requires fast typing, at any difficulty. Nothing is scored on words per minute, nothing is lost by typing slowly, and every command can be abbreviated or completed with tab rather than typed out. If you find yourself hurrying, the game is not asking you to.

stop playing and consult a physician if you experience

  • Convulsions, eye or muscle twitching, loss of awareness
  • Altered vision or involuntary movements
  • Disorientation or dizziness
  • Any pain, numbness, tingling or weakness in your hands, wrists, arms, neck, shoulders or back

emergency

If someone experiences a seizure, keep them safe by moving nearby objects away, do not restrain them, and seek medical help immediately.

privacy policy

Draft - pending legal review.

Effective date: 2026-08-26

Last updated: 2026-08-26

summary

O.R.B.S. is developed by Blackhearth Games. We do not operate any servers that collect your personal data. We do not use third-party analytics, advertising, or tracking services. The game has no networking code in it at all - everything it does, it does on your own computer.

This website collects nothing either. No cookies, no analytics, no trackers, no third-party scripts.

what the game stores locally

O.R.B.S. writes its world to a single file, orbs-save.toml, kept beside the game's executable. It holds the state of your tower: the world clock, the rooms and what is in them, what you have researched, the spells you have written, and your settings.

It contains no personal information. It does not record your name, your machine, your network, or anything about you that you did not type into the game yourself.

You control where it lives, and whether it exists:

  • Set the ORBS_SAVE environment variable to a path to keep the save somewhere else.
  • Set ORBS_SAVE=off to play a session that persists nothing at all.
  • Delete the file at any time to remove everything stored locally. Doing so resets your tower.

The save location is deliberately simple while the game is in development. When the game reaches Steam it will move to your operating system's standard application data directory, and this policy will be updated to name those paths before that change ships.

the parse trace

Pressing F6 writes a trace of the commands you have typed and how the parser read them to a file on your own computer. It exists so that a confusing parse can be looked at afterwards, by you.

It is written only when you press the key, only to your own disk, and it is never transmitted anywhere. If you send us one - attached to a bug report, say - we receive it because you chose to send it, and it is then handled as ordinary support correspondence.

no networking, no telemetry

O.R.B.S. does not connect to the internet. This is a stronger claim than "we don't collect anything", and it is checkable: the game's dependency manifests contain no HTTP client, no socket library, no crash reporter, no analytics SDK, and no telemetry of any kind. The game is open source under GPL-3.0-or-later, so you do not have to take our word for it.

There is no multiplayer, so there is no peer-to-peer networking, no matchmaking, and none of the IP-address exposure that comes with direct player-to-player connections. O.R.B.S. is a single-player game and is designed to stay one.

steam

O.R.B.S. is intended to release on Steam. It is not on Steam yet, and no build available today contains any Steam integration.

When it does, playing through Steam will interact with Valve's Steamworks APIs for the usual platform features - achievements, statistics, and Steam Cloud saves if you enable them. That data will be handled by Valve under Valve's own privacy policy. Blackhearth Games would receive only anonymous aggregate statistics, never personally identifying information. This section will be rewritten with specifics before any such build is published.

this website

orbs.blackhearthgames.com is a static site. It sets no cookies, runs no analytics, loads no third-party scripts, embeds nothing, and makes no requests to any other host - a Content-Security-Policy header on every response enforces that.

The one thing it remembers is your phosphor theme, stored in your own browser's local storage so the site looks the same when you come back. It never leaves your browser and is never sent to us.

The site is hosted on Cloudflare Pages. Cloudflare processes standard web server request logs on our behalf as a hosting provider; we do not query, export, or analyse them.

children's privacy

O.R.B.S. is not directed at children under 13. We do not knowingly collect personal information from children. Because we do not collect personal information from anyone, no special data-handling procedures for children are required.

your rights (GDPR / CCPA)

Under the EU General Data Protection Regulation and the California Consumer Privacy Act, you have the right to access, correct, delete, and port the personal data held about you, and to object to its processing.

Because all of your O.R.B.S. data is stored locally on your own computer, you can exercise all of these rights yourself by reading, editing, or deleting the save file described above. The save is plain TOML - you can open it in any text editor. Blackhearth Games holds no copy of your personal data that you would need to contact us to retrieve or erase.

changes to this policy

We may update this policy from time to time. The "Last updated" date above will reflect the most recent change. Material changes will be announced in the game's changelog and on this website.

contact

If you have questions about this privacy policy, contact us at [email protected].