forked from zombieb/undead-universal-patch-il2cpp
110 lines
4.4 KiB
Markdown
110 lines
4.4 KiB
Markdown
# Undead Universal Patch
|
|
Non-EAC, IL2CPP build patcher for Rec Room (Dec 2018\*-*Apr 3 2020)
|
|
|
|
**Currently only supports unobfuscated builds**
|
|
|
|
Part two of two universal patches. The Mono patch is available at https://git.proxnet.dev/zombieb/undead-universal-patch-mono.
|
|
|
|
Compatible with [BepInEx builds](https://builds.bepinex.dev/projects/bepinex_be) that can automatically load interop assemblies before plugins (builds 710 and later)
|
|
|
|
**When submitting issues**, please submit your BepInEx log file with all log levels enabled. You can do this by setting `Logging.Disk.LogLevels` in `BepInEx.cfg` to `All`.
|
|
|
|
### Patch IDs
|
|
Currently a work-in-progress and is not implemented
|
|
* `removeInkLimit`: 'Remove' the limit of resources that can be used in a single room
|
|
|
|
### Compiling
|
|
Unlike the Mono patch, some assemblies must be referenced.
|
|
|
|
Run BepInEx interop on your build and add the following assemblies to new folder `.\AssemblyReferences\` in this project directory:
|
|
* `BepInEx/interop/Assembly-CSharp.dll`
|
|
* `BepInEx/interop/Il2Cppmscorlib.dll`
|
|
* `BepInEx/interop/Il2CppSystem.dll`
|
|
* `BepInEx/interop/Photon3Unity3D.dll`
|
|
* `BepInEx/interop/RecRoom.Datastructures.Runtime`
|
|
* `BepInEx/interop/UnityEngine.CoreModule.dll`
|
|
* `UniverseLib.BIE.IL2CPP.Interop.dll` [UniverseLib](https://github.com/yukieiji/UniverseLib); (can be obtained from UnityExplorer)
|
|
|
|
### Linux users
|
|
Wine currently has problems generating the keypair used in Galvanic authentication.
|
|
|
|
You can use a real Windows system to generate the keys for the first startup.
|
|
|
|
If you're unsure how to start your build on linux:
|
|
* Install Steam
|
|
* Add Rec Room as a non-steam game
|
|
* Set the compatibility mode to the latest stable version of proton
|
|
* Use protontricks to add the doorstop DLL
|
|
* Start Rec Room through Steam
|
|
|
|
### AGRoomRuntimeConfig Patches
|
|
Properties of the object in the patch file will be used to set the properties of the respective object type in the game's assembly.
|
|
|
|
Each object type can be configured as follows:
|
|
* `AGRoomRuntimeConfig.Room` or `AGRoomRuntimeConfig.RoomScene` or `AGRoomRuntimeConfig.Location`
|
|
- Set the key to the replicationId of the object you want to change
|
|
* Any object with a replicationId can be changed
|
|
- Objects in the list have properties "Key" and "Value"
|
|
* The key represents the name of the property to modify
|
|
* The value will replace the current value in the assembly
|
|
- Example:
|
|
```json
|
|
{"76d98498-60a1-430c-ab76-b54a29b7a163": [
|
|
{
|
|
"Key": "ReleaseStatus",
|
|
"Value": 0
|
|
}
|
|
]}
|
|
```
|
|
will prevent you from loading into the dorm, because you can't go to editor-only rooms.
|
|
|
|
Although you can set rooms with ReleaseStatus:0 to 2 if you'd like to go to those rooms.
|
|
* `GameConfigurationAsset`
|
|
- Set the key to the name of the object you want to change
|
|
* Ex. "Crescendo Of The Blood Moon" (CrescendoOfTheBloodMoon_Config, 20200306)
|
|
- Value must match a certain schema (example):
|
|
```json
|
|
{
|
|
"Name": "Crescendo Of The Blood Moon",
|
|
"TeamConfigurations": [
|
|
{
|
|
"MaxTeamSize": 1
|
|
},
|
|
{
|
|
"MaxTeamSize": 2
|
|
},
|
|
{
|
|
"MaxTeamSize": 3
|
|
}
|
|
],
|
|
"TeamSelectionMethod": 0,
|
|
"ManualGameStartRequirement": {
|
|
"MinPlayerCount": 1,
|
|
"MinTeamCount": 1,
|
|
"MinTeamSize": 1
|
|
},
|
|
"AutomaticGameStartSupported": false,
|
|
"AutomaticGameStartRequirement": {
|
|
"MinPlayerCount": -1,
|
|
"MinTeamCount": -1,
|
|
"MinTeamSize": -1
|
|
},
|
|
"GameStartDelay": 10.0,
|
|
"EndGameResultsDuration": 15.0
|
|
}
|
|
```
|
|
* You must set every property.
|
|
* Only `MaxTeamSize` is supported for every team in `TeamConfigurations`.
|
|
* See `TeamSelectionMethod` enum members for more information.
|
|
* Changes to arrays (lists) are made in order. To change the value of a team size in the middle of an array, you must duplicate the previous data.
|
|
- Example:
|
|
```json
|
|
{ "Crescendo Of The Blood Moon": {
|
|
"AutomaticGameStartSupported": true,
|
|
"TeamConfigurations": [
|
|
{
|
|
"MaxTeamSize": 18
|
|
}
|
|
]
|
|
} }
|
|
``` |