tiltedphoques / CyberpunkMP

Other
21 stars 4 forks source link

Cyberpunk Multiplayer

CyberpunkMP is a multiplayer mod for Cyberpunk 2077, created by Tilted Phoques SRL. This mod brings multiplayer functionality to the game, allowing players to synchronize their appearances, equipment, movements, and basic animations seamlessly. Additionally, vehicles and their passengers are fully synchronized, enabling cooperative or competitive experiences involving the game's dynamic vehicular systems.

CyberpunkMP also includes powerful tools for developers. We provide a .NET SDK for creating server-side plugins and support client-side plugins through an exposed Redscript SDK. The mod features a robust Remote Procedure Call (RPC) system, allowing plugins to invoke server-side functions from the client and vice versa. This system is completely automatic, requiring no additional code to handle RPC functionality.

Building

Requirements

Build

  1. Navigate to the repository using a command prompt.
  2. Check out the correct branch/tag if you're not working against main
  3. Run git submodule update --init to pull in vendored dependencies
  4. Run xmake -y (add -v for verbose output)

Visual Studio

If you want visual studio projects execute xmake project -k vsxmake and you will find the sln in the newly created vsxmake folder.

In addition, if you want to debug the project directly from with Visual Studio you can set the game path xmake f --game="C:/.../Cyberpunk2077.exe". In Visual Studio you will then have a project named Cyberpunk2077, debug this target in Debug only, it will not work in other modes.

[!IMPORTANT] On Windows, you'll need to use Windows SDK below v10.0.26100.0. An issue is currently breaking the build due to package protobuf-cpp.

Additional configuration / troubleshooting

Docker

To build and run a Docker image of the server

  1. Follow build steps 1 to 3
  2. Build the image with docker build . -tag cyberpunkmp
  3. Run it with docker run -p 11778:11778 cyberpunkmp

Paths you might want to bind

NOTE: If you change the port in the config, don't forget to expose it.