예제 #1
0
        /// <inheritdoc />
        public void Initialize(bool isServer)
        {
            if (_initialized)
            {
                throw new InvalidOperationException("NetManager has already been initialized.");
            }

            IsServer = isServer;

            _config.RegisterCVar("net.port", 1212, CVar.ARCHIVE);

            _config.RegisterCVar("net.sendbuffersize", 131071, CVar.ARCHIVE);
            _config.RegisterCVar("net.receivebuffersize", 131071, CVar.ARCHIVE);
            _config.RegisterCVar("net.verbose", false, CVar.ARCHIVE, NetVerboseChanged);

            if (!isServer)
            {
                _config.RegisterCVar("net.server", "127.0.0.1", CVar.ARCHIVE);
                _config.RegisterCVar("net.updaterate", 20, CVar.ARCHIVE);
                _config.RegisterCVar("net.cmdrate", 30, CVar.ARCHIVE);
                _config.RegisterCVar("net.rate", 10240, CVar.REPLICATED | CVar.ARCHIVE);
            }
            else
            {
                // That's comma-separated, btw.
                _config.RegisterCVar("net.bindto", "0.0.0.0,::", CVar.ARCHIVE);
                _config.RegisterCVar("net.dualstack", false, CVar.ARCHIVE);
            }

#if DEBUG
            _config.RegisterCVar("net.fakeloss", 0.0f, CVar.CHEAT, _fakeLossChanged);
            _config.RegisterCVar("net.fakelagmin", 0.0f, CVar.CHEAT, _fakeLagMinChanged);
            _config.RegisterCVar("net.fakelagrand", 0.0f, CVar.CHEAT, _fakeLagRandomChanged);
            _config.RegisterCVar("net.fakeduplicates", 0.0f, CVar.CHEAT, FakeDuplicatesChanged);
#endif

            _strings.Initialize(() =>
            {
                Logger.InfoS("net", "Message string table loaded.");
            }, UpdateNetMessageFunctions);
            _serializer.ClientHandshakeComplete += () =>
            {
                Logger.InfoS("net", "Client completed serializer handshake.");
                OnConnected(ServerChannel !);
            };

            _initialized = true;
        }
예제 #2
0
        /// <inheritdoc />
        public void Initialize(bool isServer)
        {
            if (_initialized)
            {
                throw new InvalidOperationException("NetManager has already been initialized.");
            }

            IsServer = isServer;

            _config.OnValueChanged(CVars.NetVerbose, NetVerboseChanged);
            if (isServer)
            {
                _config.OnValueChanged(CVars.AuthMode, i => Auth = (AuthMode)i, invokeImmediately: true);
            }
#if DEBUG
            _config.OnValueChanged(CVars.NetFakeLoss, _fakeLossChanged);
            _config.OnValueChanged(CVars.NetFakeLagMin, _fakeLagMinChanged);
            _config.OnValueChanged(CVars.NetFakeLagRand, _fakeLagRandomChanged);
            _config.OnValueChanged(CVars.NetFakeDuplicates, FakeDuplicatesChanged);
#endif

            _strings.Initialize(() => { Logger.InfoS("net", "Message string table loaded."); },
                                UpdateNetMessageFunctions);
            _serializer.ClientHandshakeComplete += () =>
            {
                Logger.InfoS("net", "Client completed serializer handshake.");
                OnConnected(ServerChannel !);
            };

            _initialized = true;

            if (IsServer)
            {
                SAGenerateRsaKeys();
            }
        }