Add GPT-5.5 Pro/xhigh and Gemini 3.5 Flash runs; fix three artifacts

Surgical fixes (originals preserved in history), each documented in the
per-model run notes as: where the bug is, pre-fix behavior, root cause,
with the shown build being the fixed one:
- grok-build: 0xAETHER invalid hex literal killed the script at parse
  time (pure black screen); atlas flipY mismatch made near terrain
  sample undrawn black texels. 2 lines.
- composer-2-5: horizontal movement multiplied dt twice, walking at
  ~1/60 design speed and making biomes effectively unreachable. 1 line.
- gpt-5-5-pro: 8x2 atlas rows swapped by default flipY, grass became
  obsidian and leaves/sand sampled undrawn slots. 1 line.

Gemini 3.5 Flash added as-is (color/transparency analysis next).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jesse ZhangandClaude Fable 5 committed 2026-06-10 00:12:24 +01:00
1 parent f0869f0670
commit 54896103d8
6 files changed
+5165 -2

No files matched your search

+1 -1
View File
@@ -1149,7 +1149,7 @@ class Player {
if (this.keys['KeyS']) move.sub(forward);
if (this.keys['KeyA']) move.sub(right);
if (this.keys['KeyD']) move.add(right);
if (move.length() > 0) move.normalize().multiplyScalar(speed * dt);
if (move.length() > 0) move.normalize().multiplyScalar(speed); // fix: was `speed * dt` — tryMove() multiplies by dt again, so walking ran at speed*dt^2 (~1/60 of design speed)
this.velocity.x = move.x;
this.velocity.z = move.z;
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
Binary file not shown.

After

Width:  |  Height:  |  Size: 610 KiB

+2 -1
View File
@@ -79,7 +79,7 @@
const CHUNK_SIZE = 16;
const CHUNK_HEIGHT = 128;
const VIEW_DISTANCE = 5; // chunks in each direction
const WORLD_SEED = 0xAETHER;
const WORLD_SEED = 0xAE7E12; // fix: original `0xAETHER` is not a valid hex literal (T/H/R), which killed the whole script at parse time
// Block IDs
const BLOCK = {
@@ -361,6 +361,7 @@
drawCrystal(7, 1);
const texture = new THREE.CanvasTexture(canvas);
texture.flipY = false; // fix: tiles are drawn from the canvas top, but UVs assume a top-left origin; with default flipY=true every face sampled the undrawn (black) bottom rows of the atlas
texture.magFilter = THREE.NearestFilter;
texture.minFilter = THREE.NearestFilter;
texture.wrapS = texture.wrapT = THREE.RepeatWrapping;