Unofficial community server and Windows x86 client plugins for:
- Need for Speed: Underground 2
- Need for Speed: Most Wanted (2005)
- Need for Speed: Carbon
The server is written in Python and uses one TOML configuration. The three ASI clients are built from Zig source.
Server:
- Linux
- Python 3.10 or newer with
sqlite3
Client build:
- Linux x86-64 or Termux
- Zig 0.16.0
- Python 3 and
file
No original game files are included.
git clone <repository-url>
cd NFS-Online-Server
python nfs_online.py check
python nfs_online.py configure --public-host server.example.com
python nfs_online.py create-account
./start.shUseful commands:
python nfs_online.py status
python nfs_online.py stop
python nfs_online.py start --games u2,mw --daemon
python nfs_online.py start --games carbon
python nfs_online.py kick ACCOUNT_NAME
python nfs_online.py dlc show ACCOUNT_NAME
python nfs_online.py stats --helpRun python nfs_online.py --help for the complete command list.
Players who want to join my server can use this address:
brake.go.ro
Server settings are stored in:
config/server.toml
Client settings remain game-specific:
clients/underground2/net_u2.ini
clients/most-wanted/net_mw.ini
clients/carbon/net_carbon.ini
Change PUBLIC_HOST before an Internet deployment. Keep the Messenger IPC and standalone DLC listener bound to loopback unless they are placed behind a secured reverse proxy.
| Service | Protocol | Port |
|---|---|---|
| Shared Messenger | TCP | 13505 |
| Messenger IPC | TCP, loopback | 13506 |
| U2 bootstrap | TCP | 20921 |
| U2 lobby | TCP | 20922 |
| U2/MW web and PREL | TCP | 20923 |
| Most Wanted lobby | TCP | 30920 |
| Most Wanted bootstrap | TCP | 30921 |
| U2/MW race relay | UDP | 20000 |
| Carbon FESL | TCP | 18210 |
| Carbon Theater | TCP | 18215 |
| Carbon race transport | UDP | 19119 |
| Carbon Massive Ads | TCP | 9000 |
| Standalone DLC page | TCP, loopback | 8081 |
Open only the ports required by the games you run.
Build all three clients:
cd source/client-zig
./build_linux.shOutputs are written to source/client-zig/zig-out/bin/:
net_u2.asi
net_mw.asi
net_carbon.asi
Copy each ASI beside its matching INI in the game's ASI/plugin directory. Do not load it together with an older plugin that patches the same game code.
Planned bug fixes, protocol work, ranking support, configuration options, documentation, and general polish are tracked in TODO.md.
python -m unittest discover -s tests -q
cd server/common
PYTHONPATH=.. python -m unittest discover -s tests -q
cd ../classic
PYTHONPATH=.. python -m unittest discover -s tests -q
cd ../carbon
PYTHONPATH=.. python -m unittest discover -s tests -qBefore publishing, also run:
python tools/check_public_tree.py
python nfs_online.py checkOriginal project code is licensed under AGPL-3.0-or-later. See LICENSE and LICENSE-NOTICE.md.
Need for Speed and related names are trademarks of Electronic Arts. This project is unofficial and is not affiliated with or endorsed by Electronic Arts.
Please help to keep this project alive:
Monero: 46Mk8t9uLY7jnBXnyHMyVARvwk1Y7jcGEQwKLN8GtGGBioncjKLgkEa33jEN2ibgkQjoFZWVwXXwsM3vzAFz4RzV7psLow6
Bitcoin: bc1qgxp74eza7jaf4fdw5cl3sanqvnh0cjmz0w9scz
Ethereum: 0xa024a505Ec24c7eA163985eC89D56e614B9AdAae
Paypall: https://paypal.me/moioyoyo