On November 9 2021, Innersloth released the Roles and Cosmicubes update.
Official patch notes are on Innersloth's blog
Network version: 2021.11.9
Implementation of roles
There is a new SetRole RPC that sets the player's role. This replaces the SetInfected RPC.
To configure these roles, various role options are added to the game settings, changing its version to 5. See SyncSettings on how this data is encoded.
Engineer
The Engineer is a crewmate can vent like an Impostor, but only stay hidden for a few seconds instead of being allowed to stay in the vents indefinitely. The timeout for this works by the client sending an ExitVent command after the configured time is up. Engineers are also booted from vents if the vent they are in gets cleaned.
This affects the EnterVent, ExitVent, SnapTo and BootFromVent RPC's.
Scientist
The Scientist is a crewmate that can see the vitals panel from anywhere on the map for a few seconds. This works entirely client-side.
Shapeshifter
The Shapeshifter is an impostor can convert itself into another player. After a configurable amount of time, the player will shapeshift back. This uses the new Shapeshift RPC.
Guardian Angel
The Guardian Role is a dead crewmate role that is assigned to the player upon their death. While the player is in ghost form, they can protect a player: this will cause a colored angel to fly around the protected player, which is visible to ghosts and configureably Impostors as well.
This role uses 3 new RPC's: ProtectPlayer, CheckMurder and CheckProtect. It also changes how the MurderPlayer RPC is used.
Implementation of Cosmicubes
Cosmicubes are Innersloth's system for unlocking cosmetics. This is done by paying for stars and receiving beans and pods for playing games on the official servers. As the Cosmicube system uses Epic Online Services to maintain an inventory, it is currently not possible to reward beans and pods on custom servers.
To set the active cosmicube and award the correct beans, the SetActivePodType root packets is sent by the client.
All cosmetics RPC's have been replaced by variants which use a string instead of an numerical ID, see a summary page for these. This includes the new cosmetic types, Visors and NamePlates. The user level is also set via an RPC, SetLevel.
Other Changes
Official Game Servers now use an encrypted connection
As Innersloth is preparing for a release on consoles, the main game traffic is now sent over an encrypted connection, using Hazel's DTLS support. This disables the ability to connect to 3rd party servers. As a workaround, Reactor disables DTLS traffic for this version. In version 2021.12.14 and up DTLS can be disabled by using the new UseDtls flag. See Roles and Cosmicubes Bugfixes.
PlatformSpecificData
Many packets now include PlatformSpecificData, which is a large struct which details which platform the player is playing on.
- The Handshake
- Players receive the PlatformSpecificData from other players via the JoinGame and JoinedGame packets.
- QueryPlatformIds
Many players in a room can cause issues for some clients
Due to how PlatformSpecificData is shared, some packets are now larger than before as they now include the full PlatformSpecificData, which may hit packet size limitations.
Miscellaneous changes:
- To account for the new game options added by this patch, GameOptions version 5 is used.
- Previously it was possible to communicate error message directly when the server replied to JoinGame, this was removed. Disconnecting players with a custom message has the same result.
- GameData no longer has an separate serialization for the initial state.
