public static MmApplication GetMm(ushort mmPort, ushort gamePort, GameApplication gameApplication, int maximumPlayers = 2, int mmTime = 10000, int ddosConnectionsLevel = 300, int ddosConnectionCheckInterval = 5000) { var socketFactory = new LiteNetSockFactory(); var serializer = new BinarySerializer(); var serverLogger = new ConsoleLogger("M ", LogLevel.Error | LogLevel.Info | LogLevel.Debug); var config = new ApplicationConfig { PublicDomainNameOrAddress = "127.0.0.1", ListenPorts = new List <ushort> { mmPort }, BindToPortHttp = 7002, MaxPacketSize = 300, BasePacketBufferSize = 64, SendTickTimeMs = 20, SocketTickTimeMs = 10, SocketType = SocketType.BareSocket, ReceiveTickTimeMs = 20, IsConnectionDdosProtectionOn = false }; var roomPropertiesProvider = new FakeRoomPropertiesProvider3(250, maximumPlayers, mmTime); var taskSchedulerFactory = new TaskSchedulerFactory(serverLogger); var requestSender = new FakeSenderWithGameApplication(gameApplication, new Dictionary <byte, object> { { PropertyCode.RoomProperties.GameMode, (byte)GameMode.SinglePlayer } }, CreateRoomDelegate, UpdateRoomDelegate); var _mmPacketSender = new PacketBatchSender(taskSchedulerFactory, config, serverLogger); var _playerManager = new PlayersManager(Mock.Of <IMmMetrics>(), serverLogger); //_serverProvider = new MatchMakerServerInfoProvider(requestSender, taskSchedulerFactory, config, _serverLogger, _statsProvider); var _serverProvider = new FakeMatchMakerServerInfoProvider(requestSender, "127.0.0.1", $"{gamePort}"); var roomApiProvider = new DefaultRoomApiProvider(requestSender, serverLogger); var _mmRoomManager = new MM.Managers.RoomManager(_serverProvider, serverLogger, taskSchedulerFactory, roomApiProvider); var sender = GetSHamanMessageSender(serializer, _mmPacketSender, config, serverLogger); var _mmGroupManager = new MatchMakingGroupManager(serverLogger, taskSchedulerFactory, _playerManager, sender, Mock.Of <IMmMetrics>(), _mmRoomManager, roomPropertiesProvider, config); var matchMaker = new MatchMaker(_playerManager, _mmGroupManager); // // var _measures = new Dictionary<byte, object>(); // _measures.Add(FakePropertyCodes.PlayerProperties.Level, 1); // matchMaker.AddMatchMakingGroup(_measures); matchMaker.AddRequiredProperty(FakePropertyCodes.PlayerProperties.Level); var senderFactory = new ShamanMessageSenderFactory(serializer, config); var protectionManagerConfig = new ConnectionDdosProtectionConfig(ddosConnectionsLevel, ddosConnectionCheckInterval, 5000, 60000); var connectionDdosProtection = new ConnectDdosProtection(protectionManagerConfig, taskSchedulerFactory, serverLogger); var protectionManager = new ProtectionManager(connectionDdosProtection, protectionManagerConfig, serverLogger); //setup mm server return(new MmApplication(serverLogger, config, serializer, socketFactory, matchMaker, requestSender, taskSchedulerFactory, _mmPacketSender, senderFactory, _serverProvider, _mmRoomManager, _mmGroupManager, _playerManager, Mock.Of <IMmMetrics>(), protectionManager)); }
public static GameApplication GetGame(List <ushort> gamePorts, bool isAuthOn = false) { var _roomControllerFactory = new FakeRoomControllerFactory(); var serverLogger = new ConsoleLogger("G ", LogLevel.Error | LogLevel.Info | LogLevel.Debug); var socketFactory = new LiteNetSockFactory(); var serializer = new BinarySerializer(); var taskSchedulerFactory = new TaskSchedulerFactory(serverLogger); var protectionManagerConfig = new ConnectionDdosProtectionConfig(300, 5000, 5000, 60000); var connectionDdosProtection = new ConnectDdosProtection(protectionManagerConfig, taskSchedulerFactory, serverLogger); var protectionManager = new ProtectionManager(connectionDdosProtection, protectionManagerConfig, serverLogger); var config = new ApplicationConfig { PublicDomainNameOrAddress = "127.0.0.1", ListenPorts = gamePorts, BindToPortHttp = 7000, MaxPacketSize = 300, BasePacketBufferSize = 64, SendTickTimeMs = 20, SocketTickTimeMs = 10, SocketType = SocketType.BareSocket, ReceiveTickTimeMs = 20, IsAuthOn = isAuthOn, IsConnectionDdosProtectionOn = false }; var requestSender = new FakeSenderWithGameApplication(null, new Dictionary <byte, object> { { PropertyCode.RoomProperties.GameMode, (byte)GameMode.SinglePlayer } }, CreateRoomDelegate, UpdateRoomDelegate); var gamePacketSender = new PacketBatchSender(taskSchedulerFactory, config, serverLogger); var gameSenderFactory = new ShamanMessageSenderFactory(serializer, config); var _roomManager = new Game.Rooms.RoomManager(serverLogger, serializer, config, taskSchedulerFactory, _roomControllerFactory, gamePacketSender, gameSenderFactory, Mock.Of <IGameMetrics>(), new RoomStateUpdaterStub()); //setup game server return(new GameApplication( serverLogger, config, serializer, socketFactory, taskSchedulerFactory, requestSender, _roomManager, gamePacketSender, Mock.Of <IGameMetrics>(), gameSenderFactory, protectionManager)); }