尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证3d marble game
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A Marble Madness-style 3D racer. You roll a glass marble down courses that hang in the dark, with a single clock running against you. You can roll off the edges, drop too far, get flattened by a hammer or dissolved by acid, and get shoved off by black steelies along the way. Whatever time is left at a goal carries over into the next race.
The marble is Alan's eye: the same sphere of clear glass, drawn by the same engine. Where Alan has an iris, the marble has the Claude spark made three-dimensional: a burst of terracotta strands out every way from the middle, each one fuller toward its rounded tip. It tumbles inside the glass as the marble rolls.
git clone https://github.com/h1ddenpr0cess20/madness
cd madness
npm install
npm run dev # → http://localhost:5173
No server and no keys: it's a static page. npm run build puts it in dist/,
which runs from any folder or path.
| ←↑↓→ or WASD | Roll. The courses run diagonally across the screen, so hold two at once. |
| Hold the mouse or a finger | Roll toward the pointer. The further it is from the marble, the harder the push. |
| Q E, or drag with the right mouse button | Turn the board round the marble. Dragging up and down tilts it, from a skim across the tiles to nearly straight down. |
| Mouse wheel, or + − | Zoom in and out. |
| Two fingers | Pinch to zoom, twist to turn the board, drag up or down to tilt. |
| C | Put the view back where it started. |
| Gamepad | Left stick or d-pad rolls; right stick turns and tilts; shoulder buttons zoom; A starts, Start pauses. |
| P / Esc | Pause. You can still turn and zoom to look around. |
| M | Sound on or off. |
The controls follow the view: up always rolls the marble up the screen, however the board is turned.
There are eleven races: Practice, Beginner, Intermediate, Crossroads, Twister, Aerial, Silly, Marathon, Gauntlet, Odyssey and Ultimate. Crossroads and Odyssey split along the way: a short way that is narrow, full of holes or under the hammers, or a long way round that is safer but costs you seconds. Marathon and Odyssey are the long ones, back and forth across the biggest boards in the game. Each one adds its own time to whatever you had left. Losing the marble puts it back on the last safe ground it crossed while the clock keeps running, so a fall costs a couple of seconds and nothing more. The title screen lets you start from any race you have reached before, and it keeps your best score.
What's out there:
madness-engine | The Madness Engine, pinned to a commit in package.json: the renderer (WebGPU where the browser has it, WebGL 2 where it doesn't, ?renderer=webgl pins it), the ball physics, the controls, the arcade view, and the glass marble (heroes/marble: Alan's glass with the 3D spark inside it), the haze and the studio the glass reflects. |
src/stage.js, src/audio.js, src/effects.js, src/storage.js | The engine's stage, sound, flying bits and saved slot, with the game's own on top: its lens, its knocks, shattering, fizz and tune, its shards, bubbles and confetti. |
src/course.js | A course is a grid of tiles, each with four corner heights. That one structure gives flat ground, ramps, banks, half-pipes, bowls and bumps, with walls wherever neighbouring tiles differ. It builds both the mesh and the collision triangles. |
src/levels.js | The eleven races, written with flat, slope, chute, bend, bowl, surface and the hazards. |
src/race.js | One race with nothing drawn: the rules for losing the marble, reaching the goal and where it goes back to. The game draws it; the tests drive it. |
| Script | |
|---|---|
npm run dev | Vite dev server |
npm run build | Bundles to dist/ |
npm run preview | build, then serves dist/ |
npm test | node:test: the engine's physics, view and marble as the game uses them, the course builder, the hazards, and an autopilot that has to finish every race well inside its time without losing the marble |
npm run lint | ESLint |
The renderer is three.js-shaped but isn't three.js; see the engine's
src/gfx/LICENSE for what it ports from it.