Skip to content

CTRNativePorted v0.2.0

Pre-release
Pre-release

Choose a tag to compare

@guzuold guzuold released this 15 Oct 12:37
· 11 commits to main since this release

Update: v0.2.1 is out: colored Xbox button prompts now work out of the box, without Python (the icons are included and the launcher prepares them itself). Download v0.2.1 instead of this release.

CTRNativePorted v0.2.0 — online multiplayer (preview)

This release brings online multiplayer to the native runtime, using the project's own
server in place of PSN and Demonware (Sony and Activision servers are never contacted).
Much of it has been tested only on a single PC so far: please try it and tell us how it
goes
— see Help us test below. Feedback is very welcome.

What's new since v0.1.1

Online multiplayer

  • Password matchmaking: everyone who types the same room password ends up in the same
    lobby and race (ONLINE > Matchmaking > Go to Lobby); different passwords never match.
  • Server built into the launcher (rewritten in C++, no Python needed): one player turns on
    Multiplayer Online and Ospita server qui (host server here); the others type the host's
    address and the same password. A standalone ctr_online_server.exe is included too.
  • Automatic port forwarding with UPnP: the launcher asks the router to open the ports,
    detects the public address, copies it to the clipboard, and closes the ports on exit. If the
    router has UPnP disabled, forward TCP 8780, TCP 3074, UDP 3078-3082 and UDP 3174 by hand.
  • Relay for NAT / CGNAT (experimental): the Relay (NAT / CGNAT) switch sends the race
    traffic through the server instead of directly between players, for connections that cannot
    receive traffic from the internet (mobile hotspots, carrier-grade NAT, strict routers). About
    2 KB/s per player and direction. It only helps when the server itself is reachable from the
    internet.

Launcher and controls

  • Redesigned Pit Lane launcher (launcher.exe); all runtime files now sit next to it.
  • Colored Xbox button prompts (Icone Xbox colorate; the prompt archives are prepared once
    from your own dump with a Python tool, see ctrport/XBOX_PROMPTS.md).
  • Quick controller exit: hold View + Menu for 1.2 s, then A to quit or B to cancel.

Help us test 🙏

What has been verified: login, lobby and race start with two (and, on the direct path, three)
game instances on one PC, including a race with the direct path blocked on purpose so that
everything went through the relay. What still needs real-world testing:

  • Playing between different homes / networks, with and without the relay switch.
  • UPnP port opening on real routers (only tested against a simulated router).
  • Hosting from the launcher and joining from another PC with the server address.
  • Mobile hotspot / CGNAT players with the relay switch on.
  • Full races to the finish line and the next race in the same lobby (not verified yet).
  • Three or more players, and players leaving in the middle of a race.

If something does not work, please open an issue with: what you did, your connection type
(home router, hotspot…), whether you hosted or joined, and the logs from runtime/user/logs/
(the play_*.stdout.log of the game and, for the host, online_server_*.jsonl).
Reports that it works are just as useful!

Known limitations

  • The game repeats a session update request that the server does not serve yet (harmless).
  • Friends list, invites and presence are not implemented.
  • A server behind CGNAT cannot be reached by players outside its network, relay or not.

Included in CTRNativePorted-v0.2.0-win64.zip

Extract the zip and run launcher.exe (top folder). Everything else is in
build/CTRPort-gpu/:

  • launcher.exe — native launcher (with the built-in online server)
  • build/CTRPort-gpu/ctrport.exe — native x86-64 runtime
  • build/CTRPort-gpu/ctr_gpu.dll — Vulkan renderer (adapted from shadPS4 v0.18.0)
  • build/CTRPort-gpu/ctr_hle.dll — PS4 system library implementations (including online)
  • build/CTRPort-gpu/ctr_online_server.exe — standalone project server (optional)
  • Visual C++ runtime DLLs, LICENSE (GPL-2.0), README.md

SHA256 of the zip: 3876e09ff373e77d7e12b7b725c40b9e6fa30781e4028afc88ee60577bb7d0b6

Note: No game files are included. You need your own dump of CUSA14876 (v01.00, optionally
with the v01.21 update, required for 60 FPS).