void Start()
        {
            Serialisation.InitialiseDevelopmentSerialisation();

            View              = GetComponent <PhotonView>();
            ES                = GetComponent <EventSource>() ?? FindObjectOfType <EventSource>() ?? gameObject.AddComponent <EventSource>();
            EM                = GetComponent <EntityManager>() ?? FindObjectOfType <EntityManager>() ?? gameObject.AddComponent <EntityManager>();
            PUNConnecter      = GetComponent <PUNConnecter>() ?? FindObjectOfType <PUNConnecter>() ?? gameObject.AddComponent <PUNConnecter>();
            PUNESSynchroniser = GetComponent <PUNSynchroniser>() ?? FindObjectOfType <PUNSynchroniser>() ?? gameObject.AddComponent <PUNSynchroniser>();

            PlayerRegister = new PlayerRegistry(EM, 5);

            if (!PUNConnecter.ConnectOnStart)
            {
                PUNConnecter.StartPhoton();
            }

            PUNConnecter.RegisterGuaranteedConnectedCallback(() => {
                Assert.IsTrue(PhotonNetwork.inRoom);
                PUNESSynchroniser.SetupAndSynchronise(OnSynchronisedAndReady);
            });
        }