Alpha · untitled

Sci-Fi Tactical RPG

Built around energy-ordered turns and augment loadouts. In development, and still looking for its name.

Gameplay

See it move

Captured from the current alpha build.

In motion

Current Player Augments (more to come)

All actions take energy to use, including moving. Turn order is decided on who gets to 100% energy first, so ending a turn early means your next turn comes faster. However, ending a turn with more than 80% energy will cap you to 80%, to prevent same-turn spamming.

Light Shot
The basic shot. Free aim with line of sight — obstacles and other entities will block it.
Scatter Shot
A multi-shot blast — it's RNG, so pellets may or may not hit targets inside the cone. Here the Dark Slug dies and triggers its Failsafe augment, a poison cloud that catches the enemy beside it.
Rail Shot
High energy cost beam that pierces through multiple entities and ticks damage rather than single-source damage.
Explosive Grenade
Two throws at different ranges. Damage falls off from the centre of the blast.
EMP Grenade
EMP grenades damage energy, which provides turn order manipulation.
Stat Scanner
Scanner lets you see the AI's stats, augments, and AiTraits. AiTraits can help you determine how the AI will behave.
Under the hood

Systems, mostly

Roughly 74,000 lines of C# across 200 source files. I'm the only engineer on the project. Most of it is machinery the player never sees directly.

Augments that name themselves

Mods slot into ability augments, which slot into the character. An augment rolls with base stats and takes mods on top: extra stats, status effects, or expansion chips that add more slots. An expansion chip has to go in a base slot rather than another expansion slot, which is what prevents infinite mod stacking.

Names are built from what's installed. Each mod contributes exactly one word, more damage is Heavy, more range is Sniping, those words fuse across the stack, and the whole thing is capped at two. So Light Shot with a range mod becomes Sniping Light Shot; stack a damage mod on top and the pair fuses into Piercing Light Shot.

Every word and every fusion →

Main Slots

System Slots

Every combination of installed mods resolves to a name — the full table is here.

Enemies that disagree with each other

  • Reckless
  • Bloodthirsty
  • Berserker
  • Cautious
  • Cowardly
  • SelfPreserving
  • Opportunistic

Every unit runs the same planner: score the available moves, the lines of sight, the abilities, pick the best one, repeat until the turn is spent. Traits reweight that scorer, a Cowardly unit and a Berserker score the same with different weights, so they land on different actions. Traits that need genuinely different behavior, rather than different priorities, are still being wired in, like Loyalist.

The full trait list →

Enemy AI in play

Modding as a first-class path

Two tiers. Sandboxed JavaScript for interface work, and full-access C# plugin assemblies for everything else. The C# tier hot-reloads: rebuild a mod while the game is running, and it swaps in without a restart. If you create a mod via Godot that creates a pck file, a game restart is required.

A C# mod defines no engine node of its own. It registers plain callbacks, RegisterDraw, RegisterTick, RegisterAbility, RegisterAi, and the game drives them, which is what lets the whole assembly unload cleanly on every reload. This allows for the full vector draw surface, the game's own palette and live entity state, and a genuine reference to the HUD it wants to replace.

The readout here is one of those mods, in a single file. It hides the stock health and energy bars and draws a patient monitor in their place — pulse rate climbing and the beat weakening as health drops, shield as the canopy over the trace, energy as discrete charge cells. Nothing in the game changed to allow it and can be disabled via console commands.

That loader is open source as GodotModKit, usable in any Godot 4 .NET project, MIT licensed.

A mod replacing the player's health and energy bars with an ECG-style vitals monitor

The rest of it

Movement works different in and out of combat. Outside of combat, you just use WASD to explore freely, using a standard sorting layer so your character walks behind objects instead of floating over them. Once you enter combat, it switches to point-and-click movement restricted to a reachable radius dictated by your energy and movement augment. Because of this, moving too far can drain your energy too much. Because of this, I do plan on adding some QoL systems to let players reset their movement and plan attacks.

Turn order runs off this same energy pool instead of a typical initiative roll, and the timeline is fully visible, you can check exactly how an action now impacts your turn order. When spending energy, an arrow shows where you'll be placed in the timeline.

Details

  • Pathfinding & Sight. A* pathfinding accounts for unit collision sizes, paired with a distinct line-of-sight grid for attacks.
  • Systems. A full day/night cycle and data-driven input rebinding (no hardcoded key maps).
  • Mod Support. The HUD is rendered entirely in code, making it easy for mods to completely reskin the UI. I aim to make the game as modular as possible.
Tooling

Console commands

Most of the commands are gated behind cheat mode, since it's a debug utility. Give augments and mod chips, spawn entities, set the day/night cycle, and so on.

> CheatMode true // commands that affect gameplay or break progression are locked behind this
> Spawn player Human Rebel 200 // spawns a player human with the faction Rebel, 200px from your position
> cheatMode true && give augment lightshot damage=15 // turns on cheat mode and gives a lightshot augment — all stats on augments can optionally be set this way
> delay 3 && kill hostiles // kills all hostiles after 3 seconds
> resurrect dawkins 40 // resurrects a named entity (dawkins) to 40 health; omitting the number gives full health
> scannerTheft true // allows the scanner to loot entities while they are still alive, gated by cheat mode for debugging

delay is unique in that it has to be chained via &&, it delays the chained command by n> seconds. Chaining also allows passing the same value to two commands, for example cheatMode && scannerTheft true.

All thirty-two commands

The gate

CheatMode
Unlock everything that changes gameplay or skips progression.
ScannerTheft
Let the scanner loot entities that are still alive.

Entities

Spawn
Place an entity, optionally player-side, with factions, N px out — Spawn player Human Rebel 200.
give
Hand a unit an augment, mod chip or item; any stat can be set inline. give -examples for the forms.
kill
Kill a unit or a group — kill dawkins, kill hostiles.
resurrect
Revive a fallen unit at N health, or full health if the number is left off.
setTurn
Hand the current turn to a named unit.
TickStatus
Advance status effects one tick, on a unit, a group, or all.
SetName
Rename the active unit, or one named explicitly.
Scanner
Fire the stat scanner on the next player turn.
Unstuck
Move the active entity to the nearest open position.

Stats

Eight setters generated from one registration, all shaped set<stat> [name|all|allies|hostiles] <value> — health, maxHealth, energy, maxEnergy, shield, maxShield, speed, moveEfficiency.

World and time

setTime
Move the day/night cycle by hour or by name — 0–24, day, noon, dusk, night, dawn.
timeScale
Engine time-scale, 0.0 to 10.0.
pause
Freeze time. Same as timeScale 0.
resume
Restore the time-scale from before the pause.

View and capture

camera
camera bind <name> follows a unit, in or out of battle.
screenshot
PNG of the frame. clean drops the dev readout, bare the whole HUD; the console panel always goes.
record
Frame sequence at a set rate and scale, muxed to mp4 on stop.

The console itself

mods
List, reload, enable or disable the loaded C# mods.
help
Every command, or the usage of one.
delay
Run the rest of the chain after N seconds. Only meaningful chained.
echo
Print the given text.
clear
Clear the output.
close
Close the console.
Story

Why he's out there

The year is 2471, and humankind has finally found a use for its worst people.

Convicted felons don't sit in cells anymore. They get shipped past the edge of the galaxy and reclassified as explorers and light bringers to our most mysterious cosmos.

Sable "Sauce" Dawkins is doing life for the murder of Wallace John Owens. He'd barely settled into Cathedral, a Star-station penitentiary drifting well outside our own galaxy, when his entire cell block voted. The Blackout Tour is now active.

It's a multi-planet work sentence. Harvest what they ask for, reach the coordinates they send, and you earn the next leg of the tour. Slog through toxic planets full of gross aliens, high-tech militants, creepy androids and other-dimensional behemoths, and keep an eye on the men you're chained to… they may not have your best interests at heart.

Revenge is sweet. Sweet as the candy you'll never eat again, because you've been exiled to space, you idiot.

An early flashback. Written by Brian Tambascio.

Who

Avery Wolfe

I'm a developer in Seattle. B.A. Computer Science, University of Iowa, 2024. I've been building the game since 2023 with Brian Tambascio, who writes the story and makes the art. I write all the code and design how it plays. Alongside eight years in security operations.

Comfortable in C#, Java, Python, and a bit of C/C++.