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
Try the game, then see how it was built. A Make Bold Spark experiment in game design and spec-driven development.
GamesGDScript · PythonGitHub @MakeBoldSolutionsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
ArrowSpark a game of puzzle solving arrows
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A Make Bold Spark Game — created by Make Bold Solutions
ArrowSpark is a puzzle game about clearing a board of arrows. Every arrow points
one of four cardinal directions and may drag a tail of cells behind it; select
one, and it feeds out along its own path and off the edge of the board. Some
arrows are blocked by others sitting in their path — select one of those and it
stays put, costing you score but never your ability to keep playing.Read the full README ↗A Make Bold Spark Game — created by Make Bold Solutions
ArrowSpark is a puzzle game about clearing a board of arrows. Every arrow points one of four cardinal directions and may drag a tail of cells behind it; select one, and it feeds out along its own path and off the edge of the board. Some arrows are blocked by others sitting in their path — select one of those and it stays put, costing you score but never your ability to keep playing. There's no life system and no attempt limit: every playable puzzle is guaranteed to always have at least one legal move, so being stuck is a signal to keep looking, not a failure state.
Larger puzzles are inspected, not just fit to the screen: zoom in for a comfortable working scale, pan around a board bigger than your window, and use Fit Puzzle to recover the overview at any time. "Show Me an Open Move" will point out one arrow that's safe to remove right now — at the cost of some score — without ever solving the puzzle for you.
Open the project in Godot 4.4 and run it, or use a packaged build if one has been provided to you. Controls:
=/- to zoom; F to fit.Y to fit.All bindings are remappable from the Options menu.
scripts/puzzle/ # domain: PuzzleDefinition, PuzzleState, PuzzleSolver, PuzzleAnalyzer, PuzzleCatalog
scripts/ # PuzzleSession, PuzzleScoreboard, and other project-level scripts
scripts/presentation/ # presentation-only helpers (viewport transform, departure geometry, visual style)
scenes/ # menus and gameplay scenes (Godot .tscn/.gd)
tests/ # GDScript headless checks plus Python launchers (run_*.py)
addons/ # Maaack's Game Template (menus, settings, input remapping)
.knowledge/ # durable architecture, product, and governance documentation
.devspark.work/ # temporary specs/plans/tasks used during development (not durable)
The puzzle rules (scripts/puzzle/) are plain RefCounted classes with no
scene, input, or persistence dependency, so they can be tested and reasoned
about independently of presentation.
Engine: Godot 4.4 (GDScript), built on Maaack's Game Template for menus, settings, and input remapping.
Tests: Python 3.11+ launchers drive headless Godot regression suites. From the repository root:
python tests/run_puzzle_regressions.py --godot <path-to-godot>
python tests/run_regressions.py --godot <path-to-godot>
Both must exit 0 with every printed *_FAILURES=0 marker. See
tests/README.md for what each suite covers.
Workflow: this project uses BSW.DevSpark
for specification, planning, and review; see AGENTS.md and
CLAUDE.md for the resolution rules those commands follow, and
.knowledge/ for durable architecture and product documentation.
Repo story: repo-story-2026-09-30.md is an evidence-based narrative of the development history, contributor patterns, and architecture.
Continuous integration: .github/workflows/godot-regression-tests.yml
runs both launchers on every push and pull request to main.
ArrowSpark is built on Maaack's Game Template,
used under its MIT license. Full attribution for the template, Godot, bundled
fonts, and other tools lives in ATTRIBUTION.md; the
template's own license terms are in LICENSE.txt.