Streetball Revival

Streetball Revival is a from-scratch PC rebuild of the PlayStation 2 game Streetball Revival with online play.

README

Streetball Revival

A from-scratch PC rebuild of a classic 2003 PlayStation 2 three-on-three streetball game, with the online play it never had. Up to six people, three a side, over the internet or a home network.

Public beta. Most of the game plays like the original; some things are still being matched, and you may hit bugs. See Beta status. Online play is a work in progress and needs testing: please try it with friends and tell us how it goes.

Feedback welcome. Join the Discord to report bugs, share what feels different from the original, or find people to play online. You can also reach Vj on X/Twitter at @UnLuckvj.

Unofficial fan project. Not affiliated with or endorsed by the original game's makers or its league. It contains no game data: it plays from your own disc image. See LEGAL.md.

Made with the help of AI. Much of this rebuild was written with the help of a large language model (LLM), so features may be missing or behave differently from the original. See AI disclosure.

A Level 2 gamebreaker: the GB2 burst, then the staged play down the court

Get started

  1. Make a disc image of your own copy of the game: the USA PlayStation 2 release, serial SLUS-20651 (the full title is in LEGAL.md). Save it as a .iso file anywhere on your PC.
  2. Download StreetballRevival-…-windows.exe from the latest release on this repository's Releases page: the whole game in one file. (A zip of the same game, and one for Linux, are there too. The "Source code" files are not the game.)
  3. Open it, press Browse and pick your .iso (or drop it on the window). The launcher checks it is the right release and remembers it.
  4. Press Play.

If Windows says "Windows protected your PC", click More info, then Run anyway (this free project's files aren't signed). The release page covers controls, settings and troubleshooting.

The launcher keeps the disc's location in Documents\Streetball Revival, next to your save. Change it any time with Change disc.

A controller is optional: PlayStation, Xbox and most SDL-known pads work and can be plugged in at any time, and the keyboard works too.

Controls for PlayStation and Xbox pads and the keyboard

What you can play

  • Pick Up Game: any two teams, any court, with every My Rules option (scoring, play-to, shot clock, Dunks Only, Trick Point Challenge, Gamebreaker Wins and more). Up to four people on one PC.
  • Be A Legend: create your baller and take them from the playgrounds to legend status.
  • League Challenge, Street School (lessons that teach the moves one at a time), the Rewards shop, Create A Baller and Create Team.
  • Online: 1 vs 1, and the new 3 vs 3.

Tricks: hold turbo buttons while pressing the trick button; the more turbo buttons held, the fancier the move. Tricks fill your gamebreaker meter; when it is full, shoot for a gamebreaker.

Made for PC

What an emulator can't give you:

  • Online play: 1 vs 1 and 3 vs 3 over the internet, with join codes and rollback netcode.
  • Any screen shape: 16:9, and ultrawide 21:9 and 32:9, where the court widens to fill the screen while the menus and HUD keep their shape (Options: Widescreen On; PC Settings: Wide Picture for the most court).
  • Smooth motion: on 120 and 144 Hz screens the court is drawn between the game's 60 updates a second, without changing how it plays (PC Settings, Smooth Motion).
  • Sharp at any resolution, in a window or full screen, with keyboard or any controller, and loads in moments.

Screenshots

Every picture below is the rebuild running real matches, captured straight from the game.

A drive along the baseline and a dunk over a defender at The Cage A ball handler working the dribble against a defender at The Cage

A dunk contested at the rimA trick move scoring 5,000 trick points
A trick move on a night courtA spin move scoring 500 trick points in a day game
The GB2 burst that starts a Level 2 gamebreakerThe staged camera inside a Level 2 gamebreaker

Playing online

Work in progress. Online play is new and still needs testing. Expect rough edges: dropped connections, desyncs or lobby trouble. If you hit one, tell us on the Discord or in an issue, with what you were doing and whether you hosted or joined.

On the Main Menu press Select (P on the keyboard) for Online.

  • Host 1 vs 1 or Host 3 vs 3. The lobby shows a join code like 7QK3-M2X; send it to your friends. The computer plays any seat nobody takes.
  • Friends on the same network see the match as Join On Network; anyone else picks Join With Code.
  • Everyone needs their own disc image of the same release. Only button presses (and a check that everyone's disc matches) cross the network.

The host's game asks the router to open UDP port 7375 (UPnP). If friends can't connect, docs/PLAYING.md walks through port forwarding and the VPN fallback.

Beta status

The goal is a 1:1 rebuild: every rule, animation, screen and sound as the original does it. Each behaviour is checked against the original running in an emulator (recorded matches, the front end's screens, Street School's lessons) and against its program code.

The parity scorecard tracks 211 behaviours today: 168 matched, 24 known differences and 19 not yet tested. That is a selected list, not a whole-game percentage. The biggest open areas:

  • the computer's team play (where defenders stand, how often they block and guard the rim), which is close but not yet identical;
  • pixel-exact rendering (lighting, shadows, the crowd, the nets);
  • the gamebreaker and celebration cameras, and some results-screen details.

AI disclosure

This project was built with the help of a large language model (LLM): Anthropic's Claude wrote and tested much of the code and the research notes, working from the original game's program and recorded matches, with a person directing the work and playing every build. That makes it possible to rebuild a whole game in detail, but it also means:

  • some features may be missing, unfinished or work differently from the original, even where the docs describe them;
  • bugs can hide in code no person has read line by line.

If something is missing or feels wrong, please say so on the Discord or in an issue: reports against the original are the best way it gets fixed.

Feedback

Found a bug, or something that plays differently from the original? Tell us on the Discord, find Vj on X/Twitter at @UnLuckvj, or open an issue with what you did, what you expected and what happened. Feedback on online matches is especially welcome while that mode is being tested. Please don't attach disc images or game files.

Build from source

Install Rust, then from this folder:

cargo run -p street-launcher                 # the launcher (finds street-game beside it)
cargo run -p street-game -- --iso path/to/your-disc.iso
cargo test                                   # unit tests; set STREET_ISO for the disc checks

street-game also finds a disc image in its own folder or the folders above, or through the STREET_ISO environment variable. Useful options: --demo (the computer plays both sides), --speed <x>, --original-load-times, --screenshot out.png --at <secs>.

Online from the command line:

cargo run -p street-game -- --host                       # host and play
cargo run -p street-game -- --join 192.168.1.20          # join (port 7375 by default)
cargo run -p street-server -- --vol2 path/to/your-disc.iso   # a headless server (it needs a disc)

The first launch shows only sky for a few seconds while shaders compile; later launches reuse the cache.

Layout

crates/street-launcher  the launcher: find your disc, then play
crates/street-game      the game: menus, matches, modes, online
crates/street-sim       the simulation: fixed 60 Hz, deterministic, no rendering
crates/street-render    rendering: courts, skinned players, animation
crates/street-net       online play: protocol, rollback sessions, client and server
crates/street-server    the headless match server
crates/street-assets    readers for the disc's formats
crates/street-audio     the disc's audio: streams, banks, codecs, music
crates/street-video     the disc's movies
crates/street-viewer    a court, player and animation viewer
crates/street-export    exports your own disc's characters and art to open formats
docs/                   formats, traces, the parity scorecard and how to play online
tools/                  research and capture helpers

Contributing

Issues and pull requests are welcome; read CONTRIBUTING.md first. The one hard rule: no game data, ever (no disc images, extracted files, art, audio or saves). python tools/publish_check.py checks for it.

Legal

Streetball Revival is an unofficial fan project, not affiliated with or endorsed by any rights holder of the original game. Its own code is under the MIT licence; trademarks and the full notice are in LEGAL.md.

Made by Vj (@luckvj on GitHub, @UnLuckvj on X/Twitter).