Quantum 3
3.0.10
Override the Quantum plugin class to create a custom server object. More...
Inherits PluginBase, and IHost.
Public Member Functions | |
| DeterministicPlugin () | |
| Create a DeterministicPlugin instance which creates a new instance of Server.DeterministicServer More... | |
| DeterministicPlugin (IServer server) | |
| Create a DeterministicPlugin instance passing in a server object. More... | |
| override void | BeforeJoin (IBeforeJoinGameCallInfo info) |
| Optionally fires a webhook (WebHooksConfig.EnableOnJoin) and then continue the process with OnBeforeJoinContinue(). The join operation will be on hold (non-blocking) in this case. More... | |
| void | Disconnect (int actorNr, string message) |
| Removed the actor from the plugin host. Is automatically called when the DeterministicServer is closed. More... | |
| void | LogError (string message) |
| Directs log to PluginHost. More... | |
| void | LogException (Exception exn) |
| Directs log to PluginHost. More... | |
| void | LogException (string message, Exception exn) |
| Directs log to PluginHost. More... | |
| void | LogFatal (string message) |
| Directs log to PluginHost. More... | |
| void | LogInfo (string message) |
| Directs log to PluginHost. More... | |
| void | LogWarning (string message) |
| Directs log to PluginHost. More... | |
| override void | OnCloseGame (ICloseGameCallInfo info) |
| Called when the room is closing. The Quantum server is closed right away. When the close webhook is enabled, the processing is halted until a response is completed. More... | |
| override void | OnCreateGame (ICreateGameCallInfo info) |
| Optionally fires a webhook (WebHooksConfig.EnableOnCreate) and then continue the process with OnCreateGameContinue(). The create operation will be on hold (blocking) in this case. LobbyProperties are validated and overwritten. More... | |
| override void | OnLeave (ILeaveGameCallInfo info) |
| Called when an actor leaves the room. Quantum ignores the inactive flag. When enabled a webhook is fired, processing the leave action is never halted, though. More... | |
| bool | TrySendAddPlayerWebRequest (string userId, int actorNr, int playerSlot, byte[] runtimePlayer, WebhookHostCallbacks.AddRuntimePlayerWebResponse callback) |
Check plugin config for "WebHookEnableRuntimePlayer". If true sends a RuntimePlayer web request. More... | |
| bool | TrySendGameConfigsWebRequest (string userId, int actorNr, byte[] runtimeConfig, object sessionConfig, WebhookHostCallbacks.SendGameConfigsWebResponse callback) |
| Checks the plugin config for "WebHookEnableRuntimeConfig" and tries to send a webhook accordingly. This can be only issued once successfully as internally HasRuntimeConfigWebhookBeenSent is checked. More... | |
| bool | TrySendPlayerAddedWebRequest (string userId, int actorNr, int playerSlot, int player) |
| If "WebHookEnablePlayerAdded" is enabled in the Photon config a fire and forget web request is send to a custom backend when a player was successfully added to the Quantum simulation. More... | |
| bool | TrySendPlayerRemovedWebRequest (string userId, int actorNr, int playerSlot, int player, int playerRemovedReason) |
| If "WebHookEnablePlayerRemoved" is enabled in the Photon config a fire and forget web request is send to a custom backend when a player was successfully removed to the Quantum simulation. More... | |
Public Attributes | |
| string | GameId => PluginHost == null ? string.Empty : PluginHost.GameId |
| Returns the room name. More... | |
| bool | IsClosed => _isClosed |
Returns true when the plugin has been closed. More... | |
| override string | Name => "QuantumPlugin" |
| Plugin name. This will correspond with the plugin name that the client selects when connecting to a room. More... | |
| IServer | Server => _server |
| Server object that the plugin needs as an entry to call rudimentary callbacks. More... | |
| string | UniqueGameId => _uniqueGameId ?? WebHooksUtil.CreateGameId(this, PluginHost) |
| Returns a unique game id, a combination of region, cloud and room name. More... | |
Protected Member Functions | |
| virtual void | OnBeforeJoinContinue (JoinQuantumGameResponse response, WebHookError error, IBeforeJoinGameCallInfo info) |
| Continuation of the before join operation if a webhook was used. Exceptions thrown will be caught and logged as errors. More... | |
| virtual void | OnCreateGameContinue (CreateQuantumGameResponse response, WebHookError error, ICreateGameCallInfo info) |
| If a webhook is send during CreateGame it will eventually continue here with the response or error. Exceptions thrown will be cached and logged as errors. More... | |
| bool | TryGetActorNumber (string userId, out int actorNr) |
| Search the actor number for a UserId. This may fail. More... | |
| bool | TryGetUserId (int actorNumber, out string userId) |
| Search the Photon user id using a Photon actor id, this may fail. More... | |
Protected Attributes | |
| QuantumWebHooksConfig | WebHooksConfig => _webHooksConfig # new QuantumWebHooksConfig() |
| Return the current webhook config or lazy initialize a default one. More... | |
Properties | |
| DeterministicCounterCollection | Counters [get, set] |
Quantum performance counter. Can be null. More... | |
| int | EmptyRoomTTL [get] |
| Retrieve the EmptyRoomTTL value from GameProperties, return 0 when nothing was found. More... | |
| FlushMode? | InputFlushMode [get, set] |
| Configure the input flush mode. Cannot be used during DeterministicPluginFactory.CreateDeterministicPlugin and must be used after SetupInstance(IPluginHost, Dictionary<string, string>, out string). Initial configuration is FlushMode.Default, can be overridden by dashboard config "InputFlushMode". More... | |
| int?? | UpdateRateMs [get, set] |
| Configure the server update rate in miliseconds. Cannot be used during DeterministicPluginFactory.CreateDeterministicPlugin and must be used after SetupInstance(IPluginHost, Dictionary<string, string>, out string). By default the rate is determined by the SessionConfig (which can make the rate change when starting the game). It is overridden by the dashboard config "ServerUpdateRateMs" if set. Finally setting this property will override all other settings. The result is clamped between 16ms (60fps) and 64ms (15fps). More... | |
Override the Quantum plugin class to create a custom server object.
|
inline |
Create a DeterministicPlugin instance which creates a new instance of Server.DeterministicServer
|
inline |
Create a DeterministicPlugin instance passing in a server object.
| server | Server object of type Server.DeterministicServer |
|
inline |
Optionally fires a webhook (WebHooksConfig.EnableOnCreate) and then continue the process with OnCreateGameContinue(). The create operation will be on hold (blocking) in this case. LobbyProperties are validated and overwritten.
| info | Create game info object |
|
inlineprotectedvirtual |
If a webhook is send during CreateGame it will eventually continue here with the response or error. Exceptions thrown will be cached and logged as errors.
| response | Will be set if the webhook was successful. |
| error | Will be set if the webhook was unsuccessful or an error occurred. |
| info | Info object to continue or fail the game creation. |
|
inline |
Optionally fires a webhook (WebHooksConfig.EnableOnJoin) and then continue the process with OnBeforeJoinContinue(). The join operation will be on hold (non-blocking) in this case.
| info | Join game info object |
|
inlineprotectedvirtual |
Continuation of the before join operation if a webhook was used. Exceptions thrown will be caught and logged as errors.
| response | Will be set if the webhook was successful. |
| error | Will be set if the webhook was unsuccessful or an error occurred. |
| info | Info object to continue or fail the join operation. |
|
inlineprotected |
Search the actor number for a UserId. This may fail.
| userId | Client User Id |
| actorNr | Client Actor Id |
true if an actor was found for the UserId
|
inlineprotected |
Search the Photon user id using a Photon actor id, this may fail.
| actorNumber | Client Actor Id |
| userId | Client User Id |
true if an actor was found for the actor id
|
inline |
Called when an actor leaves the room. Quantum ignores the inactive flag. When enabled a webhook is fired, processing the leave action is never halted, though.
| info |
|
inline |
Called when the room is closing. The Quantum server is closed right away. When the close webhook is enabled, the processing is halted until a response is completed.
| info |
|
inline |
Directs log to PluginHost.
|
inline |
Directs log to PluginHost.
|
inline |
Directs log to PluginHost.
|
inline |
Directs log to PluginHost.
|
inline |
Directs log to PluginHost.
|
inline |
Directs log to PluginHost.
|
inline |
Removed the actor from the plugin host. Is automatically called when the DeterministicServer is closed.
| actorNr | Actor Number from DeterministicPluginClient.ActorNr |
| message | Disconnect message |
|
inline |
Check plugin config for "WebHookEnableRuntimePlayer". If true sends a RuntimePlayer web request.
| userId | Photon user id |
| actorNr | Photon Server runtime actor number |
| playerSlot | Player index (when one client controls multiple players). Must be set. |
| runtimePlayer | RuntimePlayer in bytes. Can be null according to Webhook API. |
| callback | Callback to forward the response. Must be set. |
true if webhook was send.
|
inline |
If "WebHookEnablePlayerAdded" is enabled in the Photon config a fire and forget web request is send to a custom backend when a player was successfully added to the Quantum simulation.
| userId | Photon user id |
| actorNr | Photon Server runtime actor number |
| playerSlot | Local player slot |
| player | Global player id |
true if webhook was send.
|
inline |
If "WebHookEnablePlayerRemoved" is enabled in the Photon config a fire and forget web request is send to a custom backend when a player was successfully removed to the Quantum simulation.
| userId | Photon user id |
| actorNr | Photon Server runtime actor number |
| playerSlot | Local player slot or -1 if all players |
| player | Global player id or -1 if all players |
| playerRemovedReason | Reason that the player was removed |
true if webhook was send.
|
inline |
Checks the plugin config for "WebHookEnableRuntimeConfig" and tries to send a webhook accordingly. This can be only issued once successfully as internally HasRuntimeConfigWebhookBeenSent is checked.
| userId | User id |
| actorNr | Photon Server runtime actor number |
| runtimeConfig | RuntimeConfig from the client. Can be null according to Webhook API. |
| sessionConfig | SessionConfig as DeterministicSessionConfig object from the client. Can be null according to Webhook API. |
| callback | Webhook callback. Must be set. |
true, if webhook was sent or previously send| IServer Photon.Deterministic.DeterministicPlugin.Server => _server |
Server object that the plugin needs as an entry to call rudimentary callbacks.
| override string Photon.Deterministic.DeterministicPlugin.Name => "QuantumPlugin" |
Plugin name. This will correspond with the plugin name that the client selects when connecting to a room.
| string Photon.Deterministic.DeterministicPlugin.UniqueGameId => _uniqueGameId ?? WebHooksUtil.CreateGameId(this, PluginHost) |
Returns a unique game id, a combination of region, cloud and room name.
| string Photon.Deterministic.DeterministicPlugin.GameId => PluginHost == null ? string.Empty : PluginHost.GameId |
Returns the room name.
| bool Photon.Deterministic.DeterministicPlugin.IsClosed => _isClosed |
Returns true when the plugin has been closed.
|
protected |
Return the current webhook config or lazy initialize a default one.
|
get |
Retrieve the EmptyRoomTTL value from GameProperties, return 0 when nothing was found.
|
getset |
Quantum performance counter. Can be null.
|
getset |
Configure the server update rate in miliseconds. Cannot be used during DeterministicPluginFactory.CreateDeterministicPlugin and must be used after SetupInstance(IPluginHost, Dictionary<string, string>, out string). By default the rate is determined by the SessionConfig (which can make the rate change when starting the game). It is overridden by the dashboard config "ServerUpdateRateMs" if set. Finally setting this property will override all other settings. The result is clamped between 16ms (60fps) and 64ms (15fps).
|
getset |
Configure the input flush mode. Cannot be used during DeterministicPluginFactory.CreateDeterministicPlugin and must be used after SetupInstance(IPluginHost, Dictionary<string, string>, out string). Initial configuration is FlushMode.Default, can be overridden by dashboard config "InputFlushMode".