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
15 January 1970. The Civil War has just ended. You arrive at Asaba motor park with nothing but £20. Find work. Buy a plot. Build the first walls. Start again.
GamesJavaScript · PythonGitHub @postcivilwarOnlineOwner 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
Game
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗A persistent multiplayer simulation of Nigeria in which players build the country's towns, businesses and institutions from undeveloped land. Its home will be postcivilwar.com. Until the second week of October 2026 the working name was Nigeria Life World; the folder and a few storage keys still carry it.
The architecture and its reasoning are in the Architecture Decision Document (shared separately). Read that first.
| Path | What it is | State |
|---|---|---|
prototype/ | A browser-playable prototype of the first vertical slice: Atani, Anambra State, on the River Niger. A town of 1,000 people with homes, jobs and daily routines; a hospital, schools, a university, a polytechnic, a college and two churches to walk into; okada riders who carry passengers for a fare; speech in English, Pidgin, Igbo, Yoruba and Hausa; chat with players who are near; positional sound; health and fighting, witnesses, police who arrest on foot, fines and the return of stolen money, a hospital, a clinic and an ambulance, a phone that is taken out and held, with fifteen apps, a camera and music, vehicles that can be taken, players who cannot walk through each other, vehicles that knock people down and can kill a player, buttons that are pictures and change with what the player is doing, and ten camera views. It opens with the brand, the game's cover with PLAY on it, and one question (hero or villain); its interface is black and white and kept small, and people walk and run from the planted foot up. Under it: a land registry, permits, staged construction, shops, jobs, a keke to hire, buy and drive | Playable. 242 headless tests pass, plus scripted browser sessions with keyboard and with real touch input. Not the production client. Players who meet can see and talk to each other and block each other's way, but each page still runs its own copy of the world: there is no zone server yet, so nothing involving health, money or the law works between two devices (docs/multiplayer-audit.md). On the website an account is needed before play, and accounts, each account's TR, the market and seeing other players go through api/. |
api/, server/ | The website's server: one function on PostgreSQL. Accounts (a username and a password), each account's one character (chosen once; changed only by a paid upgrade) and saved game, each account's TR (a wallet at the server's bank, with the 2,000 TR of starter TR kept apart from TR that was earned; earned TR is sent from player to player by username, with a history that cannot be edited), the shared market (what is for sale, who owns what, the talk and the sale, paid through the bank), and where signed-in players are. server/ runs it on this machine and tests it | Working. 66 tests against a real PostgreSQL, and a scripted session of two players in real browsers. What a character earns and spends in town is still worked out in the player's browser and reported to the bank, which caps it (see prototype/README.md, "The bank"). |
services/ledger/ | Append-only double-entry ledger in PostgreSQL, and the bitcoin settlement data model beside it | Working at the database level. 85 contract tests pass. No network service in front of it yet. |
The brand's font, mark and the supplied cover are in prototype/assets/brand
with the notes that go with them. People in the prototype are built on one supplied character model, in
prototype/assets/characters with its notes. Every keke and coach is one of two
supplied vehicle models, in prototype/assets/vehicles with theirs. There is no Unreal Engine client, no zone server and no network service in this
repository. prototype/README.md lists which parts of the prototype are interfaces
standing in for those, and what replaces each.
CWR).
It is not naira and does not represent legal tender.services/ledger (below) is
unchanged and is not used by the site.prototype/README.md.Holding players' bitcoin and paying it out is a licensed activity in Nigeria. Nothing here should be pointed at the live network before that is resolved with counsel.
prototype/ (exists) Atani slice: simulation, browser client, tests
site/ (exists) the website as served: written by `node build.mjs --site`, never edited by hand
api/ (exists) the website's server: api/game.js and what it is made of (accounts, saved characters, the market)
server/ (exists) the server on this machine (dev.mjs), a throwaway PostgreSQL for it, and its tests
services/
ledger/ (exists) ledger and settlement schema, contract tests
docs/
test-plan-gameplay.md (exists) what is tested for fighting, the law, treatment, the phone and controls, and what still needs a person
multiplayer-audit.md (exists) the multiplayer brief against what is built: what exists, what is missing, the database it needs, the risks, the decisions
Planned, created when they have working content:
client/ Unreal Engine 5 project: PC client and dedicated zone server
proto/ Protocol Buffers contracts shared by zone servers and services
services/
settlement/ settlement service, chain watcher, signer, compliance console
platform/ identity, registry, economy, government, world directory, social
tools/
geodata/ pipeline from open geographic data to game terrain and parcels
loadtest/ simulated clients for zone and handoff testing
infra/ deployment definitions
docs/ further design documents, one per system, written with the system
Play the prototype: open prototype/dist/local.html in a browser.
The website (postcivilwar.com) is the site/ folder, served as it is. It is the
same game as a page that can be installed on a phone or a computer and opens
with no connection. To bring it up to date: node build.mjs --site in
prototype/, then commit site/. What is pushed to main is live.
Simulation tests (Node 18 or later, no packages):
cd prototype
node --test test/*.test.mjs
The website's server (a local PostgreSQL install; nothing downloaded):
server/with-postgres.sh node --test server/test/*.test.mjs # accounts, the market, the game's own client code against it
server/with-postgres.sh node server/dev.mjs # the whole site at http://localhost:8787/, accounts and all
On the host the server needs one thing: a PostgreSQL address in POSTGRES_URL (the
database integration sets it). PCW_ADMINS may name the usernames, separated by
commas, who can put new things on the market. No secret is in the repository or in
the page.
Ledger and settlement tests (a local PostgreSQL install and Python 3, nothing downloaded):
cd services/ledger
./scripts/run-tests.sh