Пример #1
0
    protected void finishInitialization()
    {
        lock (blocks)
        {
            if (!terrainReady)
            {
                return;
            }
            if (loaded)
            {
                return;
            }
            int           x, y, z;
            bool          isServer = ServerNetworkManager.isServer();
            List <Liquid> liquids  = new List <Liquid>();
            for (x = 0; x < size; x++)
            {
                for (y = 0; y < size; y++)
                {
                    if (blocksModified == null || blocksModified[x, y] == null)
                    {
                        for (z = 0; z < size; z++)
                        {
                            blocks[x, y, z] = BlockFactory.create(new Coordinates(x + size * this.x, y + size * this.y, z + size * this.z), isServer, liquids);
                        }
                    }
                    else if (blocksModified[x, y] != null)
                    {
                        for (z = 0; z < size; z++)
                        {
                            if (!blocksModified[x, y][z])
                            {
                                blocks[x, y, z] = BlockFactory.create(new Coordinates(x + size * this.x, y + size * this.y, z + size * this.z), isServer, liquids);
                            }
                        }
                    }
                }
            }

            foreach (Liquid liquid in liquids)
            {
                if (!fluids.ContainsKey(liquid.getPrefab()))
                {
                    fluids.Add(liquid.getPrefab(), null);
                    MainThread.runAction(() => fluids[liquid.getPrefab()] = GameObject.Instantiate(liquid.getPrefab(), empty.transform).gameObject);
                }
            }

            //Debug.Log("Loaded Chunk at " + coords);
            foreach (KeyValuePair <Position, Block> pair in setBlockQueue)
            {
                setBlock(pair.Key, pair.Value, false);
            }
            recalculateFaceConnections();
            MainThread.instantiateChunk(this);
            loaded = true;
            World.registerChunk(getCoordinates(), this);
            //Profiler.EndSample();
        }
    }
Пример #2
0
        /// <summary>
        /// Create socket instance and listen to connections
        /// </summary>
        public static void StartListening()
        {
            try
            {
                Clients = new List <ConnectedObject>();

                ServerSocket = ServerNetworkManager.StartListening();
                Console.WriteLine($"Server running..");

                while (true)
                {
                    resetEvent.Reset();

                    // Start an asynchronous socket to listen for connections
                    ServerSocket.BeginAccept(new AsyncCallback(HandleClientConnect), ServerSocket);

                    // Wait until connection is made.
                    resetEvent.WaitOne();
                }
            }
            catch (Exception ex)
            {
                Log.Error(ex.Message);
                Console.WriteLine("Ooops, Somthing Wrong..");
            }
        }
Пример #3
0
    public IEnumerator TestLoadScene_NetworkManager_NonNullObjectExpected()
    {
        SceneManager.LoadScene("MainMenuScene");
        yield return(new WaitForSeconds(3));

        MainMenuSceneInit initializer = GameObject.Find("Initializer").GetComponent <MainMenuSceneInit>();

        initializer.ChangeScene("NewGameMapScene");
        yield return(new WaitForSeconds(3));

        GameApp gameApp = GameObject.Find("GameApp").GetComponent <GameApp>();

        gameApp.PersistAllParameters(SceneManager.GetActiveScene().name);
        gameApp.Parameters.Remove("ServerAddress");
        gameApp.Parameters.Remove("ServerPort");
        gameApp.Parameters.Add("ServerAddress", "127.0.0.1");
        gameApp.Parameters.Add("ServerPort", "9994");
        LevelLoader levelLoader = GameObject.Find("LevelLoader").GetComponent <LevelLoader>();

        levelLoader.LoadLevel("NewGameScene");
        yield return(new WaitForSeconds(3));

        NewGameSceneInit newGameSceneInit = GameObject.Find("Initializer").GetComponent <NewGameSceneInit>();

        newGameSceneInit.AddPlayer();
        newGameSceneInit.AddPlayer();
        ServerNetworkManager serverNetworkManager = GameObject.Find("ServerNetworkManager").GetComponent <ServerNetworkManager>();

        Assert.IsNotNull(serverNetworkManager);
    }
Пример #4
0
    /*
     *  Get players' data from the menu input fields and pass to the gameApp
     *  So the data can be read by gameController afterwards
     */
    public void Create()
    {
        List <GameApp.PlayerMenu> playerMenuList = new List <GameApp.PlayerMenu>();

        foreach (GameObject player in playersToAddToGame)
        {
            string tempType;
            if (player.transform.Find("PlayerTypeInput").GetComponent <Toggle>().isOn)
            {
                tempType = "L";
            }
            else
            {
                tempType = "R";
            }
            playerMenuList.Add(new GameApp.PlayerMenu {
                name       = player.transform.Find("PlayerNameInput").GetComponent <InputField>().text,
                password   = player.transform.Find("PlayerPassInput").GetComponent <InputField>().text,
                race       = "human",
                playerType = tempType,
            });
        }

        Debug.Log("NewGameSceneInit create, players: " + playerMenuList.Count);
        gameApp.SavePlayersFromMenu(playerMenuList);
        ServerNetworkManager serverNetworkManager = GameObject.Find("ServerNetworkManager").GetComponent <ServerNetworkManager>();

        serverNetworkManager.SetupNewGame();
    }
Пример #5
0
    public IEnumerator TestYear_Next2Turns_2401Expected()
    {
        SceneManager.LoadScene("MainMenuScene");
        yield return(new WaitForSeconds(3));

        MainMenuSceneInit initializer = GameObject.Find("Initializer").GetComponent <MainMenuSceneInit>();

        initializer.ChangeScene("NewGameMapScene");
        yield return(new WaitForSeconds(3));

        GameApp gameApp = GameObject.Find("GameApp").GetComponent <GameApp>();

        gameApp.PersistAllParameters(SceneManager.GetActiveScene().name);
        gameApp.Parameters.Remove("ServerAddress");
        gameApp.Parameters.Remove("ServerPort");
        gameApp.Parameters.Add("ServerAddress", "127.0.0.1");
        gameApp.Parameters.Add("ServerPort", "9981");
        LevelLoader levelLoader = GameObject.Find("LevelLoader").GetComponent <LevelLoader>();

        levelLoader.LoadLevel("NewGameScene");
        yield return(new WaitForSeconds(3));

        NewGameSceneInit newGameSceneInit = GameObject.Find("Initializer").GetComponent <NewGameSceneInit>();

        newGameSceneInit.AddPlayer();
        newGameSceneInit.AddPlayer();
        List <GameApp.PlayerMenu> playerMenuList = new List <GameApp.PlayerMenu>();

        GameApp.PlayerMenu player1 = new GameApp.PlayerMenu
        {
            name       = "player1",
            password   = "******",
            race       = "human",
            playerType = "L"
        };
        GameApp.PlayerMenu player2 = new GameApp.PlayerMenu
        {
            name       = "player12",
            password   = "******",
            race       = "human",
            playerType = "L"
        };
        playerMenuList.Add(player1);
        playerMenuList.Add(player2);
        gameApp.SavePlayersFromMenu(playerMenuList);
        ServerNetworkManager serverNetworkManager = GameObject.Find("ServerNetworkManager").GetComponent <ServerNetworkManager>();

        serverNetworkManager.SetupNewGame();
        yield return(new WaitForSeconds(3));

        GameController gameController = GameObject.Find("GameController").GetComponent <GameController>();

        gameController.NextTurn();
        yield return(new WaitForSeconds(3));

        gameController.NextTurn();
        yield return(new WaitForSeconds(3));

        Assert.AreEqual(gameController.year, 2401);
    }
Пример #6
0
        private void SetupChatHandlers()
        {
            try
            {
                if (m_chatHandlerSetup == true)
                {
                    return;
                }

                var netManager = ServerNetworkManager.GetNetworkManager();
                if (netManager == null)
                {
                    return;
                }

                Action <ulong, string, ChatEntryTypeEnum> chatHook = ReceiveChatMessage;
                ServerNetworkManager.Instance.RegisterChatReceiver(chatHook);

                m_chatHandlerSetup = true;
            }
            catch (Exception ex)
            {
                LogManager.ErrorLog.WriteLine(ex);
            }
        }
Пример #7
0
    void Start()
    {
        rayCast      = GameObject.Find("PointerController").GetComponent <RayCast>();
        inputManager = GameObject.Find("InputManager").GetComponent <InputManager>();
        modHandler   = GameObject.Find("ModHandler").GetComponent <ModHandler>();

        networkManager = GameObject.Find("NetworkManager").GetComponent <ServerNetworkManager>();
    }
Пример #8
0
    void Start()
    {
        Application.targetFrameRate = 60;
        Application.runInBackground = true;

        clientDataManager = new ServerClientDataManager();
        networkManager    = new ServerNetworkManager(clientDataManager);
    }
    public void InformAllClientAboutCharacterDisconnect(ServerNetworkManager servNetworkManager, int connectionId)
    {
        DisconnectMessage m = new DisconnectMessage(connectionId);

        foreach (Character player in allCharacters)
        {
            servNetworkManager.SendNetworkReliableMessage(m, player.ClientId);
        }
    }
Пример #10
0
        public void start()
        {
            Logger.open();
            loadConfigFiles();
            initializeDatabase();
            Terminal.start();

            addr = new Address("localhost");
            ServerNetworkManager.openSocket(addr);
        }
    public void HandlePlayerMessagesData(ServerNetworkManager servNetworkManager, Message message)
    {
        switch (message.GetNetworkMessageType())
        {
        case NetworkMessageType.Input:

            HandlePlayerInput(servNetworkManager, message as InputMessage);
            break;
        }
    }
Пример #12
0
 public void generate()
 {
     if (!ServerNetworkManager.isServer())
     {
         ClientNetworkManager.requestChunk(getCoordinates());
     }
     else
     {
         ChunkManager.RequestChunkLoad(this);
     }
 }
Пример #13
0
    protected void setBlock(Position p, Block b, bool recalculateConnections)
    {
        Debug.Log("set " + p + " to " + b + " from " + p.getBlock() + " in " + this);
        if (!loaded)
        {
            setBlockQueue.Enqueue(new KeyValuePair <Position, Block>(p, b));
            return;
        }


        lock (blocks)
        {
            if (b.getMeshID() >= 0 && b.isTransparent())
            {
                liquid = b as Liquid;
                if (liquid != null && !fluids.ContainsKey(liquid.getPrefab()))
                {
                    fluids.Add(liquid.getPrefab(), null);
                    MainThread.runAction(() => fluids[liquid.getPrefab()] = GameObject.Instantiate(liquid.getPrefab(), empty.transform).gameObject);
                }
            }
            //Debug.Log("Updating block at " + p.getRelativeCoords() + " (" + p + ")");
            ServerNetworkManager.updateBlock(p, b);
            if (blocksModified == null)
            {
                blocksModified = new BitArray[size, size];
            }
            if (blocksModified[p.getRelativeX(), p.getRelativeY()] == null)
            {
                blocksModified[p.getRelativeX(), p.getRelativeY()] = new BitArray(size);
            }
            blocksModified[p.getRelativeX(), p.getRelativeY()][p.getRelativeZ()] = true;
            untouchedChunk              = false;
            modifiedSinceSave           = true;
            fluidMeshRebuildingNeeded   = fluidMeshRebuildingNeeded || blocks[p.getRelativeX(), p.getRelativeY(), p.getRelativeZ()] is Liquid;
            terrainMeshRebuildingNeeded = terrainMeshRebuildingNeeded || blocks[p.getRelativeX(), p.getRelativeY(), p.getRelativeZ()] is Solid;
            lock (blockChangeListeners)
            {
                blockChangeListeners.Remove(blocks[p.getRelativeX(), p.getRelativeY(), p.getRelativeZ()]);
            }
            blocks[p.getRelativeX(), p.getRelativeY(), p.getRelativeZ()] = b;
            blockUpdated(b, true);

            faceRecalculationNeeded = true;
            if (recalculateConnections)
            {
                BackgroundThread.runAction(() => recalculateFaceConnections());
            }

            Debug.Log("now " + p.getBlock() + " | " + b);
        }
    }
Пример #14
0
        public GatewayServer(string appId, int clientListeningPort, string broadcastRange, int listeningPort, string serverId, ServerType type)
        {
            GatewayServerConfig config = new GatewayServerConfig();
            config.AppId = appId;
            config.BroadcastRange = broadcastRange;
            config.ClientListeningPort = clientListeningPort;
            config.ListeningPort = listeningPort;
            config.Serializer = ObjectFactory.CreateISerializeInstance();
            config.ServerId = serverId;
            config.ServerType = type;

            NetworkManager = new GatewayNetworkManager2(config);
        }
Пример #15
0
    void Start()
    {
        rayCast          = GameObject.Find("PointerController").GetComponent <RayCast>();
        inputManager     = GameObject.Find("InputManager").GetComponent <InputManager>();
        modHandler       = GameObject.Find("ModHandler").GetComponent <ModHandler>();
        movableUIHandler = movableUI.GetComponent <MovableUIHandler>();

        networkManager    = GameObject.Find("NetworkManager").GetComponent <ServerNetworkManager>();
        pointerController = GameObject.Find("PointerController");

        isOnDrag = isClicked = false;
        canClick = true;
    }
Пример #16
0
        private void InitForClient()
        {
            serverForClient = new ServerNetworkManager();
            var server = new Plugins.Network.WebSocketServer();

            server.Setup("0.0.0.0", 8730);
            var serializer = new Plugins.ProtoSerializer();

            serializer.getTypeFunc = (name) => { return(Type.GetType(name)); };
            serializer.LoadProtoNum(typeof(Message.ProtoNum));
            serverForClient.Init(server, serializer);
            Debug.LogInfo("初始化网络监听(客户端) [{0}]", server.address);
        }
Пример #17
0
        private void InitForClient()
        {
            forClient = new ServerNetworkManager();
            var listener = new Plugins.Network.WebSocketServer();

            listener.Setup("0.0.0.0", NetConfig.LISTENER_PORT);
            var serializer = new Plugins.ProtoSerializer();

            serializer.getTypeFunc = (name) => { return(Type.GetType(name)); };
            serializer.LoadProtoNum(typeof(Message.ProtoNum));
            forClient.Init(listener, serializer);
            Debug.LogInfo("初始化网络监听(客户端) [{0}]".FormatStr(listener.address));
        }
Пример #18
0
 void hostGame()
 {
     if (ServerNetworkManager.hostGame())
     {
         transform.Find("MenuPanel").gameObject.SetActive(false);
         transform.Find("LoginPanel").gameObject.SetActive(true);
     }
     else
     {
         transform.Find("PopupPanel").gameObject.SetActive(true);
         GameObject.Find("textPopup").GetComponent <Text>().text = "Error creating server";
     }
 }
Пример #19
0
        private static void getInput()
        {
            while (Server.instance.isRunning)
            {
                string command = Console.ReadLine();
                switch (command)
                {
                case "stop":
                    Logger.log("[Server]: Vypínání");
                    Server.instance.isRunning = false;
                    ServerNetworkManager.closeConnection();
                    Database.close();
                    Logger.close();
                    break;

                case "help":
                    Console.WriteLine("books - ukáže jména všech knih");
                    Console.WriteLine("users - ukáže jména a e-maily čtenářů");
                    Console.WriteLine("admins - ukáže jména a e-maily administrátorů");
                    Console.WriteLine("stop - vypne server");
                    Console.WriteLine("help - úkáže pomoc");
                    break;

                case "books":
                    foreach (Book b in Database.getBooks("", 0))
                    {
                        Console.WriteLine(b.name + " - " + b.author + " - " + b.ISBN);
                    }
                    break;

                case "users":
                    foreach (Reader r in Database.getReaders("", 0, false))
                    {
                        Console.WriteLine(r.name + " - " + r.email + " ID: " + r.ID);
                    }
                    break;

                case "admins":
                    foreach (Reader r in Database.getReaders("", 0, true))
                    {
                        Console.WriteLine(r.name + " - " + r.email + " ID: " + r.ID);
                    }
                    break;

                default:
                    Console.WriteLine("Neznámý příkaz, použijte 'help' pro více informací");
                    break;
                }
                Thread.Sleep(1);
            }
        }
Пример #20
0
    //server updates a block to client
    private static void updateBlock(Field message)
    {
        if (ServerNetworkManager.isServer())
        {
            return;
        }
        Position pos   = message.getField("pos").getCoordinates();
        Block    block = ChunkSerializer.deserializeBlock(message.getField("block").getBytes(), false);

        if (pos.getChunk() != null)
        {
            MainThread.runAction(() => pos.getChunk().setBlock(pos, block));
        }
    }
Пример #21
0
        public static void SendDataMessage(ulong steamId, long msgId, byte[] data)
        {
            string msgIdString = msgId.ToString( );

            byte[] newData = new byte[data.Length + msgIdString.Length + 1];
            newData[0] = (byte)msgIdString.Length;
            for (int r = 0; r < msgIdString.Length; r++)
            {
                newData[r + 1] = (byte)msgIdString[r];
            }

            Buffer.BlockCopy(data, 0, newData, msgIdString.Length + 1, data.Length);

            ServerNetworkManager.SendDataMessage(9000, newData, steamId);
        }
Пример #22
0
 public void deserialize(byte[] data, int length)
 {
     if (blocks == null)
     {
         blocks = new Block[size, size, size];
     }
     lock (blocks)
     {
         //Profiler.BeginSample("Loading chunks");
         blocksModified = ChunkSerializer.deserializeBlocks(blocks, data, length, ServerNetworkManager.isServer());
         deserialized   = true;
         untouchedChunk = length == 0;
         finishInitialization();
     }
 }
Пример #23
0
    void Start()
    {
        serverNetworkManager = ServerNetworkManager.Instance;
        serverGameManager    = ServerGameManager.Instance;

        Entity.OnDeath         += HandleEntityDeath;
        Entity.OnDespawn       += HandleEntityDespawn;
        PlayerEvent.OnEventEnd += HandlePlayerEventEnd;

        //register any entities already existing in the scene (for dev/testing convenience)
        foreach (Entity entity in FindObjectsOfType <Entity>())
        {
            RegisterEntity(entity);
        }
    }
Пример #24
0
    protected void Start()
    {
        serverNetworkManager = ServerNetworkManager.Instance;

        GameState = new GameState(pointsToWin);

        CapturePoints = FindObjectsOfType <CapturePoint>().ToList();

        TeamSpawns = new Dictionary <ushort, TeamSpawn>();
        foreach (TeamSpawn teamSpawn in FindObjectsOfType <TeamSpawn>())
        {
            TeamSpawns.Add(teamSpawn.teamId, teamSpawn);
            GameState.teams.Add(teamSpawn.teamId, new Team(teamSpawn.teamId, teamSpawn.teamName, teamSpawn.teamColor));
        }
    }
Пример #25
0
        void Start()
        {
            m_ServerNetworkManager = new ServerNetworkManager(new ServerConfig());

            m_ServerNetworkManager.ConnectedEvent    += Server_OnClientConnected;
            m_ServerNetworkManager.DisconnectedEvent += Server_OnClientDisconnected;
            m_ServerNetworkManager.RegisterHandler(TestMessage.MsgCode, ServerManager_TestMessage);

            m_ClientNetworkManager = new ClientNetworkManager(new ClientConfig());
            m_ClientNetworkManager.ConnectingEvent       += ClientManager_Connecting;
            m_ClientNetworkManager.ConnectingFailedEvent += ClientManager_ConnectingFailed;
            m_ClientNetworkManager.ConnectedEvent        += ClientManager_Connected;
            m_ClientNetworkManager.DisconnectedEvent     += ClientManager_Diconnected;
            m_ClientNetworkManager.RegisterHandler(TestMessage.MsgCode, ClientManager_TestMessage);

            Simulation();
        }
Пример #26
0
        private void StartServer()
        {
            GameObject managerObj = GameObject.FindGameObjectWithTag("NetworkManager");

            if (managerObj == null)
            {
                managerObj     = new GameObject("NetworkManager");
                managerObj.tag = "NetworkManager";
            }

            networkManager = managerObj.AddComponent <ServerNetworkManager>();

            mainMenu.DisableScreen();
            waitScreen.Enable("Waiting for Master Server");
            networkManager.OnServerReady += () => { waitScreen.Disable(); serverLobby.Enable(); };

            networkManager.StartServer(serverName.text, serverDescription.text);
        }
Пример #27
0
        public static void SendDataMessage(ulong steamId, DataMessageType messageType, byte[] data)
        {
            //this may be unsafe, but whatever, my sanity requires the enum
            long msgId = (long)messageType;

            string msgIdString = msgId.ToString( );

            byte[] newData = new byte[data.Length + msgIdString.Length + 1];
            newData[0] = (byte)msgIdString.Length;
            for (int r = 0; r < msgIdString.Length; r++)
            {
                newData[r + 1] = (byte)msgIdString[r];
            }

            Buffer.BlockCopy(data, 0, newData, msgIdString.Length + 1, data.Length);

            ServerNetworkManager.SendDataMessage(9000, newData, steamId);
        }
        public ServerEngineConsole()
        {
            // Set console title
            Console.Title = "Server";


            // Initialize network
            ServerNetworkManager = new ServerNetworkManager(this);


            // Subscribe to network events //
            ServerNetworkManager.onPlayerConnected    += ServerNetworkManager_OnPlayerConnected;
            ServerNetworkManager.onPlayerDisconnected += ServerNetworkManager_OnPlayerDisconnected;
            ServerNetworkManager.onPlayerMove         += ServerNetworkManager_OnPlayerMove;
            ServerNetworkManager.onPlayerAttack       += ServerNetworkManager_OnPlayerAttack;

            ServerNetworkManager.Load();
        }
Пример #29
0
    public void logout()
    {
        connection.Close();
        tcpClient.Close();
        Account _oldAcc = acc;

        acc = null;
        if (ServerNetworkManager.isServer())
        {
            lock (ServerNetworkManager.clients)
            {
                ServerNetworkManager.clients.Remove(this);
                foreach (Client c in ServerNetworkManager.clients)
                {
                    c.userLoggedOut(_oldAcc);
                }
            }
        }
    }
Пример #30
0
 void OnApplicationQuit()
 {
     lock (chunks)
     {
         shutdown();
         if (ServerNetworkManager.isServer())
         {
             Account.saveAccounts();
             ServerNetworkManager.shutdown();
         }
         ClientNetworkManager.shutdown();
         BlockThread.shutdown();
         BackgroundThread.shutdown();
         foreach (Chunk c in chunks.Values)
         {
             c.unload();
         }
         ChunkManager.shutdown();
     }
 }
Пример #31
0
    void Awake()
    {
        if (instance == null)
        {
            connections      = new Dictionary <string, NetworkConnection>();
            connectionsIsNew = new HashSet <NetworkConnection>();

            levelLoader    = GameObject.Find("LevelLoader").GetComponent <LevelLoader>();
            gameApp        = GameObject.Find("GameApp").GetComponent <GameApp>();
            errorInfoPanel = GameObject.Find("ErrorInfoCanvas").GetComponent <ErrorInfoPanel>();

            DontDestroyOnLoad(this.gameObject);
            instance = this;
            Debug.Log("Awake: " + this.gameObject);
        }
        else if (instance != this)
        {
            Destroy(gameObject);
        }
    }
Пример #32
0
        public GameServer(string appId, int listeningPort, string broadcastRange, string serverId, ServerType type)
        {
            ServerId = serverId;

            m_gtcTables = new GameTableCollection();
            Random rng = new Random((int)DateTime.Now.Ticks + DateTime.Now.Month + DateTime.Now.Day);

            for (int i = 0; i < 50; i++)
            {
                int smallBlind = rng.Next(10, 500);
                m_gtcTables.Add(ObjectFactory.CreateIGameTableTableInstance(smallBlind, smallBlind * 2, 9, Guid.NewGuid().ToString(), "Texas Holdem Table " + i, ServerId));
            }

            GameServerConfig config = new GameServerConfig();
            config.AppId = appId;
            config.BroadcastRange = broadcastRange;
            config.ListeningPort = listeningPort;
            config.Serializer = ObjectFactory.CreateISerializeInstance();
            config.ServerId = serverId;
            config.ServerType = type;
            config.Tables = m_gtcTables;

            m_nmNetworkManager = new GameNetworkManager2(config);
        }
	public virtual void Awake() {
		networkManager = (ServerNetworkManager) GameObject.FindGameObjectWithTag("NetworkManager").GetComponent<ServerNetworkManager>();
	}
 public ReceiveServerReferenceHandler(ServerNetworkManager manager, ServerMessageType target)
     : base(manager, target)
 {
 }
 public ServerReferenceRequestHandler(ServerNetworkManager manager, ServerMessageType target)
     : base(manager, target)
 {
 }