Puzzle-Data-3D
by velo_ninja
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<title>PUZZLEΒ·DATA 3D β procedural data-to-puzzle engine + recognizer</title>
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>π§©</text></svg>"/>
<!--
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β PUZZLEΒ·DATA 3D β
β β
β RAW ANYTHING βββΆ INGEST (recognizer) βββΆ {nodes,links} βββΆ 3D β
β β
β Recognition rules: β
β id/_id/uuid/key/code β¦β¦β¦ β piece identity β
β nesting β¦β¦β¦β¦β¦β¦β¦β¦β¦β¦β¦β¦ β hierarchy snap β
β *_id / *_ref strings β¦β¦ β relation join (foreign key) β
β status/state/health β¦β¦β¦ β state (glow) β
β numbers β¦β¦β¦β¦β¦β¦β¦β¦β¦β¦β¦ β gauges + piece size β
β container key name β¦β¦β¦β¦ β piece type β
β hints {} β¦β¦β¦β¦β¦β¦β¦β¦β¦β¦ β override anything β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-->
<style>
:root{
--bg:#05070d; --panel:rgba(9,14,27,.86); --line:rgba(148,163,184,.16);
--txt:#e2e8f0; --mut:#7d8aa3; --accent:#22d3ee; --mono:ui-monospace,'Cascadia Code','JetBrains Mono',Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--txt);
font-family:'Segoe UI',system-ui,-apple-system,sans-serif}
#scene{position:fixed;inset:0}
#scene canvas{display:block;touch-action:none;cursor:grab}
.hud{position:fixed;z-index:10}
header{top:14px;left:18px;pointer-events:none}
...