尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗A grid puzzle game about a salvage rigger whose body became a magnet.
Magnus can pull and push anything ferrous. Force is mutual: light things slide to him or away from him, heavy things move him. Unlike poles pull, like poles push, iron can only be pulled, and crystal is invisible to a field. Every puzzle is one of those facts, applied.
Chapter 1, The Clearing, is ten rooms of increasing difficulty. See
DESIGN.md for the storyline, the rules, the obstacle catalogue,
and a walkthrough of each room.
Version 0.3.0.
Open index.html in a browser. Nothing to install; Three.js is loaded from a CDN.
If your browser blocks scripts on file://, serve the folder instead:
python3 -m http.server 8765 # then open http://localhost:8765/
?level=7 in the URL jumps straight to a room.
The page opens on a title screen: field lines trace between two poles and
flip every few seconds. Enter the bay (or Enter) starts the game;
Play fullscreen (or F) starts it in fullscreen.
The board fills the window with no text on it. Info (or I) opens rules,
story, and level select; Fullscreen (or F) hides the browser chrome and
puts the pad on screen so the game is playable on a phone or in a kiosk.
The game is a static site (no server), so it fits Render's free static tier.
render.yaml describes the service; the level solver runs as the build step so
a broken room fails the deploy instead of shipping.
Or manually: Render Dashboard → New → Blueprint → pick this repo. Every push
to main redeploys; pull requests get their own preview URL.
| Key | Action |
|---|---|
| Arrows / WASD | Walk |
| Shift + direction | Pulse your field that way (or tap a tile in your row/column) |
| Space | Flip your pole N ⇄ S |
| Z | Undo |
| R | Restart room |
| F | Toggle fullscreen |
| I | Open / close info |
| H | Open info and toggle hint |
[ ] | Previous / next room |
Touch / fullscreen: on-screen d-pad on the left; Pulse, Flip, Undo, Restart on the right. Toggle Pulse to make the pad pulse instead of walk.
index.html page shell, splash screen, overlay controls, info panel
src/splash.js title-screen animation: traced field lines between two poles
src/engine.js the rules — pure logic, runs in the browser and in Node
src/levels.js the ten rooms as ASCII maps
src/render3d.js Three.js view: geometry, lighting, animation of engine events
src/main.js input, undo history, progress (localStorage), level flow
src/style.css
tools/solve.js breadth-first solver: proves every room solvable, computes par
The renderer never decides anything. engine.js produces a new state plus a
list of events for every action; render3d.js animates those events. The game
is deterministic and turn-based, which is what makes undo exact and levels
verifiable.
node tools/solve.js # all rooms: solvable? par correct?
node tools/solve.js 4 # one room, with an ASCII replay of the solution
The solver exits non-zero if a room is unsolvable or its recorded par is stale.
# rock / hedge / log = crystal (field passes, bodies don't)
. grass _ stone plate
~ water (pit) D wooden gate (open while every plate is held)
A iron-banded boulder X lantern / exit
N S heavy lodestones @ Magnus start
i crate n s light magnet blocks