BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
Prove the greybox. Then dress it.
AI that cannot break your level design.
Live: https://playbound-eta.vercel.app · Built for the Tencent × Arcade AI Hackathon (Cambridge, Oct 2026), Game Tech track.
Level designers block out levels with grey boxes to test gameplay, then wait weeks for art. Text-to-3D tools make one object at a time with no idea of the level. World generators invent a layout the designer never approved.
PLAYBOUND keeps the designer's layout as a contract, and puts AI at every step, always as a proposal the designer accepts or rejects:查看完整 README ↗Prove the greybox. Then dress it. AI that cannot break your level design.
Live: https://playbound-eta.vercel.app · Built for the Tencent × Arcade AI Hackathon (Cambridge, Oct 2026), Game Tech track.
Level designers block out levels with grey boxes to test gameplay, then wait weeks for art. Text-to-3D tools make one object at a time with no idea of the level. World generators invent a layout the designer never approved.
PLAYBOUND keeps the designer's layout as a contract, and puts AI at every step, always as a proposal the designer accepts or rejects:
level.json + GLB models) for Unity, Unreal or Godot.src/core/prove/constants.ts.fitToVolume scales each one uniformly (plus at most 25% sideways stretch) to sit inside its box. Odd-shaped models leave some empty space in the box (fill 37–100% on the hero level).Requires Node 22+.
npm install
npm run dev # http://localhost:5173
npm test # Prove, line of sight, fit, dress, store, share and export tests (no network, no credits)
npm run build # typecheck + production build
Create a free key at https://aistudio.google.com and put it in .env (copy .env.example):
GEMINI_API_KEY=...
The dev server exposes /api/ai/* (sketch, style, command, fix). On Vercel the same handler runs as a function (api/ai/[action].ts); set GEMINI_API_KEY in the project's environment variables. The key never reaches the browser.
npm install --global @hyper3d/cli
hyper3d auth login # browser login; uses your account credits (~0.5 per model)
npm run dev # the dev server now exposes /api/rodin
With the dev server running, Dress generates any box that isn't prebaked (about 2 minutes each, 3 at a time), and Regenerate makes a new variant. Each model is downloaded, shrunk (~28 MB → ~1 MB with meshopt and WebP) and cached in public/assets/gen/ by a hash of (prompt, size, variant). The same request never spends credits twice.
npm run dev
npx tsx scripts/prebake.ts http://localhost:5173 # generate every dressable box of the presets
npx tsx scripts/prebake.ts --prune # remove models no preset uses
Then open /dev-viewer.html to see every model fitted inside its wireframe box.
| Part | Where |
|---|---|
| Level contract (types, coordinates) | src/core/types.ts |
| Market Square presets (fail / pass) | src/presets/marketSquare.ts |
| Prove: A* on a 0.5 m grid, line of sight + exposure heatmap, cover check | src/core/prove/ |
| Editing, AI proposals (accept / reject) | src/core/store.ts |
| AI co-designer: Gemini client, validation, suggest-fix agent loop | server/ai/, src/core/ai/, api/ai/ |
| Share links + local saves | src/core/share.ts |
| Shared collision (player and bot use the same boxes) | src/core/geometry.ts |
| Dress: prompt builder, queue, prebaked → live → error | src/core/dress/ |
| Fit any model inside its box | src/core/dress/fit.ts |
| Hyper3D CLI route, incl. image-to-3D (dev only) | server/rodinDevPlugin.ts |
| Export zip | src/core/export/exportLevel.ts |
| UI: three.js / react-three-fiber scene and panels | src/ui/ |
Stack: Vite, React 19, TypeScript, three.js, @react-three/fiber, drei, zustand, vitest, Gemini (REST), Hyper3D Rodin (CLI). Deployed on Vercel.
This was built by one person with two AI coding agents working in parallel: Claude Code on src/core, the server and deploy, and Cursor on src/ui. They coordinated through PLAN.md (task board and human feedback per milestone) and HANDOFF.md (append-only log).
| Time | Beat |
|---|---|
| 0:00 | A paper sketch of a market square → Sketch → level → ghost greybox → Accept |
| 0:20 | Prove → fails: death corridor, red route, heatmap of what the defenders see |
| 0:35 | Suggest fix → AI proposes a cart, Prove re-checks it → Accept → pass → Lock |
| 0:55 | Style image → AI style notes → Dress → Rodin models fill the boxes (each ~2 min live; prebaked here) |
| 1:25 | FPS walk; Show colliders: collision still matches the greybox; regenerate one prop live |
| 1:45 | Share link + Export zip. "AI that cannot break your level design." |