Photon Unity Networking 2 2.45

Public Attributes | Properties | List of all members
RoomOptions Class Reference

Wraps up common room properties needed when you create rooms. Read the individual entries for more details. More...

Public Attributes

int MaxPlayers
 Max number of players that can be in the room at any time. 0 means "no limit". More...
 
int PlayerTtl
 Time To Live (TTL) for an 'actor' in a room. If a client disconnects, this actor is inactive first and removed after this timeout. In milliseconds. More...
 
int EmptyRoomTtl
 Time To Live (TTL) for a room when the last player leaves. Keeps room in memory for case a player re-joins soon. In milliseconds. More...
 
Hashtable CustomRoomProperties
 The room's custom properties to set. Use string keys! More...
 
string[] CustomRoomPropertiesForLobby = new string[0]
 Defines the custom room properties that get listed in the lobby. More...
 
string[] Plugins
 Informs the server of the expected plugin setup. More...
 

Properties

bool IsVisible [get, set]
 Defines if this room is listed in the lobby. If not, it also is not joined randomly. More...
 
bool IsOpen [get, set]
 Defines if this room can be joined at all. More...
 
bool CleanupCacheOnLeave [get, set]
 Removes a user's events and properties from the room when a user leaves. More...
 
bool SuppressRoomEvents [get, set]
 Tells the server to skip room events for joining and leaving players. More...
 
bool SuppressPlayerInfo [get, set]
 Disables events join and leave from the server as well as property broadcasts in a room (to minimize traffic) More...
 
bool PublishUserId [get, set]
 Defines if the UserIds of players get "published" in the room. Useful for FindFriends, if players want to play another game together. More...
 
bool DeleteNullProperties [get, set]
 Optionally, properties get deleted, when null gets assigned as value. Defaults to off / false. More...
 
bool BroadcastPropsChangeToAll [get, set]
 By default, property changes are sent back to the client that's setting them to avoid de-sync when properties are set concurrently. More...
 

Detailed Description

Wraps up common room properties needed when you create rooms. Read the individual entries for more details.

This directly maps to the fields in the Room class.

Member Data Documentation

◆ CustomRoomProperties

Hashtable CustomRoomProperties

The room's custom properties to set. Use string keys!

Custom room properties are any key-values you need to define the game's setup. The shorter your keys are, the better. Example: Map, Mode (could be "m" when used with "Map"), TileSet (could be "t").

◆ CustomRoomPropertiesForLobby

string [] CustomRoomPropertiesForLobby = new string[0]

Defines the custom room properties that get listed in the lobby.

Name the custom room properties that should be available to clients that are in a lobby. Use with care. Unless a custom property is essential for matchmaking or user info, it should not be sent to the lobby, which causes traffic and delays for clients in the lobby.

Default: No custom properties are sent to the lobby.

◆ EmptyRoomTtl

int EmptyRoomTtl

Time To Live (TTL) for a room when the last player leaves. Keeps room in memory for case a player re-joins soon. In milliseconds.

◆ MaxPlayers

int MaxPlayers

Max number of players that can be in the room at any time. 0 means "no limit".

◆ PlayerTtl

int PlayerTtl

Time To Live (TTL) for an 'actor' in a room. If a client disconnects, this actor is inactive first and removed after this timeout. In milliseconds.

◆ Plugins

string [] Plugins

Informs the server of the expected plugin setup.

The operation will fail in case of a plugin missmatch returning error code PluginMismatch 32757(0x7FFF - 10). Setting string[]{} means the client expects no plugin to be setup. Note: for backwards compatibility null omits any check.

Property Documentation

◆ BroadcastPropsChangeToAll

bool BroadcastPropsChangeToAll
getset

By default, property changes are sent back to the client that's setting them to avoid de-sync when properties are set concurrently.

This option is enables by default to fix this scenario:

1) On server, room property ABC is set to value FOO, which triggers notifications to all the clients telling them that the property changed. 2) While that notification is in flight, a client sets the ABC property to value BAR. 3) Client receives notification from the server and changes it�s local copy of ABC to FOO. 4) Server receives the set operation and changes the official value of ABC to BAR, but never notifies the client that sent the set operation that the value is now BAR.

Without this option, the client that set the value to BAR never hears from the server that the official copy has been updated to BAR, and thus gets stuck with a value of FOO.

◆ CleanupCacheOnLeave

bool CleanupCacheOnLeave
getset

Removes a user's events and properties from the room when a user leaves.

This makes sense when in rooms where players can't place items in the room and just vanish entirely. When you disable this, the event history can become too long to load if the room stays in use indefinitely. Default: true. Cleans up the cache and props of leaving users.

◆ DeleteNullProperties

bool DeleteNullProperties
getset

Optionally, properties get deleted, when null gets assigned as value. Defaults to off / false.

When Op SetProperties is setting a key's value to null, the server and clients should remove the key/value from the Custom Properties. By default, the server keeps the keys (and null values) and sends them to joining players.

Important: Only when SetProperties does a "broadcast", the change (key, value = null) is sent to clients to update accordingly. This applies to Custom Properties for rooms and actors/players.

◆ IsOpen

bool IsOpen
getset

Defines if this room can be joined at all.

If a room is closed, no player can join this. As example this makes sense when 3 of 4 possible players start their gameplay early and don't want anyone to join during the game. The room can still be listed in the lobby (set isVisible to control lobby-visibility).

◆ IsVisible

bool IsVisible
getset

Defines if this room is listed in the lobby. If not, it also is not joined randomly.

A room that is not visible will be excluded from the room lists that are sent to the clients in lobbies. An invisible room can be joined by name but is excluded from random matchmaking.

Use this to "hide" a room and simulate "private rooms". Players can exchange a roomname and create it invisble to avoid anyone else joining it.

◆ PublishUserId

bool PublishUserId
getset

Defines if the UserIds of players get "published" in the room. Useful for FindFriends, if players want to play another game together.

When you set this to true, Photon will publish the UserIds of the players in that room. In that case, you can use PhotonPlayer.userId, to access any player's userID. This is useful for FindFriends and to set "expected users" to reserve slots in a room.

◆ SuppressPlayerInfo

bool SuppressPlayerInfo
getset

Disables events join and leave from the server as well as property broadcasts in a room (to minimize traffic)

◆ SuppressRoomEvents

bool SuppressRoomEvents
getset

Tells the server to skip room events for joining and leaving players.

Using this makes the client unaware of the other players in a room. That can save some traffic if you have some server logic that updates players but it can also limit the client's usability.