⚓ Seaworth Games

Remnants of the Precursors · ↑ Systems Map · Design series 05

ROTP Races

The ten original races are pure data — one text file each, no per-race code anywhere in the game. Each is defined by about a dozen numbers, and almost every race changes only two or three of them from the default. The whole identity of a species is a handful of multipliers.

Scope the ten original races Data races/<Race>/definition.txt Parser RaceFactory · SpeciesSkills

01How a race is defined

One data file, a few hundred lines — and only about fifteen of them are gameplay.

Every race is a definition.txt under races/<Race>/, parsed by a single factory into a SpeciesSkills object. The overwhelming majority of each file is presentation: mugshots, diplomat sprite placement, transport landing animations, troop death frames, flag artwork, voice and ambience keys. The gameplay lives in roughly fifteen lines at the end.

Essentially zero per-race code

Grepping the entire source for literal race names turns up almost nothing outside the species package. There is no if (isKlackon()) anywhere. A race is its numbers, its language files, and its artwork — which is why the game supports custom species at all.

The gameplay keys, and what varies across the ten originals:

KeyControlsVaries?
popmodPopulation growth rateSakkra, Silicoid
prodmodWorker productivity, factories per population, refit exemptionKlackon, Meklar
techmodHow much of the tech tree you can research; research point bonusPsilon
researchSix per-category research cost multipliersAll ten
diplomodTrade bonus, diplomacy bonus, council vote bonusHuman
spymodSpy cost, internal security, infiltration, diplomacy maskingDarlok
groundmodFlat bonus to every ground-combat rollBulrathi
shipmodShip attack, defence, initiativeMrrshan, Alkari
ignoreEcoImmunity to planet environment and industrial wasteSilicoid
relationsBaseline opinion of every other raceAll ten
personality / objectiveProbability distributions for the leader's temperamentAll ten
shipdesign28 weights steering how the AI auto-designs shipsAll ten

Note the pattern: eight of the ten races change exactly one or two mechanical numbers from the baseline. Only research, relations and the leader distributions vary across the board. The design is deliberately sparse — one strong, legible advantage per race rather than a dense stat block.

02The comparison

Every field where the ten originals actually differ. Baseline values are dimmed.

Economy, growth and combat

Race Pop growth Worker prod Factories
per pop
Ground
combat
Ship
atk / def / init
Environment
Human×1.0×1.0———Normal
Alkari×1.0×1.0——0 / +3 / +3Normal
Bulrathi×1.0×1.0—+25—Normal
Darlok×1.0×1.0———Normal
Klackon×1.0×2.0———Normal
Meklar×1.0×1.0+2——Normal
Mrrshan×1.0×1.0——+4 / 0 / +4Normal
Psilon×1.0×1.0———Normal
Sakkra×2.0×1.0———Normal
Silicoid×0.5×1.0———Immune

Meklar also ignore factory refit costs — their factories are never stranded at an obsolete robotic-controls level.

Research

Race Tree seen RP output Comp Constr Force F Plan Prop Wpn
Human50%×1.0100100608080100
Alkari50%×1.010010012510060100
Bulrathi50%×1.01258010010010080
Darlok50%×1.080100100100100100
Klackon50%×1.010060100100125100
Meklar50%×1.060100100125100100
Mrrshan50%×1.010012510010010060
Psilon75%×1.5808080808080
Sakkra50%×1.010010010060100100
Silicoid50%×1.080125125125125125

The six category numbers are cost multipliers — lower is better. "Tree seen" is the probability each individual tech survives the per-empire thinning at empire creation; techs that fail that roll can never be researched by that empire at all.

Diplomacy and espionage

Race Trade bonus Diplomacy Council vote Spy cost Internal security Infiltration Masks intent
Human+25%+60+0.20×1.0——no
Darlok———×0.5+0.20+0.20yes
The other eight races are baseline on every column above.

03What each stat actually does

Where the numbers land in the game's formulas.

Population growth

baseGrowthRate = max(0, (1 - currentPop / maxPop) / 10);
...
baseGrowthRate *= empire.growthRateMod();      // popmod / 100

A flat multiplier on the logistic growth curve. Sakkra's doubling compounds hard, because faster growth means earlier maximum population means more production means faster everything. Silicoid's halving is the price of their environmental immunity.

Worker productivity and factories

workerProductivity() = ((planetologyTechLevel * 3 + 50) / 100) * workerProductivityMod();
maxRobotControls()   = topRobotControls() + robotControlsAdj();

Klackon's doubled worker productivity is the single largest raw economic modifier in the game — every colonist produces twice the BC. Meklar's +2 works differently: it raises how many factories each unit of population can operate, so their colonies out-produce equivalents at the same population rather than needing more of it.

Ground combat

troopCombatAdj(defending) =
    raceGroundBonus + armorBonus + battleSuitBonus + shieldBonus + weaponBonus
    + (defending ? 5 : 0);

// then, per individual trooper:
attRoll = random(100) + attacker.combatAdj();
defRoll = random(100) + defender.combatAdj();
if (attRoll < defRoll)  attacker loses a trooper;
else                    defender loses a population;

Ground combat is resolved one soldier at a time as a pair of d100 rolls. Bulrathi's +25 applies on both attack and defence, and the defender always gets an additional +5.

That defender's +5 matters more than it looks. Against equal tech, an ordinary attacker wins only 45% of individual exchanges — invading is a losing proposition unless you bring more troops than the defender has population. Bulrathi's bonus lifts that to 68%, which flips invasion from expensive to efficient. It is the difference between needing a two-to-one advantage and needing none.

Ship bonuses

shipAttackBonus adds to the attack level used in every to-hit calculation. shipDefenseBonus adds to both beam and missile defence. shipInitiativeBonus adds to combat initiative, deciding who fires first. Mrrshan get attack and initiative; Alkari get defence and initiative. Both hit first; the Mrrshan hit harder, the Alkari are harder to hit.

Environmental immunity

The Silicoid flag is the broadest single ability in the game. It makes waste cleanup cost zero and factory productivity immune to pollution, skips the planet's growth penalty entirely, and lets them colonise every planet type from turn one without any Controlled Environment technology. In exchange they grow at half speed and pay a 25% research premium on five of six categories.

Research modifiers

Two separate levers that are easy to confuse. Tree seen is the probability each tech survives the per-empire thinning — it determines what exists for you. RP output is a flat multiplier on research points produced. The six category numbers multiply the cost of every tech in that category. Psilon are the only race that gets all three at once, which is why they are the strongest research race by a wide margin rather than a narrow one.

04Race relations

A baseline opinion of every other species, before any treaty or grievance.

Each race declares a default opinion plus specific exceptions. This value is the constant floor of the relations scale — it is added before treaty adjustments and before the sum of live incidents, so it biases every relationship from first contact onward.

views → HumAlkBulDarKla MekMrrPsiSakSil
Human 317777 77777
Alkari 7310−7−7 0−310−70
Bulrathi 7031−70 0−7000
Darlok 7−7−731−7 −7−7−7−7−7
Klackon 7−70−731 0−70−77
Meklar 700−70 3100−77
Mrrshan 7−31−7−7−7 0310−190
Psilon 700−70 003100
Sakkra 7−70−7−7 −7−190310
Silicoid 700−77 700031

Three patterns fall straight out of the grid:

  • Everyone likes Humans. Human is the only race whose default opinion of everyone is +7, and every other race lists Human as a +7 exception. Combined with their trade, diplomacy and council bonuses, Human is unambiguously the diplomatic race.
  • Nobody likes Darloks. Darlok's default opinion of everyone is −7, and every other race lists Darlok as a −7 exception. The spy race starts every relationship in the hole.
  • Two real feuds. Mrrshan and Alkari sit at −31 mutual — the deepest hostility in the game, and near the hate-war threshold before anything has even happened. Mrrshan and Sakkra are at −19. Meanwhile Klackon, Meklar and Silicoid form a quiet +7 bloc.
Symmetric by data, not by design

The mechanism is one-directional — each race declares its own opinions and nothing requires the other side to agree. But across the ten shipped races every pair is in fact reciprocal. A custom species could easily create a one-sided rivalry; none of the originals do.

05Leader tendencies

Not a fixed trait — a probability distribution rolled once per game.

Each race declares two six-way distributions, one over leader personalities and one over objectives. A leader is drawn from them when the empire is created, so the same race plays differently between games. Every race uses the same shape: one dominant option at 50–60%, with the remainder spread thinly.

RaceLikely personalityChanceLikely objectiveChance
HumanHonorable60%Diplomat50%
AlkariHonorable60%Militarist50%
BulrathiAggressive60%Ecologist50%
DarlokAggressive60%Diplomat50%
KlackonXenophobic60%Industrialist50%
MeklarErratic60%Industrialist50%
MrrshanRuthless60%Militarist50%
PsilonPacifist60%Technologist50%
SakkraAggressive60%Expansionist50%
SilicoidXenophobic60%Expansionist50%

Most of these read as intended — Psilon pacifist technologists, Mrrshan ruthless militarists, Klackon xenophobic industrialists, Sakkra aggressive expansionists. Two are worth a second look: Bulrathi lean Ecologist, which sits oddly against a race whose entire mechanical identity is ground invasion; and Darlok lean Diplomat, which is either a joke or a deliberate cover story for the spy race.

These distributions matter because leader traits modify almost every diplomatic threshold in the game — war thresholds, how long grievances are remembered, pact and alliance thresholds, and how readily an empire exploits a weaker neighbour. Randomising AI personalities in the game options bypasses the race distributions entirely.

06The ten races

What each one is actually for.

Human

The diplomat

The only race with any diplomacy modifiers at all: +25% trade profit, a large relations bonus that also speeds trade-route growth, and +0.20 council vote weight. Everyone starts liking them.

Edge: alliances, trade income, and the council victory. Cost: nothing mechanical — they are baseline everywhere else, with mildly cheap force fields and propulsion.

Psilon

The researcher

Sees 75% of the tech tree instead of 50%, produces 1.5× research points, and pays 20% less for every category. Three separate research advantages stacked.

Edge: reaches technologies other empires literally cannot research. Cost: nothing — Psilon are baseline in every other respect, which makes them the least conditional race in the game.

Klackon

The industry

Double worker productivity. Every colonist generates twice the BC, which feeds construction, research and fleets simultaneously.

Edge: the largest raw economic multiplier in the game. Cost: 25% more expensive propulsion, so they expand and manoeuvre slowly — a rich empire with short arms.

Silicoid

The rock

Immune to planet environment entirely — zero waste cleanup, no pollution drag, and every planet type colonisable from turn one with no Controlled Environment tech needed.

Edge: the whole galaxy is habitable immediately. Cost: half growth rate and +25% research cost in five of six categories. Enormous reach, very slow to fill it.

Sakkra

The swarm

Double population growth, and 40% cheaper planetology on top — so they both fill worlds faster and terraform them cheaper. Colonies reach maximum population in half the time.

Edge: the fastest empire to convert territory into economy, with no research penalty anywhere. Cost: none in the stats — their limiter is social: a −19 grudge with the Mrrshan, four other races at −7, and aggressive expansionist leaders who start wars.

Meklar

The machine

+2 factories per unit of population, and exempt from factory refit costs — their industry is never stranded at an obsolete robotic-controls level.

Edge: more output per colonist than anyone but Klackon, without needing the population. Cheap computers. Cost: expensive planetology.

Mrrshan

The gunners

+4 ship attack and +4 initiative. They fire first and hit more often, and their weapons research is 40% cheaper.

Edge: wins the opening exchange of almost any fleet battle. Cost: expensive construction, and a −31 blood feud with the Alkari plus a −19 grudge with the Sakkra.

Alkari

The pilots

+3 ship defence and +3 initiative. They also act first, but survive rather than punish, and their propulsion research is 40% cheaper.

Edge: fast, evasive fleets with long reach. Cost: expensive force fields — they dodge well but shield poorly — and the mutual −31 with Mrrshan.

Bulrathi

The invaders

+25 to every ground combat roll, on attack and defence alike. That lifts the per-soldier win rate against equal tech from 45% to 68% — the difference between invasion being a losing trade and a winning one.

Edge: takes planets rather than destroying them — and captured colonies carry a chance to plunder tech. Cost: expensive computers.

Darlok

The spies

Half-price spies, +0.20 internal security, +0.20 infiltration — more than doubling the base 15% mission success rate — and their diplomatic intent is hidden from the player.

Edge: steals technology reliably and is nearly impossible to spy on. Cost: every race starts at −7 toward them, and they start at −7 toward everyone.

The shape of the roster

Read together, the ten cover distinct axes almost without overlap: two economy races (Klackon by worker, Meklar by factory), two expansion races (Sakkra by growth, Silicoid by habitability), two fleet races (Mrrshan offensive, Alkari defensive), and one each for research, diplomacy, espionage and ground war. Three — Psilon, Human and Sakkra — carry no mechanical downside at all. For Psilon and Human the compensation is having no spike outside their specialty; for Sakkra it is the relations grid, which starts them disliked by half the galaxy.

07Ship design doctrine

28 numbers per race that steer how the AI builds fleets.

Beyond the three combat bonuses, each race carries a shipdesign line of 28 values that the AI's ship-design templates read. It is the least visible race attribute and one of the more influential:

PositionsWhat they steer
1–4Cost bias for small / medium / large / huge hulls — higher means the AI estimates that hull as more expensive and builds it less
5Share of the hull reserved for modules rather than weapons
6–14Component weights by role: shields, ECM, manoeuvrability, armor and specials, weighted separately for fighters, bombers and destroyers
15–17Flags: match enemy speed, use reinforced armor, permit biological weapons
18–28Preferences for specific special devices — pulsars, cloaking, repair, inertial, missile shields, repulsors, stasis, stream projectors, warp dissipators, technology nullifiers, oracle

These weights also feed tech valuation, so a race that prefers a device will research toward it. A separate preferredship key names both the race's ship artwork set and its preferred hull size; the hull size biases AI design, and under an optional rule it also changes real ship cost, space and armor.

08Fields that look like stats and are not

Worth knowing before you read a definition file and draw conclusions.

Several keys in every race file are vestigial or purely cosmetic. Reading them as gameplay values is the easiest mistake to make with this data:

KeyLooks likeActually
species field 1 A biology type — carbon, silicate, robotic. Silicoid has 3, everyone else 1. Dead. The setter, the field and its accessors are all commented out. Everything Silicoid-ish comes from ignoreEco instead.
spyFactories, spyMissiles, spyRebellion Espionage strengths — they sit right where you'd expect spy stats. Animation frame counts for the sabotage cutscenes. The values are literally the number of image files in each race's sabotage folder. The real spy stats are spymod.
homeStarType The race's home star colour. Dead. The parser explicitly swallows the line so it doesn't trip the unknown-key error. Star types come from galaxy generation.
diplomod field 2 A positive-diplomacy modifier. Human ships 200, everyone else 100. Dead. Commented out at every level.
spymod field 4 A telepathy flag. Dead. Every reference is commented out. Every race ships 0 anyway.
year Something about race age or starting era. The calendar epoch shown in the interface, and only the player's race sets it for the whole galaxy.
councilDiplo Council voting behaviour. Sprite scale, offset and opacity for drawing the diplomat at the council podium.
One genuine hidden mechanic

homeworldKey looks like a terrain seed, and usually is — but the parser intercepts four specific magic values and converts them into real bonuses: ship hit points and hull space, a rich or ultra-rich homeworld, a homeworld with artifacts and fertile terrain, or a population income bonus with halved maintenance. None of the ten original races use them; several of the extra races do. If you are auditing race balance from the data files, this is the field that will surprise you.