{
  "schema": "fobdrop-original-assets-v1",
  "version": "1.0.0",
  "credit": "FOBDROP / stoltzr — https://fobdrop.com",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "sourceLicense": "MIT",
  "units": "meters",
  "dimensionOrder": ["width", "height", "depth"],
  "axis": "Y-up; +Z front",
  "origin": "ground center",
  "evidenceReviewed": "2026-10-28",
  "sourceCommit": "176cb553bd4a26936c6d42a0359306ceaabeedd7",
  "assets": [
    {
      "id": "field-shelter",
      "name": "Field shelter",
      "gameReference": {
        "name": "Large Shelter",
        "kind": "buildable",
        "sourceId": "large-shelter",
        "source": "src/data/fob-building.ts · buildingItems; src/lib/fob-building/season2-source.json · large-shelter",
        "evidence": "Current FOB catalog name and Season 02 source record. This is distinct from Indirect Fire Shelter (idf). Original artwork uses the referenced placement envelope; it is not an exact game replica."
      },
      "searchAliases": ["large-shelter", "large shelter", "SV_Shelter"],
      "category": "Field kit",
      "recipe": "shelter",
      "dimensionsM": [9, 4.5, 9],
      "dimensionMeaning": ["placement-envelope", "placement-envelope", "placement-envelope"],
      "sourceVisualBoundsM": [-4.56779, -0.00074, -4.5581, 4.5667, 4.59119, 4.56126],
      "sourceClearanceBoundsM": [-4.5, 0, -4.5, 4.5, 4.5, 4.5],
      "dimensionStatus": ["source-derived", "source-derived", "source-derived"],
      "reference": "src/lib/fob-building/season2-source.json · large-shelter.collisionBox (also game.large-shelter.c)",
      "evidence": "Uses the Season 02 placement envelope: 9 × 4.5 × 9 m. The recorded visual box is about 9.134 × 4.592 × 9.119 m. These are distinct meanings; this original design fits the placement envelope. Older Artillery shelter proxies are not used.",
      "description": "Open-sided shelter with an armored canopy, modular ribs and lime identification panels.",
      "model": "models/field-shelter.glb",
      "preview": "previews/field-shelter.svg",
      "bytes": 51264,
      "triangles": 638,
      "sha256": "2805e7e59c5e574349a33a37567a567d295048de62412b1b1f7a746f506104c0"
    },
    {
      "id": "observation-tower",
      "name": "Observation tower",
      "gameReference": {
        "name": "Recon Tower",
        "kind": "buildable",
        "sourceId": "tower",
        "source": "src/data/fob-building.ts · buildingItems; src/components/fob-building/planner/planner.js · GAME.tower",
        "evidence": "Current FOB catalog name. The catalog documents crow’s nest as the Season 02 patch name; the model key is crowsnest. This original design is not an exact game replica."
      },
      "searchAliases": ["tower", "recon tower", "crow's nest", "crows nest", "crowsnest"],
      "category": "Field kit",
      "recipe": "tower",
      "dimensionsM": [6, 7.6, 6],
      "dimensionMeaning": ["placement-envelope", "placement-envelope", "placement-envelope"],
      "sourceVisualBoundsM": [-3, 0, -3, 3, 7.6, 3],
      "sourceClearanceBoundsM": [-3, 0, -3, 3, 7.6, 3],
      "dimensionStatus": ["source-derived", "source-derived", "source-derived"],
      "reference": "src/components/fob-building/planner/planner.js · GAME.tower.b and GAME.tower.c",
      "evidence": "Uses the current planner reference: 6 × 7.6 × 6 m. Published visual and placement bounds agree. The older Artillery proxy (7.3 × 7.1 × 7.5 m) is superseded here. Deck at 4 m and construction details remain original design estimates.",
      "description": "Raised observation deck, open ladder access and a solid protective canopy.",
      "model": "models/observation-tower.glb",
      "preview": "previews/observation-tower.svg",
      "bytes": 47660,
      "triangles": 590,
      "sha256": "38c87fe91c46fd088f42abf9c6d3193db51d7f555abd7b9470ab690e5909a989"
    },
    {
      "id": "defensive-barrier",
      "name": "Defensive barrier",
      "gameReference": {
        "name": "HESCO Wall",
        "kind": "buildable",
        "sourceId": "hw",
        "source": "src/data/fob-building.ts · buildingItems; src/components/fob-building/planner/planner.js · GAME.hw",
        "evidence": "Current FOB catalog name and hblockquadwall source model key. The original four-cell wall uses the placement envelope, not copied game geometry."
      },
      "searchAliases": ["hw", "hesco wall", "hesco", "hblockquadwall"],
      "category": "Field kit",
      "recipe": "barrier",
      "dimensionsM": [6, 3.117, 1.5],
      "dimensionMeaning": ["placement-envelope", "placement-envelope", "placement-envelope"],
      "sourceVisualBoundsM": [-0.75, 0, -3, 0.75, 3.108, 3],
      "sourceClearanceBoundsM": [-0.75, 0, -3, 0.75, 3.117, 3],
      "sourceToModel": "Quarter turn around Y: the source wall runs along Z; the original model runs along X.",
      "dimensionStatus": ["source-derived", "source-derived", "source-derived"],
      "reference": "src/components/fob-building/planner/planner.js · GAME.hw.b and GAME.hw.c",
      "evidence": "Uses the 1.5 × 3.117 × 6 m placement envelope, rotated to run along X. Published visual height is 3.108 m; placement height is 3.117 m. Neither is the 3 m solid-cell height. The original model fits the placement envelope; its cells and bands are independently designed.",
      "description": "Four earth-filled cells with external bands and an angular reinforced base.",
      "model": "models/defensive-barrier.glb",
      "preview": "previews/defensive-barrier.svg",
      "bytes": 76336,
      "triangles": 998,
      "sha256": "1cc8ea9ef3e51f77c32559283f1456adf2193453941b51b7a52c0d231a0b07ee"
    },
    {
      "id": "sandbag-wall",
      "name": "Sandbag wall",
      "gameReference": {
        "name": "Sandbags",
        "kind": "buildable",
        "sourceId": "bags",
        "source": "src/data/fob-building.ts · buildingItems; src/components/fob-building/planner/planner.js · GAME.bags; src/data/structures.ts · buildables.sandbagWall",
        "evidence": "Current FOB catalog name is Sandbags; the structure reference calls the type Sandbag wall and the model key is sandbagwall. The bags and seams are original artwork."
      },
      "searchAliases": ["bags", "sandbags", "sandbag wall", "sandbagwall"],
      "category": "Field kit",
      "recipe": "sandbags",
      "dimensionsM": [3, 1, 0.338],
      "dimensionMeaning": ["placement-envelope", "placement-envelope", "placement-envelope"],
      "sourceVisualBoundsM": [-1.494, -0.031, -0.146, 1.467, 1.023, 0.153],
      "sourceClearanceBoundsM": [-1.5, 0, -0.161, 1.5, 1, 0.177],
      "sourceToModel": "Placement bounds recentered on X/Z, ground at Y=0; source Z midpoint is 0.008 m.",
      "dimensionStatus": ["source-derived", "source-derived", "source-derived"],
      "reference": "src/components/fob-building/planner/planner.js · GAME.bags.b and GAME.bags.c",
      "evidence": "Uses the 3 × 1 × 0.338 m placement envelope. Published visual dimensions are 2.961 × 1.054 × 0.299 m, including a base 0.031 m below the source pivot. The original design is centered at ground level and sized to the placement envelope; bag count and seams are estimates.",
      "description": "Staggered low-poly fabric courses for compact cover and readable silhouettes.",
      "model": "models/sandbag-wall.glb",
      "preview": "previews/sandbag-wall.svg",
      "bytes": 158328,
      "triangles": 2130,
      "sha256": "eb9ec34ed2a30226517ead7f5696aaabd3fce1aa7d7ccee1059cc72d5f3155d9"
    },
    {
      "id": "residence",
      "name": "Field residence",
      "gameReference": {
        "name": "House, 2 stories",
        "kind": "building-type",
        "sourceId": "house",
        "source": "src/data/structures.ts · buildings.house; research/structure-heights.md §2",
        "evidence": "Documented map-building type, not a confirmed in-game menu label or one exact house variant. The type name is normalized to American spelling; the artwork remains an original representative design."
      },
      "searchAliases": ["house", "House, 2 stories", "House, 2 storeys"],
      "category": "Map buildings",
      "recipe": "house",
      "dimensionsM": [21, 13.3, 22],
      "dimensionStatus": ["estimated", "source-derived", "estimated"],
      "reference": "src/data/structures.ts · buildings.house; research/structure-heights.md §2",
      "evidence": "Representative 21 × 22 m footprint within the recorded 20–24 m range. 13.3 m class box height is source-derived; 7 m eaves and all facade details are estimates.",
      "description": "Two-story residence with a broad pitched roof, marked entry and divided windows.",
      "dimensionMeaning": ["design-estimate", "class-envelope", "design-estimate"],
      "model": "models/residence.glb",
      "preview": "previews/residence.svg",
      "bytes": 64384,
      "triangles": 824,
      "sha256": "94137052d0e03f748d507eae24795ced39d098c65d8aca3fdae126a1f923388f"
    },
    {
      "id": "apartment-block",
      "name": "Six-story block",
      "gameReference": {
        "name": "Apartment block, 6 stories",
        "kind": "building-type",
        "sourceId": "apartment6",
        "source": "src/data/structures.ts · buildings.apartment6; research/structure-heights.md §2",
        "evidence": "Documented six-story apartment type. The evidence table identifies Apartment C with the 25.7 m class height. These are reference-class labels, not a confirmed in-game menu name or an exact replica."
      },
      "searchAliases": [
        "apartment6",
        "apartment block",
        "Apartment C",
        "Apartment block, 6 stories",
        "Apartment block, 6 storeys"
      ],
      "category": "Map buildings",
      "recipe": "apartment",
      "dimensionsM": [48, 25.7, 38],
      "dimensionStatus": ["estimated", "source-derived", "estimated"],
      "reference": "src/data/structures.ts · buildings.apartment6; research/structure-heights.md §2",
      "evidence": "Representative 48 × 38 m footprint. 25.7 m is the recorded class box height, not an in-game measurement. Six 4 m stories and roof plant follow the existing estimated story fit.",
      "description": "Six floors, two contrasting circulation cores and a stepped service roof.",
      "dimensionMeaning": ["design-estimate", "class-envelope", "design-estimate"],
      "model": "models/apartment-block.glb",
      "preview": "previews/apartment-block.svg",
      "bytes": 441120,
      "triangles": 6060,
      "sha256": "103e5ef1948323820954328b662959f6e4e845458b1d879be43d006d1074fdcc"
    },
    {
      "id": "warehouse",
      "name": "Industrial warehouse",
      "gameReference": {
        "name": "Warehouse",
        "kind": "building-type",
        "sourceId": "warehouse",
        "source": "src/data/structures.ts · buildings.warehouse; research/structure-heights.md §2",
        "evidence": "Documented warehouse building type. This original representative hall is not a verified in-game menu label or a reconstruction of one exact warehouse."
      },
      "searchAliases": ["warehouse"],
      "category": "Map buildings",
      "recipe": "warehouse",
      "dimensionsM": [30, 12.2, 29],
      "dimensionStatus": ["estimated", "source-derived", "estimated"],
      "reference": "src/data/structures.ts · buildings.warehouse; research/structure-heights.md §2",
      "evidence": "Representative 30 × 29 m footprint; 12.2 m source class box height. Eaves at 8.1 m are a design estimate, not a verified warehouse roof profile.",
      "description": "Ribbed industrial hall with a pitched roof, high loading bay and side service entrance.",
      "dimensionMeaning": ["design-estimate", "class-envelope", "design-estimate"],
      "model": "models/warehouse.glb",
      "preview": "previews/warehouse.svg",
      "bytes": 51500,
      "triangles": 656,
      "sha256": "7be2a13388a572f92ca9fc765ad9250b240755cd3a803c6c9862e49b8295c0a5"
    },
    {
      "id": "supply-crate",
      "name": "Supply crate",
      "gameReference": {
        "name": "No exact in-game counterpart",
        "kind": "original-prop",
        "sourceId": null,
        "source": "FOBDROP original design",
        "evidence": "Generic original prop. No documented exact game item, game name, source ID or matching dimensions are claimed."
      },
      "searchAliases": ["supply crate", "original prop"],
      "category": "Props",
      "recipe": "crate",
      "dimensionsM": [1.2, 1, 0.8],
      "dimensionStatus": ["estimated", "estimated", "estimated"],
      "reference": "FOBDROP original design · no in-game dimensional reference",
      "evidence": "Entirely authored dimensions. No claim of matching an in-game crate, collision box or interaction distance.",
      "description": "Stackable supply case with protective corners, recessed lid and colored straps.",
      "dimensionMeaning": ["design-estimate", "design-estimate", "design-estimate"],
      "model": "models/supply-crate.glb",
      "preview": "previews/supply-crate.svg",
      "bytes": 13748,
      "triangles": 132,
      "sha256": "2d82dcbf047e1fa21347a55504c625607aad707996058b50969815e2989ce9c2"
    }
  ],
  "files": [
    {
      "path": "models/field-shelter.glb",
      "license": "CC-BY-4.0",
      "bytes": 51264,
      "sha256": "2805e7e59c5e574349a33a37567a567d295048de62412b1b1f7a746f506104c0"
    },
    {
      "path": "previews/field-shelter.svg",
      "license": "CC-BY-4.0",
      "bytes": 46302,
      "sha256": "9b7fe7dd7de2e74c76bb0df61a23487b88db8d02660f3dc809838b0d3ce2e55c"
    },
    {
      "path": "models/observation-tower.glb",
      "license": "CC-BY-4.0",
      "bytes": 47660,
      "sha256": "38c87fe91c46fd088f42abf9c6d3193db51d7f555abd7b9470ab690e5909a989"
    },
    {
      "path": "previews/observation-tower.svg",
      "license": "CC-BY-4.0",
      "bytes": 37454,
      "sha256": "2381c608d3bbd897241616a78f3e22d4b5d43f97dbd249088b095c0e1743ab16"
    },
    {
      "path": "models/defensive-barrier.glb",
      "license": "CC-BY-4.0",
      "bytes": 76336,
      "sha256": "1cc8ea9ef3e51f77c32559283f1456adf2193453941b51b7a52c0d231a0b07ee"
    },
    {
      "path": "previews/defensive-barrier.svg",
      "license": "CC-BY-4.0",
      "bytes": 105045,
      "sha256": "7bd20a74baa0fed0f0fa348624120eca4ebd7aec1e843d4b49de7ff46c8e3fc8"
    },
    {
      "path": "models/sandbag-wall.glb",
      "license": "CC-BY-4.0",
      "bytes": 158328,
      "sha256": "eb9ec34ed2a30226517ead7f5696aaabd3fce1aa7d7ccee1059cc72d5f3155d9"
    },
    {
      "path": "previews/sandbag-wall.svg",
      "license": "CC-BY-4.0",
      "bytes": 111998,
      "sha256": "f314da33ffc47e6a10cadd6d98a5d7fa596e63461dd23c23a975440ecac2be52"
    },
    {
      "path": "models/residence.glb",
      "license": "CC-BY-4.0",
      "bytes": 64384,
      "sha256": "94137052d0e03f748d507eae24795ced39d098c65d8aca3fdae126a1f923388f"
    },
    {
      "path": "previews/residence.svg",
      "license": "CC-BY-4.0",
      "bytes": 47219,
      "sha256": "bf81331f0d3b95fc6df996b4a8e21c92a093e1385b02e31c1f78e8df14ed9cb7"
    },
    {
      "path": "models/apartment-block.glb",
      "license": "CC-BY-4.0",
      "bytes": 441120,
      "sha256": "103e5ef1948323820954328b662959f6e4e845458b1d879be43d006d1074fdcc"
    },
    {
      "path": "previews/apartment-block.svg",
      "license": "CC-BY-4.0",
      "bytes": 393863,
      "sha256": "b4af91c438b5ac768eb88e06f9a03f353e2379c8a1a2c8cc0b4c2286731aa250"
    },
    {
      "path": "models/warehouse.glb",
      "license": "CC-BY-4.0",
      "bytes": 51500,
      "sha256": "7be2a13388a572f92ca9fc765ad9250b240755cd3a803c6c9862e49b8295c0a5"
    },
    {
      "path": "previews/warehouse.svg",
      "license": "CC-BY-4.0",
      "bytes": 30847,
      "sha256": "58a6a66775ef48c005a57b1f44d55ff361f0d0451d96d812c3ab76d39c1107e0"
    },
    {
      "path": "models/supply-crate.glb",
      "license": "CC-BY-4.0",
      "bytes": 13748,
      "sha256": "2d82dcbf047e1fa21347a55504c625607aad707996058b50969815e2989ce9c2"
    },
    {
      "path": "previews/supply-crate.svg",
      "license": "CC-BY-4.0",
      "bytes": 9351,
      "sha256": "a3424902ff20f8bdb9987a4ff4b9c16e1945b85814ee62110266960484a86292"
    },
    {
      "path": "source/recipes.json",
      "license": "CC-BY-4.0",
      "bytes": 10654,
      "sha256": "c3b51ac6ed6a45d91fdccd8b612fcdfdb1e6f1195d4d8250f0d38ec75167771a"
    },
    {
      "path": "source/generate.mjs",
      "license": "MIT",
      "bytes": 34284,
      "sha256": "01cadf8bb5f1abc1bc86deab941fbce2b5300aed7f5e8274b2dbb76edf00b061"
    },
    {
      "path": "example/index.html",
      "license": "MIT",
      "bytes": 669,
      "sha256": "1c0b29b1b4d7f146e71c49d0926b9b4b8cdb6d36f4715822adaf5fbd024c3cde"
    },
    {
      "path": "example/example.css",
      "license": "MIT",
      "bytes": 337,
      "sha256": "d2f01626c72543e9ea2a61cfa2ab5ccaa87004050d14b51fd96898e72c57d5c9"
    },
    {
      "path": "ATTRIBUTION.txt",
      "license": "CC-BY-4.0",
      "bytes": 1026,
      "sha256": "db515de72a4b2803b56ae6c416d59fb8b1faae410bb1a6fb2f247c4b75c66b5e"
    },
    {
      "path": "SOURCE-LICENSE.txt",
      "license": "MIT",
      "bytes": 1074,
      "sha256": "56d5fe2f9c75a271519cf7e6f7b8bf18fa537aa694cacd3e6a4f9b6f6aebce86"
    },
    {
      "path": "README.txt",
      "license": "CC-BY-4.0",
      "bytes": 2036,
      "sha256": "7ac69aee64b27b68af4b29466860f71cbfabaee171a53cf834beeb358168e796"
    }
  ]
}
