🎮ArcadeLab

Obby World Hub

by LunarGalaxy87
1039 lines125.4 KB🛠️ Three.js (3D graphics)
▶ Play
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>Obby World Hub</title>
<style>
  html, body { margin:0; padding:0; overflow:hidden; background:#7ec0ee; font-family: -apple-system, sans-serif; }
  canvas { display:block; touch-action:none; }

  #hud {
    position:fixed; top:12px; left:12px; z-index:10;
    color:#fff; font-weight:800; font-size:16px; text-shadow:0 2px 4px rgba(0,0,0,0.5);
    background:rgba(0,0,0,0.32); padding:8px 14px; border-radius:10px; line-height:1.4;
  }

  #joystick {
    position:fixed; bottom:90px; left:20px; width:110px; height:110px;
    border-radius:50%; background:rgba(255,255,255,0.15); border:2px solid rgba(255,255,255,0.4);
    z-index:10; touch-action:none;
  }
  #joystickKnob {
    position:absolute; width:46px; height:46px; border-radius:50%;
    background:rgba(255,255,255,0.55); top:32px; left:32px; pointer-events:none;
  }

  #jumpBtn {
    position:fixed; bottom:100px; right:20px; width:78px; height:78px; border-radius:50%;
    background:rgba(255,220,50,0.85); border:3px solid rgba(255,255,255,0.8);
    color:#4a3a00; font-weight:900; font-size:14px; z-index:10;
    display:flex; align-items:center; justify-content:center; touch-action:none;
    box-shadow:0 4px 10px rgba(0,0,0,0.3);
  }

  #lobbyBtn {
    position:fixed; bottom:190px; right:20px; width:78px; height:44px; border-radius:12px;
    background:rgba(60,140,220,0.9); border:2px solid rgba(255,255,255,0.7);
    color:#fff; font-weight:800; font-size:12px; z-index:10;
    display:none; align-items:center; justify-content:center; touch-action:none;
    box-shadow:0 4px 10px rgba(0,0,0,0.3);
  }

  #lockerBtn {
    position:fixed; top:12px; right:12px; width:78px; height:44px; border-radius:12px;
    background:rgba(140,60,220,0.9); border:2px solid rgba(255,255,255,0.7);
    color:#fff; font-weight:800; font-size:12px; z-index:10;
    display:flex; align-items:center; justify-content:center; touch-action:none;
    box-shadow:0 4px 10px rgba(0,0,0,0.3);
  }

  #lockerPanel {
    position:fixed; inset:0; background:rgba(10,10,20,0.85); z-index:30;
    display:none; align-items:center; justify-content:center; flex-direction:column;
    color:#fff; font-family:-apple-system, sans-serif; padding:20px; box-sizing:border-box;
  }
  #lockerPanel h2 { margin:0 0 12px 0; font-size:20px; }
  .lockerSection { width:100%; max-width:420px; margin-bottom:16px; }
  .lockerSection h3 { font-size:14px; margin:0 0 8px 0; opacity:0.8; text-transform:uppercase; letter-spacing:0.5px; }
  .lockerRow { display:flex; flex-wrap:wrap; gap:8px; }
  .lockerOption {
    padding:10px 14px; border-radius:10px; background:rgba(255,255,255,0.12);
    border:2px solid rgba(255,255,255,0.25); font-size:13px; touch-action:none;
  }
  .lockerOption.active { background:rgba(140,60,220,0.9); border-color:#fff; }
  .colorSwatch {
    width:34px; height:34px; border-radius:50%; border:3px solid rgba(255,255,255,0.3); touch-action:none;
  }
  .colorSwatch.active { border-color:#fff; box-shadow:0 0 0 2px rgba(140,60,220,0.9); }
  #lockerDone {
    margin-top:8px; padding:12px 28px; border-radius:12px; background:rgba(60,180,90,0.9);
    border:2px solid rgba(255,255,255,0.8); font-weight:800; font-size:15px; touch-action:none;
  }

  #hint {
    position:fixed; top:12px; left:50%; transform:translateX(-50%);
    color:white; background:rgba(0,0,0,0.35); padding:8px 14px; border-radius:10px;
    font-size:13px; z-index:10; text-align:center; max-width:80%;
  }
  #errbox {
    position:fixed; top:0; left:0; right:0; background:#c0392b; color:white;
    font-size:12px; padding:6px; z-index:999; display:none; white-space:pre-wrap;
  }
  #winMsg {
    position:fixed; top:38%; left:50%; transform:translate(-50%,-50%);
    color:#fff; font-size:24px; font-weight:900; text-shadow:0 3px 6px rgba(0,0,0,0.5);
    background:rgba(20,160,60,0.88); padding:16px 26px; border-radius:16px;
    z-index:20; display:none; text-align:center; max-width:80%;
  }
</style>
</head>
<body>

<div id="errbox"></div>
<div id="hud">📍 <span id="zoneName">Lobby</span><br>🪙 <span id="coinCount">0</span> / <span id="coinTotal">0</span></div>
<div id="hint">Left stick to move • Drag right side to look • JUMP to jump • Walk onto a colored pad to play</div>
<div id="winMsg"><span id="msgText">🏆 Course Complete!</span></div>

<div id="joystick"><div id="joystickKnob"></div></div>
<div id="jumpBtn">JUMP</div>
<div id="lobbyBtn">🏠 LOBBY</div>
<div id="lockerBtn">🪞 LOCKER</div>

<div id="lockerPanel">
  <h2>🪞 Character Locker</h2>

  <div class="lockerSection">
    <h3>Hair Style</h3>
    <div class="lockerRow" id="hairStyleRow"></div>
  </div>
  <div class="lockerSection">
    <h3>Hair Color</h3>
    <div class="lockerRow" id="hairColorRow"></div>
  </div>
  <div class="lockerSection">
    <h3>Beard Style</h3>
    <div class="lockerRow" id="beardStyleRow"></div>
  </div>
  <div class="lockerSection">
    <h3>Beard Color</h3>
    <div class="lockerRow" id="beardColorRow"></div>
  </div>

  <div id="lockerDone">DONE</div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js" crossorigin="anonymous"></script>
<script>
window.onerror = function(msg) {
  var e = document.getElementById('errbox');
  e.style.display = 'block';
  e.textContent = 'Error: ' + msg;
};

try {

const scene = new THREE.Scene();
const fogColor = 0xa9c4dd;
scene.fog = new THREE.Fog(fogColor, 55, 170);

const camera = new THREE.PerspectiveCamera(62, window.innerWidth/window.innerHeight, 0.1, 800);

const renderer = new THREE.WebGLRenderer({ antialias:true, powerPreference:'high-performance' });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 1.75));
renderer.outputEncoding = THREE.sRGBEncoding;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.05;
document.body.appendChild(renderer.domElement);

// ---------- Sky ----------
const skyGeo = new THREE.SphereGeometry(600, 16, 16);
const skyMat = new THREE.ShaderMaterial({
  uniforms: {
    topColor: { value: new THREE.Color(0x4a79b0) },
    bottomColor: { value: new THREE.Color(fogColor) },
    offset: { value: 15 },
    exponent: { value: 0.6 }
  },
  vertexShader: `varying vec3 vWorldPosition; void main(){ vec4 wp = modelMatrix * vec4(position,1.0); vWorldPosition = wp.xyz; gl_Position = projectionMatrix * viewMatrix * wp; }`,
  fragmentShader: `uniform vec3 topColor; uniform vec3 bottomColor; uniform float offset; uniform float exponent; varying vec3 vWorldPosition; void main(){ float h = normalize(vWorldPosition + vec3(0.0, offset, 0.0)).y; gl_FragColor = vec4(mix(bottomColor, topColor, pow(max(h, 0.0), exponent)), 1.0); }`,
  side: THREE.BackSide,
  depthWrite: false
});
scene.add(new THREE.Mesh(skyGeo, skyMat));

// ---------- Lighting ----------
const hemi = new THREE.HemisphereLight(0xbfd9ff, 0x4a5c3a, 0.6);
scene.add(hemi);
const sun = new THREE.DirectionalLight(0xfff2d8, 1.3);
sun.position.set(45, 70, 25);
sun.castShadow = true;
sun.shadow.mapSize.set(1024, 1024);
sun.shadow.camera.left = -40;
sun.shadow.camera.right = 40;
sun.shadow.camera.top = 40;
sun.shadow.camera.bottom = -40;
sun.shadow.camera.near = 10;
sun.shadow.camera.far = 160;
sun.shadow.bias = -0.0015;
scene.add(sun);
scene.add(sun.target);
const ambient = new THREE.AmbientLight(0xffffff, 0.28);
scene.add(ambient);
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;

// sun follows player so the small shadow frustum always covers them (perf-friendly)
function updateSun(px,pz){
  sun.position.set(px+45, 70, pz+25);
  sun.target.position.set(px, 0, pz);
  sun.target.updateMatrixWorld();
}

// ---------- Shared helpers ----------
const boxGeoCache = new Map();
function getBoxGeo(w,h,d){
  const k = w+'_'+h+'_'+d;
  if (!boxGeoCache.has(k)) boxGeoCache.set(k, new THREE.BoxGeometry(w,h,d));
  return boxGeoCache.get(k);
}
function makeGrassTexture(hex){
  const size = 128;
  const c = document.createElement('canvas');
  c.width = size; c.height = size;
  const ctx = c.getContext('2d');
  const base = new THREE.Color(hex);
  ctx.fillStyle = '#'+base.getHexString();
  ctx.fillRect(0,0,size,size);
  for (let i=0;i<1200;i++){
    const x = Math.random()*size, y = Math.random()*size;
    const shade = 0.75 + Math.random()*0.5;
    const c2 = base.clone().multiplyScalar(shade);
    ctx.fillStyle = '#'+c2.getHexString();
    ctx.fillRect(x,y,1.5,1.5);
  }
  const tex = new THREE.CanvasTexture(c);
  tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
  tex.repeat.set(10,10);
  return tex;
}
function makeLabelSprite(text, colorHex){
  const c = document.createElement('canvas');
  c.width = 512; c.height = 128;
  const ctx = c.getContext('2d');
  ctx.fillStyle = 'rgba(0,0,0,0.55)';
  roundRect(ctx, 8,8,496,112,20); ctx.fill();
  ctx.strokeStyle = '#'+new THREE.Color(colorHex).getHexString();
  ctx.lineWidth = 6;
  roundRect(ctx, 8,8,496,112,20); ctx.stroke();
  ctx.fillStyle = '#ffffff';
  ctx.font = 'bold 46px -apple-system, sans-serif';
  ctx.textAlign = 'center';
  ctx.textBaseline = 'middle';
  ctx.fillText(text, 256, 64);
  const tex = new THREE.CanvasTexture(c);
  const mat = new THREE.SpriteMaterial({ map: tex, depthTest:false });
  const sprite = new THREE.Sprite(mat);
  sprite.scale.set(3.2, 0.8, 1);
  sprite.renderOrder = 10;
  return sprite;
}
function roundRect(ctx,x,y,w,h,r){
  ctx.beginPath();
  ctx.moveTo(x+r,y);
  ctx.arcTo(x+w,y,x+w,y+h,r);
  ctx.arcTo(x+w,y+h,x,y+h,r);
  ctx.arcTo(x,y+h,x,y,r);
  ctx.arcTo(x,y,x+w,y,r);
  ctx.closePath();
}

const solids = []; // { mesh, x,y,z,w,h,d }
function addBlock(x,y,z,w,h,d,color,opts){
  opts = opts || {};
  const mat = opts.texture
    ? new THREE.MeshStandardMaterial({ map: opts.texture, roughness: opts.roughness ?? 0.9, metalness: opts.metalness ?? 0.02 })
    : new THREE.MeshStandardMaterial({ color, roughness: opts.roughness ?? 0.7, metalness: opts.metalness ?? 0.08 });
  const mesh = new THREE.Mesh(getBoxGeo(w,h,d), mat);
  mesh.position.set(x,y,z);
  mesh.castShadow = true;
  mesh.receiveShadow = true;
  scene.add(mesh);
  solids.push({ mesh, x, y, z, w, h, d });
  return mesh;
}

const coinGeo = new THREE.CylinderGeometry(0.4, 0.4, 0.1, 16);
const coinMat = new THREE.MeshStandardMaterial({ color: 0xe8c33a, metalness: 0.95, roughness: 0.25 });
const coins = [];
const npcs = []; // { mesh, courseIndex, speed, catchRadius, homeX, homeZ }
function addCoin(x,y,z){
  const mesh = new THREE.Mesh(coinGeo, coinMat);
  mesh.rotation.x = Math.PI/2;
  mesh.position.set(x,y,z);
  mesh.castShadow = true;
  scene.add(mesh);
  coins.push({ mesh, taken:false, x, y, z });
}

// ---------- Hub / Lobby (origin) ----------
const hubGrassTex = makeGrassTexture(0x3f7a2e);
addBlock(0, -0.5, 0, 90, 1, 90, 0x3f7a2e, { texture: hubGrassTex, roughness: 1.0 });
addBlock(0, 0.05, -45, 90, 0.2, 1, 0x5a4632, { roughness: 1.0 });
addBlock(0, 0.05, 45, 90, 0.2, 1, 0x5a4632, { roughness: 1.0 });
addBlock(-45, 0.05, 0, 1, 0.2, 90, 0x5a4632, { roughness: 1.0 });
addBlock(45, 0.05, 0, 1, 0.2, 90, 0x5a4632, { roughness: 1.0 });

function makeBrickTexture(baseColor){
  const size = 128;
  const c = document.createElement('canvas');
  c.width = size; c.height = size;
  const ctx = c.getContext('2d');
  ctx.fillStyle = baseColor;
  ctx.fillRect(0,0,size,size);
  ctx.strokeStyle = 'rgba(0,0,0,0.15)';
  ctx.lineWidth = 2;
  for (let y=0; y<size; y+=16){ ctx.beginPath(); ctx.moveTo(0,y); ctx.lineTo(size,y); ctx.stroke(); }
  for (let y=0; y<size; y+=16){
    const offset = (y/16 % 2 === 0) ? 0 : 16;
    for (let x=offset; x<size; x+=32){ ctx.beginPath(); ctx.moveTo(x,y); ctx.lineTo(x,y+16); ctx.stroke(); }
  }
  const tex = new THREE.CanvasTexture(c);
  tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
  tex.repeat.set(2,2);
  return tex;
}
function buildTower(cx, cz, w, h, d, wallColor, roofColor){
  addBlock(cx, h/2, cz, w, h, d, wallColor, { texture: makeBrickTexture(wallColor), roughness: 0.95 });
  addBlock(cx, h + 0.4, cz, w+0.6, 0.8, d+0.6, roofColor, { roughness: 0.7 });
}
buildTower(-38, -38, 5, 5, 5, '#c9b79c', 0x7a2e22);
buildTower(38, -38, 5, 5, 5, '#b8b8b8', 0x2c4d78);

// ---------- Framed photo near spawn ----------
const catsDataURI = 'data:image/jpeg;base64,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';
const catsTexture = new THREE.TextureLoader().load(catsDataURI);
if (catsTexture.encoding !== undefined) catsTexture.encoding = THREE.sRGBEncoding;
addBlock(0, 1.5, -11, 3.7, 2.7, 0.2, 0x5a3a22, { roughness:0.75 }); // wooden frame backing
const picMat = new THREE.MeshBasicMaterial({ map: catsTexture, side: THREE.DoubleSide });
const picMesh = new THREE.Mesh(new THREE.PlaneGeometry(3.3, 2.3), picMat);
picMesh.position.set(0, 1.55, -10.88);
scene.add(picMesh);
const picLabel = makeLabelSprite('My Cats', 0xc9a227);
picLabel.scale.set(1.8, 0.45, 1);
picLabel.position.set(0, 3.1, -10.9);
scene.add(picLabel);


// ---------- Course name/theme generator (32 distinct mini-courses) ----------
const courseNames = [
  "Sky Climb","Lava Rush","Candy Land","Neon Drop","Frost Peak","Desert Dash","Jungle Vine","Crystal Cave",
  "Pirate Cove","Cloud Nine","Volcano Escape","Rainbow Road","Shadow Realm","Golden Temple","Ice Palace","Toxic Swamp",
  "Space Station","Ancient Ruins","Bubble Gum","Storm Tower","Mystic Forest","Robo Factory","Coral Reef","Dragon's Lair",
  "Moonwalk","Cyber City","Enchanted Garden","Thunder Peak","Sandstorm","Aurora Skies","Molten Core","Starlight Path"
];
const patternTypes = ['zigzag','spiral','stairs','wide','narrow'];
const NUM_COURSES = courseNames.length;
const COURSE_SPACING = 46;
const HUB_GRID_COLS = 8;

const games = [];
for (let i=0; i<NUM_COURSES; i++){
  const hue = (i * 137.508) % 360;
  const palette = [0,1,2,3].map(k => new THREE.Color(`hsl(${hue}, 65%, ${45 + k*8}%)`).getHex());
  const pattern = patternTypes[i % patternTypes.length];
  const steps = 8 + (i % 5) * 2;
  const difficulty = steps <= 10 ? 'Easy' : steps <= 14 ? 'Medium' : 'Hard';
  games.push({ index:i, name: courseNames[i], hue, palette, pattern, steps, difficulty });
}

// Swap in a few homages to real classic Roblox games — the ones that share our
// obby mechanic get renamed to match (authentic fit); Murder Mystery gets a real
// new mechanic (a chasing NPC) since its gameplay is genuinely different.
Object.assign(games[0], { name:'Tower of Hell', pattern:'spiral', steps:18, difficulty:'Extreme',
  palette:[0x3a3a3a,0x555555,0xc0392b,0xe67e22] });
Object.assign(games[1], { name:'Speed Run 4', pattern:'zigzag', steps:12, difficulty:'Medium' });
Object.assign(games[2], { name:'Mega Fun Obby', pattern:'wide', steps:14, difficulty:'Medium' });
Object.assign(games[3], { name:'Murder Mystery', pattern:'murder', difficulty:'Thriller',
  palette:[0x1a1a1a,0x8b1a1a,0xc9a227,0x555555] });

// Hub portal pads arranged in a grid
const portals = []; // { x,z,index }
const PAD_GAP = 5.5;
const rows = Math.ceil(NUM_COURSES / HUB_GRID_COLS);
const gridW = (HUB_GRID_COLS-1)*PAD_GAP, gridD = (rows-1)*PAD_GAP;
for (let i=0; i<NUM_COURSES; i++){
  const col = i % HUB_GRID_COLS, row = Math.floor(i / HUB_GRID_COLS);
  const px = -gridW/2 + col*PAD_GAP;
  const pz = -gridD/2 + row*PAD_GAP + 6;
  const g = games[i];
  const pad = addBlock(px, 0.06, pz, 3, 0.15, 3, g.palette[1], { roughness:0.5, metalness:0.15 });
  pad.userData.portalIndex = i;
  const label = makeLabelSprite((i+1)+'. '+g.name, g.palette[2]);
  label.position.set(px, 2.1, pz);
  scene.add(label);
  portals.push({ x:px, z:pz, index:i, mesh: pad });
}
const portalMeshes = portals.map(p => p.mesh);

// ---------- Build each course out in its own grid cell, far from the hub ----------
function courseCenter(i){
  const col = i % HUB_GRID_COLS, row = Math.floor(i / HUB_GRID_COLS);
  return { cx: (col - HUB_GRID_COLS/2) * COURSE_SPACING * 3 + 400, cz: row * COURSE_SPACING * 3 };
}

function buildCourse(g){
  const { cx, cz } = courseCenter(g.index);
  const startX = cx, startZ = cz, startY = 0.6;

  const label = makeLabelSprite((g.index+1)+'. '+g.name+'  ['+g.difficulty+']', g.palette[2]);
  label.position.set(startX, 3.2, startZ);
  scene.add(label);

  // ---- Murder Mystery homage: a small arena with a chasing NPC to evade ----
  if (g.pattern === 'murder'){
    const arenaSize = 22;
    // floor spans from the entrance (cz) to the far wall (cz+arenaSize)
    addBlock(cx, -0.25, cz + arenaSize/2, arenaSize, 0.5, arenaSize, g.palette[0], { roughness:1.0 });
    const wallH = 3, wallColor = g.palette[3];
    addBlock(cx, wallH/2, cz + arenaSize, arenaSize, wallH, 0.6, wallColor);           // far wall
    addBlock(cx - arenaSize/2, wallH/2, cz + arenaSize/2, 0.6, wallH, arenaSize, wallColor); // left wall
    addBlock(cx + arenaSize/2, wallH/2, cz + arenaSize/2, 0.6, wallH, arenaSize, wallColor); // right wall
    // hiding pillars
    addBlock(cx - 6, 1.5, cz + 8, 2, 3, 2, g.palette[1], { roughness:0.8 });
    addBlock(cx + 6, 1.5, cz + 14, 2, 3, 2, g.palette[1], { roughness:0.8 });
    addBlock(cx + 3, 1.5, cz + 6, 2, 3, 2, g.palette[1], { roughness:0.8 });
    // "sword" pickup (visual only, reuses the coin system)
    addCoin(cx - 2, 1.0, cz + arenaSize - 4);

    const finishX = cx, finishY = 0.6, finishZ = cz + arenaSize - 1.2;
    addBlock(finishX, 0.3, finishZ, 3, 0.6, 3, 0xf5d020, { roughness:0.4, metalness:0.3 });

    // the murderer NPC
    const npcMat = new THREE.MeshStandardMaterial({ color: 0x8b1a1a, roughness:0.7 });
    const npcHeadMat = new THREE.MeshStandardMaterial({ color: 0x1a1a1a, roughness:0.8 });
    const npcMesh = new THREE.Group();
    const npcBody = new THREE.Mesh(getBoxGeo(0.7,1.2,0.4), npcMat); npcBody.position.y = 0.9; npcBody.castShadow = true;
    const npcHead = new THREE.Mesh(new THREE.SphereGeometry(0.3,12,12), npcHeadMat); npcHead.position.y = 1.7; npcHead.castShadow = true;
    npcMesh.add(npcBody, npcHead);
    const homeX = cx, homeZ = cz + 5;
    npcMesh.position.set(homeX, 0, homeZ);
    scene.add(npcMesh);
    npcs.push({ mesh: npcMesh, courseIndex: g.index, speed: 3.0, catchRadius: 1.1, homeX, homeZ });

    return { startX: cx, startY: 0.6, startZ: cz - 3, finishX, finishY, finishZ };
  }

  // start platform (regular obby courses)
  addBlock(startX, 0, startZ, 6, 1, 6, g.palette[0], { roughness:0.8 });

  let x = startX, y = 0.5, z = startZ + 4;
  const positions = [];
  for (let i=0; i<g.steps; i++){
    let w = 2.6, d = 2.6, h = 0.55;
    if (g.pattern === 'zigzag'){
      x = startX + Math.sin(i*0.9) * 4.5;
      z = startZ + 4 + i*3.2;
      y = 0.5 + i*0.5;
    } else if (g.pattern === 'spiral'){
      const ang = i * 0.55;
      const rad = 3 + i*0.6;
      x = startX + Math.cos(ang)*rad;
      z = startZ + 4 + Math.sin(ang)*rad + i*0.6;
      y = 0.5 + i*0.55;
    } else if (g.pattern === 'stairs'){
      x = startX;
      z = startZ + 4 + i*2.6;
      y = 0.5 + i*0.6;
    } else if (g.pattern === 'wide'){
      w = Math.max(1.2, 2.8 - i*0.12);
      d = w;
      x = startX + (i%2===0 ? -1 : 1) * (1.2 + i*0.15);
      z = startZ + 4 + i*3.0;
      y = 0.5 + i*0.5;
    } else { // narrow, bigger horizontal jumps
      x = startX + Math.sin(i*1.3) * 6;
      z = startZ + 4 + i*3.6;
      y = 0.5 + i*0.45;
      w = 1.8; d = 1.8;
    }
    addBlock(x, y, z, w, h, d, g.palette[i % g.palette.length], { roughness:0.6, metalness:0.1 });
    positions.push({x,y,z});
    if (i % 2 === 1) addCoin(x, y + 0.7, z);
  }

  const finish = positions[positions.length-1];
  const finishX = finish.x, finishY = finish.y + 0.6, finishZ = finish.z;
  addBlock(finishX, finish.y, finishZ, 4.5, 0.6, 4.5, 0xf5d020, { roughness:0.4, metalness:0.3 });
  const flagPole = new THREE.Mesh(getBoxGeo(0.14,3.4,0.14), new THREE.MeshStandardMaterial({color:0x5a4632, roughness:0.8}));
  flagPole.castShadow = true;
  flagPole.position.set(finishX, finish.y + 2.0, finishZ);
  scene.add(flagPole);
  const flagCloth = new THREE.Mesh(getBoxGeo(1.1,0.7,0.05), new THREE.MeshStandardMaterial({color: g.palette[3], roughness:0.7}));
  flagCloth.castShadow = true;
  flagCloth.position.set(finishX + 0.6, finish.y + 3.2, finishZ);
  scene.add(flagCloth);

  return { startX, startY, startZ, finishX, finishY, finishZ };
}

const courseData = games.map(buildCourse);
document.getElementById('coinTotal').textContent = coins.length;
let coinCount = 0;

// ---------- Player avatar ----------
const avatar = new THREE.Group();
const skinMat = new THREE.MeshStandardMaterial({ color:0xd9a066, roughness:0.75, metalness:0.02 });
const shirtMat = new THREE.MeshStandardMaterial({ color:0x2f5fa8, roughness:0.85, metalness:0.02 });
const pantsMat = new THREE.MeshStandardMaterial({ color:0x2e2e2e, roughness:0.85, metalness:0.02 });
function part(w,h,d,mat){
  const m = new THREE.Mesh(getBoxGeo(w,h,d), mat);
  m.castShadow = true;
  return m;
}
const head = new THREE.Mesh(new THREE.SphereGeometry(0.34, 16, 16), skinMat);
head.castShadow = true;
head.position.y = 1.72;
const torso = part(0.62,0.85,0.34,shirtMat); torso.position.y = 1.05;
function makeLimb(w,h,d,mat,jointY){
  const pivot = new THREE.Group();
  pivot.position.y = jointY;
  const mesh = part(w,h,d,mat);
  mesh.position.y = -h/2;
  pivot.add(mesh);
  return pivot;
}
const armL = makeLimb(0.2,0.75,0.2,skinMat,1.42);  armL.position.x = -0.44;
const armR = makeLimb(0.2,0.75,0.2,skinMat,1.42);  armR.position.x = 0.44;
const legL = makeLimb(0.24,0.8,0.24,pantsMat,0.55); legL.position.x = -0.15;
const legR = makeLimb(0.24,0.8,0.24,pantsMat,0.55); legR.position.x = 0.15;

// Hair and beard attach to the head so they move and rotate with it
const hairGroup = new THREE.Group();
const beardGroup = new THREE.Group();
head.add(hairGroup, beardGroup);

avatar.add(torso, head, armL, armR, legL, legR);
scene.add(avatar);

// ---------- Locker: hair/beard customization ----------
const hairColors = [0x2b2b2b, 0x6b3f22, 0xc9a227, 0xd94f4f, 0xf2f2f2, 0x3a6fb0];
const beardColors = hairColors;

function clearGroup(g){ while(g.children.length) g.children.pop(); }

function buildHair(style, color){
  clearGroup(hairGroup);
  const mat = new THREE.MeshStandardMaterial({ color, roughness:0.85 });
  if (style === 'none') return;
  if (style === 'short'){
    const cap = new THREE.Mesh(new THREE.SphereGeometry(0.36, 14, 14, 0, Math.PI*2, 0, Math.PI*0.55), mat);
    cap.position.y = 0.06;
    cap.castShadow = true;
    hairGroup.add(cap);
  } else if (style === 'long'){
    const cap = new THREE.Mesh(new THREE.SphereGeometry(0.37, 14, 14, 0, Math.PI*2, 0, Math.PI*0.6), mat);
    cap.position.y = 0.05;
    cap.castShadow = true;
    const back = new THREE.Mesh(getBoxGeo(0.5, 0.55, 0.18), mat);
    back.position.set(0, -0.18, -0.2);
    back.castShadow = true;
    hairGroup.add(cap, back);
  } else if (style === 'mohawk'){
    const strip = new THREE.Mesh(getBoxGeo(0.12, 0.22, 0.58), mat);
    strip.position.y = 0.28;
    strip.castShadow = true;
    hairGroup.add(strip);
  } else if (style === 'buzz'){
    const cap = new THREE.Mesh(new THREE.SphereGeometry(0.345, 14, 14, 0, Math.PI*2, 0, Math.PI*0.5), mat);
    cap.position.y = 0.03;
    cap.castShadow = true;
    hairGroup.add(cap);
  }
}

function buildBeard(style, color){
  clearGroup(beardGroup);
  const mat = new THREE.MeshStandardMaterial({ color, roughness:0.85 });
  if (style === 'none') return;
  if (style === 'stubble'){
    const chin = new THREE.Mesh(getBoxGeo(0.34, 0.16, 0.12), mat);
    chin.position.set(0, -0.2, 0.26);
    chin.castShadow = true;
    beardGroup.add(chin);
  } else if (style === 'goatee'){
    const chin = new THREE.Mesh(getBoxGeo(0.16, 0.22, 0.12), mat);
    chin.position.set(0, -0.26, 0.28);
    chin.castShadow = true;
    beardGroup.add(chin);
  } else if (style === 'full'){
    const chin = new THREE.Mesh(getBoxGeo(0.4, 0.32, 0.16), mat);
    chin.position.set(0, -0.22, 0.24);
    chin.castShadow = true;
    const sideL = new THREE.Mesh(getBoxGeo(0.1, 0.3, 0.3), mat);
    sideL.position.set(-0.24, -0.1, 0.14);
    sideL.castShadow = true;
    const sideR = sideL.clone();
    sideR.position.x = 0.24;
    beardGroup.add(chin, sideL, sideR);
  }
}

const character = { hairStyle:'short', hairColor: hairColors[0], beardStyle:'none', beardColor: beardColors[0] };
buildHair(character.hairStyle, character.hairColor);
buildBeard(character.beardStyle, character.beardColor);

// Build locker UI options
const hairStyles = [
  { id:'none', label:'None' }, { id:'buzz', label:'Buzz' }, { id:'short', label:'Short' },
  { id:'long', label:'Long' }, { id:'mohawk', label:'Mohawk' }
];
const beardStyles = [
  { id:'none', label:'None' }, { id:'stubble', label:'Stubble' },
  { id:'goatee', label:'Goatee' }, { id:'full', label:'Full Beard' }
];

function renderOptionRow(containerId, options, currentKey, onPick){
  const row = document.getElementById(containerId);
  row.innerHTML = '';
  options.forEach(opt => {
    const el = document.createElement('div');
    el.className = 'lockerOption' + (character[currentKey] === opt.id ? ' active' : '');
    el.textContent = opt.label;
    el.addEventListener('touchstart', (e)=>{
      e.preventDefault();
      character[currentKey] = opt.id;
      onPick();
      renderLocker();
    }, {passive:false});
    row.appendChild(el);
  });
}
function renderColorRow(containerId, colors, currentKey, onPick){
  const row = document.getElementById(containerId);
  row.innerHTML = '';
  colors.forEach(c => {
    const el = document.createElement('div');
    el.className = 'colorSwatch' + (character[currentKey] === c ? ' active' : '');
    el.style.background = '#' + new THREE.Color(c).getHexString();
    el.addEventListener('touchstart', (e)=>{
      e.preventDefault();
      character[currentKey] = c;
      onPick();
      renderLocker();
    }, {passive:false});
    row.appendChild(el);
  });
}
function renderLocker(){
  renderOptionRow('hairStyleRow', hairStyles, 'hairStyle', ()=>buildHair(character.hairStyle, character.hairColor));
  renderColorRow('hairColorRow', hairColors, 'hairColor', ()=>buildHair(character.hairStyle, character.hairColor));
  renderOptionRow('beardStyleRow', beardStyles, 'beardStyle', ()=>buildBeard(character.beardStyle, character.beardColor));
  renderColorRow('beardColorRow', beardColors, 'beardColor', ()=>buildBeard(character.beardStyle, character.beardColor));
}
renderLocker();

document.getElementById('lockerBtn').addEventListener('touchstart', (e)=>{
  e.preventDefault();
  document.getElementById('lockerPanel').style.display = 'flex';
}, {passive:false});
document.getElementById('lockerDone').addEventListener('touchstart', (e)=>{
  e.preventDefault();
  document.getElementById('lockerPanel').style.display = 'none';
}, {passive:false});

const PLAYER_HALF_HEIGHT = 1.4;
const PLAYER_RADIUS = 0.45;

const player = {
  pos: new THREE.Vector3(0, 3, -6),
  velY: 0,
  onGround: false,
  yaw: Math.PI,
  pitch: -0.18
};
let currentZone = 'lobby'; // 'lobby' or a course index
let respawnPoint = { x:0, y:3, z:-6 };

camera.rotation.order = 'YXZ';
let walkCycle = 0;
let animTime = 0;

// ---------- Touch controls ----------
let moveVec = {x:0, y:0};
const joystick = document.getElementById('joystick');
const knob = document.getElementById('joystickKnob');
let joyId = null, joyCenter = {x:0,y:0};

joystick.addEventListener('touchstart', (e)=>{
  e.preventDefault();
  const t = e.changedTouches[0];
  joyId = t.identifier;
  const rect = joystick.getBoundingClientRect();
  joyCenter = { x: rect.left+rect.width/2, y: rect.top+rect.height/2 };
}, {passive:false});

window.addEventListener('touchmove', (e)=>{
  for (const t of e.changedTouches){
    if (t.identifier === joyId){
      e.preventDefault();
      let dx = t.clientX - joyCenter.x;
      let dy = t.clientY - joyCenter.y;
      const maxD = 40;
      const dist = Math.min(Math.hypot(dx,dy), maxD);
      const ang = Math.atan2(dy,dx);
      dx = Math.cos(ang)*dist; dy = Math.sin(ang)*dist;
      knob.style.left = (32+dx)+'px';
      knob.style.top = (32+dy)+'px';
      moveVec.x = dx/maxD; moveVec.y = dy/maxD;
    }
  }
}, {passive:false});

window.addEventListener('touchend', (e)=>{
  for (const t of e.changedTouches){
    if (t.identifier === joyId){
      joyId = null;
      moveVec.x = 0; moveVec.y = 0;
      knob.style.left = '32px'; knob.style.top = '32px';
    }
  }
});

let lookId = null, lastLook = {x:0,y:0};
function isUIElement(el){
  return el.closest('#joystick') || el.closest('#jumpBtn') || el.closest('#lobbyBtn');
}
renderer.domElement.addEventListener('touchstart', (e)=>{
  for (const t of e.changedTouches){
    if (lookId===null && !isUIElement(document.elementFromPoint(t.clientX,t.clientY) || document.body)){
      lookId = t.identifier;
      lastLook = { x:t.clientX, y:t.clientY };
    }
  }
}, {passive:false});
window.addEventListener('touchmove', (e)=>{
  for (const t of e.changedTouches){
    if (t.identifier === lookId){
      const dx = t.clientX - lastLook.x;
      const dy = t.clientY - lastLook.y;
      lastLook = { x:t.clientX, y:t.clientY };
      player.yaw -= dx * 0.005;
      player.pitch -= dy * 0.005;
      player.pitch = Math.max(-1.2, Math.min(1.0, player.pitch));
    }
  }
});
window.addEventListener('touchend', (e)=>{
  for (const t of e.changedTouches){ if (t.identifier === lookId) lookId = null; }
});

let jumpPressed = false;
document.getElementById('jumpBtn').addEventListener('touchstart', (e)=>{ e.preventDefault(); jumpPressed = true; }, {passive:false});
document.getElementById('jumpBtn').addEventListener('touchend', ()=>{ jumpPressed = false; });

function goToLobby(){
  player.pos.set(0, 3, -6);
  player.velY = 0;
  respawnPoint = { x:0, y:3, z:-6 };
  currentZone = 'lobby';
  document.getElementById('zoneName').textContent = 'Lobby';
  document.getElementById('lobbyBtn').style.display = 'none';
}
document.getElementById('lobbyBtn').addEventListener('touchstart', (e)=>{ e.preventDefault(); goToLobby(); }, {passive:false});

function enterCourse(i){
  const c = courseData[i];
  player.pos.set(c.startX, c.startY + 3, c.startZ - 3);
  player.velY = 0;
  respawnPoint = { x:c.startX, y:c.startY+3, z:c.startZ-3 };
  currentZone = i;
  document.getElementById('zoneName').textContent = games[i].name + ' (' + games[i].difficulty + ')';
  document.getElementById('lobbyBtn').style.display = 'flex';
}

let actionLock = false;
function showMessage(text, bg){
  const w = document.getElementById('winMsg');
  document.getElementById('msgText').textContent = text;
  w.style.background = bg || 'rgba(20,160,60,0.88)';
  w.style.display = 'block';
}
function hideMessage(){
  document.getElementById('winMsg').style.display = 'none';
}
function triggerWin(){
  if (actionLock) return;
  actionLock = true;
  showMessage('🏆 Course Complete!', 'rgba(20,160,60,0.88)');
  setTimeout(()=>{ hideMessage(); actionLock = false; goToLobby(); }, 2200);
}
function triggerCaught(){
  if (actionLock) return;
  actionLock = true;
  showMessage('😱 Caught! Respawning...', 'rgba(139,26,26,0.9)');
  player.pos.set(respawnPoint.x, respawnPoint.y, respawnPoint.z);
  player.velY = 0;
  setTimeout(()=>{ hideMessage(); actionLock = false; }, 1300);
}

// ---------- Physics ----------
const GRAVITY = -28;
const JUMP_SPEED = 10.5;
const MOVE_SPEED = 6.5;

function groundHeightAt(x, z, currentY){
  let best = -Infinity;
  for (const s of solids){
    const halfW = s.w/2, halfD = s.d/2;
    if (x > s.x-halfW-PLAYER_RADIUS && x < s.x+halfW+PLAYER_RADIUS &&
        z > s.z-halfD-PLAYER_RADIUS && z < s.z+halfD+PLAYER_RADIUS){
      const top = s.y + s.h/2;
      if (top <= currentY + 0.6 && top > best) best = top;
    }
  }
  return best;
}
function horizontalBlocked(x, z, y){
  for (const s of solids){
    const halfW = s.w/2, halfD = s.d/2;
    const top = s.y + s.h/2, bottom = s.y - s.h/2;
    if (y + 1.5 > bottom && y + 0.2 < top){
      if (x > s.x-halfW-PLAYER_RADIUS && x < s.x+halfW+PLAYER_RADIUS &&
          z > s.z-halfD-PLAYER_RADIUS && z < s.z+halfD+PLAYER_RADIUS){
        if (top - y > 0.75) return true;
      }
    }
  }
  return false;
}

const camOffset = { distance: 6, height: 2.2 };
const raycaster = new THREE.Raycaster();

function updatePlayer(dt){
  const forward = new THREE.Vector3(Math.sin(player.yaw), 0, Math.cos(player.yaw));
  const right = new THREE.Vector3(Math.cos(player.yaw), 0, -Math.sin(player.yaw));
  const moveX = -moveVec.x;
  const moveZ = -moveVec.y;
  const vel = new THREE.Vector3();
  vel.addScaledVector(right, moveX);
  vel.addScaledVector(forward, moveZ);
  if (vel.length() > 0) vel.normalize().multiplyScalar(MOVE_SPEED * dt);

  const nx = player.pos.x + vel.x;
  const nz = player.pos.z + vel.z;
  if (!horizontalBlocked(nx, player.pos.z, player.pos.y - PLAYER_HALF_HEIGHT)) player.pos.x = nx;
  if (!horizontalBlocked(player.pos.x, nz, player.pos.y - PLAYER_HALF_HEIGHT)) player.pos.z = nz;

  player.velY += GRAVITY * dt;
  let ny = player.pos.y + player.velY * dt;

  const feetY = player.pos.y - PLAYER_HALF_HEIGHT;
  const groundTop = groundHeightAt(player.pos.x, player.pos.z, feetY);
  const newFeetY = ny - PLAYER_HALF_HEIGHT;

  if (player.velY <= 0 && groundTop > -Infinity && newFeetY <= groundTop){
    ny = groundTop + PLAYER_HALF_HEIGHT;
    player.velY = 0;
    player.onGround = true;
  } else {
    player.onGround = false;
  }

  if (jumpPressed && player.onGround){
    player.velY = JUMP_SPEED;
    player.onGround = false;
  }

  player.pos.y = ny;

  if (player.pos.y < -20){
    player.pos.set(respawnPoint.x, respawnPoint.y, respawnPoint.z);
    player.velY = 0;
  }

  // coin pickups
  for (const c of coins){
    if (c.taken) continue;
    const dx = c.x - player.pos.x, dz = c.z - player.pos.z, dy = c.y - player.pos.y;
    if (dx*dx + dz*dz < 1.3*1.3 && Math.abs(dy) < 1.6){
      c.taken = true;
      c.mesh.visible = false;
      coinCount++;
      document.getElementById('coinCount').textContent = coinCount;
    } else {
      c.mesh.rotation.z += dt * 2.0;
    }
  }

  // lobby portal detection — raycast straight down from the player onto the actual
  // pad meshes, so detection is tied to the real rendered geometry (never drifts out
  // of sync with hand-tracked coordinates)
  if (currentZone === 'lobby'){
    const origin = new THREE.Vector3(player.pos.x, player.pos.y - PLAYER_HALF_HEIGHT + 0.5, player.pos.z);
    raycaster.set(origin, new THREE.Vector3(0,-1,0));
    raycaster.far = 1.2;
    const hits = raycaster.intersectObjects(portalMeshes, false);
    raycaster.far = Infinity;
    if (hits.length > 0){
      enterCourse(hits[0].object.userData.portalIndex);
    }
  }

  // course finish detection
  if (currentZone !== 'lobby'){
    const c = courseData[currentZone];
    const fdx = c.finishX - player.pos.x, fdz = c.finishZ - player.pos.z;
    if (fdx*fdx + fdz*fdz < 2.3*2.3 && Math.abs(c.finishY - player.pos.y) < 2.0){
      triggerWin();
    }
  }

  // murderer NPC chase (only active while its course is loaded)
  for (const n of npcs){
    if (currentZone === n.courseIndex){
      const dx = player.pos.x - n.mesh.position.x;
      const dz = player.pos.z - n.mesh.position.z;
      const d = Math.hypot(dx, dz);
      if (d > 0.05){
        n.mesh.position.x += (dx/d) * n.speed * dt;
        n.mesh.position.z += (dz/d) * n.speed * dt;
        n.mesh.rotation.y = Math.atan2(dx, dz);
      }
      if (d < n.catchRadius) triggerCaught();
    } else if (n.mesh.position.x !== n.homeX || n.mesh.position.z !== n.homeZ){
      n.mesh.position.set(n.homeX, 0, n.homeZ); // reset when player leaves
    }
  }

  avatar.position.set(player.pos.x, player.pos.y - PLAYER_HALF_HEIGHT, player.pos.z);
  avatar.rotation.y = player.yaw;

  animTime += dt;
  const speed = Math.hypot(vel.x, vel.z) / Math.max(dt, 0.0001);
  const isMoving = speed > 0.15;
  if (!player.onGround){
    // Stylized jump pose inspired by Fortnite's snappy airborne look — not a copy of
    // the actual animation, just the general shape: knees tuck up on launch, arms swing
    // back for momentum, then legs extend and arms come forward to brace for landing.
    const t = Math.max(-1, Math.min(1, player.velY / JUMP_SPEED));
    const rising = Math.max(0, t);
    const falling = Math.max(0, -t);
    armL.rotation.x = -1.05*rising + 0.4*falling;
    armR.rotation.x = -1.05*rising + 0.4*falling;
    armL.rotation.z = 0.3*rising;
    armR.rotation.z = -0.3*rising;
    legL.rotation.x = 1.3*rising - 0.2*falling;
    legR.rotation.x = 1.3*rising - 0.2*falling;
    legL.rotation.z = 0.12*rising;
    legR.rotation.z = -0.12*rising;
    torso.rotation.x += ((-0.1*rising + 0.12*falling) - torso.rotation.x) * 0.3;
    torso.rotation.z += (0 - torso.rotation.z) * 0.15;
    torso.rotation.y += (0 - torso.rotation.y) * 0.15;
    head.rotation.y += (0 - head.rotation.y) * 0.15;
    torso.position.y += (1.05 - torso.position.y) * 0.2;
    head.position.y += (1.72 - head.position.y) * 0.2;
  } else if (isMoving){
    walkCycle += dt * Math.min(speed, MOVE_SPEED) * 3.2;
    const swing = Math.sin(walkCycle) * 0.65;
    armL.rotation.x = swing;
    armR.rotation.x = -swing;
    legL.rotation.x = -swing;
    legR.rotation.x = swing;
    armL.rotation.z += (0 - armL.rotation.z) * 0.2;
    armR.rotation.z += (0 - armR.rotation.z) * 0.2;
    legL.rotation.z += (0 - legL.rotation.z) * 0.2;
    legR.rotation.z += (0 - legR.rotation.z) * 0.2;
    torso.rotation.x += (0 - torso.rotation.x) * 0.2;
    // natural counter-twist through the torso and a slight side-to-side lean/bob
    torso.rotation.y = -swing * 0.18;
    torso.rotation.z = Math.sin(walkCycle) * 0.045;
    head.rotation.y = swing * 0.08;
    head.rotation.z = -Math.sin(walkCycle) * 0.02;
    const bob = Math.abs(Math.sin(walkCycle)) * 0.055;
    torso.position.y = 1.05 + bob;
    head.position.y = 1.72 + bob * 0.7;
  } else {
    walkCycle = 0;
    armL.rotation.x += (0 - armL.rotation.x) * 0.15;
    armR.rotation.x += (0 - armR.rotation.x) * 0.15;
    legL.rotation.x += (0 - legL.rotation.x) * 0.15;
    legR.rotation.x += (0 - legR.rotation.x) * 0.15;
    armL.rotation.z += (0 - armL.rotation.z) * 0.2;
    armR.rotation.z += (0 - armR.rotation.z) * 0.2;
    legL.rotation.z += (0 - legL.rotation.z) * 0.2;
    legR.rotation.z += (0 - legR.rotation.z) * 0.2;
    torso.rotation.x += (0 - torso.rotation.x) * 0.15;
    torso.rotation.y += (0 - torso.rotation.y) * 0.1;
    torso.rotation.z += (0 - torso.rotation.z) * 0.1;
    head.rotation.y += (0 - head.rotation.y) * 0.1;
    head.rotation.z += (0 - head.rotation.z) * 0.1;
    // idle breathing: gentle chest rise/fall and a very slow head sway
    const breathe = Math.sin(animTime * 1.4) * 0.018;
    torso.position.y += (1.05 + breathe - torso.position.y) * 0.15;
    head.position.y += (1.72 + breathe * 0.6 - head.position.y) * 0.15;
    head.rotation.x = Math.sin(animTime * 0.6) * 0.03;
  }

  const desiredDist = camOffset.distance;
  const camX = player.pos.x - Math.sin(player.yaw) * Math.cos(player.pitch) * desiredDist;
  const camY = player.pos.y + camOffset.height + Math.sin(player.pitch) * desiredDist;
  const camZ = player.pos.z - Math.cos(player.yaw) * Math.cos(player.pitch) * desiredDist;

  const from = new THREE.Vector3(player.pos.x, player.pos.y + 0.4, player.pos.z);
  const to = new THREE.Vector3(camX, camY, camZ);
  const dir = to.clone().sub(from);
  const dist = Math.max(dir.length(), 0.0001);
  dir.normalize();

  // camera collision only checks solids near the player (perf: skip full-world raycast)
  raycaster.set(from, dir);
  raycaster.far = dist;
  let finalDist = dist;
  const nearMeshes = [];
  for (const s of solids){
    if (Math.abs(s.x-player.pos.x) < 12 && Math.abs(s.z-player.pos.z) < 12) nearMeshes.push(s.mesh);
  }
  const hits = raycaster.intersectObjects(nearMeshes, false);
  if (hits.length > 0 && hits[0].distance < dist){
    finalDist = Math.max(1.2, hits[0].distance - 0.3);
  }
  const finalCamPos = from.clone().addScaledVector(dir, finalDist);
  camera.position.copy(finalCamPos);
  camera.lookAt(player.pos.x, player.pos.y + 0.3, player.pos.z);

  updateSun(player.pos.x, player.pos.z);
}

const clock = new THREE.Clock();
function animate(){
  requestAnimationFrame(animate);
  const dt = Math.min(clock.getDelta(), 0.05);
  updatePlayer(dt);
  renderer.render(scene, camera);
}
animate();

window.addEventListener('resize', ()=>{
  camera.aspect = window.innerWidth/window.innerHeight;
  camera.updateProjectionMatrix();
  renderer.setSize(window.innerWidth, window.innerHeight);
});

setTimeout(()=>{
  const h = document.getElementById('hint');
  h.style.transition = 'opacity 1s';
  h.style.opacity = '0';
}, 7000);

} catch(err){
  const e = document.getElementById('errbox');
  e.style.display = 'block';
  e.textContent = 'Error: ' + err.message;
}
</script>
</body>
</html>

Game Source: Obby World Hub

Creator: LunarGalaxy87

Libraries: three

Complexity: complex (1039 lines, 125.4 KB)

The full source code is displayed above on this page.

Remix Instructions

To remix this game, copy the source code above and modify it. Add a ARCADELAB header at the top with "remix_of: obby-world-hub-lunargalaxy87" to link back to the original. Then publish at arcadelab.ai/publish.