/// <summary> /// The main entry point for the application. /// </summary> private static void Main() { if (!Environment.UserInteractive) { throw new NotImplementedException(); #pragma warning disable 162 ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { }; ServiceBase.Run(ServicesToRun); return; #pragma warning restore 162 } var config = new ServerSettings(); var logger = new ConsoleLogger("console", (m, l) => l >= LogLevel.Information, true); var supervisor = new EmptySupervisor(); var serv = new EvadersServer(new DefaultProviderFactory <IServerSupervisor>(item => supervisor), new DefaultProviderFactory <GameSettings>(item => GameSettings.Default), new DefaultProviderFactory <IMatchmaking>(item => new Matchmaking("Default", config.MaxTimeInQueueSec, logger)), logger, config); serv.Start(); var wait = new SpinWait(); while (true) { serv.Update(); wait.SpinOnce(); } }
/// <inheritdoc /> public void Start() { if (_disposed) { throw new ObjectDisposedException(nameof(DefaultGameServer)); } if (_running) { throw new InvalidOperationException("The server is already running."); } _running = true; _logger.LogInformation("Starting game server ..."); _cancellation = new CancellationTokenSource(); _server = new EvadersServer(_serverSupervisorFactory.Create(_settings.SupervisorProviderId), _matchmakingFactory.Create(_settings.MatchmakingProviderId), _loggerFactory.CreateLogger <EvadersServer>(), _serverConfigurationFactory.Create(_settings.ServerConfigurationProviderId)); _gameServerLoop = new Task(GameLoop, _cancellation.Token, _cancellation.Token, TaskCreationOptions.LongRunning); _gameServerLoop.Start(); }