Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기orbital mechanics game
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An orbital mechanics flight game. Pilot a rocket in real time — a fuel-limited
main engine and side thrusters for rotation — under real Newtonian gravity, and
hit your destination. World 1 builds up from a single launch to
interplanetary transfers, gravity assists and multi-moon tours; World 2 adds
rockets that come apart: staging, payloads and the debris they leave behind.
No build step. Open index.html in a browser, or serve the folder:README 전문 보기 ↗An orbital mechanics flight game. Pilot a rocket in real time — a fuel-limited main engine and side thrusters for rotation — under real Newtonian gravity, and hit your destination. World 1 builds up from a single launch to interplanetary transfers, gravity assists and multi-moon tours; World 2 adds rockets that come apart: staging, payloads and the debris they leave behind.
No build step. Open index.html in a browser, or serve the folder:
npm start # http://localhost:8080
A first visit (no stars, never been past it) opens on a landing page: what
the game is, Play now straight into Training's first mission, a way to
skip Training, and a restore code for pilots on a new device. The pilot
name is asked after the first mission you win, when there are stars worth
saving. ?landing shows the landing page again. The page's text is plain
HTML in index.html, so search engines and link previews can read it.
The menu shows one world per tab. World 1 is open from the start; each later
world opens once the world before it has earned enough stars (World 2 needs
50 of World 1's 90). Every mission inside an open world is playable, and the
first one you haven't cleared is marked Next up. ?unlock opens every
world. ?level=N jumps straight to mission N, counting across all worlds
in menu order.
| Key | Action |
|---|---|
Space (hold) | Main engine |
A D / ← → | Side thrusters (rotate) |
W S | Throttle up / down |
G | Gyro assist on/off (auto-stops spin, but caps the run at ★★) |
E | Drop cargo, or drop the spent stage and fly the next one |
, . | Time warp down / up (warp drops to 1× while thrusters fire) |
V | Cycle reference frame (auto / inertial / each body) |
F / O | Follow ship / overview · mouse wheel zoom, drag pan |
[ ] | Shorter / longer trajectory prediction |
R · Esc | Restart · pause |
Touch devices get on-screen controls: rotate on the left thumb, BURN on the right, warp / frame / gyro in the middle. Pinch to zoom. Tilt to steer (on by default, with a one-time note that Settings can switch it off; iOS asks for motion access on the first tap) fires the side thrusters when you tip the phone left or right like a steering wheel, exactly as if ⟲ / ⟳ were held (past 12°, letting go below 7°; lying flat counts as level). The buttons keep working alongside it and win if they disagree, and light up while tilt is firing them.
On phones the game plays in landscape and fullscreen: a portrait phone gets a "rotate your phone" screen, and leaving fullscreen, rotating back or switching apps pauses the mission. iPhone Safari has no fullscreen API for pages, so there it's landscape-only; Add to Home Screen launches it fullscreen (via the web app manifest).
New players get big contextual prompts ("Press and hold SPACE to launch", "Still spinning! Tap D to stop", warp, reference frame). Each disappears once you do it, and stops appearing after you've mastered it.
Δv = vₑ · ln(m₀/m)), so the ship accelerates harder as it
gets lighter. The Δv gauge shows what's left.G) damps the spin for
you, but switching it on caps that run at ★★.E /
DEPLOY drops the spent stage and lights the next one.E / DROP releases the next one with your exact position and
velocity, so your dashed path at that moment is exactly where it goes; the
readout says DROP NOW → IMPACT when it would land on target. Cargo can
have its own objectives: land in a zone, hold an orbit, park at a Lagrange
point, reach a station, or spread out into a constellation.World 1 · Flight School
| # | Mission | Teaches |
|---|---|---|
| 1 | Liftoff | Main engine |
| 2 | Point and Burn | Side thrusters · rotation |
| 3 | Full Stop | Flip and burn · time warp |
| 4 | Circularize | Prograde burns · camera |
| 5 | Reach Orbit | Launching into orbit · gravity turn |
| 6 | Deorbit | Retrograde burns |
| 7 | Landing Zone | Timing a deorbit burn |
| 8 | Turn and Burn | Two-burn Hohmann transfer |
| 9 | Skimmer | Lowering an orbit |
| 10 | Wrong Way | Orbit direction · bi-elliptic transfer |
| 11 | Moonshot | Intercepting a moving target · phasing |
| 12 | Free Return | Free-return trajectory |
| 13 | Cycler | Repeating trajectories |
| 14 | Docking | Phasing · rendezvous |
| 15 | Constellation | Phasing within an orbit |
| 16 | Rescue | Rendezvous on an eccentric orbit |
| 17 | Lunar Capture | Capture burns · reference frames |
| 18 | Moon Landing | Landing on a moving, spinning moon |
| 19 | Moon to Moon | Leaving a moon · nested orbits |
| 20 | Lagrange Point | Lagrange points · co-orbital rendezvous |
| 21 | Trojan Swap | Drifting with orbital period |
| 22 | Event Horizon | Extreme Oberth effect |
| 23 | Slingshot | Gravity assists |
| 24 | Twin Suns | Three-body chaos |
| 25 | Interplanetary | Escape burns · transfer windows |
| 26 | Sundiver | Why the Sun is hard to reach |
| 27 | Asteroid Belt |
World 2 · Payloads
| # | Mission | Teaches |
|---|---|---|
| 1 | Launch a Satellite | Payload deploy |
| 2 | Burn It Dry | Use every stage fully |
| 3 | Against the Spin | Launch direction · retrograde orbit |
| 4 | Stationary | Synchronous orbit |
| 5 | Moon Probe | Transfer stage + capture |
| 6 | Homecoming | Return stage · targeted landing |
| 7 | Release Point | Passive drop · release timing |
| 8 | Impactor | Drop, then dodge |
| 9 | Relay Drop | Place cargo on an orbit |
| 10 | Moon Mail | Drop on a flyby |
| 11 | Twin Probes | Two drops, two targets |
| 12 | Constellation | Phasing orbits |
| 13 | Three Stages | Multi-stage rockets |
| 14 | Kick Stage | Apogee kick · long, weak burns |
| 15 | Escape Velocity | Escape velocity |
| 16 | Solar Probe | Stacks for big Δv |
| 17 | Outer Planet | Interplanetary orbiter |
| 18 | Splashdown | Range safety |
| 19 | Clear the Station | Debris hazards |
| 20 | Busy Orbit | Where your booster ends up |
| 21 | Leave No Junk | Deorbiting the upper stage |
| 22 | Fuel Depot | Pickups on the way up |
| 23 | Relay Pair | Lagrange drops |
| 24 | Junkyard | Planning every drop |
| 25 | Lander and Orbiter | Targeted drop + capture |
| 26 | Deep Impact | Impactor + flyby |
| 27 | Voyager | Gravity assist with a stack |
| 28 |
The reference frame starts on Auto: it follows the body whose sphere of influence you're in, or the star you're orbiting when you're in none.
World 2 flies through a green nebula with distant planets in the background,
World 3 through an ember-red one, so you can always tell the worlds apart.
Experimental levels (the menu's last tab) try out new mechanics that may or may not grow into a world, one level each: fuel pickups (Fuel Run), atmospheres and aerobraking (Aerobrake), wormholes (Shortcut), tethers (Swing), solar sails (Sunward Sail), event horizons and strong gravity (Whirl), radiation belts (Radiation Belt), magnetospheres and storms (Storm Warning, The Slot, Storm Front), droppable shields (Heavy Water), refuelling depots (Top Up), soft landings (Touchdown) and ion engines (Long Burn). World 3's
missions are built in tools/w3/ (levels, proofs and naive plans that must
lose, one file per chapter) and written into js/levels.js with
npm run build:w3. See docs/ROADMAP.md for
future worlds, the leaderboard design and the level-maker plan.
js/physics.js — G = 1, time in seconds at 1× warp.
index.html page shell, HUD and menus
css/style.css
js/physics.js rails, gravity, integrator, coast prediction
js/flight.js Mission: ship, stages, cargo, debris, objectives
js/levels.js mission definitions
js/game.js rendering, input, HUD, menus, progress (localStorage)
fonts/ bundled fonts (offline; OFL)
tools/test-physics.js physics sanity tests (npm test)
tools/browser-check.js headless Chromium: every mission under random input,
two-finger taps, corrupted saves (npm run test:browser)
tools/brand/ icon + share card sources; render.js regenerates img/
tools/check-levels.js random burn search proving World 1 missions solvable
within their fuel budget (npm run check-levels)
tools/autopilot.js scripted autopilot (launch, burns, drops, deploys); with
opts.turn it turns with the real side thrusters and
reports the RCS seconds used
tools/proofs.js a winning flight plan for every World 2 mission and the
test levels; npm test flies them all
tools/check-scripted.js re-tunes a proof's parameters (npm run check-scripted [id] [iters] [opt])
tools/rcs-report.js RCS seconds each proof needs with honest turning
(npm run rcs-report [id])
physics.js, flight.js and levels.js have no DOM dependencies and run
under Node, which is how the tools use them.
A pilot account is created the first time it's needed (no sign-up). Progress
syncs to the server and merges both ways, keeping the best of each; a
restore code or Sign in with Apple brings it back on another device. Every
win is submitted to per-mission leaderboards (top score and fastest): the
game records each flight's control inputs tick by tick (js/replay.js) and
the server re-flies them with the same simulation before ranking, using
deterministic math (js/dmath.js) so a run replays identically on any
JavaScript engine. Offline, everything still works and runs wait in a queue.
api/ Vercel Functions: player, restore, apple, progress, runs, board
api/_lib/ routes, Upstash Redis store (in-memory locally)
js/online.js client: account, sync, run queue, Apple sign-in
js/bridge.js talks to the native app shell (mobile/App.js)
js/config.js API address for the app
npm run dev game + API on http://localhost:8080
mobile/ is an Expo app that runs the game full screen in a WebView, built
and signed in the cloud with EAS (no Mac needed). The game is packed into one
file (npm run build:mobile), and js/bridge.js connects it to native
storage, Sign in with Apple and haptics. Release guide:
docs/APP_STORE.md.
The game loop survives a failing frame, physics and path prediction run on
per-frame time budgets (time warp steps down if a device can't keep up),
numerical blow-ups end the mission cleanly, and saved progress is validated
on load. Add ?debug to the URL for an fps / script-time readout. Both test
suites run on every push (.github/workflows/test.yml). For the App Store
release steps see docs/APP_STORE.md.
Next up (details in docs/ROADMAP.md):
zone: 'all') is closed to everything: dropped
cargo may enter only the zone it is delivered to, and spent stages are
judged like World 2 debris. Zones ride their own orbits; the dashed path
turns red where it would cross one, and before you deploy the HUD says where
the spent stage would end up.js/flight.js and
js/physics.js for the options):
atmosphere: { height, density, heatLimit } on a body):
drag −ρ·|v|·v with density falling off with height; heating ρ·v³ over
the limit burns you up. The predicted path includes drag and marks
where you would burn up; the HUD shows heat.kind: 'wormhole', link): enter one mouth, come out of the
other with the same velocity. The predicted path follows through.tether: { length } on an anchor): E / LATCH inside its
reach, the rope keeps you within its length (a slack rope snapping taut
costs speed; a taut swing keeps it), E / RELEASE to fly off. While
latched, the dashed path is where you would go if you let go now.ship.sail): sunlight pushes along the nose, ×cos² of the
angle away from the sun, ×1/r²; steered by rotation only.horizon, pw on a black hole): a horizon bigger than
the hole, and strong gravity (gm/(r − pw)²) with no stable orbits inside
3·pw, so a close pass can whirl you round more than half a turn.belt: { rMin, rMax, dose, rate? }, or a list for
several): rate Sv per second inside (default 1), shown as a dose meter
and on the predicted path.magnetosphere: { nose, width, tail } on a planet):
a bubble pointing away from each source, with a blunt nose sunward and a
long tail, inside which a source's particles (radiation.particles, its
share 0 to 1) don't reach you; light still does. A scheduled storm
(radiation.storm: { start, end, rate, squeeze }) adds particles and
squeezes every nose in while it blows (with speed, it's a front
moving out from the star, reaching each planet and your ship in turn,
drawn as a red ring). A cargo item with shield (a water tank, drawn
as a blue jacket on the hull) stops that share of all radiation while
aboard; it's heavy, so dropping it (E) leaves more Δv. Before a storm, a red dotted line
shows where each magnetosphere will shrink to (the strip it loses is
tinted), a warning bottom-centre counts down (flashing in the last
minute; on phones a one-line chip just above the middle buttons), the
screen's rim glows red, and the star flickers and flares; a rumble
builds. When it hits, the screen washes red with a whoosh (and the app
buzzes); it builds and dies away over a few seconds (ramp), so
magnetospheres squeeze in and spring back smoothly, and while it blows
you hear it roar, muffled inside a magnetosphere. During it, particles stream
off the star toward the planets. An
orbit goal with after only counts once the clock passes that time.depot: { dv, dist, relVel } on a station): a
rendezvous refills the current stage once.maxSpeed on a hit goal): touching down faster fails;
the impact label shows the touchdown speed.ship.ion): tiny thrust, high exhaust velocity; time warp
stays on (up to 10×) while it fires.| Threading moving obstacles |
| 28 | Comet Chaser | Eccentric orbits · Kepler's 2nd law |
| 29 | Moon Juggler | Chained escapes and captures |
| 30 | Grand Tour | Multi-body trajectory planning |
| Moon Network |
| Multi-stop delivery |
| 29 | Belt Survey | Precision drops on small targets |
| 30 | Grand Deployment | Everything at once |