Esempio n. 1
0
        public void Test()
        {
            var logger = new TestLogger();
            var config = new DefaultServerConfig();

            var playerConnections = new PlayerConnectionManager(logger, config.PlayerConnection);
            var udpTransport      = new ServerUdpPacketTransport(
                logger,
                config.NetworkTransport.PacketEncryptor,
                config.NetworkTransport,
                config.UdpServer);
            IPacketEncryptor packetEncryption = new XorPacketEncryptor();
            var channelManager = new OutgoingServerChannel(
                config.NetworkTransport,
                udpTransport,
                packetEncryption,
                logger);
            IGameWorldLoader gameWorldLoader = new GameWorldLoader();

            var gameWorld = new GameWorld(
                worldType: WorldType.New(),
                id: WorldInstanceId.New(),
                logger: logger,
                config: config,
                channelManager: channelManager,
                gameWorldLoader: gameWorldLoader);
        }
Esempio n. 2
0
        public void Test()
        {
            var logger      = new TestLogger();
            var connections = new PlayerConnectionManager(
                logger,
                new PlayerConnectionConfig
            {
                Capacity = new PlayerConnectionConfig.CapacityConfig
                {
                    InitialConnectionsCapacity = 1
                }
            });

            Assert.Equal(0, connections.Count);

            var worldId       = new WorldInstanceId(0);
            var encryptionKey = new byte[] { 0x1 };

            connections.Add(worldId, new PlayerId(0), encryptionKey);
            connections.Add(worldId, new PlayerId(1), encryptionKey);
            connections.Add(worldId, new PlayerId(2), encryptionKey);

            Assert.Equal(3, connections.Count);

            ref readonly var connection1 = ref connections.Get(new PlayerId(0));
Esempio n. 3
0
 public SimulationServerController(
     ILogger logger,
     PlayerConnectionManager playerConnections,
     GameWorlds worlds)
 {
     this._logger            = logger ?? throw new ArgumentNullException(nameof(logger));
     this._playerConnections = playerConnections ?? throw new ArgumentNullException(nameof(playerConnections));
     this._worlds            = worlds ?? throw new ArgumentNullException(nameof(worlds));
 }
Esempio n. 4
0
    // Start is called before the first frame update
    void Start()
    {
        if (Instance)
        {
            Destroy(Instance.gameObject);
        }

        Instance = this;
        DontDestroyOnLoad(gameObject);
    }
 public ControlPlaneServerController(
     ILogger logger,
     PlayerConnectionManager playerConnections,
     OutgoingServerChannel channelOutgoing,
     GameWorlds worlds)
 {
     this._logger            = logger ?? throw new ArgumentNullException(nameof(logger));
     this._playerConnections = playerConnections ?? throw new ArgumentNullException(nameof(playerConnections));
     this._channelOutgoing   = channelOutgoing ?? throw new ArgumentNullException(nameof(channelOutgoing));
     this._worlds            = worlds ?? throw new ArgumentNullException(nameof(worlds));
 }
Esempio n. 6
0
        public GameServer(
            IServerConfig serverConfig,
            ILogger logger)
        {
            this._serverConfig = serverConfig ?? throw new ArgumentNullException(nameof(serverConfig));
            this._logger       = logger ?? throw new ArgumentNullException(nameof(logger));

            this.Commander = new GameServerCommander(this);

            this._udpTransport = new ServerUdpPacketTransport(
                this._logger,
                serverConfig.NetworkTransport.PacketEncryptor,
                serverConfig.NetworkTransport,
                serverConfig.UdpServer);
            this._outgoingChannel = new OutgoingServerChannel(
                serverConfig.NetworkTransport,
                this._udpTransport,
                serverConfig.NetworkTransport.PacketEncryptor,
                this._logger);

            this._playerConnectionManager = new PlayerConnectionManager(
                this._logger,
                this._serverConfig.PlayerConnection);

            this._gameWorlds = new GameWorlds(
                this._logger,
                this._serverConfig,
                this._outgoingChannel,
                serverConfig.Server.WorldsCapacity);

            this._incomingChannel = new IncomingServerChannel(
                this._udpTransport,
                serverConfig.NetworkTransport.PacketEncryptor,
                new ControlPlaneServerController(
                    this._logger,
                    this._playerConnectionManager,
                    this._outgoingChannel,
                    this._gameWorlds),
                new SimulationServerController(
                    this._logger,
                    this._playerConnectionManager,
                    this._gameWorlds),
                this._logger);

            this._worldLoader = new GameWorldLoader();
        }