Skip to content

Grok 4.3 (Venice) on One-shot a Minecraft-style voxel game in three.js

XGrok 4.3 (Venice) · venice-mini-agent v1.2 · cloud · 2026-10-15 · by @bobsiopener

Trust 80%Fully autonomoussuccess · first try
Cost
$0.02
Wall time
31s
Human step-ins
0
Outcome
Pass

Compare with other models on this task →

Rescored on 2026-10-28. Previous score: 92.5 / 100, outcome: success. See the previous run.

Summary

Exact prompt

In one pass, build a playable Minecraft-style voxel game as a single file index.html using three.js loaded from https://unpkg.com/three@0.160.0/build/three.module.js (ES module import). Requirements: a generated terrain of at least 32x32 columns with at least 3 block types; first-person WASD movement with mouse look (pointer lock); left click breaks the targeted block, right click places a block; number keys 1-3 select block type; a crosshair and a small HUD showing the selected block. No other files.

Task prompt given to the agent (headless, offline, synthetic fixture inputs): In one pass, build a playable Minecraft-style voxel game as a single file index.html using three.js loaded from https://unpkg.com/three@0.160.0/build/three.module.js (ES module import). Requirements: a generated terrain of at least 32x32 columns with at least 3 block types; first-person WASD movement with mouse look (pointer lock); left click breaks the targeted block, right click places a block; number keys 1-3 select block type; a crosshair and a small HUD showing the selected block. No other files. Inspired by https://x.com/notjazii/status/2075549898909622330 (unverified; not checked with the author). This is an independent re-run on a reproducible synthetic task; it does not report or reproduce the original post's numbers. Cost is real Venice spend (paid from DIEM credit), as reported by Venice.

Success criteria: All automated rubric checks pass: imports three@0.160.0 module; pointer lock; WASD; raycast break/place (mouse buttons 0 and 2); block select keys 1-3; crosshair + HUD elements; terrain >=32x32 (size constant); no uncaught console errors in headless Chrome.

Setup notes: Harness: venice-mini-agent v1.2 via Venice OpenAI-compatible API. Minimal OpenAI-compatible tool loop: tools list_files/read_file/write_file/run_shell in the work dir, max 25 turns, max 16,000 output tokens per call, temperature 0.2, Venice system prompt and web search off, $0.08 per-run cost cap. Identical for all Venice models. Cost source: Venice's published model pricing (USD per 1M tokens), fetched 2026-10-14; cost computed from per-call usage. Paid from Bob's DIEM daily allowance. Input tokens include cached reads; cache reads and cache writes are also counted separately (writes are 0 if not reported). Single run, no retries; scored automatically (8/8 checks). Runner notes: Single run, no retries. Same rubric and scorer as Claude runs. Web disabled. Rescored 2026-10-17 after Scout's audit, against unchanged output. The original score was 7/8. Full scorer detail is kept in our audit records.

Metrics

Cost
$0.02
Wall time
31s
Human step-ins
0
Turns
4
Model usage
ModelInput tokOutput tokCost
XGrok 4.3 (Venice)venice/grok-4-37,8823,205$0.02

Reproduce this run

  1. Use the use case prompt on the use case page.
  2. Same setup: Grok 4.3 (Venice) (venice/grok-4-3) via venice-mini-agent v1.2, cloud.
  3. It counts as a success only if it meets every success criterion: All automated rubric checks pass: imports three@0.160.0 module; pointer lock; WASD; raycast break/place (mouse buttons 0 and 2); block select keys 1-3; crosshair + HUD elements; terrain >=32x32 (size constant); no uncaught console errors in headless Chrome.
  4. Log model, tokens, wall time, human step-ins and the evidence log, then submit it as a reproduction. A different model? Submit a head-to-head rerun.

How runs are scored: Methodology.

Was this useful?

⇄ Rerun on another model

Automated checks

Trust 80% comes from these checks (how Trust % works).

Evidence log
{"turn": 1, "response": {"id": "160a5f26-2b25-9089-bbba-d23443767255", "object": "chat.completion", "created": 1792023735, "model": "grok-4-3", "choices": [{"index": 0, "message": {"role": "assistant", "content": null, "refusal": null, "reasoning_content": "I'm starting to build a single-file Minecraft-style voxel game using three.js from unpkg.\n\n[encrypted reasoning omitted, 979 chars]", "reasoning_encrypted": true, "reasoning_details": [{"type": "reasoning.encrypted", "format": "xai-responses-v1", "index": 0, "id": "rs_160a5f26-2b25-9089-bbba-d23443767255", "data": "OUyaXYc7C2btuf7mBy4sJNqpcXsbrbR9D/tqX8HmVZG2hEHut61IueNM7UHELg9RKa77Ki51U0PgSPUZSbP2NBj/qQ/OGBm5cGStWSIwX9qGAi93qmWCqONLyATS/fr1tlURfuKLgXT4xadRqbXhcGh3n414KvgvV1y7ATBxQ9zhKqpSH8z57f96Oavi133HUMCsNkK9GoOve3Cdt5XX/j1NKbjarqWDZz4sFw/EYMbZ7DxKJdnfi3xhDy8IfF0zBTxa6LcM683aee/g4jUIwtg2TKcm083Jkk6XIbGn3EwcUu2jS3Z7yozOorLy1OpgxQVQDDE6TnPQdu7lIX0FYycnJiVGG6tCSDi24AEIscI6VlNPEQqeK9y1sTmsyjsOopXJTe5D2kbAKZRamZWLs/s+rY/7pwDKsIC8AqgIhuOJhhu3De4MIgHRwtsTZ3X/t/9BMFWxtQ39ctiJN5eA0IuHls3TaEE7zdWC2NHzCJhTtjYnpZbpbEmaam8bSQjzfIngx7PrkNSckki041kqIQk2lr0Vy4vAq5SB179xbIYKG/Wvl90A4hbPlZexMmR0FftXn2B/q7C9PfTOyCy4v7XxvSe9AlZZRcKDy3sPF57haWlPBPQ/UD7Bh43HTsmJ5nM6bELsWY1KAZBvkaNDWn/8yJ0pR5lXyJmzF1wrl/pkL1Y0Sew8ubgBXRmEPSWkFonmz90nM2uvaOdzpp8ODxuc6xuKUTHlqaXQxSdvrxdXF2PsY4QvN8k0SqnE8Kgk449XpvDwdzFwYvILFqkKwhZvRBasu5SE53FQgc44cwkTs9Fhkm7Ni5XcpmF0u/KDxhbhJhk0JsGOsG+tAPIBJS/kCpzbPafsGxyTQChXfpHyp+4/sLNUKU00usaY9TsQHDG75xNF4qxEnfKcTayZHYhdsSbala1ZTjIcPdfkFsVuHEG52C5HcRbd1Mr2"}], "tool_calls": [{"id": "call-da30b576-82b9-4816-99b7-b14e30ab5258-0", "type": "function", "function": {"name": "list_files", "arguments": "{\"path\":\".\"}"}}]}, "finish_reason": "tool_calls", "logprobs": null}], "usage": {"prompt_tokens": 598, "completion_tokens": 167, "total_tokens": 765, "prompt_tokens_details": {"cached_tokens": 128}, "cache_read_input_tokens": 128, "completion_tokens_details": {"reasoning_tokens": 157}}, "cost": {"usd": 0, "diem": 0.0011694499999999998}, "venice_parameters": {"strip_thinking_response": false, "disable_thinking": false, "enable_e2ee": true, "enable_web_search": "off", "enable_web_scraping": false, "enable_web_citations": false, "include_search_results_in_stream": false, "include_venice_system_prompt": false, "enable_x_search": false, "web_search_citations": [], "return_search_results_as_documents": false}}}
{"turn": 1, "tool": "list_files", "args": {"path": "."}, "result": ""}
{"turn": 2, "response": {"id": "95654dea-c598-9a89-9943-e85128d19458", "object": "chat.completion", "created": 1792023737, "model": "grok-4-3", "choices": [{"index": 0, "message": {"role": "assistant", "content": null, "refusal": null, "reasoning_content": "The directory is empty. I will create a single index.html file containing the entire game.\n\nI will import three.js as an ES module from the unpkg CDN. The game needs a 32x32 terrain with at least three block types, first-person WASD movement with mouse look, left-click to break blocks and right-click to place them, number keys 1-3 for block selection, plus a crosshair and HUD. I am planning the HTML structure and code layout now.\n\n[encrypted reasoning omitted, 1665 chars]", "reasoning_encrypted": true, "reasoning_details": [{"type": "reasoning.encrypted", "format": "xai-responses-v1", "index": 0, "id": "rs_95654dea-c598-9a89-9943-e85128d19458", "data": "ms9sIAzHCzrAb0Xzg2GJPK1wTqj04ua2eJmAjNRYRamysiOW3Yc7IY1hrEX1OJJjXAjJ48srzU0/dPU+AubQiENvW2xFEcBYGVWURfBOlK+/Vc8r2A8tZMxvak/guU5pNrLGrj11O4dTAUqmIYLt0h9znADL6q26V7W4PXpV8QmrJEpNW8fefVy1jYkVG0TrbofP7aSLZ+x7zTUMaPH/tgfpN3dsEARbYCxo1D+lh8rpCF8FtA20GvjoVmg9COqnjCklGSKgI/Uz4xedbjKUysd3U0DUndCO1Eb8ncejuuJre/gJwCWAWywYt6HOyVBGh7IAKUuSTLuSEx62USeZvm7IxJh8XnNpCteLVRA1LxizkFTKni9mPHjI5mDOGESjEvZq3jSk2Y2SE9a/wk/z87OsgtjaYvuFcRyX2nlCkXbxDV/U0We3VoJyCEykyRuG2YJrVJCfzjNY9xlawEhrTU4Fh6Jq/B/LXO8BzoX+yZLhsxrfqffjYETH3YjqGupViYbOHkT1KVbrzRtMKY9m1KysdavghUirzu9QWVqkx6fSrDvVLaB5fsmz3yOsn9ysMzXA6VQ+1XO5vUiS91crkQZC2nzW4s3/FQjjc2CmejU/BbxK9+0SX81yTNNq/svAJNHoClVhfHhtGxMaleEL8Ixbx47PVaaNRCZvOITMTOj/gsdSnto7MxWC43yzlj56mgrMHa0goR4afUf37T1CbEhg5LW02mgG69NCFwU7S2I7bdXdRWFpkZPk/KD0l/pTGDJSCFZZAKH5OfFur3pS1vcp/D5cc+XwaWyhdEq1u/xEkvSlqhSx8w3/DIfAh06KlZ6/7+/xw4aqDoKQr+ichhUyzI51zhG+HBiZ4To6B9r+m97Gnd7xLwutLrkqZoABZTpExWTCI9zMC5qGP/XNKjsMrYxjpWj2rl6Q7q0/oP/Vpbc8PN610QPNOx03w89yXrULG3wq/FdwVUiajCg/+PGvNmN7J8B/MNVF8Utj5nC+GlqdSi1FKDr4+7WFD7lrpFaXT0w3PcqGpcS11SuxPB2y4PSut7EPeoNgLIBPn8Pxq/Kab144G+d46kPyEFGERcBdaSel2GTknsGMi18E6ccJzFjR0FkzPk4BTuKGnr9x1esJPEATDYEh+bTg8zywkBaKVJPb8KgPKKDQ+338mf5vVWqSb5VU7nbdro1AxraUuYANdItTcluPmfYLeyG7lior6z/qnb9rvenaWTNFiHENsTwV6znlRRqbHZRWH0VYkfIA/85hoXvzdfEYU8B4usgV/vRSjG7DqkemS/dE2CjCQH7tgyh2SG5Ac/B/IXqs3LxcK5UhCAXgUjf2U/EO2PGjzBkTLhb4V16ge20DdymMH7UsKJggv2YkrBGMqXq6rNKvDmvE7cF5M/U+cmm4kNgHTeQu3ePZcw2pNqO0twlzP6BDH0uI8zUqlDjRKNyxwFwjhcNE5oAs8Jnf+dQWBHvSL3qryU2o5bXg1IEL8LWeUVgnvnXBgjm9MdfOC1O7PQZhXQTlhFgvu2ED/1OKj0tj3kq9+1v+wohvkGk4ZUjY7CFKyuFjUrTHZ89esscXLWfddbr8yV44ueFE5ocDgMl+Nt+gQ5DfdBnqnuz5XzsCe6nxox+bUdYbApQ3gg"}], "tool_calls": [{"id": "call-fa1f9897-363f-4502-b588-81da65ba4d1b-1", "type": "function", "function": {"name": "write_file", "arguments": "{\"path\":\"index.html\",\"content\":\"<!DOCTYPE html>\\n<html lang=\\\"en\\\">\\n<head>\\n<meta charset=\\\"UTF-8\\\">\\n<title>VoxelCraft</title>\\n<style>\\nbody { margin:0; overflow:hidden; background:#000; }\\n#crosshair { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:20px; height:20px; pointer-events:none; }\\n#crosshair::before, #crosshair::after { content:''; position:absolute; background:#fff; }\\n#crosshair::before { left:50%; top:0; width:2px; height:100%; transform:translateX(-50%); }\\n#crosshair::after { top:50%; left:0; height:2px; width:100%; transform:translateY(-50%); }\\n#hud { position:absolute; top:10px; left:10px; color:#fff; font-family:monospace; background:rgba(0,0,0,0.5); padding:8px; border-radius:4px; }\\n#selected { display:inline-block; width:24px; height:24px; vertical-align:middle; margin-left:8px; border:2px solid #fff; }\\n</style>\\n</head>\\n<body>\\n<div id=\\\"crosshair\\\"></div>\\n<div id=\\\"hud\\\">Block: <span id=\\\"blockName\\\">Grass</span><div id=\\\"selected\\\" style=\\\"background:#5a5;\\\"></div></div>\\n<script type=\\\"module\\\">\\nimport * as THREE from 'https://unpkg.com/three@0.160.0/build/three.module.js';\\n\\nconst SIZE = 32;\\nconst HEIGHT = 16;\\nconst world = new Map();\\nconst blockTypes = { 1: 0x5a5, 2: 0x964, 3: 0x888 }; // grass, dirt, stone\\nlet selectedType = 1;\\n\\nfunction key(x,y,z) { return `${x},${y},${z}`; }\\nfunction setBlock(x,y,z,type) {\\n  if (y<0||y>=HEIGHT) return;\\n  const k = key(x,y,z);\\n  if (type===0) world.delete(k); else world.set(k,type);\\n}\\nfunction getBlock(x,y,z) {\\n  if (y<0||y>=HEIGHT) return 0;\\n  return world.get(key(x,y,z)) || 0;\\n}\\n\\nfunction generateTerrain() {\\n  for (let x=0; x<SIZE; x++) {\\n    for (let z=0; z<SIZE; z++) {\\n      const h = Math.floor(4 + Math.sin(x/5)*3 + Math.cos(z/4)*2);\\n      for (let y=0; y<h; y++) {\\n        const t = y < h-3 ? 3 : (y < h-1 ? 2 : 1);\\n        setBlock(x,y,z,t);\\n      }\\n    }\\n  }\\n}\\n\\nconst scene = new THREE.Scene();\\nscene.fog = new THREE.Fog(0x87ceeb, 40, 90);\\nconst camera = new THREE.PerspectiveCamera(75, innerWidth/innerHeight, 0.1, 200);\\nconst renderer = new THREE.WebGLRenderer({antialias:true});\\nrenderer.setSize(innerWidth, innerHeight);\\nrenderer.setPixelRatio(devicePixelRatio);\\ndocument.body.appendChild(renderer.domElement);\\n\\nconst light = new THREE.DirectionalLight(0xffffff, 0.8);\\nlight.position.set(50, 80, 30);\\nscene.add(light);\\nscene.add(new THREE.AmbientLight(0xaaaaff, 0.5));\\n\\nconst geometry = new THREE.BoxGeometry(1,1,1);\\nconst materials = {};\\nfunction getMat(type) {\\n  if (!materials[type]) materials[type] = new THREE.MeshLambertMaterial({color:blockTypes[type]});\\n  return materials[type];\\n}\\n\\nconst chunks = new THREE.Group();\\nscene.add(chunks);\\n\\nfunction rebuildMesh() {\\n  chunks.clear();\\n  const pos = new Map();\\n  for (const [k,v] of world) {\\n    const [x,y,z] = k.split(',').map(Number);\\n    const key2 = `${Math.floor(x/8)},${Math.floor(z/8)}`;\\n    if (!pos.has(key2)) pos.set(key2, []);\\n    pos.get(key2).push([x,y,z,v]);\\n  }\\n  for (const [ck, blocks] of pos) {\\n    const meshGeo = new THREE.BufferGeometry();\\n    const verts = [], cols = [], uvs = [];\\n    const dummy = new THREE.Mesh(geometry);\\n    for (const [x,y,z,type] of blocks) {\\n      dummy.position.set(x+0.5,y+0.5,z+0.5);\\n      const mat = getMat(type);\\n      const posAttr = geometry.attributes.position;\\n      const col = new THREE.Color(blockTypes[type]);\\n      for (let i=0; i<posAttr.count; i++) {\\n        const vx=posAttr.getX(i),vy=posAttr.getY(i),vz=posAttr.getZ(i);\\n        verts.push(vx+dummy.position.x-0.5, vy+dummy.position.y-0.5, vz+dummy.position.z-0.5);\\n        cols.push(col.r,col.g,col.b);\\n      }\\n    }\\n    meshGeo.setAttribute('position', new THREE.Float32BufferAttribute(verts,3));\\n    meshGeo.setAttribute('color', new THREE.Float32BufferAttribute(cols,3));\\n    const mesh = new THREE.Mesh(meshGeo, new THREE.MeshLambertMaterial({vertexColors:true}));\\n    chunks.add(mesh);\\n  }\\n}\\n\\ngenerateTerrain();\\nrebuildMesh();\\n\\nconst player = { x: SIZE/2, y: 10, z: SIZE/2, yaw:0, pitch:0, vx:0, vz:0 };\\ncamera.position.set(player.x, player.y+1.6, player.z);\\n\\nlet keys = {};\\ndocument.addEventListener('keydown', e => {\\n  keys[e.code]=true;\\n  if (e.code==='Digit1') selectedType=1;\\n  if (e.code==='Digit2') selectedType=2;\\n  if (e.code==='Digit3') selectedType=3;\\n  updateHUD();\\n});\\ndocument.addEventListener('keyup', e => keys[e.code]=false);\\n\\nfunction updateHUD() {\\n  const names = {1:'Grass',2:'Dirt',3:'Stone'};\\n  document.getElementById('blockName').textContent = names[selectedType];\\n  document.getElementById('selected').style.background = '#'+blockTypes[selectedType].toString(16).padStart(6,'0');\\n}\\nupdateHUD();\\n\\nlet locked = false;\\nrenderer.domElement.addEventListener('click', () => {\\n  renderer.domElement.requestPointerLock();\\n});\\ndocument.addEventListener('pointerlockchange', () => {\\n  locked = document.pointerLockElement === renderer.domElement;\\n});\\n\\ndocument.addEventListener('mousemove', e => {\\n  if (!locked) return;\\n  player.yaw -= e.movementX * 0.002;\\n  player.pitch -= e.movementY * 0.002;\\n  player.pitch = Math.max(-1.5, Math.min(1.5, player.pitch));\\n});\\n\\nfunction raycast(origin, dir, maxDist=6) {\\n  let x=origin.x, y=origin.y, z=origin.z;\\n  let px=Math.floor(x),py=Math.floor(y),pz=Math.floor(z);\\n  const stepX=dir.x>0?1:-1, stepY=dir.y>0?1:-1, stepZ=dir.z>0?1:-1;\\n  let tMaxX = (dir.x>0 ? px+1-x : x-px)/Math.abs(dir.x||1e-9);\\n  let tMaxY = (dir.y>0 ? py+1-y : y-py)/Math.abs(dir.y||1e-9);\\n  let tMaxZ = (dir.z>0 ? pz+1-z : z-pz)/Math.abs(dir.z||1e-9);\\n  const tDeltaX = 1/Math.abs(dir.x||1e-9);\\n  const tDeltaY = 1/Math.abs(dir.y||1e-9);\\n  const tDeltaZ = 1/Math.abs(dir.z||1e-9);\\n  let face = null;\\n  for (let i=0; i<maxDist*3; i++) {\\n    if (getBlock(px,py,pz)) return {x:px,y:py,z:pz,face};\\n    if (tMaxX < tMaxY && tMaxX < tMaxZ) {\\n      px += stepX; tMaxX += tDeltaX; face = stepX>0?'left':'right';\\n    } else if (tMaxY < tMaxZ) {\\n      py += stepY; tMaxY += tDeltaY; face = stepY>0?'bottom':'top';\\n    } else {\\n      pz += stepZ; tMaxZ += tDeltaZ; face = stepZ>0?'front':'back';\\n    }\\n    if (py<0||py>=HEIGHT) break;\\n  }\\n  return null;\\n}\\n\\nfunction placeOrBreak(isBreak) {\\n  const dir = new THREE.Vector3(Math.sin(player.yaw)*Math.cos(player.pitch), Math.sin(player.pitch), Math.cos(player.yaw)*Math.cos(player.pitch));\\n  const hit = raycast({x:player.x,y:player.y+1.6,z:player.z}, dir);\\n  if (!hit) return;\\n  if (isBreak) {\\n    setBlock(hit.x,hit.y,hit.z,0);\\n  } else {\\n    let px=hit.x,py=hit.y,pz=hit.z;\\n    if (hit.face==='left') px--; if (hit.face==='right') px++;\\n    if (hit.face==='bottom') py--; if (hit.face==='top') py++;\\n    if (hit.face==='front') pz--; if (hit.face==='back') pz++;\\n    if (getBlock(px,py,pz)===0 && !(Math.floor(player.x)===px && Math.floor(player.y+1.6)===py && Math.floor(player.z)===pz)) {\\n      setBlock(px,py,pz,selectedType);\\n    }\\n  }\\n  rebuildMesh();\\n}\\n\\ndocument.addEventListener('mousedown', e => {\\n  if (!locked) return;\\n  placeOrBreak(e.button===0);\\n});\\n\\nfunction updatePlayer(dt) {\\n  const speed = 8;\\n  let mx=0,mz=0;\\n  if (keys['KeyW']) mz -= 1;\\n  if (keys['KeyS']) mz += 1;\\n  if (keys['KeyA']) mx -= 1;\\n  if (keys['KeyD']) mx += 1;\\n  const len = Math.hypot(mx,mz)||1;\\n  const yaw = player.yaw;\\n  player.vx = (mx*Math.cos(yaw) - mz*Math.sin(yaw)) / len * speed * dt;\\n  player.vz = (mx*Math.sin(yaw) + mz*Math.cos(yaw)) / len * speed * dt;\\n  player.x += player.vx;\\n  player.z += player.vz;\\n  // simple gravity/floor\\n  player.y = Math.max(2, player.y - 12*dt);\\n  if (getBlock(Math.floor(player.x), Math.floor(player.y-0.1), Math.floor(player.z))) player.y = Math.ceil(player.y);\\n  camera.position.set(player.x, player.y+1.6, player.z);\\n  camera.rotation.order = 'YXZ';\\n  camera.rotation.y = player.yaw;\\n  camera.rotation.x = player.pitch;\\n}\\n\\nlet last = performance.now();\\nfunction animate() {\\n  requestAnimationFrame(animate);\\n  const now = performance.now();\\n  const dt = Math.min((now-last)/1000, 0.1);\\n  last = now;\\n  updatePlayer(dt);\\n  renderer.render(scene, camera);\\n}\\nanimate();\\n\\nwindow.addEventListener('resize', () => {\\n  camera.aspect = innerWidth/innerHeight;\\n  camera.updateProjectionMatrix();\\n  renderer.setSize(innerWidth, innerHeight);\\n});\\n</script>\\n</body>\\n</html>\"}"}}]}, "finish_reason": "tool_calls", "logprobs": null}], "usage": {"prompt_tokens": 613, "completion_tokens": 2850, "total_tokens": 3463, "prompt_tokens_details": {"cached_tokens": 384}, "cache_read_input_tokens": 384, "completion_tokens_details": {"reasoning_tokens": 269}}, "cost": {"usd": 0, "diem": 0.008478999999999999}, "venice_parameters": {"strip_thinking_response": false, "disable_thinking": false, "enable_e2ee": true, "enable_web_search": "off", "enable_web_scraping": false, "enable_web_citations": false, "include_search_results_in_stream": false, "include_venice_system_prompt": false, "enable_x_search": false, "web_search_citations": [], "return_search_results_as_documents": false}}}
{"turn": 2, "tool": "write_file", "args": {"path": "index.html", "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<title>VoxelCraft</title>\n<style>\nbody { margin:0; overflow:hidden; background:#000; }\n#crosshair { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:20px; height:20px; pointer-events:none; }\n#crosshair::before, #crosshair::after { content:''; position:absolute; background:#fff; }\n#crosshair::before { left:50%; top:0; width:2px; height:100%; transform:translateX(-50%); }\n#crosshair::after { top:50%; left:0; height:2px; width:100%; transform:translateY(-50%); }\n#hud { position:absolute; top:10px; left:10px; color:#fff; font-family:monospace; background:rgba(0,0,0,0.5); padding:8px; border-radius:4px; }\n#selected { display:inline-block; width:24px; height:24px; vertical-align:middle; margin-left:8px; border:2px solid #fff; }\n</style>\n</head>\n<body>\n<div id=\"crosshair\"></div>\n<div id=\"hud\">Block: <span id=\"blockName\">Grass</span><div id=\"selected\" style=\"background:#5a5;\"></div></div>\n<script type=\"module\">\nimport * as THREE from 'https://unpkg.com/three@0.160.0/build/three.module.js';\n\nconst SIZE = 32;\nconst HEIGHT = 16;\nconst world = new Map();\nconst blockTypes = { 1: 0x5a5, 2: 0x964, 3: 0x888 }; // grass, dirt, stone\nlet selectedType = 1;\n\nfunction key(x,y,z) { return `${x},${y},${z}`; }\nfunction setBlock(x,y,z,type) {\n  if (y<0||y>=HEIGHT) return;\n  const k = key(x,y,z);\n  if (type===0) world.delete(k); else world.set(k,type);\n}\nfunction getBlock(x,y,z) {\n  if (y<0||y>=HEIGHT) return 0;\n  return world.get(key(x,y,z)) || 0;\n}\n\nfunction generateTerrain() {\n  for (let x=0; x<SIZE; x++) {\n    for (let z=0; z<SIZE; z++) {\n      const h = Math.floor(4 + Math.sin(x/5)*3 + Math.cos(z/4)*2);\n      for (let y=0; y<h; y++) {\n        const t = y < h-3 ? 3 : (y < h-1 ? 2 : 1);\n        setBlock(x,y,z,t);\n      }\n    }\n  }\n}\n\nconst scene = new THREE.Scene();\nscene.fog = new THREE.Fog(0x87ceeb, 40, 90);\nconst camera = new THREE.PerspectiveCamera(75, innerWidth/innerHeight, 0.1, 200);\nconst renderer = new THREE.WebGLRenderer({antialias:true});\nrenderer.setSize(innerWidth, innerHeight);\nrenderer.setPixelRatio(devicePixelRatio);\ndocument.body.appendChild(renderer.domElement);\n\nconst light = new THREE.DirectionalLight(0xffffff, 0.8);\nlight.position.set(50, 80, 30);\nscene.add(light);\nscene.add(new THREE.AmbientLight(0xaaaaff, 0.5));\n\nconst geometry = new THREE.BoxGeometry(1,1,1);\nconst materials = {};\nfunction getMat(type) {\n  if (!materials[type]) materials[type] = new THREE.MeshLambertMaterial({color:blockTypes[type]});\n  return materials[type];\n}\n\nconst chunks = new THREE.Group();\nscene.add(chunks);\n\nfunction rebuildMesh() {\n  chunks.clear();\n  const pos = new Map();\n  for (const [k,v] of world) {\n    const [x,y,z] = k.split(',').map(Number);\n    const key2 = `${Math.floor(x/8)},${Math.floor(z/8)}`;\n    if (!pos.has(key2)) pos.set(key2, []);\n    pos.get(key2).push([x,y,z,v]);\n  }\n  for (const [ck, blocks] of pos) {\n    const meshGeo = new THREE.BufferGeometry();\n    const verts = [], cols = [], uvs = [];\n    const dummy = new THREE.Mesh(geometry);\n    for (const [x,y,z,type] of blocks) {\n      dummy.position.set(x+0.5,y+0.5,z+0.5);\n      const mat = getMat(type);\n      const posAttr = geometry.attributes.position;\n      const col = new THREE.Color(blockTypes[type]);\n      for (let i=0; i<posAttr.count; i++) {\n        const vx=posAttr.getX(i),vy=posAttr.getY(i),vz=posAttr.getZ(i);\n        verts.push(vx+dummy.position.x-0.5, vy+dummy.position.y-0.5, vz+dummy.position.z-0.5);\n        cols.push(col.r,col.g,col.b);\n      }\n    }\n    meshGeo.setAttribute('position', new THREE.Float32BufferAttribute(verts,3));\n    meshGeo.setAttribute('color', new THREE.Float32BufferAttribute(cols,3));\n    const mesh = new THREE.Mesh(meshGeo, new THREE.MeshLambertMaterial({vertexColors:true}));\n    chunks.add(mesh);\n  }\n}\n\ngenerateTerrain();\nrebuildMesh();\n\nconst player = { x: SIZE/2, y: 10, z: SIZE/2, yaw:0, pitch:0, vx:0, vz:0 };\ncamera.position.set(player.x, player.y+1.6, player.z);\n\nlet keys = {};\ndocument.addEventListener('keydown', e => {\n  keys[e.code]=true;\n  if (e.code==='Digit1') selectedType=1;\n  if (e.code==='Digit2') selectedType=2;\n  if (e.code==='Digit3') selectedType=3;\n  updateHUD();\n});\ndocument.addEventListener('keyup', e => keys[e.code]=false);\n\nfunction updateHUD() {\n  const names = {1:'Grass',2:'Dirt',3:'Stone'};\n  document.getElementById('blockName').textContent = names[selectedType];\n  document.getElementById('selected').style.background = '#'+blockTypes[selectedType].toString(16).padStart(6,'0');\n}\nupdateHUD();\n\nlet locked = false;\nrenderer.domElement.addEventListener('click', () => {\n  renderer.domElement.requestPointerLock();\n});\ndocument.addEventListener('pointerlockchange', () => {\n  locked = document.pointerLockElement === renderer.domElement;\n});\n\ndocument.addEventListener('mousemove', e => {\n  if (!locked) return;\n  player.yaw -= e.movementX * 0.002;\n  player.pitch -= e.movementY * 0.002;\n  player.pitch = Math.max(-1.5, Math.min(1.5, player.pitch));\n});\n\nfunction raycast(origin, dir, maxDist=6) {\n  let x=origin.x, y=origin.y, z=origin.z;\n  let px=Math.floor(x),py=Math.floor(y),pz=Math.floor(z);\n  const stepX=dir.x>0?1:-1, stepY=dir.y>0?1:-1, stepZ=dir.z>0?1:-1;\n  let tMaxX = (dir.x>0 ? px+1-x : x-px)/Math.abs(dir.x||1e-9);\n  let tMaxY = (dir.y>0 ? py+1-y : y-py)/Math.abs(dir.y||1e-9);\n  let tMaxZ = (dir.z>0 ? pz+1-z : z-pz)/Math.abs(dir.z||1e-9);\n  const tDeltaX = 1/Math.abs(dir.x||1e-9);\n  const tDeltaY = 1/Math.abs(dir.y||1e-9);\n  const tDeltaZ = 1/Math.abs(dir.z||1e-9);\n  let face = null;\n  for (let i=0; i<maxDist*3; i++) {\n    if (getBlock(px,py,pz)) return {x:px,y:py,z:pz,face};\n    if (tMaxX < tMaxY && tMaxX < tMaxZ) {\n      px += stepX; tMaxX += tDeltaX; face = stepX>0?'left':'right';\n    } else if (tMaxY < tMaxZ) {\n      py += stepY; tMaxY += tDeltaY; face = stepY>0?'bottom':'top';\n    } else {\n      pz += stepZ; tMaxZ += tDeltaZ; face = stepZ>0?'front':'back';\n    }\n    if (py<0||py>=HEIGHT) break;\n  }\n  return null;\n}\n\nfunction placeOrBreak(isBreak) {\n  const dir = new THREE.Vector3(Math.sin(player.yaw)*Math.cos(player.pitch), Math.sin(player.pitch), Math.cos(player.yaw)*Math.cos(player.pitch));\n  const hit = raycast({x:player.x,y:player.y+1.6,z:player.z}, dir);\n  if (!hit) return;\n  if (isBreak) {\n    setBlock(hit.x,hit.y,hit.z,0);\n  } else {\n    let px=hit.x,py=hit.y,pz=hit.z;\n    if (hit.face==='left') px--; if (hit.face==='right') px++;\n    if (hit.face==='bottom') py--; if (hit.face==='top') py++;\n    if (hit.face==='front') pz--; if (hit.face==='back') pz++;\n    if (getBlock(px,py,pz)===0 && !(Math.floor(player.x)===px && Math.floor(player.y+1.6)===py && Math.floor(player.z)===pz)) {\n      setBlock(px,py,pz,selectedType);\n    }\n  }\n  rebuildMesh();\n}\n\ndocument.addEventListener('mousedown', e => {\n  if (!locked) return;\n  placeOrBreak(e.button===0);\n});\n\nfunction updatePlayer(dt) {\n  const speed = 8;\n  let mx=0,mz=0;\n  if (keys['KeyW']) mz -= 1;\n  if (keys['KeyS']) mz += 1;\n  if (keys['KeyA']) mx -= 1;\n  if (keys['KeyD']) mx += 1;\n  const len = Math.hypot(mx,mz)||1;\n  const yaw = player.yaw;\n  player.vx = (mx*Math.cos(yaw) - mz*Math.sin(yaw)) / len * speed * dt;\n  player.vz = (mx*Math.sin(yaw) + mz*Math.cos(yaw)) / len * speed * dt;\n  player.x += player.vx;\n  player.z += player.vz;\n  // simple gravity/floor\n  player.y = Math.max(2, player.y - 12*dt);\n  if (getBlock(Math.floor(player.x), Math.floor(player.y-0.1), Math.floor(player.z))) player.y = Math.ceil(player.y);\n  camera.position.set(player.x, player.y+1.6, player.z);\n  camera.rotation.order = 'YXZ';\n  camera.rotation.y = player.yaw;\n  camera.rotation.x = player.pitch;\n}\n\nlet last = performance.now();\nfunction animate() {\n  requestAnimationFrame(animate);\n  const now = performance.now();\n  const dt = Math.min((now-last)/1000, 0.1);\n  last = now;\n  updatePlayer(dt);\n  renderer.render(scene, camera);\n}\nanimate();\n\nwindow.addEventListener('resize', () => {\n  camera.aspect = innerWidth/innerHeight;\n  camera.updateProjectionMatrix();\n  renderer.setSize(innerWidth, innerHeight);\n});\n</script>\n</body>\n</html>"}, "result": "wrote 8103 chars"}
{"turn": 3, "response": {"id": "fea01b17-f616-98a6-9e80-6046d25626e5", "object": "chat.completion", "created": 1792023761, "model": "grok-4-3", "choices": [{"index": 0, "message": {"role": "assistant", "content": null, "refusal": null, "reasoning_content": "[encrypted reasoning omitted, 403 chars]", "reasoning_encrypted": true, "reasoning_details": [{"type": "reasoning.encrypted", "format": "xai-responses-v1", "index": 0, "id": "rs_fea01b17-f616-98a6-9e80-6046d25626e5", "data": "n+++FZb0wAsY68LweSMVQvs0PYh/gc6sTqu1yD0RIdAox4gW6ErShA2S2UJlJvnLHnbVZ4pjLssC+Bo7/ZI02IFUVA5XQNwOaHEjZl2Yy3D9uNtECM2xkqB4a5HNZxYDN9xmlndRqUktLR5HtIllcgcqE6oebsdWFq5Aybpi7hQ+kpJa7OXTtdcP8tQYL2eJWsJdyE+bMLFJNb3irdE8Ki74rcGE3Exh4i2Tt1JokcH3zL6fuu6O4yWKM5CLaVM9EhOqa499Ir05vGeJ3pMUe4nbnM4KL2rvEvId8GDRwQl8iIp+YdmoVyK9tnu5hZwqTnqXi/vj3pqXKAAoXsBQzclKInEKW4qC/50oznNqzQ0PjqaQPUYDrndeNPEe"}], "tool_calls": [{"id": "call-b1b8f591-614d-4ef4-92fa-bc1cab408594-2", "type": "function", "function": {"name": "run_shell", "arguments": "{\"command\":\"python3 -m http.server 8000 --directory . > /dev/null 2>&1 & sleep 1; curl -I http://localhost:8000/index.html; kill $!\"}"}}]}, "finish_reason": "tool_calls", "logprobs": null}], "usage": {"prompt_tokens": 3205, "completion_tokens": 109, "total_tokens": 3314, "prompt_tokens_details": {"cached_tokens": 512}, "cache_read_input_tokens": 512, "completion_tokens_details": {"reasoning_tokens": 60}}, "cost": {"usd": 0, "diem": 0.0042502899999999995}, "venice_parameters": {"strip_thinking_response": false, "disable_thinking": false, "enable_e2ee": true, "enable_web_search": "off", "enable_web_scraping": false, "enable_web_citations": false, "include_search_results_in_stream": false, "include_venice_system_prompt": false, "enable_x_search": false, "web_search_citations": [], "return_search_results_as_documents": false}}}
{"turn": 3, "tool": "run_shell", "args": {"command": "python3 -m http.server 8000 --directory . > /dev/null 2>&1 & sleep 1; curl -I http://localhost:8000/index.html; kill $!"}, "result": "exit=0\nstdout:\nHTTP/1.0 200 OK\nServer: SimpleHTTP/0.6 Python/3.13.5\nDate: Thu, 15 Oct 2026 00:22:44 GMT\nContent-type: text/html\nContent-Length: 8103\nLast-Modified: Thu, 15 Oct 2026 00:22:41 GMT\n\n\nstderr:\n  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\n  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n  0  8103    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\n"}
{"turn": 4, "response": {"id": "852e5a0c-e342-91fb-b710-0295626dbbfc", "object": "chat.completion", "created": 1792023764, "model": "grok-4-3", "choices": [{"index": 0, "message": {"role": "assistant", "content": "Created `index.html` with a complete single-file voxel game using Three.js (ES module). Terrain 32\u00d732 with grass/dirt/stone, first-person controls (WASD + mouse via pointer lock), left/right click break/place, 1-3 block select, crosshair + HUD.", "refusal": null, "reasoning_content": "[encrypted reasoning omitted, 177 chars]", "reasoning_encrypted": true, "reasoning_details": [{"type": "reasoning.encrypted", "format": "xai-responses-v1", "index": 0, "id": "rs_852e5a0c-e342-91fb-b710-0295626dbbfc", "data": "GPlTS50slZAdUTNa61qgaMOS41KmG5fTnRncr6P9NH7ODQM3Ff5hgim2iV89vFHFTN5PlOB0F4x4RNG1LH+17kWpc/f+QVYQL3pGfQXYXN7a3indvr4f5DVwW9QxrQyPtOI54XrDqeQtsjqdrlfFEGz2SQ"}]}, "finish_reason": "stop", "logprobs": null}], "usage": {"prompt_tokens": 3466, "completion_tokens": 79, "total_tokens": 3545, "prompt_tokens_details": {"cached_tokens": 128}, "cache_read_input_tokens": 128, "completion_tokens_details": {"reasoning_tokens": 17}}, "cost": {"usd": 0, "diem": 0.00499297}, "venice_parameters": {"strip_thinking_response": false, "disable_thinking": false, "enable_e2ee": true, "enable_web_search": "off", "enable_web_scraping": false, "enable_web_citations": false, "include_search_results_in_stream": false, "include_venice_system_prompt": false, "enable_x_search": false, "web_search_citations": [], "return_search_results_as_documents": false}}}

Get new runs and ranking changes weekly