From 1576a2c7447c4a6f980ed16264dc0eb49217758e Mon Sep 17 00:00:00 2001 From: Evan Date: Sun, 15 Dec 2024 13:24:05 -0800 Subject: [PATCH] update version, ping every 5 seconds, only end game if no pings for 20 seconds --- src/client/Transport.ts | 2 +- src/client/index.html | 2 +- src/server/GameServer.ts | 9 ++++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/client/Transport.ts b/src/client/Transport.ts index acca558c8..d76107ef2 100644 --- a/src/client/Transport.ts +++ b/src/client/Transport.ts @@ -131,7 +131,7 @@ export class Transport { gameID: this.gameID, }))) } - }, 10000); + }, 5 * 1000); } } diff --git a/src/client/index.html b/src/client/index.html index cb8c873e5..039737a21 100644 --- a/src/client/index.html +++ b/src/client/index.html @@ -28,7 +28,7 @@

OpenFront.io

-

(v0.12.2)

+

(v0.12.3)


diff --git a/src/server/GameServer.ts b/src/server/GameServer.ts index 1946803de..20fbede82 100644 --- a/src/server/GameServer.ts +++ b/src/server/GameServer.ts @@ -30,6 +30,8 @@ export class GameServer { private endTurnIntervalID + private lastPingUpdate = 0 + constructor( public readonly id: string, public readonly createdAt: number, @@ -77,6 +79,7 @@ export class GameServer { } } if (clientMsg.type == "ping") { + this.lastPingUpdate = Date.now() client.lastPing = Date.now() } }) @@ -210,7 +213,11 @@ export class GameServer { return GamePhase.Lobby } - if (this.activeClients.length == 0 && now > this.createdAt + this.config.lobbyLifetime() + 30 * 1000) { // wait at least 30s before ending game + const noActive = this.activeClients.length + const warmupOver = now > this.createdAt + this.config.lobbyLifetime() + 30 * 1000 + const noRecentPings = now > this.lastPingUpdate + 20 * 1000 + + if (noActive && warmupOver && noRecentPings) { return GamePhase.Finished }