Define the minimal, explicit data contract for a King of the Iceberg (KOTI) baseline layout using validated tool workflow artifacts. This contract is documentation-only and does not introduce gameplay or runtime behavior.
tmp/uat_exports/king_of_the_iceberg_layout_snapshot.jsontmp/uat_tool_layout_workflow_results.jsondocs/dev/reports/PR_tool_layout_workflow_baseline_report.md
Observed baseline facts from these artifacts:
- Exported baseline layout contains 4 fragmented ice platform objects.
- Selection behavior includes explicit no-selection state.
- Save/export workflow completed and produced the snapshot artifact.
The minimal KOTI layout uses explicit map metadata and explicit object roles.
{
"documentData": {
"name": "koti_first_arena",
"mode": "2d",
"width": 1600,
"height": 900,
"objects": [
{
"id": "obj-001",
"name": "Top Control Platform",
"kind": "polyline",
"role": "top-control-platform",
"points": [
{ "x": 640, "y": 300, "z": 0 },
{ "x": 840, "y": 300, "z": 0 }
]
}
]
}
}- Platform objects are objects whose
roleisplatformortop-control-platform. - MVP requires 3 to 5 platform objects total.
- Each platform object must include:
id(non-empty string)name(non-empty string)kind(for baseline exports,polylineis valid)role(explicit role value)points(at least 2 points with numericxandy)
- Platform objects must be explicitly authored in layout data. Hidden/generated fallback platforms are not allowed.
The layout contract requires explicit use of these roles:
platformtop-control-platformwater-zonevisual-backgroundvisual-midground
Role notes:
- At least one object must have role
top-control-platform. - Exactly one object must represent the
water-zonefor MVP validation. visual-backgroundandvisual-midgroundmay be represented as geometry or non-interactive scene objects, but roles must still be explicit.
Optional fields are permitted when present in authored data:
- Layout-level:
version,background - Object-level:
style,flags,center,rotation,space,closed - Point-level:
z,color
Optional fields do not replace required fields and cannot be used to infer missing required roles.
A KOTI layout is valid only when all rules pass:
- Layout/map id is required:
documentData.namemust exist and be non-empty.
- At least one
top-control-platformis required. - One
water-zoneis required. - MVP layout has 3 to 5 platform objects (
platform+top-control-platform). - Roles must be explicit (
roleis required on each contract-relevant object). - Hidden fallback objects are not allowed.
- Missing required fields produce actionable errors.
Actionable error examples:
Missing required layout id: documentData.nameMissing required role: top-control-platformMissing required role: water-zoneInvalid platform count: expected 3-5, found <n>Object <id> is missing explicit role
{
"documentData": {
"name": "koti_first_arena",
"mode": "2d",
"width": 1600,
"height": 900,
"objects": [
{
"id": "obj-top-01",
"name": "Top Control Platform",
"kind": "polyline",
"role": "top-control-platform",
"points": [
{ "x": 700, "y": 290, "z": 0 },
{ "x": 900, "y": 290, "z": 0 }
]
},
{
"id": "obj-plat-01",
"name": "Platform 01",
"kind": "polyline",
"role": "platform",
"points": [
{ "x": 420, "y": 520, "z": 0 },
{ "x": 620, "y": 520, "z": 0 }
]
},
{
"id": "obj-plat-02",
"name": "Platform 02",
"kind": "polyline",
"role": "platform",
"points": [
{ "x": 760, "y": 570, "z": 0 },
{ "x": 980, "y": 570, "z": 0 }
]
},
{
"id": "obj-water-01",
"name": "Water Zone",
"kind": "rectangle",
"role": "water-zone",
"points": [
{ "x": 0, "y": 760, "z": 0 },
{ "x": 1600, "y": 900, "z": 0 }
]
},
{
"id": "obj-bg-01",
"name": "Background Visual",
"kind": "rectangle",
"role": "visual-background",
"points": [
{ "x": 0, "y": 0, "z": 0 },
{ "x": 1600, "y": 900, "z": 0 }
]
},
{
"id": "obj-mg-01",
"name": "Midground Visual",
"kind": "polyline",
"role": "visual-midground",
"points": [
{ "x": 120, "y": 680, "z": 0 },
{ "x": 1480, "y": 680, "z": 0 }
]
}
]
}
}- Gameplay logic
- Runtime engine loader implementation details
- Collision physics tuning
- Platform pass-through/solid behavior implementation
- Tileset breakout and art slicing
- Sample game/runtime code changes