{
  "version": 1,
  "date": "2026-10-03",
  "status": "Artwork and placement proposal; not integrated into gameplay",
  "logicalTile": 32,
  "placement": "base = (tileX*32+16,tileY*32+28); draw native frame at base minus pivot; depth-sort by base.y",
  "camera": "Orthographic elevated top-down adventure; no isometric rotation",
  "assets": [
    {
      "key": "oak-tree",
      "title": "Broad oak",
      "art": "oak-tree.webp",
      "native": "oak-tree-32.png",
      "double": "oak-tree-64.png",
      "logicalTile": 32,
      "frame": [
        96,
        112
      ],
      "pivot": [
        48,
        104
      ],
      "sourcePivot": [
        624,
        1120
      ],
      "scale": 0.07906558849955077,
      "visualBounds": {
        "x": 4,
        "y": 26,
        "width": 89,
        "height": 79
      },
      "doubleFrame": [
        192,
        224
      ],
      "doublePivot": [
        96,
        208
      ],
      "collision": {
        "relativeTo": "base pivot",
        "x": -16,
        "y": -28,
        "width": 32,
        "height": 32,
        "provisional": true
      },
      "grappleTarget": false,
      "interaction": "Scenery; one trunk tile. Canopy overhang is not extra collision.",
      "sourceSha256": "e4e6a19583f7c3f53497d19289c3eb714eded3016bb265730c047207cc6de506",
      "sourceDimensions": [
        1254,
        1254
      ],
      "sourceAlpha": 0.593522736811581,
      "nativeAlpha": 0.5873325892857143,
      "masterSha256": "a03db6e16e581eab897c98a5e67740a736e638dbb8b7b6b028a0b8ae6f2fdeac",
      "nativeSha256": "4d1cd33824e8fd9616425c7f95d076dc48b98c3bd2ce499eb5ba176164cdeb5e",
      "bytes": 96619,
      "materials": {
        "version": 1,
        "status": "Pilot masks completed; gameplay shader and future asset migration remain pending",
        "legend": "R / G / B = the listed independent materials; black = retain original brown ink. Alpha always comes from artwork.",
        "master": "oak-tree-materials.png",
        "native": "oak-tree-materials-32.png",
        "double": "oak-tree-materials-64.png",
        "zones": [
          {
            "channel": "R",
            "name": "foliage",
            "baseColor": "#837f49",
            "sourcePixels": 518288
          },
          {
            "channel": "G",
            "name": "wood",
            "baseColor": "#966240",
            "sourcePixels": 45545
          }
        ],
        "sourceDimensions": [
          1254,
          1254
        ],
        "masterDimensions": [
          512,
          512
        ],
        "preservedSource": "art/incoming NEW/quest-overworld-material-masters/oak-tree.png",
        "method": "Asset-specific colour classification plus inspected spatial landmarks, resampled with the same fixed source transform as artwork. No global hue rotation."
      },
      "preservedSource": "art/incoming NEW/quest-overworld-oak-tree.png",
      "masterDimensions": [
        512,
        512
      ]
    },
    {
      "key": "pine-tree",
      "title": "Tall pine",
      "art": "pine-tree.webp",
      "native": "pine-tree-32.png",
      "double": "pine-tree-64.png",
      "logicalTile": 32,
      "frame": [
        96,
        112
      ],
      "pivot": [
        48,
        104
      ],
      "sourcePivot": [
        516,
        1440
      ],
      "scale": 0.07111111111111111,
      "visualBounds": {
        "x": 17,
        "y": 8,
        "width": 62,
        "height": 97
      },
      "doubleFrame": [
        192,
        224
      ],
      "doublePivot": [
        96,
        208
      ],
      "collision": {
        "relativeTo": "base pivot",
        "x": -16,
        "y": -28,
        "width": 32,
        "height": 32,
        "provisional": true
      },
      "grappleTarget": false,
      "interaction": "Scenery; one trunk tile. No hook hardware.",
      "sourceSha256": "b82358bcdaf32e8149f192efe47a2284bdb144fdd08a957c2bcbac3526cbf486",
      "sourceDimensions": [
        1024,
        1536
      ],
      "sourceAlpha": 0.6462529500325521,
      "nativeAlpha": 0.6940104166666666,
      "masterSha256": "4048959297fa1d291c6031523cf8a6269a1bc8f651978196909e60432f0e50ea",
      "nativeSha256": "d0e32d159add7ecc60609d90a8ae0978b2922f612440db8cf2b21cf0307eb870",
      "bytes": 70696,
      "materials": {
        "version": 1,
        "status": "Pilot masks completed; gameplay shader and future asset migration remain pending",
        "legend": "R / G / B = the listed independent materials; black = retain original brown ink. Alpha always comes from artwork.",
        "master": "pine-tree-materials.png",
        "native": "pine-tree-materials-32.png",
        "double": "pine-tree-materials-64.png",
        "zones": [
          {
            "channel": "R",
            "name": "foliage",
            "baseColor": "#5b6a4b",
            "sourcePixels": 419321
          },
          {
            "channel": "G",
            "name": "wood",
            "baseColor": "#965c3a",
            "sourcePixels": 10961
          }
        ],
        "sourceDimensions": [
          1024,
          1536
        ],
        "masterDimensions": [
          341,
          512
        ],
        "preservedSource": "art/incoming NEW/quest-overworld-material-masters/pine-tree.png",
        "method": "Asset-specific colour classification plus inspected spatial landmarks, resampled with the same fixed source transform as artwork. No global hue rotation."
      },
      "preservedSource": "art/incoming NEW/quest-overworld-pine-tree-v1.png",
      "masterDimensions": [
        341,
        512
      ]
    },
    {
      "key": "berry-bush",
      "title": "Berry bush",
      "art": "berry-bush.webp",
      "native": "berry-bush-32.png",
      "double": "berry-bush-64.png",
      "logicalTile": 32,
      "frame": [
        48,
        48
      ],
      "pivot": [
        24,
        40
      ],
      "sourcePivot": [
        690,
        902
      ],
      "scale": 0.04022346368715084,
      "visualBounds": {
        "x": 6,
        "y": 13,
        "width": 37,
        "height": 28
      },
      "doubleFrame": [
        96,
        96
      ],
      "doublePivot": [
        48,
        80
      ],
      "collision": {
        "relativeTo": "base pivot",
        "x": -16,
        "y": -28,
        "width": 32,
        "height": 32,
        "provisional": true
      },
      "grappleTarget": false,
      "interaction": "Possible harvest or examine object; behaviour is undecided.",
      "sourceSha256": "4cc97a15f51964d8214da4573f92e5e575fae7d381205eee2b4886d6b54b2f93",
      "sourceDimensions": [
        1374,
        1145
      ],
      "sourceAlpha": 0.7476255855787138,
      "nativeAlpha": 0.6480034722222222,
      "masterSha256": "4f99ec90c9a2bf89a66f412b2676b594db4734d18c73a537c8c0cd2a11b5f2d3",
      "nativeSha256": "652033eeb560061efcedc6a56cc484be7534ea614efb76e4cf9bcf55888144b5",
      "bytes": 33071,
      "materials": {
        "version": 1,
        "status": "Pilot masks completed; gameplay shader and future asset migration remain pending",
        "legend": "R / G / B = the listed independent materials; black = retain original brown ink. Alpha always comes from artwork.",
        "master": "berry-bush-materials.png",
        "native": "berry-bush-materials-32.png",
        "double": "berry-bush-materials-64.png",
        "zones": [
          {
            "channel": "R",
            "name": "foliage",
            "baseColor": "#81844e",
            "sourcePixels": 299048
          },
          {
            "channel": "G",
            "name": "wood",
            "baseColor": "#7e5034",
            "sourcePixels": 3557
          },
          {
            "channel": "B",
            "name": "berries",
            "baseColor": "#e55c45",
            "sourcePixels": 23867
          }
        ],
        "sourceDimensions": [
          1374,
          1145
        ],
        "masterDimensions": [
          512,
          427
        ],
        "preservedSource": "art/incoming NEW/quest-overworld-material-masters/berry-bush.png",
        "method": "Asset-specific colour classification plus inspected spatial landmarks, resampled with the same fixed source transform as artwork. No global hue rotation."
      },
      "preservedSource": "art/incoming NEW/quest-overworld-berry-bush.png",
      "masterDimensions": [
        512,
        427
      ]
    },
    {
      "key": "boulder",
      "title": "Rounded boulder",
      "art": "boulder.webp",
      "native": "boulder-32.png",
      "double": "boulder-64.png",
      "logicalTile": 32,
      "frame": [
        48,
        48
      ],
      "pivot": [
        24,
        40
      ],
      "sourcePivot": [
        630,
        931
      ],
      "scale": 0.04938271604938271,
      "visualBounds": {
        "x": 7,
        "y": 10,
        "width": 34,
        "height": 31
      },
      "doubleFrame": [
        96,
        96
      ],
      "doublePivot": [
        48,
        80
      ],
      "collision": {
        "relativeTo": "base pivot",
        "x": -16,
        "y": -28,
        "width": 32,
        "height": 32,
        "provisional": true
      },
      "grappleTarget": false,
      "interaction": "Possible pushable one-tile object; no hook ring or implemented push behaviour.",
      "sourceSha256": "740ec1b9aaabe741ac9b26313798959e6ec3b1a90bfa92649fb21a6fb83dd0be",
      "sourceDimensions": [
        1254,
        1254
      ],
      "sourceAlpha": 0.7943760190675325,
      "nativeAlpha": 0.5863715277777778,
      "masterSha256": "261f2affc69b20b1f8025c9e062e1db54ad0ac54d080fb8a866f2601154d6623",
      "nativeSha256": "06f3dafe45a48d68bf5fff8f5f42f15cae87a96fee695ecaced81d8d3310663a",
      "bytes": 28157,
      "materials": {
        "version": 1,
        "status": "Pilot masks completed; gameplay shader and future asset migration remain pending",
        "legend": "R / G / B = the listed independent materials; black = retain original brown ink. Alpha always comes from artwork.",
        "master": "boulder-materials.png",
        "native": "boulder-materials-32.png",
        "double": "boulder-materials-64.png",
        "zones": [
          {
            "channel": "R",
            "name": "stone",
            "baseColor": "#ad988e",
            "sourcePixels": 283645
          },
          {
            "channel": "G",
            "name": "moss",
            "baseColor": "#a29256",
            "sourcePixels": 9546
          }
        ],
        "sourceDimensions": [
          1254,
          1254
        ],
        "masterDimensions": [
          512,
          512
        ],
        "preservedSource": "art/incoming NEW/quest-overworld-material-masters/boulder.png",
        "method": "Asset-specific colour classification plus inspected spatial landmarks, resampled with the same fixed source transform as artwork. No global hue rotation."
      },
      "preservedSource": "art/incoming NEW/quest-overworld-boulder.png",
      "masterDimensions": [
        512,
        512
      ]
    },
    {
      "key": "signpost",
      "title": "Blank trail sign",
      "art": "signpost.webp",
      "native": "signpost-32.png",
      "double": "signpost-64.png",
      "logicalTile": 32,
      "frame": [
        48,
        64
      ],
      "pivot": [
        24,
        56
      ],
      "sourcePivot": [
        610,
        1060
      ],
      "scale": 0.05152224824355972,
      "visualBounds": {
        "x": 6,
        "y": 11,
        "width": 36,
        "height": 46
      },
      "doubleFrame": [
        96,
        128
      ],
      "doublePivot": [
        48,
        112
      ],
      "collision": {
        "relativeTo": "base pivot",
        "x": -16,
        "y": -28,
        "width": 32,
        "height": 32,
        "provisional": true
      },
      "grappleTarget": false,
      "interaction": "Possible readable sign; future text belongs in accessible game UI.",
      "sourceSha256": "81eb7ee0af88796b284d6c18737c86c2e94a315e06ecf53aba06558410406700",
      "sourceDimensions": [
        1221,
        1289
      ],
      "sourceAlpha": 0.8126927971768934,
      "nativeAlpha": 0.6669921875,
      "masterSha256": "66277b02c08e2073aa0851056994ca784cb0031af7311f093d606593d0293506",
      "nativeSha256": "c9a9675b38639aa4d40df66f82f61f590f4808a67c71a51242914a559aa9d068",
      "bytes": 30415,
      "materials": {
        "version": 1,
        "status": "Pilot masks completed; gameplay shader and future asset migration remain pending",
        "legend": "R / G / B = the listed independent materials; black = retain original brown ink. Alpha always comes from artwork.",
        "master": "signpost-materials.png",
        "native": "signpost-materials-32.png",
        "double": "signpost-materials-64.png",
        "zones": [
          {
            "channel": "R",
            "name": "boards",
            "baseColor": "#cf8b50",
            "sourcePixels": 194037
          },
          {
            "channel": "G",
            "name": "post",
            "baseColor": "#a16441",
            "sourcePixels": 50923
          }
        ],
        "sourceDimensions": [
          1221,
          1289
        ],
        "masterDimensions": [
          485,
          512
        ],
        "preservedSource": "art/incoming NEW/quest-overworld-material-masters/signpost.png",
        "method": "Asset-specific colour classification plus inspected spatial landmarks, resampled with the same fixed source transform as artwork. No global hue rotation."
      },
      "preservedSource": "art/incoming NEW/quest-overworld-signpost.png",
      "masterDimensions": [
        485,
        512
      ]
    }
  ],
  "materialContract": {
    "version": 1,
    "completedAssets": [
      "oak-tree",
      "pine-tree",
      "berry-bush",
      "boulder",
      "signpost"
    ],
    "pending": "Existing Bogs and sprint objects are not mapped yet. Every future Quest object should deliver original RGBA, aligned RGB material weights, zone names/base colours, fixed pivot, visual bounds and a separate logical footprint.",
    "shader": "Decode source RGB to linear light. For each zone, multiply selected linear base RGB by source linear luminance / original zone base luminance, clamp, encode sRGB. Mix by RGB mask weights; unassigned weight keeps original RGB. Preserve source alpha exactly. Original preset bypasses the shader.",
    "paletteFile": "palettes.json"
  }
}
