remove player id from Schemas, fix archive bug (#907)

## Description:

Remove all references to playerID in the archive schema, since we
reference players by client id.
Also fixed the game not archiving bug, due to invalid reference.

## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced
- [x] I understand that submitting code with bugs that could have been
caught through manual testing blocks releases and new features for all
contributors

## Please put your Discord username so you can be contacted if a bug or
regression is found:

<DISCORD USERNAME>
This commit is contained in:
evanpelle
2025-05-27 16:34:32 -07:00
committed by GitHub
parent 30271306b1
commit 2b1f2dca6e
8 changed files with 4 additions and 14 deletions
+2 -3
View File
@@ -78,18 +78,17 @@ async function archiveAnalyticsToR2(gameRecord: GameRecord) {
async function archiveFullGameToR2(gameRecord: GameRecord) {
// Create a deep copy to avoid modifying the original
const recordCopy = JSON.parse(JSON.stringify(gameRecord));
const recordCopy: GameRecord = JSON.parse(JSON.stringify(gameRecord));
// Players may see this so make sure to clear PII
recordCopy.info.players.forEach((p) => {
p.ip = "REDACTED";
p.persistentID = "REDACTED";
});
try {
await r2.putObject({
Bucket: bucket,
Key: `${gameFolder}/${recordCopy.id}`,
Key: `${gameFolder}/${recordCopy.info.gameID}`,
Body: JSON.stringify(recordCopy),
ContentType: "application/json",
});
+1 -4
View File
@@ -1,16 +1,13 @@
import WebSocket from "ws";
import { TokenPayload } from "../core/ApiSchemas";
import { PlayerID, Tick } from "../core/game/Game";
import { Tick } from "../core/game/Game";
import { ClientID } from "../core/Schemas";
import { generateID } from "../core/Util";
export class Client {
public lastPing: number;
public hashes: Map<Tick, number> = new Map();
public readonly playerID: PlayerID = generateID();
constructor(
public readonly clientID: ClientID,
public readonly persistentID: string,
-2
View File
@@ -300,7 +300,6 @@ export class GameServer {
gameID: this.id,
config: this.gameConfig,
players: this.activeClients.map((c) => ({
playerID: c.playerID,
username: c.username,
clientID: c.clientID,
flag: c.flag,
@@ -547,7 +546,6 @@ export class GameServer {
this.log.warn(`Unable to find stats for clientID ${client.clientID}`);
}
return {
playerID: client.playerID,
clientID: client.clientID,
username: client.username,
persistentID: client.persistentID,