Feature Specification

Agriculture

Player-grown crops as a persistent, raidable food source. First playable increment is plant, water, rain, and harvest on valid soil. Fertilizer, pests, and planters are a later increment. Exact numeric tuning remains data work.

Status: draft Owner: UnassignedUpdated: 2026-09-13

Purpose & Player Value

[CONFIRMED 2026-09-13] Agriculture lets players grow food at their own homestead and in the world, including farmland regions. It is a sustainable alternative to scavenging, not a replacement for loot food.

Harvested crops enter inventory as food items and use the existing raw → cooked survival path in FEAT-SURVIVAL. Crop-to-livestock feed is not part of the first increment.

Scope

[CONFIRMED 2026-09-13] First playable increment, after building placement and base persistence (P16 / P17), not in the P00–P20 core-slice gate. Exact numbered phase remains TBD-AGRICULTURE-003.

  • Four crops: Potato, Corn, Tomato, Cabbage.
  • Ground planting on valid soil, including player homesteads and world farmland.
  • Seed packets from loot (including ruined farms) plus extra seeds from harvest. No seed crafting in this increment.
  • Care: water-container items and rain on rain-exposed plants. No fertilizer, pests, or season clock.
  • Growth uses server time while the owner is offline and while the area is unloaded.
  • Anyone may water, harvest, or destroy a plant. Harvest is the raid/steal path.
  • World UI is interact prompts only. No dedicated farming screen or Farming skill.

Longer-term design target remains a fuller simulation (fertilizer, pests, planters). That depth is a later increment, not this one.

Out of Scope

First increment excludes:

  • Fertilizer, pest/disease simulation, and a world season calendar.
  • Planters, pots, or other building deployables for roofs, interiors, or invalid soil.
  • Fruit trees or additional crop species.
  • Seed crafting recipes.
  • A Farming learn-by-doing skill.
  • Crop items as livestock feed. Coupling stays in FEAT-LIVESTOCK.
  • Zombies trampling, eating, or otherwise interacting with plants.
  • Irrigation deployables / sprinklers.
  • A plant-count cap, Tool Cupboard-only planting, or extra grief blocklists beyond collision and soil validation.
  • Runtime implementation, authored meshes, and owner PIE. Those start only after this design and TBD-AGRICULTURE-003 data/assets are ready.

Terminology

TermMeaning
CropOne of the four cultivated plant types.
Plant instanceOne persistent planted crop in the world, with growth, water, and lifetime state.
Valid soilLandscape or physics dirt, grass, or farmland. Concrete, roads, wood, metal, and water are invalid.
Seed packetInventory item consumed to plant one instance of that crop.
Rain-exposedSame outdoor / no-overhead-shelter test as FEAT-WETNESS-RAIN. Rain-exposed plants receive rain water.
LifetimeServer-time duration after which a living plant expires and must be cleared and replanted.

Functional Behavior

Placement

[CONFIRMED] Use a seed packet on valid soil. No hoe or shovel is required. Server validation: soil type, no disallowed collision overlap, and that the seed exists in the interacting inventory. There is no per-player or per-server plant cap. Roads, doorways, POIs, and other players’ bases are not extra-blocked unless they fail soil or collision checks.

[RISK] No cap plus plant-anywhere-on-soil can grief paths and raise simulation cost on a ~40–60 player dedicated server. Measure that cost under TBD-AGRICULTURE-003; do not add an unapproved cap.

Farmland

[CONFIRMED] World farmland is not a special plot type. It is better soil: faster growth and/or lower water drain than ordinary dirt/grass. Magnitude is data. Any biome that presents valid soil may be planted; the first increment does not ban crops by biome.

Water

[CONFIRMED] Watering consumes existing water-container items from survival/inventory. Rain replenishes water on rain-exposed plants while server weather is raining. Sheltered plants need manual watering. Drain rates, pour amounts, and rain recharge are data.

Growth

[CONFIRMED] Growth uses dedicated-server real time in an hours-scale band, including while the planter is offline and while the cell is unloaded. Exact hours per crop stay in data. Farmland is a bonus, not a second growth system. Day/night does not add a season clock; environment is biome/zone plus rain, consistent with survival v1.

Harvest

[CONFIRMED] A mature plant may be harvested repeatedly until lifetime ends or the plant withers. Each successful harvest grants the crop item and extra seeds. Yield counts are data. After lifetime expiry or drought death, the instance becomes a withered/expired plant that must be cleared before replanting on that spot. Action.HarvestCrop requires no tool role; do not add ChopWood or Hammer to this increment. Canonical empty gate: FEAT-INVENTORY.

Failure

[CONFIRMED] Insufficient water first stunts growth, then withers the plant. A withered plant does not produce harvest. It occupies the spot until cleared. Player damage can destroy a living or withered plant (steal-and-destroy). Zombies ignore plants in this increment.

States & Flows

[CONFIRMED] Authoritative plant states:

StateMeaningAllowed actions
Empty valid soilNo plant instance.Plant with a matching seed packet.
GrowingPlanted, not yet harvest-eligible. Tracks water and elapsed server time.Water. Destroy. Rain may add water if rain-exposed.
HarvestableMature; lifetime still remaining.Harvest, water, destroy. Harvest does not remove the plant.
Withered / expiredDied from drought or reached lifetime end.Clear, or destroy. Cannot harvest or water back to life.

Loop: acquire seed → plant on valid soil → water / receive rain → grow → harvest (repeat while alive) → expire or wither → clear → replant.

Plant, water, harvest, and clear are short server-validated interacts. Movement, damage, or death before commit cancels the action. A cancelled plant does not consume the seed. Water is consumed only on a successful commit.

Rules & Edge Cases

  • Authority: dedicated server owns plant records, validation, growth, water, harvest, and destruction. Clients predict prompts only.
  • Permissions: any player who can reach the instance may water, harvest, or destroy it. No squad authorization gate in this increment.
  • Concurrent interacts: the first valid server request wins. Later requests for the same harvest or plant fail.
  • Inventory full: harvest does not complete. The plant stays harvestable. Nothing is dropped as overflow.
  • Disconnect: an in-flight interact that has not committed is cancelled without consuming the seed.
  • Unload / reload: persist the record. On load, apply elapsed server time to growth, water drain, lifetime, and drought stunt/death. Do not require the cell to stay loaded for time to pass.
  • Server restart: restore every plant record from SQLite the same way building pieces restore. Then apply elapsed server time from the saved timestamp.
  • Indoor / sheltered soil: if dirt/grass exists under shelter, planting is allowed. Rain does not water those plants.
  • Building overlap: a plant cannot occupy a location that fails collision overlap. Destroying a plant does not destroy building pieces, and destroying a piece does not auto-harvest the plant; a blocked or overlapping result is a failed validation or a destroyed plant if the piece occupies its collision.

First crop set

[CONFIRMED] Content identity only. Nutrition, stack size, weight, yield, seed return, growth hours, water drain, and lifetime hours are data under TBD-AGRICULTURE-003. No runtime Data Assets or meshes are claimed here.

CropSeed sourceHarvest outputReplant
PotatoLooted seed packet; extra seeds from harvestPotato food item + seedsAfter lifetime/wither, clear then plant again
CornSameCorn food item + seedsSame
TomatoSameTomato food item + seedsSame
CabbageSameCabbage food item + seedsSame

All four use the same state machine, including repeat harvest until lifetime ends. Food use and cooking remain owned by survival/crafting.

Persistence, replication, UI

[CONFIRMED] Runtime data ownership: crop definitions as Data Assets; each plant instance as a durable SQLite record, following the building persistence pattern in FEAT-BUILDING and TECH-NETWORK-ARCH. Interactive plants replicate as relevant actors when in range; exact actor-versus-ISM promotion is implementation work and must preserve the stable record id.

Saved fields must be enough to reconstruct state after unload or restart: crop type, transform, growth progress, water, lifetime remaining, and last simulation timestamp. Do not treat elapsed client time as growth.

UI: world interact prompts for Plant / Water / Harvest / Clear. No farming menu, radial, or HUD crop meter in this increment. Prompt copy and input binding follow FEAT-HUD-UI interact conventions; they are not a new screen in that catalog.

Dependencies

Approved coupling for the first increment:

  • FEAT-SURVIVAL — crop items restore hunger through the existing food path; water containers are the watering items.
  • FEAT-WETNESS-RAIN — rain-exposed test for automatic watering. Rain still does not change zombie AI or loot.
  • FEAT-INVENTORY — seed packets, crop stacks, water items, inventory-full harvest refusal. Crop harvest has no tool-role requirement.
  • FEAT-BUILDING — collision with pieces; persistence pattern. Planters wait for a later increment.
  • FEAT-CRAFTING-PROGRESSION — cooking of crop food. No Farming skill and no seed recipes in this increment.
  • FEAT-LIVESTOCK — no feed coupling yet.
  • FEAT-HUD-UI — world interact prompts only.
  • TECH-NETWORK-ARCH — server authority, relevancy, SQLite.
  • PIPE-ROADMAP — after P16/P17; exact phase id open.
  • DEC-BACKLOG

Related meshes, animations, audio, and Unreal asset paths: not specified or verified.

Acceptance Criteria

  • AC-AGRICULTURE-DOC-001: confirmed first-increment rules and remaining data TBDs are separately visible in this document and indexed from the hub.
  • AC-AGRICULTURE-DESIGN-001: owner decisions define the initial crop set, states, inputs/outputs, permissions, failure cases, and offline/restart policy. Met 2026-09-13 except numeric tuning in TBD-AGRICULTURE-003.
  • AC-AGRICULTURE-PLAY-001: after implementation, the owner validates plant/water/rain/harvest, steal/destroy from a second client, inventory-full refusal, wither/clear/replant, unload catch-up, and server restart against this spec. No runtime acceptance is claimed here.

Open Questions

TBD-AGRICULTURE-001 — Content and cultivation loop

[RESOLVED 2026-09-13] First increment: Potato, Corn, Tomato, Cabbage. Plant seeds on valid dirt/grass/farmland with no tool. Water with existing water items; rain waters rain-exposed plants. Repeat harvest until lifetime ends. Drought stunts then withers; clear before replant. Fertilizer, pests, seasons clock, planters, seed crafting, trees, Farming skill, and livestock feed are later or excluded as listed in Out of Scope.

TBD-AGRICULTURE-002 — World rules and persistence

[RESOLVED 2026-09-13] No plant cap. Placement is soil + collision only. Anyone may water, harvest, or destroy. Offline and unloaded growth use server timestamps. Restart restores SQLite records then applies elapsed time. Zombies ignore plants. Full steal-and-destroy raiding. Data Assets + SQLite records. World prompts only.

TBD-AGRICULTURE-003 — Delivery and tuning

Still open: exact numbered roadmap phase after P16/P17; per-crop growth hours, lifetime hours, water drain, pour amount, rain recharge, farmland bonus, harvest yields, seed-return counts, item weights/nutrition/stack limits; authored meshes/audio; measured simulation budgets for uncapped persistent plants on a dedicated server.

Revision history

2026-09-13 — Owner resolved first-increment loop, world rules, and persistence. Remaining work is numeric/asset/phase tuning under TBD-AGRICULTURE-003.

2026-09-13 — Added the owner-requested system scope. Detailed mechanics were unresolved at that time.