⚓ Seaworth Games

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

ROTP Tech Tree

Six categories, 270 techs, and a research model that is not what most 4X players expect. Research points do not fill a bar — they buy lottery tickets. And the tree you get is not the tree your neighbour gets: roughly half of it is discarded at random when your empire is created, and never comes back.

Scope base ROTP rules Core TechTree · TechCategory · Tech Data data/techs.txt, 270 records

01The shape of it

Six categories, three different meanings of "level", and a unit called a quintile.

Every empire owns one TechTree holding six TechCategory objects, fixed and indexed 0–5: Computers, Construction, Force Fields, Planetology, Propulsion, Weapons. Research is allocated across them with a 60-tick slider budget. Each category researches exactly one tech at a time and banks its own progress.

Tech, level, quintile

A tech is a concrete item, identified as Type:sequence — for example ShipWeapon:16 or EcoRestoration:3. Every tech carries an integer level from 0 to 100, read from the data file. Levels are grouped into quintiles of five:

quintile = (level + 4) / 5      // integer division: levels 1-5 -> Q1, 46-50 -> Q10

Real research occupies levels 1–50, which is quintiles 1–10. Above that sit the ten future techs per category, at levels 55, 60, 65 … 100. Future techs grant no equipment at all — they exist to absorb research points and keep raising the category level, which still matters for miniaturization and for planetology's worker productivity.

Two different "levels" — the confusing part

maxTechLevel() is the highest level you know. But the number shown in the interface, and the one that drives miniaturization, is techLevel():

techLevel = max(1, 0.80 × highestKnownLevel + knownTechCount − freeTechCount)

Breadth counts as much as depth. Knowing twenty cheap techs raises your category level as much as reaching twenty levels higher. Free starting techs are subtracted, so they give you the equipment without giving you level credit.

Tech records
270
across 6 categories
Free at start
18
identical for every race
Future techs
60
10 per category, levels 55–100

02The discovery roll

The single most important mechanic, and the one most likely to be ported wrong.

There is no completion threshold. Research points accumulate in a category's totalBC, and once that exceeds the current tech's cost, every turn rolls a probability:

private float discoveryChance() {
    float cost = costForTech(tech(currentTech));
    if (totalBC <= cost)
        return 0;
    return (totalBC - cost) / (cost * 2);
}

// ...and in allocateResearchBC(), once per turn:
totalBC = totalBC + currentResearch();          // funded FIRST
if (random() < discoveryChance())
    empire().learnTech(currentTech);            // ...then rolled
0% 50% 100% 1× cost 2× 3× banked, no chance per-turn chance to discover the current tech accumulated research ÷ cost →

So the shape is: bank up to 1× cost with no chance at all, then a linear ramp to a guaranteed discovery at 3× cost. Half the money buys nothing; the second half buys a coin flip; the third buys certainty. Because the turn's points are added before the roll, a single turn can both fund and complete a tech.

Discovery destroys the bank

learnTech calls resetResearchBC() — all banked points in that category are wiped, including everything above the cost. Since discovery is stochastic, some overshoot is always wasted.

More importantly, this fires for any acquisition of the tech you are currently researching. If a diplomat trades you the exact tech you are two turns from finishing, or a spy steals it, or you plunder it from a captured colony — your entire bank in that category evaporates with no refund and no partial credit. Being given a tech can be actively expensive.

03Where research points come from

And the interest rule, which rewards exactly the opposite of what players assume.

Colonies produce research from their research slider, multiplied by the planet's research adjustment (×4 on Orion ruins, ×2 on Antaran ruins), the racial research bonus, and a global hook. The empire sums them once per turn into a single pool, then splits it by the six category sliders.

public float currentResearch(float totalRP) {
    float categoryBC = totalRP * allocationPct();
    float interestBC = RESEARCH_INTEREST * min(totalRP/6, categoryBC);   // 0.25
    return categoryBC + interestBC;
}

That min(totalRP/6, categoryBC) is a bonus capped at an even split. Work through the two extremes:

AllocationEffective RPWhy
Even 6-way split ×1.25 Every category is at exactly the cap, so each earns the full 25% on its whole share.
All in one category ×1.042 The bonus is capped at 25% of one sixth of the pool, no matter how much you pour in.

Spreading research is worth 20% more raw points than focusing it. This is a real, substantial, and almost entirely undocumented pressure toward broad allocation — the opposite of the "rush one category" instinct most 4X players bring to the game. Combined with the fact that the discovery roll pays nothing until you clear 1× cost, a thinly-spread category can sit banking for a long time before it produces anything, which is what makes the pressure feel counterintuitive in play.

04What a tech costs

Quadratic in level, scaled by race, galaxy size, and the research-rate setting.

cost = researchCostBase(level) × researchMapSizeAdjustment × level² × racialMod
       // then rounded up to roughly 3 significant figures

The four factors, in order of how much they vary:

FactorRangeEffect
level² 1 → 2500 The dominant term. A level-50 tech costs 2500× the base of a level-1 tech before anything else applies.
researchCostBase flat 30 on Normal The research-rate option. Normal is the only setting flat in level — every slower setting makes high-level techs disproportionately expensive on top of the quadratic, and Fast asymptotes toward half cost at high level.
researchMapSizeAdjustment √(stars / empires / 12) Normalises pace against galaxy size. Twelve systems per empire is the neutral point; bigger, emptier maps cost proportionally more, offsetting the larger economy they support.
racialMod 0.60 – 1.25 Per-category, per-race. Lower is cheaper.

Race modifiers

Three separate racial levers: a discovery percentage (how much of the tree you can research at all — see §05), a flat research point bonus, and the six per-category cost multipliers.

RaceTree %RP CompConstrFF PlanPropWpn
Psilon75150808080808080
Meklar5010060100100125100100
Klackon5010010060100100125100
Alkari5010010010012510060100
Mrrshan5010010012510010010060
Sakkra5010010010010060100100
Human50100100100608080100
Darlok5010080100100100100100
Bulrathi501001258010010010080
Silicoid5010080125125125125125

Each race's cheap category is its identity: Meklar computers, Klackon construction, Alkari propulsion, Mrrshan weapons, Sakkra planetology. Psilon is cheaper at everything and researches 50% more points and sees half again as much of the tree. Silicoid pays a premium on five of six.

Difficulty does not touch tech cost at all. It scales AI colony output, which indirectly scales AI research points. A harder AI researches faster because it is richer, not because its techs are cheaper.

05Your tree is not the tree

About half of every category is thrown away when your empire is created.

This is the design decision that gives ROTP games their character, and it happens once, silently, at empire creation. Every candidate tech is bucketed by quintile, and each one independently survives a roll against the race's discovery percentage — 50% for almost every race, 75% for Psilon:

for (int i = 0; i < MAX_QUINTILES; i++) {
    boolean found = false;
    for (String id: techsByQuintile[i]) {
        if (random() <= discoveryPct()) { addPossibleTech(id); found = true; }
    }
    if (!found)                                   // never leave a quintile empty
        addPossibleTech(random(techs));
}

Techs that lose the roll are gone for the whole game — not delayed, not more expensive, simply not in your tree. You can still obtain them by trade, espionage, plunder or artifact, but you can never research them. A safety net force-adds one tech if a whole quintile would come up empty, so there is never a dead level band.

Propulsion gets extra protection: fuel-range and warp-engine techs are force-included whenever the gap since your last one reaches a configurable limit, so no empire is ever stranded unable to reach the next star.

Design consequence

Two empires of the same race in the same galaxy have genuinely different strategic options. The Stargate you are counting on may simply not exist for you this game, and the only way to find out is to reach that quintile. It is also why tech trading matters so much: your neighbour is not just ahead of you, they may hold techs you could never have reached on your own.

What you can research right now

You may always research one quintile beyond your highest known quintile. Once you reach future-tech territory you may only advance past your current quintile after clearing every remaining ordinary tech at or below it — which is what stops you from skipping into Future Tech while real techs are still on the table.

06Choosing what to research

There is no lock-out, and the bank does not follow the choice.

When a category needs a new target, the player gets a selection prompt and the AI sorts by its own research priority. Unchosen techs are not removed from the pool — nothing is ever locked out by picking something else, and you can switch the current tech at any time for free by clicking a different node.

Bank and switch

currentTech(Tech) assigns a string and sets a flag. It does not touch totalBC, which belongs to the category, not to the tech being researched.

So you can point a category at an expensive level-50 tech, bank research against it for many turns, then switch to a cheap level-20 tech — and your accumulated bank, now far above 3× that cheaper tech's cost, converts into a guaranteed discovery on the next turn. The bank survives the switch; only discovery clears it. This is a genuine and exploitable asymmetry, and worth deciding about deliberately rather than reproducing by accident.

One more wrinkle on the player side: the selection prompt stops appearing once you finish Future Tech 1. From then on the AI silently picks for you.

07Miniaturization

Old equipment gets cheaper and smaller as the category advances. Two different rates.

gap = min(50, categoryTechLevel − techLevel)

costFactor = 0.933033 ^ gap          // all categories
sizeFactor = 0.933033 ^ gap          // WEAPONS only
           = 0.971640 ^ gap          // everything else

Those constants are more legible as halving distances:

RateValueHalves everyOver the 50-level cap
Fast0.93303310 levels — it is exactly 2−1/10×1/32
Slow0.971640~24 levels×0.237

So cost always shrinks fast, halving every ten category levels regardless of category. Size shrinks fast only for weapons; everywhere else it shrinks at less than half that pace. Power is not miniaturized at all.

The gap is driven by the composite techLevel() from §01 — the one that counts breadth. A wide-but-shallow category miniaturizes just as hard as a deep one, which is another quiet reward for spreading research. Only about seventeen component techs participate; the rest are not miniaturizable.

08Obsolescence

A labelling and valuation signal, not a research gate.

A tech is obsolete when you already own a strictly better one of the same type. Some classes compare levels against the registered best; others compare the stat directly — armor by ground bonus, engines by base warp, fuel range by range level, factories by cost.

Obsolete techs remain researchable and remain in your pool. What obsolescence actually does is gate the registration:

public void provideBenefits(Empire c) {
    super.provideBenefits(c);
    if (!isObsolete(c)) {
        c.tech().topArmorTech(this);      // only a non-obsolete tech becomes your "best"
        c.tech().updateMissileBase();
    }
    c.shipLab().addArmor(new ShipArmor(this, false));   // but it's still added to the lab
}

The component is still added to your ship design lab — you can still build with the older item, and benefit from its much cheaper miniaturized cost — but it does not become the empire's registered best. That is what makes acquiring techs out of order safe: plundering an old armor can never downgrade your current one.

Obsolescence also feeds valuation. The AI scores an obsolete tech at zero, refuses to ask for one in a trade — and is perfectly happy to give one away, which is why AI tech trading feels so stingy.

09What's actually in the tree

270 records across six categories, plus per-category passive bonuses that need no tech at all.

CategoryTechsMain familiesPassive bonuses from category level
Computers45 Battle Computer (12), ECM Jammer (11), Robotic Controls (5), Scanner (4), Hyperspace Comm, Beam Focus Robotic controls, planet scanner range
Construction39 Improved Industrial (8), Armor (7), Industrial Waste (5), Automated Repair (4), Battle Suit (4) Factory waste reduction, ground combat from armor and battlesuits
Force Fields39 Deflector Shield (12), Personal Shield (4), Planetary Shield (4), Repulsor, Cloaking, Stasis Field, Black Hole Planetary shield class, ground combat
Planetology41 Improved Terraforming (9), Control Environment (7), Eco Restoration (5), Biological Weapon (3), Cloning, Soil Enrichment Terraform bonus, waste cleanup
Propulsion41 Fuel Range (9), Engine Warp (9), Energy Pulsar (3), Stargate, Teleporter, Subspace Interdictor, Combat Transporter Ship range, ship speed
Weapons65 Ship Weapon (25), Missile Weapon (11), Hand Weapon (6), Bomb Weapon (5), Torpedo (4), Stream Projector Ground combat bonus

Weapons is by far the largest category, and its TechShipWeapon family is the most parameter-rich thing in the tree — each of the 25 beams varies damage range, range, heavy-mount variant, attacks per round, to-hit computer bonus, shield-piercing multiplier and damage streaming, on top of cost, size and power. Engine Warp is the opposite extreme: nine levels that vary exactly one integer, with everything else derived from it.

A handful of techs are marked restricted — they exist as game content but can never be researched or randomly awarded. These are the monster and guardian weapons: the Death Ray, Amoeba Stream, Crystal Ray, Jellyfish Dart, Squid Ink, and the amoeba's regeneration. Three classes (ShipNullifier, BeamFocus, MissileShield) appear in two categories each, since category membership comes from the data file rather than the class.

10Getting techs without researching them

Six other routes, each with different rules about what it can reach.

RouteReachNotes
Diplomatic trade Anything the partner knows Deferred one turn — the exchange records intent, and the tech is learned at end of turn. Limited to one tech trade per turn per empire. The AI will normally only give away techs it considers obsolete unless you are allied.
Espionage Non-future techs at or below the steal roll Learned immediately, unlike trade. The reachable level scales with your own tech level and is cut by the victim's internal security. Excludes techs you recently traded away.
Ancient artifacts Levels 1–50, ignoring your tree Awarded on scouting, not colonizing. Antaran ruins give 1 tech within 10 levels of your best; Orion artifacts give 3 within 25 levels, minimum level 20. Bypasses the discovery-percentage filter entirely — but never reaches future techs or restricted techs.
Conquering a colony Anything in the defender's empire tree Each factory on the captured planet is an independent 2% chance to plunder one unknown tech, capped by a game option. Selection is uniform random, not "best available". Notably, this path is not blocked by the forbid-tech-stealing option.
The Orion Guardian The Death Ray, specifically The Death Ray is restricted, so killing the Guardian is the only way any empire can ever obtain it.
Random events Varies by event Derelict ships and relics grant batches of techs within 10 levels of the relevant category. Killing space monsters can instead inject raw research points, or complete the current tech outright. One event runs the other way and wipes a category's accumulated bank.

Alliance-level treaties add a bulk channel: under unity, every tech either partner learns is automatically pushed to the other, and an alliance victory in the council pools everything among the winning bloc.

Every empire also begins with the same 18 free techs — the level-0 defaults plus a handful of level-1 basics like the first two deflector shields. These are identical for every race, are excluded from the researchable pool, and are subtracted from the category level count, so they give you the equipment without any level credit.

11How the AI researches

Inverse-cost weighting, a hard early-game override, and a shared "what do I want" oracle.

Setting the six sliders

  1. Range first, unconditionally. If fuel range is below level 4 and propulsion is under category level 5, the AI puts all sixty ticks into Propulsion and zero everywhere else. Nothing else happens until it can reach more stars.
  2. Inverse-cost weighting. Otherwise each category's share is proportional to 1 / cost of its current tech, so cheap categories get the most points. Leader personality halves the weight of its matching category.
  3. Expansion-mode override. While expanding, everything collapses onto Planetology and Propulsion — whichever of the two is actually blocking growth, or both.
  4. Steal instead of research. If there are stealable techs visible and the AI has the minimum military tech it needs, it shifts points into Computers and out of everything else — buying espionage capacity rather than research.

A per-turn correction pass then zeroes any category that is likely to discover anyway with no funding at all, and de-funds future-tech categories while any ordinary tech remains unresearched.

Valuing a tech

Most techs get a flat 1–4 score by class. The top tier (4) is Hyperspace Communications, Repulsor, Robotic Controls and Soil Enrichment; the bottom (1) is ECM Jammer, Stargate, Torpedoes, and all future techs. A dozen classes are conditional — Control Environment is worth more if it actually opens new planets, biological antidote is worth more if an enemy has a bio weapon you cannot survive, and ship weapons are forced down to 1 if their damage is too low to matter.

One oracle, three consumers

mostDesirableTech is the same call used to pick what to research, what to ask for in a tech trade, and what an AI spy steals. Research priority additionally halves a tech's value for every contact who could hand it over or be robbed of it — the AI genuinely deprioritises researching something it expects to acquire another way.

12Quirks worth knowing

Places where the implementation surprises, including two latent crashes.

  • Bucketing a level-0 tech would crash empire creation. quintile for level 0 is 0, and the bucket array is indexed quintile - 1. It is masked today only because every level-0 tech happens to be flagged free, and free techs are filtered out first. The data file warns about this in prose; nothing enforces it.
  • The empty-quintile fallback injects a Planetology tech into any category. The safety net that force-adds a tech when a quintile comes up empty falls back to a hardcoded EcoRestoration:3 — which, in a non-Planetology category, lands in a recovery branch for "current tech does not belong to this category". The comment shows only the Planetology case was considered.
  • The research-rate constants are deliberately mis-paired, with a source comment admitting it. The identifier named "impeded" maps to the *lethargic* label and the harshest cost factor. Reading the switch without knowing this gives exactly the wrong ordering.
  • Future techs claim to always be researchable and are not. Each future tech overrides its discovery percentage to 1.0, but the tree-building code tests the category's percentage, not the tech's. The override is decorative — future techs survive at the same 50% as everything else, and only get in reliably because the empty-quintile fallback rescues them.
  • The displayed forecast and the applied value can disagree. The applied research uses a pool snapshotted at the start of the turn; the interface forecast recomputes live. Colonies gained or lost mid-turn make the two diverge.
  • A global research multiplier exists and is hardcoded to 1.0, multiplied into every colony's research output to no effect.