From 5fec649b9ce616cfd055d855ccdce73b3031d9f8 Mon Sep 17 00:00:00 2001 From: Evan Date: Sat, 5 Apr 2025 11:15:15 -0700 Subject: [PATCH] perf: PortExecution only check to spawn trade ships every 10 ticks. --- src/core/configuration/DefaultConfig.ts | 12 ++++++------ src/core/execution/PortExecution.ts | 7 +++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/core/configuration/DefaultConfig.ts b/src/core/configuration/DefaultConfig.ts index 7d2d7b99c..33da4cbc2 100644 --- a/src/core/configuration/DefaultConfig.ts +++ b/src/core/configuration/DefaultConfig.ts @@ -211,12 +211,12 @@ export class DefaultConfig implements Config { return 10000 + 150 * Math.pow(dist, 1.1); } tradeShipSpawnRate(numberOfPorts: number): number { - if (numberOfPorts <= 3) return 180; - if (numberOfPorts <= 5) return 250; - if (numberOfPorts <= 8) return 350; - if (numberOfPorts <= 10) return 400; - if (numberOfPorts <= 12) return 450; - return 500; + if (numberOfPorts <= 3) return 18; + if (numberOfPorts <= 5) return 25; + if (numberOfPorts <= 8) return 35; + if (numberOfPorts <= 10) return 40; + if (numberOfPorts <= 12) return 45; + return 50; } unitInfo(type: UnitType): UnitInfo { diff --git a/src/core/execution/PortExecution.ts b/src/core/execution/PortExecution.ts index b1169b3aa..6e44eeb56 100644 --- a/src/core/execution/PortExecution.ts +++ b/src/core/execution/PortExecution.ts @@ -17,6 +17,7 @@ export class PortExecution implements Execution { private mg: Game; private port: Unit; private random: PseudoRandom; + private checkOffset: number; constructor( private _owner: PlayerID, @@ -31,6 +32,7 @@ export class PortExecution implements Execution { } this.mg = mg; this.random = new PseudoRandom(mg.ticks()); + this.checkOffset = mg.ticks() % 10; } tick(ticks: number): void { @@ -55,6 +57,11 @@ export class PortExecution implements Execution { this._owner = this.port.owner().id(); } + // Only check every 10 ticks for performance. + if ((this.mg.ticks() + this.checkOffset) % 10 != 0) { + return; + } + const totalNbOfPorts = this.mg.units(UnitType.Port).length; if ( !this.random.chance(this.mg.config().tradeShipSpawnRate(totalNbOfPorts))