GT2 Multiplayer 1.0.1
Gran Turismo 2 statically recompiled into C# and running natively on Windows,
with something the original never had: racing other people over the internet.
This is not an emulator. The game's MIPS code was translated ahead of time and
compiled into a native program; the runtime stands in for the parts of the
PlayStation the code expects to find.
The game itself is not in this download, and never will be. No executable,
no overlay, no track, no car, no sound. You supply your own disc.
Installing
- Unzip anywhere.
- Run
GT2Port.exe. - Point it at your own disc image —
.cue/.binor.chd.
Nothing else to install: .NET is bundled. Built and tested against the USA
combined disc, SCUS-94488.
Gamepads work. Vibration is switched off in this build on purpose — it had a
fault worth fixing properly rather than shipping.
Racing other people
The title menu's second item is renamed MULTIPLAYER. Type a name, then join
a room or create one.
- Up to 6 players
- 27 courses — 21 tarmac, 6 dirt
- 60 cars in five classes: Special, A, B, C and Rally
- Races by laps (1–99) or by the clock (1–180 minutes)
- Optional 2-lap qualifying that sets the grid before the race
- Rooms are found on your own network, or over the internet through a relay,
and can be joined by address or by a six-character code
There are four ways to make a room reachable — same network, one forwarded UDP
port with the game itself as the server, a relay anybody can reach, or a relay
behind a free UDP tunnel. The README walks through each, with which port to
open where.
The relay is in this repository too, and understands nothing about GT2: it
stores a room's description as a blob and copies traffic from one datagram to
another. Run your own, or point at somebody else's.
How the racing holds together
Remote cars are drawn interpolated between the places that arrive for them,
buffered as little as 40 ms behind on a clean link and as much as 250 ms on a
ragged one, following the connection as it changes. Places carry a counter, so
one that arrives out of order is refused instead of snapping a car backwards,
and the ones that never arrive are counted rather than guessed at. Every
machine starts the race on an agreed instant, corrected for how long the
agreement took to travel.
Known limitations
- Behind CGNAT you cannot host directly. There is no public port to forward,
so a relay is required. Everything else still works. - A long outage parks a car. When places stop arriving, a remote car holds
at the last place known for it rather than carrying on where it was headed.
Short gaps are smoothed; several seconds of loss will show. - An occasional frame hitch of about 100 ms while the emulated CD drive
restarts streaming. - Joining a room after qualifying has run admits you with no qualifying
time. - Spectating is not in this release.
Memory card saves are written beside the executable.