Case Status
Log In


Home ยป Add-ons»Photon Networking»Photon DemoWorker Sample»Photon DemoWorker Connection F…
Community Wiki

Photon DemoWorker Connection Fsm

Connect and inform about connection status


This is a critical Fsm.


It has three very distinct functions ( organized in rows visually):

  1. Connecting to the server

    When we START, we make sure we connect if we are not. We simply ask the Photon system ( in the state "Are we connected?") and explicitly requests a connection if we are not ( stats "connect"). We created for this occasion a NO event. It is very important that the States and Events we create are as clear as possible. If a state is labelled as a question, we intuitively wait for a YES NO or TRUE FALSE set of transition. This kind of practice makes Fsm Clear and understandable.

  2. Reloading when entering a room

    The scene is set up in such a way that when there is a change in the connection status and player status, we simply reload the scene, it is a very important assumption that other Fsm relies on to work properly. In our case, this Fsm is responsible for reloading when the user creates or joins a room, in which case we reload ( as a result, when the scene starts again, the application will be in a room, and spawn the player, display the chat system if the player is not alone, etc etc).

    So, We watch for the PHOTON / JOINED ROOM and PHOTON / CREATED ROOM built in events and enter the "Wait for room" state. There is a latency between receiving these events and the player actually being in a room, creating and joining a room is not actually "being" in a room. So we wait for the signal, by watching the room property of the Photon system, and created for the occasion an "IN ROOM" event we plug to the "Is in the Room Event" of the action "Photon Network Get Room Properties". We we indeed are in a room, we transit to the state "we are in, reload!" and simply reload the scene. 

    You'll notice, and this is very important, that we also turn off the message queuing, If we don't, the photon server will stack messages for when we turn it on again, this is not what we want, we only need to receive messages from the photon server when we are all setup ( as we reload the scene, all Fsm will set everything properly to actually be ready), turning back On message queuing is done in the Photon DemoWorker Game Manager Fsmgame manager Fsm

  3. Inform about the connection status

    The last function of this Fsm, is to simply display the connection status of the Photon system when we are not connected. This is essentially the mechanism to inform the user that the system is doing something. There is three built in events for this purpose, PHOTON / STATE : CONNECTINGPHOTON / STATE : DISCONNECTED , PHOTON / STATE : CONNECTED For each of these events, we have a related state, where we either show a label, for example "connecting", "not connected", and when we are indeed connected, we show nothing, because the interface and other features of the application will make it obvious that we are connected. 

Photon Actions used:

Photon Events used


Last modified on 5/28/2012 4:21 AM by User.

  • RSS Feed