backend refactor yay!!! 1.4.0

This commit is contained in:
2025-08-09 04:46:40 -04:00
parent 8d1bac8201
commit 808da23afa
21 changed files with 616 additions and 77 deletions

View File

@@ -23,6 +23,7 @@ Run BepInEx interop on your build and add the following assemblies to new folder
* `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.
@@ -34,4 +35,76 @@ If you're unsure how to start your build on linux:
* 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
* 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
}
]
} }
```