diff --git a/src/core/configuration/Config.ts b/src/core/configuration/Config.ts index e28152b82..e2c8ed4c2 100644 --- a/src/core/configuration/Config.ts +++ b/src/core/configuration/Config.ts @@ -89,7 +89,7 @@ function getServerConfig(gameEnv: string) { export interface ServerConfig { turnIntervalMs(): number; - gameCreationRate(highTraffic: boolean): number; + gameCreationRate(): number; lobbyMaxPlayers(map: GameMapType): number; discordRedirectURI(): string; numWorkers(): number; diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index 41ddf9121..10b950956 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -48,12 +48,8 @@ export abstract class DefaultServerConfig implements ServerConfig { turnIntervalMs(): number { return 100; } - gameCreationRate(highTraffic: boolean): number { - if (highTraffic) { - return 20 * 1000; - } else { - return 50 * 1000; - } + gameCreationRate(): number { + return 60 * 1000; } lobbyMaxPlayers(map: GameMapType): number { if (map == GameMapType.World) { diff --git a/src/core/configuration/DevConfig.ts b/src/core/configuration/DevConfig.ts index af460461f..5750fdc90 100644 --- a/src/core/configuration/DevConfig.ts +++ b/src/core/configuration/DevConfig.ts @@ -16,7 +16,7 @@ export class DevServerConfig extends DefaultServerConfig { return GameEnv.Dev; } - gameCreationRate(highTraffic: boolean): number { + gameCreationRate(): number { return 5 * 1000; } diff --git a/src/server/GameManager.ts b/src/server/GameManager.ts index 808be7af5..0029396a3 100644 --- a/src/server/GameManager.ts +++ b/src/server/GameManager.ts @@ -3,7 +3,6 @@ import { GameConfig, GameID } from "../core/Schemas"; import { Client } from "./Client"; import { GamePhase, GameServer } from "./GameServer"; import { Difficulty, GameMapType, GameType } from "../core/game/Game"; -import { isHighTrafficTime } from "./Util"; export class GameManager { private games: Map = new Map(); @@ -26,23 +25,17 @@ export class GameManager { } createGame(id: GameID, gameConfig: GameConfig | undefined) { - const game = new GameServer( - id, - Date.now(), - isHighTrafficTime(), - this.config, - { - gameMap: GameMapType.World, - gameType: GameType.Private, - difficulty: Difficulty.Medium, - disableNPCs: false, - infiniteGold: false, - infiniteTroops: false, - instantBuild: false, - bots: 400, - ...gameConfig, - }, - ); + const game = new GameServer(id, Date.now(), this.config, { + gameMap: GameMapType.World, + gameType: GameType.Private, + difficulty: Difficulty.Medium, + disableNPCs: false, + infiniteGold: false, + infiniteTroops: false, + instantBuild: false, + bots: 400, + ...gameConfig, + }); this.games.set(id, game); return game; } diff --git a/src/server/GameServer.ts b/src/server/GameServer.ts index 8590db46e..1712fce45 100644 --- a/src/server/GameServer.ts +++ b/src/server/GameServer.ts @@ -52,7 +52,6 @@ export class GameServer { constructor( public readonly id: string, public readonly createdAt: number, - public readonly highTraffic: boolean, private config: ServerConfig, public gameConfig: GameConfig, ) {} @@ -201,7 +200,7 @@ export class GameServer { return this._startTime; } else { //game hasn't started yet, only works for public games - return this.createdAt + this.config.gameCreationRate(this.highTraffic); + return this.createdAt + this.config.gameCreationRate(); } } @@ -381,8 +380,7 @@ export class GameServer { } const msSinceCreation = now - this.createdAt; - const lessThanLifetime = - msSinceCreation < this.config.gameCreationRate(this.highTraffic); + const lessThanLifetime = msSinceCreation < this.config.gameCreationRate(); const notEnoughPlayers = this.gameConfig.gameType == GameType.Public && this.gameConfig.maxPlayers && @@ -391,10 +389,7 @@ export class GameServer { return GamePhase.Lobby; } const warmupOver = - now > - this.createdAt + - this.config.gameCreationRate(this.highTraffic) + - 30 * 1000; + now > this.createdAt + this.config.gameCreationRate() + 30 * 1000; if (noActive && warmupOver && noRecentPings) { return GamePhase.Finished; } @@ -415,7 +410,7 @@ export class GameServer { })), gameConfig: this.gameConfig, msUntilStart: this.isPublic() - ? this.createdAt + this.config.gameCreationRate(this.highTraffic) + ? this.createdAt + this.config.gameCreationRate() : undefined, }; } diff --git a/src/server/Master.ts b/src/server/Master.ts index 0b0f4c6b3..d5062d389 100644 --- a/src/server/Master.ts +++ b/src/server/Master.ts @@ -12,7 +12,6 @@ import { GameConfig, GameInfo } from "../core/Schemas"; import path from "path"; import rateLimit from "express-rate-limit"; import { fileURLToPath } from "url"; -import { isHighTrafficTime } from "./Util"; import { gatekeeper, LimiterType } from "./Gatekeeper"; const config = getServerConfigFromServer(); diff --git a/src/server/Util.ts b/src/server/Util.ts deleted file mode 100644 index 72b180a34..000000000 --- a/src/server/Util.ts +++ /dev/null @@ -1,17 +0,0 @@ -export function isHighTrafficTime(): boolean { - // More traffic from 4am to 4pm - const now = new Date(); - - // Convert current time to PST (America/Los_Angeles timezone) - // Using a more compatible approach - const formatter = new Intl.DateTimeFormat("en-US", { - timeZone: "America/Los_Angeles", - hour: "numeric", - hour12: false, - }); - - const formattedTime = formatter.format(now); - const hourPST = parseInt(formattedTime.split(":")[0], 10); - - return hourPST >= 4 && hourPST < 16; -}