gta-reversed
GTA:SA 1.0 US를 재구현한 버전
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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