Skip to content
galasulinPublic

About

๐Ÿ•ธ๏ธ Open-world 3D web-swinging game in the browser โ€” procedural Manhattan, physics traversal, story missions, combat, 10 suits, touch controls. Three.js ยท WebGL2 ยท โ–ถ playable live

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

26 Commits

Folders and files

Repository files navigation

GalStrike

An open-world 3D web-swinging game that runs in your browser

Play now

Three.js WebGL2 Vite JavaScript Claude Code Deploy

Web-swinging down a Manhattan avenue in the GalStrike suit (real-time capture) Real-time gameplay capture ยท GalStrike suit

Swing across a procedural Manhattan, run up skyscrapers, stop street crimes and fight gangs, all in a browser tab.
No install, no plugins: about 51,000 lines of hand-structured JavaScript on top of Three.js.

Play ยท Features ยท Screenshots ยท Controls ยท Run locally ยท Architecture ยท ืขื‘ืจื™ืช


๐Ÿ“– About

GalStrike is a real-time 3D action game in the browser. You traverse a Manhattan-style island built at load time from code: thousands of buildings, dressed rooftops, parks, Times Square, bridges, live traffic and crowds. On top of the traversal there is an open-world layer (research towers, districts, fast travel, collectibles, XP and a skill tree) and a melee combat system.

The project is by Gal Asulin (@galasulin). The code was written with Claude (Anthropic's AI model, working through Claude Code) under human direction, which is also what the project demonstrates: how far agentic AI development can go on a large, performance-critical codebase.

Tip

Best experience: desktop Chrome or Edge with a dedicated GPU. On a laptop with two GPUs, set Chrome to the high-performance GPU (NVIDIA Control Panel โ†’ Manage 3D settings โ†’ Program Settings โ†’ Chrome โ†’ High-performance NVIDIA processor). The first load takes about a minute: the city is generated on your machine.


โœจ Features

๐Ÿ•ธ๏ธ Traversal

  • Physics-based web-swinging with release-and-launch, chained swings and momentum carried between them.
  • Wall-running, perching and parkour. Stick to any facade, run up it, hop off it into a swing.
  • Web-zip and point-launch to highlighted anchor points, plus air web-dash, quick web boost and head-first dives.
  • Web tightrope and web slingshot for special movement.
  • A custom animation state machine (skeleton, gait, clips and pose layers) drives a fully rigged character.

๐Ÿ™๏ธ A procedural city

  • A Manhattan-style island with an authored street grid: Broadway, Greenwich Village, the Financial District, Central Park and Harlem.
  • Thousands of buildings with facades, dressed rooftops (water towers, HVAC, gardens, antennas), shop fronts, awnings and signage.
  • Landmarks: Times Square with LED screens and billboards, Grand Central, bridges and a waterfront with far shores.
  • Living streets: traffic with junction logic, pedestrian crowds and pigeons.

๐ŸŽฎ Open-world gameplay

  • 9 districts, each with a research tower to activate. Activating one reveals the district on the map and unlocks its subway station for fast travel.
  • Street crimes (muggings, bank alarms, car chases) spawn around you.
  • Melee combat against three enemy types (melee, gunman and brute), with combos, dodges, web attacks, throws and finishers.
  • Progression: XP, levels, a skill tree, collectibles (backpacks), landmarks and a photo mode with filters and stickers.
  • Saved progress in the browser, a full pause menu (map, suits, skills, collectibles, settings) and a developer menu (~).

๐Ÿ“œ Story missions (new)

  • 8 story missions against the Static Crew, a gang jamming the city's research towers, across Midtown, Hell's Kitchen, Chinatown, the Upper East Side, the Financial District and Harlem.
  • Objective types: reach a landmark, activate or sync a tower, stop crimes, defeat enemies, recover backpacks, photograph a landmark, and timed races through glowing rings above the avenues.
  • Scoring: objective points, a time bonus, a no-damage bonus and style points (combo and air time), then an S / A / B / C rank. Best score, rank and time are saved per mission, and a live HUD shows the timer, points and current objective.

๐Ÿ† Achievements and records (new)

  • 21 achievements, two of them hidden, with a gold unlock toast, a sound and an XP reward.
  • Records: longest air time, top speed, best combo, best race times, distance swung, crimes stopped, enemies defeated and play time.

๐Ÿ“ฑ Touch and tablets (new)

  • On-screen controls switch on with the first touch: a floating joystick, drag-to-look, Swing, Jump, Zip, Boost, Dive and Parkour buttons, a context Use button near towers, and a separate combat button set.
  • Pinch-zoom and scrolling are blocked, safe areas are respected, and phones in portrait get a rotate your device hint. Desktop is untouched.

๐Ÿ‡ฎ๐Ÿ‡ฑ English and Hebrew (new)

  • A complete Hebrew interface with right-to-left layout and bundled Hebrew fonts (Secular One for headings, Heebo for text). Switch live with the EN / ืขื‘ toggle on the start screen or in Settings. Hebrew is picked automatically for Hebrew-language browsers, and ?lang=he / ?lang=en forces a language.

๐Ÿ”Š Sound, time and weather (new)

  • An original, procedurally made score with day and night layers that react to swinging speed, plus positional sirens and alarms.
  • The start screen has a sound panel (master, music and effects sliders, plus mute; N mutes in game) and a time and weather picker: day, morning, sunset, dusk, night or rain.

๐ŸŽจ Rendering

  • Three.js WebGL2 with a custom post-processing pipeline: cascaded shadow maps (up to 5 cascades), SSAO, screen-space GI, screen-space reflections, bloom, TAA, depth of field, motion blur and light shafts.
  • Time-of-day presets (morning, sunrise, day, sunset, dusk, night and overcast) plus rain, with wet streets and puddles.
  • Procedural sky and clouds, atmospheric fog out to the horizon, and glass that mirrors the city.

๐Ÿฆธ Suits

Ten suits, recoloured live by a GPU shader (no extra textures, and switching never recompiles). Pick them in Pause โ†’ Suits or from the start screen.

GalStrike, Israel, Captain America, Iron Man, Classic, Stealth, Scarlet and Symbiote suits

GalStrike ยท Israel ยท Captain America ยท Iron Man โ€” Classic ยท Stealth ยท Scarlet ยท Symbiote (real in-game captures)

Suit Look Emblem / detail
โšก GalStrike Suit (new) Matte black with glowing neon-turquoise web lines Glowing lightning bolt, the signature suit
๐Ÿ‡ฎ๐Ÿ‡ฑ Israel Suit (new) Flag white and deep blue Star of David on chest and back
โญ Captain America Suit (new) Navy and red White star
๐Ÿ”ด Iron Man Suit (new) Hot-rod red and gold metal Glowing arc reactor
Classic Suit (new) Bright red and royal blue Bold black web
Stealth Suit (new) Matte graphite Lenses glow green
Scarlet Suit (new) Deep scarlet with black panels Black spider emblem
Advanced Suit Red / navy / white The default suit
Iron Spider Crimson and gold armour Unlocks at level 5
Symbiote Suit Wet black with a white emblem Procedural veins, heavy black webs

The new emblems (lightning bolt, five-point star, Star of David, arc reactor) are signed-distance-field shapes drawn by the shader directly on the character's body, so they stay sharp at any resolution.

---|---|---| | Advanced Suit | Red / navy / white | The default suit | | Iron Spider | Crimson and gold armour | Unlocks at level 5 | | Symbiote Suit | Wet black with a white emblem | Procedural veins, heavy black webs | | ๐Ÿ‡ฎ๐Ÿ‡ฑ Israel Suit | Flag white and deep blue | Star of David emblem on chest and back (new in GalStrike) | | โญ Captain America Suit | Navy and red | White star emblem (new in GalStrike) | | ๐Ÿ”ด Iron Man Suit | Hot-rod red and gold metal | Glowing arc reactor (new in GalStrike) |

The new emblems (five-point star, Star of David, arc reactor) are signed-distance-field shapes drawn by the shader on the character's body, so they stay sharp at any resolution.


๐Ÿ–ผ๏ธ Screenshots

Swinging through Midtown at golden hour

Midtown ยท golden hour

The GalStrike suit glowing on a Midtown rooftop at night

The GalStrike suit on a Midtown rooftop at night ยท real in-game capture

Street level in Midtown

Street level ยท live traffic and crowds

Rooftop in Midtown

Midtown rooftop ยท GalStrike suit

Times Square at night

Times Square ยท night

Brooklyn Bridge at sunrise

Brooklyn Bridge ยท sunrise

Central Park in the morning

Central Park ยท morning

Midtown at noon

Midtown ยท noon

East River at dusk

East River ยท dusk


โšก What GalStrike adds

Area Change
Start screen A GalStrike title screen with a slow cinematic orbit around the hero. Play, Suits and Settings, driven by mouse, keyboard or gamepad.
New suits GalStrike (glowing neon web lines), Israel, Captain America, Iron Man, Classic, Stealth and Scarlet, with new procedural emblems and emissive details.
Gamepad interact Hold D-pad Up (or X / Square outside combat) to activate towers and interact.
Auto quality On load the game reads the GPU name and picks a preset (low for integrated GPUs, medium for mid-range and APUs, high for dedicated GPUs). It re-checks on every load, so when the browser moves to the dedicated GPU the preset follows, until you choose one by hand.
Dynamic resolution If frames stay slow for 2 seconds, internal resolution drops in 10% steps (down to 55%), and climbs back when there is headroom.
Smooth mouse look Raw, unaccelerated mouse input (unadjustedMovement), plus a filter for the bogus pointer-lock spikes Chrome sometimes sends on Windows, which used to throw the camera around.
Story missions 8-mission chain with races, scoring, ranks and saved bests, plus a Missions page in the pause menu.
Achievements 21 achievements, a Records panel and gold unlock toasts.
Touch controls Full on-screen controls for tablets and phones.
Hebrew UI Full RTL Hebrew translation with Secular One and Heebo fonts, switchable live.
Start screen setup Time and weather picker, sound sliders and mute.
Live demo Asset URLs are base-path aware, and a GitHub Actions workflow builds and deploys to GitHub Pages on every push.

๐ŸŽฎ Controls

ActionโŒจ๏ธ Keyboard and mouse๐ŸŽฎ Gamepad (Xbox / PlayStation)
MoveW A S DLeft stick
CameraMouse (click the game to capture it)Right stick
Web-swing (hold)Right mouse buttonR2 / RT (in the air)
Jump (hold = charged jump)SpaceA / โœ•
Parkour and wall-runShiftR2 on the ground or on walls
Web-zip / point-launchE or middle mouse buttonL2 + R2, or Y / โ–ณ
Quick web boost (air)QL1 / LB
Dive / dropC or CtrlB / โ—ฏ
Web tightrope (while perched)Tโ€”
Interact (activate tower, hold)FD-pad โ–ฒ, or X / โ–ข outside combat
Pause menu / mapEsc / MStart / Select
Help overlayHโ€”
Mute / unmuteNโ€”

Note

Gamepad: connect it before opening the game, then press any button. Browsers only expose a controller after its first input.


๐Ÿš€ Run locally

Requirements: Node.js 20.19+ or 22.12+, and a WebGL2 browser (desktop Chrome or Edge recommended).

git clone https://github.com/galasulin/galstrike.git
cd galstrike
npm install
npm run dev        # http://127.0.0.1:5173
npm run build      # production build in dist/
npm run preview    # serve the build on http://127.0.0.1:4173
Useful URL parameters
Parameter Effect
?q=low ยท ?q=med ยท ?q=high Force a graphics preset
?notitle Skip the start screen
?lang=he ยท ?lang=en Force the interface language
?nodynres Turn off dynamic resolution
?newgame Wipe the saved progress
?fresh Don't restore the last player position
?dev Enable the developer menu (~) on a production build
Troubleshooting
  • Black screen or very low FPS: open chrome://gpu and check GL_RENDERER. If it says Intel on a laptop with an NVIDIA or AMD GPU, switch Chrome to the high-performance GPU (see the tip above), then fully restart Chrome.
  • Camera too fast: Pause โ†’ Settings โ†’ Mouse Sensitivity, or lower your mouse DPI to 800โ€“1600.
  • Stutters: lower Pause โ†’ Settings โ†’ Render Resolution, or pick the Low preset.

๐Ÿ—๏ธ Architecture

flowchart LR
  subgraph Boot
    HTML[index.html<br/>loading screen] --> MAIN[src/main.js]
  end
  MAIN --> WORLD[world/<br/>procedural city ยท traffic ยท crowds]
  MAIN --> PLAYER[player/<br/>traversal ยท animation ยท webs]
  MAIN --> RENDER[render/<br/>pipeline ยท shadows ยท sky ยท lighting]
  MAIN --> SYS[game/systems/<br/>towers ยท crimes ยท suits ยท save ยท audio]
  MAIN --> COMBAT[game/combat/<br/>enemies ยท moves ยท FX]
  SYS --> UI[ui/<br/>HUD ยท pause menu ยท start screen]
  MAIN -. each frame .-> LOOP((player โ†’ world โ†’ lighting<br/>โ†’ HUD โ†’ systems โ†’ render))
Loading
Module Lines What it does
src/world/ ~30,600 City layout, buildings, facades, rooftops, Times Square, parks, bridges, waterfront, signage, traffic and crowds
src/player/ ~8,300 Traversal state machine, rope physics, web visuals, camera, animation rig and gait
src/game/ ~5,800 Open-world systems (towers, crimes, suits, progression, save, audio, photo mode) and combat
src/render/ ~3,800 Post-processing pipeline, cascaded shadows, sky and clouds, time of day, quality presets
src/ui/ ~1,900 HUD, minimap, pause-menu pages and the start screen

126 source files ยท about 51,000 lines of JavaScript ยท about 140 MB of assets (models, textures, audio and fonts).

Project layout
galstrike/
โ”œโ”€ index.html                 # loading screen + entry
โ”œโ”€ vite.config.js             # base path switch for GitHub Pages
โ”œโ”€ public/assets/             # character / enemy models, city textures, audio, fonts, loading stills
โ”œโ”€ src/
โ”‚  โ”œโ”€ main.js                 # renderer, scene, main loop, dynamic resolution
โ”‚  โ”œโ”€ world/                  # procedural Manhattan (city, buildings, rooftops, npc/ โ€ฆ)
โ”‚  โ”œโ”€ player/                 # traversal/, anim/, input, camera, webs
โ”‚  โ”œโ”€ render/                 # pipeline, csm, sky, lighting, quality
โ”‚  โ”œโ”€ game/systems/           # towers, crimes, suits, progression, save, audio โ€ฆ
โ”‚  โ”œโ”€ game/combat/            # combat loop, enemies, moves, FX
โ”‚  โ””โ”€ ui/                     # hud, menus/ (pause, map, suits, settings, title)
โ””โ”€ .github/workflows/pages.yml

๐Ÿ›ฃ๏ธ Roadmap

  • Gamepad binding for interact (tower activation)
  • Touch controls for phones and tablets
  • More suits and suit abilities
  • Story missions with objectives and scoring
  • Achievements and records
  • Full Hebrew interface (RTL, Secular One + Heebo)
  • Leaderboards

๐Ÿ‡ฎ๐Ÿ‡ฑ ื‘ืขื‘ืจื™ืช

GalStrike ื”ื•ื ืžืฉื—ืง ืชืœืช-ืžืžื“ ื‘ืขื•ืœื ืคืชื•ื— ืฉืจืฅ ื™ืฉื™ืจื•ืช ื‘ื“ืคื“ืคืŸ: ืžืชื ื“ื ื“ื™ื ืขืœ ืงื•ืจื™ื ืžืขืœ ืžื ื”ื˜ืŸ, ืจืฆื™ื ืขืœ ื’ื•ืจื“ื™ ืฉื—ืงื™ื, ืขื•ืฆืจื™ื ืคืฉืขื™ื ื‘ืจื—ื•ื‘ื•ืช ื•ื ืœื—ืžื™ื ื‘ื›ื ื•ืคื™ื•ืช. ื‘ืœื™ ื”ืชืงื ื”.

  • ๐Ÿ•ธ๏ธ ืชื ื•ืขื”: ืกื•ื•ื™ื ื’ ืžื‘ื•ืกืก ืคื™ื–ื™ืงื”, ืจื™ืฆื” ืขืœ ืงื™ืจื•ืช, ื–ื™ื ื•ืง ืœื ืงื•ื“ื•ืช, ืฆืœื™ืœื” ื•ื—ื‘ืœ ืงื•ืจื™ื.
  • ๐Ÿ™๏ธ ืขื™ืจ ืฉื ื‘ื ื™ืช ืžืงื•ื“: ืืœืคื™ ื‘ื ื™ื™ื ื™ื, ื’ื’ื•ืช, ืคืืจืงื™ื, ื˜ื™ื™ืžืก ืกืงื•ื•ืจ, ื’ืฉืจื™ื, ืชื ื•ืขื” ื•ื”ื•ืœื›ื™ ืจื’ืœ.
  • ๐ŸŽฎ ืขื•ืœื ืคืชื•ื—: 9 ืจื•ื‘ืขื™ื ืขื ืžื’ื“ืœื™ื ืœื”ืคืขืœื”, ื ืกื™ืขื” ืžื”ื™ืจื” ื‘ืจื›ื‘ืช, ืคืฉืขื™ื ื‘ืจื—ื•ื‘ื•ืช, ืงืจื‘ื•ืช, XP, ืขืฅ ื›ื™ืฉื•ืจื™ื ื•ืžืฆื‘ ืฆื™ืœื•ื.
  • ๐Ÿฆธ 10 ื—ืœื™ืคื•ืช, ื‘ื™ื ื™ื”ืŸ ื—ืœื™ืคืช ื”ื—ืชื™ืžื” GalStrike ืขื ืงื•ื•ื™ ื ื™ืื•ืŸ ื–ื•ื”ืจื™ื, ื—ืœื™ืคืช ื™ืฉืจืืœ ืขื ืžื’ืŸ ื“ื•ื“, Captain America ื•-Iron Man ืขื ื›ื•ืจ ืืจืง ื–ื•ื”ืจ.
  • ๐Ÿ“œ 8 ืžืฉื™ืžื•ืช ืกื™ืคื•ืจ ืขื ืžืจื•ืฆื™ื, ื ื™ืงื•ื“ ื•ื“ื™ืจื•ื’ S/A/B/C, ื•-21 ื”ื™ืฉื’ื™ื ื•ืฉื™ืื™ื.
  • ๐Ÿ“ฑ ืชืžื™ื›ื” ื‘ืžื’ืข ื•ื‘ื˜ืื‘ืœื˜ื™ื ืขื ื’'ื•ื™ืกื˜ื™ืง ื•ื›ืคืชื•ืจื™ื ืขืœ ื”ืžืกืš.
  • ๐Ÿ”Š ืกืื•ื ื“, ืฉืขื” ื•ืžื–ื’ ืื•ื•ื™ืจ ืžืชืคืจื™ื˜ ื”ืคืชื™ื—ื”.
  • ๐Ÿ‡ฎ๐Ÿ‡ฑ ืžืžืฉืง ืžืœื ื‘ืขื‘ืจื™ืช ืžื™ืžื™ืŸ ืœืฉืžืืœ, ืขื ืคื•ื ื˜ื™ื Secular One ื•-Heebo, ื•ืžืขื‘ืจ ื‘ื™ืŸ ืขื‘ืจื™ืช ืœืื ื’ืœื™ืช ื‘ืœื—ื™ืฆื”.
  • โšก ื‘ื™ืฆื•ืขื™ื: ื‘ื—ื™ืจืช ืื™ื›ื•ืช ืื•ื˜ื•ืžื˜ื™ืช ืœืคื™ ื›ืจื˜ื™ืก ื”ืžืกืš, ืจื–ื•ืœื•ืฆื™ื” ื“ื™ื ืžื™ืช, ื•ืชื ื•ืขืช ืžืฆืœืžื” ื—ืœืงื” (ืงืœื˜ ืขื›ื‘ืจ ื’ื•ืœืžื™).

โ–ถ ืœืฉื—ืง ืขื›ืฉื™ื•. ืžื•ืžืœืฅ ืžื—ืฉื‘ ืขื ื›ืจื˜ื™ืก ืžืกืš ื ืคืจื“. ื”ื˜ืขื™ื ื” ื”ืจืืฉื•ื ื” ืœื•ืงื—ืช ื›ื“ืงื”.

ืคืจื•ื™ืงื˜ ืฉืœ ื’ืœ ืืกื•ืœื™ืŸ. ื”ืงื•ื“ ื ื›ืชื‘ ื‘ืืžืฆืขื•ืช Claude (Claude Code) ื‘ื”ื›ื•ื•ื ืช ืื“ื.


โš–๏ธ License and disclaimer

Source-available, view-only. See LICENSE. No commercial use or redistribution without written permission.

This is an unofficial, non-commercial fan project, made only as a technical demonstration. It is not affiliated with, endorsed by or sponsored by Marvel, Disney, Sony or Insomniac Games. Spider-Man, Captain America, Iron Man and all related names, characters and likenesses are trademarks and copyrighted material of their respective owners, and no rights to them are claimed. The bundled fonts are licensed under the SIL Open Font License (see public/assets/ui/fonts/).

Made by Gal Asulin ยท Built with Claude Code

About

๐Ÿ•ธ๏ธ Open-world 3D web-swinging game in the browser โ€” procedural Manhattan, physics traversal, story missions, combat, 10 suits, touch controls. Three.js ยท WebGL2 ยท โ–ถ playable live

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages