Project Plateau
Project Plateau는 네 개의 유리판과 하나의 살아있는 계곡, 캠프로 돌아가는 길을 의미
브라우저 탭에서 네더라이트 레시피 확인
netherite's recipe in a browser tab: an Eaglercraft-style world rewritten in JS, a policy that imitates a scripted player, then GRPO. Watch 16 of 64 worlds learn to make a wooden pickaxe.
게임JavaScript · HTMLGitHub @Larpcoa온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
netherite's recipe in a browser tab: an Eaglercraft-style world in JS, imitation then GRPO, toward a wooden pickaxe
README 전체를 불러오는 중입니다.
README 전문 보기 ↗netherite's recipe in a browser tab: an Eaglercraft-style world rewritten in JavaScript, a policy that imitates a scripted player, then GRPO. The task is netherite's headline one: a wooden pickaxe from a fresh world, inside 60 seconds of game time.
Live: https://eaglerite.vercel.app
netherite rewrites Minecraft 1.7.10 in C and CUDA, exact against the Java client, because the real game runs one world in real time and RL needs thousands. The same holds for Eaglercraft. So training does not happen inside the Eaglercraft client: the parts of Minecraft 1.8.8 (the version EaglercraftX runs) that the task touches are rewritten in plain JS, and 64 worlds step together in one Web Worker.
| netherite | eaglerite | |
|---|---|---|
| Game | Minecraft 1.7.10 in C/CUDA, bit-exact vs Java | Minecraft 1.8.8 subset in JS, checked against 1.8's numbers |
| Observation | pixels, or a semantic camera | semantic camera: 9 × 5 rays (block class and distance) |
| Imitation | human speedrun footage | a scripted teacher, then DAgger |
| RL | GRPO, clip 0.2, KL β 0.04, 2 epochs | the same, with Dr. GRPO advantages |
| Policy | 181M parameters, 4 GPUs | 50k parameters, one CPU thread |
| Action compiler | GUI macros, hold_attack with mine-lock, look_target | the same three levers |
engine.js)java.util.Random. Terrain is Minecraft-like, not seed-exact.EntityLivingBase / EntityPlayer 1.8.8: walk 4.317 m/s, sprint 5.612 m/s, jump apex 1.249 blocks (1.8's 0.005 motion cutoff), collision Y then X then Z.PlayerControllerMP: the click tick, float32 damage, the 5-tick hit delay, 5× slower in the air, survival reach 4.5. A log by hand takes 61 ticks.EntityItem: spawn offset and velocity, 10-tick pickup delay, pickup box grown by (1, 0.5, 1).policy.js).train.js)On 256 held-out worlds (node, one run), the imitation policy gets the pickaxe 83% of the time and GRPO takes it to 91–94% within about 20 updates. The whole imitation stage costs about 40 s of CPU.
Training runs in a single Web Worker that works in 14 ms slices and sleeps so that busy ÷ (busy + idle) matches the setting. The views are 128 px, redraw at most 20 times a second and only when something moved, and training pauses when the tab is hidden. Measured for the whole of Chrome on an M-series MacBook Air:
| Setting | CPU |
|---|---|
| Chill | ~27% of one core |
| Normal (default) | ~50% of one core |
| One core | ~82% of one core |
| Watching at 1× | ~12% of one core |
| Paused | ~3% of one core |
There is no build step. Serve the folder and open it:
python3 -m http.server 8000
# then http://localhost:8000
engine.js, teacher.js, policy.js and train.js have no DOM dependencies and run in node, e.g. new Trainer().work() in a loop.
| File | What it is |
|---|---|
engine.js | the game: worlds, physics, mining, items, crafting, observation, reward |
teacher.js | the scripted player used for demonstrations and DAgger labels |
policy.js | the MLP, the action heads, Adam |
train.js | demonstrations → cloning → DAgger → GRPO, as small units of work |
worker.js | the training thread and its CPU budget |
render.js | WebGL2 renderer, procedural textures, chunk meshing |
app.js, index.html | the page: views, controls, charts, side by side, play mode |
Not affiliated with Mojang, Microsoft, Eaglercraft or netherite. Textures are drawn procedurally in render.js; no game assets are included.