Skip to content

Block DNA library: 30–40 premade playable blocks (defer Mapbox as gameplay foundation) #80

Description

@BrandDead

Why

Approved direction (2026-07-20): the beta should not depend on live Mapbox/real-address generation for playable territory. Today every block is seeded with the same generic 8×8 grid and fixed Miami coordinates (BlockModeView), so no block feels like a place and combat can't be tuned fairly. Mapbox stays as the selection/recon layer only.

Concept

A Block DNA card = road layout + storefront kit + alley type + cover points + crew placement grid + lighting + ambient behavior + destruction mask + event modifiers (traffic score, income multiplier, heat risk, visibility).

Scope

  • Define the BlockDNA type and extend BlockData (frontend/src/types/block.types.ts) to reference a DNA id
  • Author 30–40 DNA cards across 3 tiers matching the class sheet in concept art: Class 1 urban decay, Class 2 suburban, Class 3 gated estates
  • Each card binds to a location package (authored block plate + zone geometry) per the Adopt canonical visual stack: 2.5D tactical diorama block scene (art bible + camera contract) #77 art contract — start with 1 hero (Las Olas) + 5–10 varied cards, expand to 30–40
  • Seeding: claiming a block assigns a DNA card (per borough/tier), replacing the generic grid seed
  • Gameplay stats (income multiplier, heat risk, cover) read from DNA instead of uniform defaults
  • Persist DNA id through blockPersistence.service.ts / Supabase metadata

Acceptance

Two claimed blocks in different tiers look and play differently without any Mapbox call in the combat path.

Relates: #77, #81-candidate NPC rival crews (they claim from the same library), #45.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendBackend workfrontendFrontend workmapMap & territorymvpMVP milestone featurepriority:highHigh prioritysprint-18Sprint 18 work items

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions