On this page
  1. Related
  2. Games
  3. References
  4. Sources

A tech tree sets what a player may build next. In Dune II each structure’s row lists the structures a house must own and a first mission1, and the construction yard checks both, with two exceptions by house2.

  • Owned structuresDune II (1992). Each structure lists the structures a house must own and a first mission, which code moves for some houses.1,2

Games

GameYearHowNote
Dune II1992Owned structureseach structure lists the structures a house must own and a first mission, which code moves for some houses
Factorio2016Researchlabs use up science packs to research one technology at a time, from technologies unlocked by crafting up to the rocket silo and research without end
Every claim about this mechanic, by game (12)
Dune II 1992The executable's structure table sets, among others, a concrete slab at 5 credits, 16 build-time units, and 20 hit points; a windtrap at 300, 48, and 200; a refinery at 400, 80, and 450; a spice silo at 150, 48, and 150; an outpost at 400, 80, and 500; a light factory at 400, 96, and 350; a heavy factory at 600, 144, and 200; and a palace at 999, 130, and 1,000. Each row also names the structures a house must own first and the first mission it can be built in; code moves the light factory's first mission from 3 to 2 for every house but the Harkonnen. PROFILE.INI, read from the game data at start, can replace a row's cost, time, hit points, and first mission, along with its fog radius and its build, target, and sort priorities.Code
The player's construction yard offers a structure once the house owns every structure in its row's requirement set, the mission number has reached the row's first mission, the house may build it, and the yard's upgrade level is high enough. Two exceptions are coded: for the Harkonnen, the WOR, which trains troopers, needs no barracks and opens from the second mission; for other houses, the light factory opens from the second mission. A computer house's yard skips the requirement set and the upgrade level.Code
Factorio 2016Worker robot speed research adds 35%, 40%, 45%, 55% and 65% to robot speed over its first five levels and 65% a level after that, without end; worker robot cargo size research adds one item a level over three levels, for four items a robot.Code
Mining productivity research adds +10% to every mining drill's output per level: levels 1 to 3 cost 250, 500 and 1,000 units, and level 4 repeats without end at 2,500 × (level − 3) units, needing space science.Code
Science packs: automation (red) is 1 copper plate and 1 gear in 5 s; logistic (green) is 1 inserter and 1 transport belt in 6 s; military makes 2 from a piercing magazine, a grenade and 2 walls in 10 s; chemical (blue) makes 2 from 2 engine units, 3 advanced circuits and 1 sulfur in 24 s; production (purple) makes 3 from an electric furnace, a productivity module and 30 rails in 21 s; utility (yellow) makes 3 from 3 low density structures, 2 processing units and a flying robot frame in 21 s. Space science packs aren't crafted: a rocket launched with a satellite returns 1,000.Code
An inserter carries one item per swing until Inserter capacity bonus 2 raises it to 2 and bonus 7 to 3. The bulk inserter carries 2 once researched (its own technology adds one), then 3, 4, 5, 6, 8, 10 and 12 with capacity bonus 1 to 7. Base 2.1.23 has no stack inserter, which belongs to Space Age.Code
A lab researches at speed 1, draws 60 kW, has 2 module slots, and accepts all seven science packs: automation, logistic, military, chemical, production, utility and space. A technology needing a pack the lab doesn't list can't be researched in it.Code
A technology costs a number of units, each needing one set of its science packs and a set time; at lab speed 1 a unit's time is its seconds, so labs working together divide the total. Only one technology is researched at a time per force, though progress on a switched-away technology is kept.Publisher
Six levels of lab research speed add +20%, +30%, +40%, +50%, +50% and +60% to every lab, +250% in all.Code
Seven technologies are unlocked by doing something rather than by labs: Steam power by crafting 50 iron plates, Electronics by crafting 10 copper plates, Automation science pack by crafting a lab, Steel axe by crafting 50 steel plates, Oil processing by mining crude oil, Uranium processing by mining uranium ore, and Space science pack by launching a satellite. Steam power and Electronics need nothing before them, so the tree starts from these two.Code
The base mod's technology.lua in 2.1.23 defines 196 technologies (Space Age adds more, not counted here). Sorted by the most advanced science pack each needs, 15 need automation packs only, 60 reach logistic, 54 chemical, 17 production, 34 utility and 9 space, and 7 are trigger technologies; 64 of them also need military packs. Nine of these are infinite, repeating at a rising cost, among them mining productivity and the weapon damage upgrades.Code
The Rocket silo technology costs 1,000 units of the five packs from automation to utility at 60 seconds each and needs eight technologies first. A rocket takes 100 rocket parts (each 10 processing units, 10 low density structures and 10 rocket fuel, 3 s); launching one with a satellite returns 1,000 space science packs and unlocks the Space science pack technology, which leads to the infinite technologies.Code

References

  1. ^ abThe executable's structure table sets, among others, a concrete slab at 5 credits, 16 build-time units, and 20 hit points; a windtrap at 300, 48, and 200; a refinery at 400, 80, and 450; a spice silo at 150, 48, and 150; an outpost at 400, 80, and 500; a light factory at 400, 96, and 350; a heavy factory at 600, 144, and 200; and a palace at 999, 130, and 1,000. Each row also names the structures a house must own first and the first mission it can be built in; code moves the light factory's first mission from 3 to 2 for every house but the Harkonnen. PROFILE.INI, read from the game data at start, can replace a row's cost, time, hit points, and first mission, along with its fog radius and its build, target, and sort priorities.CodeOpenDUNErevised
    How we know
    16		/* name                 */ "Concrete",
    ⋮
    35		/* hitpoints            */ 20,
    ⋮
    38		/* buildCredits         */ 5,
    39		/* buildTime            */ 16,
    40		/* availableCampaign    */ 1,
    41		/* structuresRequired   */ FLAG_STRUCTURE_NONE,
    
    src/table/structureinfo.c lines 16–41 at ebea79a · upstream ↗
    601		/* name                 */ "Windtrap",
    ⋮
    620		/* hitpoints            */ 200,
    ⋮
    623		/* buildCredits         */ 300,
    624		/* buildTime            */ 48,
    625		/* availableCampaign    */ 1,
    626		/* structuresRequired   */ FLAG_STRUCTURE_NONE,
    
    src/table/structureinfo.c lines 601–626 at ebea79a · upstream ↗
    796		/* name                 */ "Refinery",
    ⋮
    815		/* hitpoints            */ 450,
    ⋮
    818		/* buildCredits         */ 400,
    819		/* buildTime            */ 80,
    820		/* availableCampaign    */ 1,
    821		/* structuresRequired   */ FLAG_STRUCTURE_WINDTRAP,
    
    src/table/structureinfo.c lines 796–821 at ebea79a · upstream ↗
    1121		/* name                 */ "Spice Silo",
    ⋮
    1140		/* hitpoints            */ 150,
    ⋮
    1143		/* buildCredits         */ 150,
    1144		/* buildTime            */ 48,
    1145		/* availableCampaign    */ 2,
    1146		/* structuresRequired   */ FLAG_STRUCTURE_REFINERY | FLAG_STRUCTURE_WINDTRAP,
    
    src/table/structureinfo.c lines 1121–1146 at ebea79a · upstream ↗
    1186		/* name                 */ "Outpost",
    ⋮
    1205		/* hitpoints            */ 500,
    ⋮
    1208		/* buildCredits         */ 400,
    1209		/* buildTime            */ 80,
    1210		/* availableCampaign    */ 2,
    1211		/* structuresRequired   */ FLAG_STRUCTURE_WINDTRAP,
    
    src/table/structureinfo.c lines 1186–1211 at ebea79a · upstream ↗
    211		/* name                 */ "Light Fctry",
    ⋮
    230		/* hitpoints            */ 350,
    ⋮
    233		/* buildCredits         */ 400,
    234		/* buildTime            */ 96,
    235		/* availableCampaign    */ 3,
    236		/* structuresRequired   */ FLAG_STRUCTURE_REFINERY | FLAG_STRUCTURE_WINDTRAP,
    
    src/table/structureinfo.c lines 211–236 at ebea79a · upstream ↗
    276		/* name                 */ "Heavy Fctry",
    ⋮
    295		/* hitpoints            */ 200,
    ⋮
    298		/* buildCredits         */ 600,
    299		/* buildTime            */ 144,
    300		/* availableCampaign    */ 4,
    301		/* structuresRequired   */ FLAG_STRUCTURE_OUTPOST | FLAG_STRUCTURE_WINDTRAP | FLAG_STRUCTURE_LIGHT_VEHICLE,
    
    src/table/structureinfo.c lines 276–301 at ebea79a · upstream ↗
    146		/* name                 */ "Palace",
    ⋮
    165		/* hitpoints            */ 1000,
    ⋮
    168		/* buildCredits         */ 999,
    169		/* buildTime            */ 130,
    170		/* availableCampaign    */ 8,
    171		/* structuresRequired   */ FLAG_STRUCTURE_STARPORT,
    
    src/table/structureinfo.c lines 146–171 at ebea79a · upstream ↗
    569	Ini_GetString("construct", NULL, keys, keys, 2000, source);
    ⋮
    596		oi->buildCredits      = buildCredits;
    597		oi->buildTime         = buildTime;
    598		oi->hitpoints         = hitpoints;
    599		oi->fogUncoverRadius  = fogUncoverRadius;
    600		oi->availableCampaign = availableCampaign;
    601		oi->priorityBuild     = priorityBuild;
    602		oi->priorityTarget    = priorityTarget;
    ⋮
    604		oi->sortPriority = (uint8)sortPriority;
    
    src/opendune.c lines 568–604 at ebea79a · upstream ↗
    1904					if (s->o.houseID != HOUSE_HARKONNEN && i == STRUCTURE_LIGHT_VEHICLE) {
    1905						availableCampaign = 2;
    
    src/structure.c lines 1904–1906 at ebea79a · upstream ↗
    945	ReadProfileIni("PROFILE.INI");
    
    src/opendune.c line 945 at ebea79a · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Revised after a check by a second AI model, 2026-10-22.

    In the claim ledger

  2. ^ abThe player's construction yard offers a structure once the house owns every structure in its row's requirement set, the mission number has reached the row's first mission, the house may build it, and the yard's upgrade level is high enough. Two exceptions are coded: for the Harkonnen, the WOR, which trains troopers, needs no barracks and opens from the second mission; for other houses, the light factory opens from the second mission. A computer house's yard skips the requirement set and the upgrade level.CodeOpenDUNE
    How we know
    1898				if (i == STRUCTURE_WOR_TROOPER && s->o.houseID == HOUSE_HARKONNEN && g_campaignID >= 1) {
    1899					structuresRequired &= ~(1 << STRUCTURE_BARRACKS);
    1900					availableCampaign = 2;
    ⋮
    1903				if ((structuresBuilt & structuresRequired) == structuresRequired || s->o.houseID != g_playerHouseID) {
    1904					if (s->o.houseID != HOUSE_HARKONNEN && i == STRUCTURE_LIGHT_VEHICLE) {
    1905						availableCampaign = 2;
    ⋮
    1908					if (g_campaignID >= availableCampaign - 1 && (localsi->o.availableHouse & (1 << s->o.houseID)) != 0) {
    1909						if (s->upgradeLevel >= localsi->o.upgradeLevelRequired || s->o.houseID != g_playerHouseID) {
    
    src/structure.c lines 1895–1912 at ebea79a · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-22.

    Checked by a second AI model, 2026-10-22.

    In the claim ledger

Sources

Code