Files
dota_factory/docs/requirements.md

6.4 KiB
Raw Blame History

Requirements

Game World

  • REQ-GW-1: The game world has a fixed height and scrolls horizontally.
  • REQ-GW-2: The scrollable area extends from the asteroid's left edge to the current set of enemy defence stations.
  • REQ-GW-3: The world is divided into a tile grid. Buildings and belts occupy tiles.
  • REQ-GW-4: The asteroid occupies a configurable number of tile columns on the left side of the world. Additional columns can be unlocked during play (see REQ-EXP).

HQ & Game Over

  • REQ-HQ-1: The HQ is pre-placed at the asteroid's right edge at game start.
  • REQ-HQ-2: The HQ has a belt input port. Building blocks delivered to it are added to the global building blocks stock.
  • REQ-HQ-3: If the HQ is destroyed, the game ends and the final survival time is shown.
  • REQ-HQ-4: Factory buildings are never targeted or destroyed by enemies.

Building Placement

  • REQ-BLD-1: The player places buildings from a build menu. Placement costs building blocks from the global stock.
  • REQ-BLD-2: Placed buildings enter a construction queue and are built one at a time. Each building takes a defined amount of time to construct.
  • REQ-BLD-3: Buildings can only be placed on asteroid tiles.
  • REQ-BLD-4: Shipyards must be placed at the asteroid's right edge.

Buildings

  • REQ-BLD-5: Miner (2×2): The player selects which ore type it extracts. Produces ore indefinitely (no depletion).
  • REQ-BLD-6: Smelter (2×2): Converts ore or scrap into basic materials. No recipe selection required.
  • REQ-BLD-7: Assembler (3×3): The player selects a recipe from the config-defined crafting tree. Produces the selected output item.
  • REQ-BLD-8: Reprocessing Plant (3×3): Consumes scrap and produces higher-level intermediate products. Each product type has a fixed drop probability per processing cycle.
  • REQ-BLD-9: Shipyard (4×2): The player selects a blueprint. Automatically produces one ship of that type whenever all required materials are available in its input buffer.
  • REQ-BLD-10: Belt (1×1): Transports materials one tile at a time. Available in straight and curved variants.
  • REQ-BLD-11: Splitter (1×1): Splits an incoming belt into two outgoing belts.

Material Transport & Buffers

  • REQ-MAT-1: Materials are transported exclusively via belts and splitters.
  • REQ-MAT-2: A building accepts any material arriving from a belt feeding into it, provided that material is required by the currently selected recipe.
  • REQ-MAT-3: Each building has one fixed output port from which produced items are placed onto a connected outgoing belt.
  • REQ-MAT-4: Each building's input buffer holds up to twice the quantity of each input material needed for one production cycle.
  • REQ-MAT-5: The building blocks stock is the only global inventory. All other materials exist only in building buffers or on belts.

Resources

  • REQ-RES-1: Ore is extracted by miners and smelted into basic materials.
  • REQ-RES-2: Scrap is collected by salvage ships from destroyed enemy ships and delivered to the asteroid. It can be smelted (same output as ore smelting) or processed in a Reprocessing Plant.
  • REQ-RES-3: Building blocks are produced by an assembler recipe and are the only globally pooled resource.
  • REQ-RES-4: The crafting tree (recipes, inputs, outputs, durations) is defined in a config file.

Ships

  • REQ-SHP-1: Ships are produced by shipyards and are fully autonomous; they require no player input once produced.
  • REQ-SHP-2: Combat ships — move right through space and engage enemy ships automatically.
  • REQ-SHP-3: Salvage ships — move to the battlefield, collect scrap from destroyed enemy ships, and return it to the asteroid. Vulnerable to enemy ships while operating.
  • REQ-SHP-4: Repair ships — move to damaged player defence stations and player ships and repair them.
  • REQ-SHP-5: The player selects which blueprint a shipyard produces by clicking it and choosing from unlocked blueprints.
  • REQ-SHP-6: The initial set of blueprints is available from the start. Additional blueprints are unlocked as loot from destroyed enemy defence stations.

Defence Stations

  • REQ-DEF-1: A set of player defence stations is pre-placed in space at the asteroid's right edge at game start.
  • REQ-DEF-2: Player defence stations automatically fire at approaching enemy ships.
  • REQ-DEF-3: Player defence stations can be destroyed by enemies and repaired by repair ships.
  • REQ-DEF-4: A set of enemy defence stations is placed at the right boundary of the scrollable area at game start.
  • REQ-DEF-5: Enemy defence stations automatically fire at player ships.
  • REQ-DEF-6: When all enemy defence stations in a set are destroyed, the push scaling multiplier is applied, the scrollable area is extended, and a new (stronger) set of enemy defence stations is placed at the new boundary. The destroyed stations drop ship blueprint loot.

Enemy Waves

  • REQ-WAV-1: Enemy ships spawn in waves off-screen to the right and travel left toward the asteroid.
  • REQ-WAV-2: A wave spawns its ships over a period of several seconds. After spawning completes, a configurable gap elapses before the next wave begins spawning.
  • REQ-WAV-3: Waves consist of a single enemy ship type. Enemy ship stats scale with the current difficulty level.
  • REQ-WAV-4: A grace period at game start passes before the first wave spawns.

Difficulty Scaling

  • REQ-DIF-1: The difficulty level is a multiplier applied to enemy ship stats.
  • REQ-DIF-2: Time scaling — the difficulty multiplier increases gradually as a function of elapsed game time.
  • REQ-DIF-3: Push scaling — each time the player destroys a set of enemy defence stations, the difficulty multiplier is multiplied by a configurable push scaling factor.
  • REQ-DIF-4: Time scaling and push scaling stack multiplicatively.
  • REQ-DIF-5: The push scaling factor is configurable. It is the same factor applied to the strength of replacement enemy defence stations.

Asteroid Expansion

  • REQ-EXP-1: The player can unlock additional asteroid tile columns by spending building blocks from the global stock.
  • REQ-EXP-2: Each unlocked column costs a fixed, configurable amount of building blocks.

UI

  • REQ-UI-1: The elapsed survival time is always visible.
  • REQ-UI-2: The current global building blocks stock is always visible.
  • REQ-UI-3: The player can click a building to inspect its contents and change its selected recipe or blueprint.
  • REQ-UI-4: The player can scroll the view horizontally across the scrollable area.