/OpenRVS

Source code for the OpenRVS Raven Shield patch

Primary LanguageUnrealScriptGNU General Public License v3.0GPL-3.0

OpenRVS

By the OpenRVS team:

  • original author: Twi
  • programming: Twi and Will
  • game service fix: chriswak
  • community hosting: Tony and SMC Clan

Thanks to: Tony, Psycho, Legacy, juguLator01, SMC and ShadowSquad clans, and the AllR6 community.

A patch to fix Red Storm Entertainment's mistakes (intentional and otherwise). Allows multiplayer again, enables more serious modding, implements some QOL fixes.

Installing or Updating OpenRVS (Client Instructions)

  1. Stop your game if it's running.
  2. Extract the contents of the OpenRVS ZIP file to your game's system directory. For Steam, this is steamapps\common\Rainbow Six 3 Gold\system.
  3. Optionally adjust your FOV in openrvs.ini - see the [OpenRVS.OpenFOV] section.
  4. Launch the game! You'll see a list of servers to choose from, or you can join by IP address.

Installing or Updating OpenRVS (Server Instructions)

  1. Stop your server process if it's running.
  2. Extract the contents of the OpenRVS ZIP file to your game's system directory.
  3. Edit RavenShield.mod in your game's Mods directory, and add the following:
ServerActors=OpenRVS.OpenServer
ServerActors=OpenRVS.OpenBeacon
ServerActors=OpenRenderFix.OpenFix
ServerPackages=OpenRenderFix

NOTE: The OpenRVS.OpenBeacon line should replace the IpDrv.UdpBeacon line. This may not be compatible with N4Admin installations. 4. Edit system/RavenShield.ini, and ensure that your ServerBeaconPort is set to exactly 1000 above your server's Port, and that BeaconPort is exactly 2000 above your server's Port. 5. Launch the server!

NOTE: Server admins can ban users by IP address in the BanList.ini file, found in your game's Server directory.

Patching R6GameService.dll

The R6GameService.dll file contains code which makes requests to Ubisoft's historical infrastructure for the game, which is now shut down. This can result in lag or stutter.

To fix this, you can patch the file using ChrisWak's patcher, or simply replace the file with an already-patched version.

The OpenRVS Registry

Since v1.5, OpenRVS servers send an extra UDP beacon to a web server running openrvs-registry. This app tracks all known servers, healthchecks them to hide unhealthy serers, and automatically adds new servers to the list when the UDP beacon is received.

Since v1.6, the config key is RegistryServerHost instead of RegistryServerIP, and DNS domain names are supported (rather than just IP addresses).

The registry listens for beacons on UDP port 8080, and listens for server list requests on HTTP port 8080 (on the /servers URL).

The IP and port for the deployment can be configured in openrvs.ini:

[OpenRVS.OpenBeacon]
RegistryServerHost=api.openrvs.org
RegistryServerPort=8080

Local Development

Note: You should test your changes using this process BEFORE opening a pull request!

First, you will need to download Twi's Raven Shield SDK. Put this somewhere convenient (such as C:\rvssdk).

The SDK expects the OpenRVS code (both OpenRVS and OpenRenderFix directories) to be inside the Code Environment directory in the SDK folder. Be sure to copy \PATH\TO\GIT\REPO\{OpenRVS,OpenRenderFix} to \PATH\TO\SDK\Code Environment to operate on the latest version of your code.

  1. Open a command prompt in the SDK2 directory.
  2. Run "SDK ToolBelt.bat" to enter the CLI
  3. Run 160 to activate the SDK for Raven Shield v1.60
  4. Type compile to enter the compiler, and then type OpenRVS to compile OpenRVS. Address any errors or warnings if necessary. Type log to show more detail. Note: If you see an error regarding appPreExit, this can be ignored. This happens when building 1.60 code with the 1.56 compiler, and the compiled output will still be created successfully at \PATH\TO\SDK\OpenRVS.u
  5. Type strip to enter the symbol/docstring stripper, and then type OpenRVS.u to run it. This will reduce output file size by around 60%
  6. Copy OpenRVS.u and/or OpenRenderFix.u to your game directory's system folder (both client and server)
  7. Test your changes in-game by connecting to the server

Repeat the above process for OpenRenderFix instead of OpenRVS to compile changes to weapon rendering in multiplayer.

In order to enable debug logging, edit OpenLogger.uc and change false to true where instructed.

OpenRVS Libraries

We have included a number of reusable UnrealScript2 libraries in OpenRVS:

  • OpenLogger.uc: For writing OpenRVS logs to system\ravenshield.log
  • OpenString.uc: For common operations like Split() and RemoveQuotes()
  • OpenTimer.uc: For measuring how long things take to execute
  • OpenHTTPClient.uc: For sending HTTP requests and reading responses

Version History

Release 1.6

  • Replaces hardcoded IPs with DNS names for improved reliability
  • Updates the default server list to http://api.openrvs.org/servers
  • Updates the default beacon server to udp://api.openrvs.org:8080
  • Updates fallback server list
  • Updates documentation
  • Adds INI files to repo for easier packaging of releases

Release 1.5

  • server ping in multiplayer menu added
  • server sorting in multiplayer menu added
  • version checking added - clients and servers not fully updated will write a warning to log, and clients will see a popup message with download link
  • support for automatic server registration added - needs to be fully implemented on master list host for functionality
  • support for CSV-format master server list added

Release 1.4

  • support for custom FOVs added - including fix for weapon fov rendering
  • support for loading the game straight into a mod added
  • added back beta feature unlimited practice button
  • mod actors can now use "CMD" console command
  • support for cheat manager mods added
  • multiplayer has new actor "OpenRenderFix.OpenFix" to help widescreen players

Release 1.3

  • behind-the-scenes errors when first loading maplist fixed
  • issue with clogging user.ini fixed (?)
  • partial support for custom mods dedicated servers begun
  • support for modded singleplayer gametypes added

Release 1.2

  • buggy code in multiplayer menus cleaned up a bit
  • enemy positioning data now sent at all times to players; fixes issues with invisible tangos on a laggy connection

Release 1.1

  • Ubisoft mod locking removed; any mod can now work without extra help

Release 1.0

  • server list disappearing when using escape menu fixed

Beta 0.9

  • massive freeze when clicking multiplayer fixed

Beta 0.8

  • server list now fetches some current info from each server
  • added ability to specify alternate server list source
  • servers loaded from the backup list (if connection to the configured server list fails) also fetch live info

Beta 0.7

  • rewrote server list connection to fix game freeze when attempting to connect

Beta 0.6

  • logs incoming player IP addresses
  • fixes issue where server list retrieved from internet could be too large and not display properly or at all
  • backup server list updated

Beta 0.5

  • bypasses UBI.com login
  • bypasses cd key client verification
  • fixes bug in join IP window
  • gets serverlist over http
  • allows connection to LAN server through internet
  • fixes issue with connecting to non-N4 server
  • bypasses cd key server verification
  • allows banning via IP
  • fixes issue with multiple servers using same ban list