@supalosa/chronodivide-bot 0.2.2-b → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/TODO.md +0 -2
  2. package/dist/bot/bot.js +2 -2
  3. package/dist/bot/bot.js.map +1 -1
  4. package/dist/bot/logic/awareness.js +7 -6
  5. package/dist/bot/logic/awareness.js.map +1 -1
  6. package/dist/bot/logic/building/ArtilleryUnit.js +6 -5
  7. package/dist/bot/logic/building/antiGroundStaticDefence.js.map +1 -1
  8. package/dist/bot/logic/building/artilleryUnit.js.map +1 -1
  9. package/dist/bot/logic/building/basicAirUnit.js +2 -1
  10. package/dist/bot/logic/building/basicAirUnit.js.map +1 -1
  11. package/dist/bot/logic/building/basicGroundUnit.js +3 -2
  12. package/dist/bot/logic/building/basicGroundUnit.js.map +1 -1
  13. package/dist/bot/logic/building/buildingRules.js +4 -10
  14. package/dist/bot/logic/building/buildingRules.js.map +1 -1
  15. package/dist/bot/logic/building/harvester.js.map +1 -1
  16. package/dist/bot/logic/building/resourceCollectionBuilding.js +5 -3
  17. package/dist/bot/logic/building/resourceCollectionBuilding.js.map +1 -1
  18. package/dist/bot/logic/common/scout.js +49 -32
  19. package/dist/bot/logic/common/scout.js.map +1 -1
  20. package/dist/bot/logic/map/map.js +17 -19
  21. package/dist/bot/logic/map/map.js.map +1 -1
  22. package/dist/bot/logic/map/sector.js +10 -13
  23. package/dist/bot/logic/map/sector.js.map +1 -1
  24. package/dist/bot/logic/mission/missions/attackMission.js +2 -2
  25. package/dist/bot/logic/mission/missions/attackMission.js.map +1 -1
  26. package/dist/bot/logic/mission/missions/defenceMission.js +2 -1
  27. package/dist/bot/logic/mission/missions/defenceMission.js.map +1 -1
  28. package/dist/bot/logic/mission/missions/retreatMission.js.map +1 -1
  29. package/dist/bot/logic/squad/behaviours/combatSquad.js +3 -3
  30. package/dist/bot/logic/squad/behaviours/combatSquad.js.map +1 -1
  31. package/dist/bot/logic/squad/behaviours/common.js +2 -2
  32. package/dist/bot/logic/squad/behaviours/common.js.map +1 -1
  33. package/dist/bot/logic/squad/behaviours/retreatSquad.js.map +1 -1
  34. package/dist/bot/logic/squad/behaviours/scoutingSquad.js +21 -17
  35. package/dist/bot/logic/squad/behaviours/scoutingSquad.js.map +1 -1
  36. package/dist/bot/logic/squad/squad.js +4 -6
  37. package/dist/bot/logic/squad/squad.js.map +1 -1
  38. package/dist/bot/logic/squad/squadBehaviour.js.map +1 -1
  39. package/dist/bot/logic/squad/squadController.js +35 -23
  40. package/dist/bot/logic/squad/squadController.js.map +1 -1
  41. package/dist/bot/logic/threat/threatCalculator.js +4 -3
  42. package/dist/bot/logic/threat/threatCalculator.js.map +1 -1
  43. package/dist/exampleBot.js +1 -1
  44. package/package.json +3 -3
  45. package/src/bot/bot.ts +4 -5
  46. package/src/bot/logic/awareness.ts +12 -12
  47. package/src/bot/logic/building/antiGroundStaticDefence.ts +11 -7
  48. package/src/bot/logic/building/artilleryUnit.ts +14 -17
  49. package/src/bot/logic/building/basicAirUnit.ts +9 -7
  50. package/src/bot/logic/building/basicGroundUnit.ts +3 -3
  51. package/src/bot/logic/building/buildingRules.ts +11 -13
  52. package/src/bot/logic/building/harvester.ts +7 -4
  53. package/src/bot/logic/building/resourceCollectionBuilding.ts +8 -12
  54. package/src/bot/logic/common/scout.ts +83 -38
  55. package/src/bot/logic/map/map.ts +26 -30
  56. package/src/bot/logic/map/sector.ts +17 -21
  57. package/src/bot/logic/mission/missions/attackMission.ts +5 -5
  58. package/src/bot/logic/mission/missions/defenceMission.ts +3 -3
  59. package/src/bot/logic/mission/missions/retreatMission.ts +2 -2
  60. package/src/bot/logic/squad/behaviours/combatSquad.ts +6 -6
  61. package/src/bot/logic/squad/behaviours/common.ts +3 -3
  62. package/src/bot/logic/squad/behaviours/retreatSquad.ts +2 -2
  63. package/src/bot/logic/squad/behaviours/scoutingSquad.ts +25 -22
  64. package/src/bot/logic/squad/squad.ts +6 -10
  65. package/src/bot/logic/squad/squadBehaviour.ts +9 -10
  66. package/src/bot/logic/squad/squadController.ts +0 -1
  67. package/src/bot/logic/threat/threatCalculator.ts +100 -99
  68. package/src/exampleBot.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"squadController.js","sourceRoot":"","sources":["../../../../src/bot/logic/squad/squadController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"squadController.js","sourceRoot":"","sources":["../../../../src/bot/logic/squad/squadController.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { MovementZone, ObjectType } from "@chronodivide/game-api";
1
+ import { GameMath, MovementZone, ObjectType } from "@chronodivide/game-api";
2
2
  import { GlobalThreat } from "./threat.js";
3
3
  export function calculateGlobalThreat(game, playerData, visibleAreaPercent) {
4
4
  let groundUnits = game.getVisibleUnits(playerData.name, "hostile", (r) => r.type == ObjectType.Vehicle || r.type == ObjectType.Infantry);
@@ -49,13 +49,14 @@ function calculateFirepowerForUnit(unitData) {
49
49
  if (unitData.primaryWeapon) {
50
50
  threat +=
51
51
  (hpRatio *
52
- ((unitData.primaryWeapon.rules.damage + 1) * Math.sqrt(unitData.primaryWeapon.rules.range + 1))) /
52
+ ((unitData.primaryWeapon.rules.damage + 1) * GameMath.sqrt(unitData.primaryWeapon.rules.range + 1))) /
53
53
  Math.max(unitData.primaryWeapon.cooldownTicks, 1);
54
54
  }
55
55
  if (unitData.secondaryWeapon) {
56
56
  threat +=
57
57
  (hpRatio *
58
- ((unitData.secondaryWeapon.rules.damage + 1) * Math.sqrt(unitData.secondaryWeapon.rules.range + 1))) /
58
+ ((unitData.secondaryWeapon.rules.damage + 1) *
59
+ GameMath.sqrt(unitData.secondaryWeapon.rules.range + 1))) /
59
60
  Math.max(unitData.secondaryWeapon.cooldownTicks, 1);
60
61
  }
61
62
  return Math.min(800, threat);
@@ -1 +1 @@
1
- {"version":3,"file":"threatCalculator.js","sourceRoot":"","sources":["../../../../src/bot/logic/threat/threatCalculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threatCalculator.js","sourceRoot":"","sources":["../../../../src/bot/logic/threat/threatCalculator.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ async function main() {
15
15
  Other maps:
16
16
  mp03t4 large map, no oil derricks
17
17
  */
18
- const mapName = "tn04t2.map";
18
+ const mapName = "mp10s4.map";
19
19
  // Bot names must be unique in online mode
20
20
  const botName = `Joe${String(Date.now()).substr(-6)}`;
21
21
  const otherBotName = `Bob${String(Date.now() + 1).substr(-6)}`;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@supalosa/chronodivide-bot",
3
- "version": "0.2.2b",
3
+ "version": "0.3.0",
4
4
  "description": "Example bot for Chrono Divide",
5
5
  "repository": "https://github.com/Supalosa/supalosa-chronodivide-bot",
6
6
  "main": "dist/exampleBot.js",
@@ -13,13 +13,13 @@
13
13
  },
14
14
  "license": "UNLICENSED",
15
15
  "devDependencies": {
16
- "@chronodivide/game-api": "^0.45.0",
16
+ "@chronodivide/game-api": "^0.46.0",
17
17
  "@types/node": "^14.17.32",
18
18
  "prettier": "3.0.3",
19
19
  "typescript": "^4.3.5"
20
20
  },
21
21
  "peerDependencies": {
22
- "@chronodivide/game-api": "^0.45.0"
22
+ "@chronodivide/game-api": "^0.46.0"
23
23
  },
24
24
  "dependencies": {
25
25
  "@datastructures-js/priority-queue": "^6.3.0",
package/src/bot/bot.ts CHANGED
@@ -1,13 +1,12 @@
1
1
  import {
2
- OrderType,
3
2
  ApiEventType,
4
3
  Bot,
5
4
  GameApi,
6
5
  ApiEvent,
7
6
  QueueStatus,
8
- Point2D,
9
7
  ObjectType,
10
8
  FactoryType,
9
+ Size,
11
10
  } from "@chronodivide/game-api";
12
11
 
13
12
  import { determineMapBounds } from "./logic/map/map.js";
@@ -22,11 +21,11 @@ const DEBUG_TIMESTAMP_OUTPUT_INTERVAL_SECONDS = 60;
22
21
 
23
22
  // Number of ticks per second at the base speed.
24
23
  const NATURAL_TICK_RATE = 15;
25
- const BOT_AUTO_SURRENDER_TIME_SECONDS = 7200; // 7200; // 2 hours (approx 30 mins in real game)
24
+ const BOT_AUTO_SURRENDER_TIME_SECONDS = 7200; // 7200 = 2 hours (approx 30 mins in real time, given a game speed of 4)
26
25
 
27
26
  export class SupalosaBot extends Bot {
28
27
  private tickRatio?: number;
29
- private knownMapBounds: Point2D | undefined;
28
+ private knownMapBounds: Size | undefined;
30
29
  private missionController: MissionController;
31
30
  private squadController: SquadController;
32
31
  private queueController: QueueController;
@@ -61,7 +60,7 @@ export class SupalosaBot extends Bot {
61
60
  );
62
61
  this.matchAwareness.onGameStart(game, myPlayer);
63
62
 
64
- this.logBotStatus(`Map bounds: ${this.knownMapBounds.x}, ${this.knownMapBounds.y}`);
63
+ this.logBotStatus(`Map bounds: ${this.knownMapBounds.width}, ${this.knownMapBounds.height}`);
65
64
  }
66
65
 
67
66
  override onGameTick(game: GameApi) {
@@ -1,4 +1,4 @@
1
- import { GameApi, ObjectType, PlayerData, Point2D, UnitData } from "@chronodivide/game-api";
1
+ import { GameApi, ObjectType, PlayerData, UnitData, Vector2 } from "@chronodivide/game-api";
2
2
  import { SectorCache } from "./map/sector";
3
3
  import { GlobalThreat } from "./threat/threat";
4
4
  import { calculateGlobalThreat } from "./threat/threatCalculator.js";
@@ -25,14 +25,14 @@ export interface MatchAwareness {
25
25
  /**
26
26
  * Returns the enemy unit IDs in a certain radius of a point
27
27
  */
28
- getHostilesNearPoint2d(point: Point2D, radius: number): UnitPositionQuery[];
28
+ getHostilesNearPoint2d(point: Vector2, radius: number): UnitPositionQuery[];
29
29
 
30
30
  getHostilesNearPoint(x: number, y: number, radius: number): UnitPositionQuery[];
31
31
 
32
32
  /**
33
33
  * Returns the main rally point for the AI, which updates every few ticks.
34
34
  */
35
- getMainRallyPoint(): Point2D;
35
+ getMainRallyPoint(): Vector2;
36
36
 
37
37
  onGameStart(gameApi: GameApi, playerData: PlayerData): void;
38
38
 
@@ -53,7 +53,7 @@ export interface MatchAwareness {
53
53
 
54
54
  const SECTORS_TO_UPDATE_PER_CYCLE = 8;
55
55
 
56
- const RALLY_POINT_UPDATE_INTERVAL_TICKS = 60;
56
+ const RALLY_POINT_UPDATE_INTERVAL_TICKS = 90;
57
57
 
58
58
  const THREAT_UPDATE_INTERVAL_TICKS = 30;
59
59
 
@@ -75,15 +75,15 @@ export class MatchAwarenessImpl implements MatchAwareness {
75
75
  constructor(
76
76
  private threatCache: GlobalThreat | null,
77
77
  private sectorCache: SectorCache,
78
- private mainRallyPoint: Point2D,
78
+ private mainRallyPoint: Vector2,
79
79
  private logger: (message: string, sayInGame?: boolean) => void,
80
80
  ) {
81
- const { x: width, y: height } = sectorCache.getMapBounds();
81
+ const { width, height } = sectorCache.getMapBounds();
82
82
  this.hostileQuadTree = new Quadtree({ width, height });
83
83
  this.scoutingManager = new ScoutingManager(logger);
84
84
  }
85
85
 
86
- getHostilesNearPoint2d(point: Point2D, radius: number): UnitPositionQuery[] {
86
+ getHostilesNearPoint2d(point: Vector2, radius: number): UnitPositionQuery[] {
87
87
  return this.getHostilesNearPoint(point.x, point.y, radius);
88
88
  }
89
89
 
@@ -91,7 +91,7 @@ export class MatchAwarenessImpl implements MatchAwareness {
91
91
  const intersections = this.hostileQuadTree.retrieve(new Circle({ x: searchX, y: searchY, r: radius }));
92
92
  return intersections
93
93
  .map(({ x, y, data: unitId }) => ({ x, y, unitId: unitId! }))
94
- .filter(({ x, y }) => getDistanceBetweenPoints({ x, y }, { x: searchX, y: searchY }) <= radius)
94
+ .filter(({ x, y }) => getDistanceBetweenPoints(new Vector2(x, y), new Vector2(searchX, searchY)) <= radius)
95
95
  .filter(({ unitId }) => !!unitId);
96
96
  }
97
97
 
@@ -101,7 +101,7 @@ export class MatchAwarenessImpl implements MatchAwareness {
101
101
  getSectorCache(): SectorCache {
102
102
  return this.sectorCache;
103
103
  }
104
- getMainRallyPoint(): Point2D {
104
+ getMainRallyPoint(): Vector2 {
105
105
  return this.mainRallyPoint;
106
106
  }
107
107
  getScoutingManager(): ScoutingManager {
@@ -113,11 +113,11 @@ export class MatchAwarenessImpl implements MatchAwareness {
113
113
  }
114
114
 
115
115
  private checkShouldAttack(threatCache: GlobalThreat, threatFactor: number) {
116
- let scaledGroundPower = Math.pow(threatCache.totalAvailableAntiGroundFirepower, 1.025);
116
+ let scaledGroundPower = threatCache.totalAvailableAntiGroundFirepower * 1.1;
117
117
  let scaledGroundThreat =
118
118
  (threatFactor * threatCache.totalOffensiveLandThreat + threatCache.totalDefensiveThreat) * 1.1;
119
119
 
120
- let scaledAirPower = Math.pow(threatCache.totalAvailableAirPower, 1.025);
120
+ let scaledAirPower = threatCache.totalAvailableAirPower * 1.1;
121
121
  let scaledAirThreat =
122
122
  (threatFactor * threatCache.totalOffensiveAntiAirThreat + threatCache.totalDefensiveThreat) * 1.1;
123
123
 
@@ -141,7 +141,7 @@ export class MatchAwarenessImpl implements MatchAwareness {
141
141
 
142
142
  sectorCache.updateSectors(game.getCurrentTick(), SECTORS_TO_UPDATE_PER_CYCLE, game.mapApi, playerData);
143
143
 
144
- this.scoutingManager.onAiUpdate(game, playerData);
144
+ this.scoutingManager.onAiUpdate(game, playerData, sectorCache);
145
145
 
146
146
  let updateRatio = sectorCache?.getSectorUpdateRatio(game.getCurrentTick() - game.getTickRate() * 60);
147
147
  if (updateRatio && updateRatio < 1.0) {
@@ -1,20 +1,24 @@
1
- import { GameApi, PlayerData, Point2D, TechnoRules } from "@chronodivide/game-api";
1
+ import { GameApi, PlayerData, TechnoRules, Vector2 } from "@chronodivide/game-api";
2
2
  import { getPointTowardsOtherPoint } from "../map/map.js";
3
3
  import { GlobalThreat } from "../threat/threat.js";
4
4
  import { AiBuildingRules, getDefaultPlacementLocation, numBuildingsOwnedOfType } from "./buildingRules.js";
5
5
 
6
6
  export class AntiGroundStaticDefence implements AiBuildingRules {
7
- constructor(private basePriority: number, private baseAmount: number, private strength: number) {}
7
+ constructor(
8
+ private basePriority: number,
9
+ private baseAmount: number,
10
+ private strength: number,
11
+ ) {}
8
12
 
9
13
  getPlacementLocation(
10
14
  game: GameApi,
11
15
  playerData: PlayerData,
12
- technoRules: TechnoRules
16
+ technoRules: TechnoRules,
13
17
  ): { rx: number; ry: number } | undefined {
14
18
  // Prefer front towards enemy.
15
19
  let startLocation = playerData.startLocation;
16
20
  let players = game.getPlayers();
17
- let enemyFacingLocationCandidates: Point2D[] = [];
21
+ let enemyFacingLocationCandidates: Vector2[] = [];
18
22
  for (let i = 0; i < players.length; ++i) {
19
23
  let playerName = players[i];
20
24
  if (playerName == playerData.name) {
@@ -22,7 +26,7 @@ export class AntiGroundStaticDefence implements AiBuildingRules {
22
26
  }
23
27
  let enemyPlayer = game.getPlayerData(playerName);
24
28
  enemyFacingLocationCandidates.push(
25
- getPointTowardsOtherPoint(game, startLocation, enemyPlayer.startLocation, 4, 16, 1.5)
29
+ getPointTowardsOtherPoint(game, startLocation, enemyPlayer.startLocation, 4, 16, 1.5),
26
30
  );
27
31
  }
28
32
  let selectedLocation =
@@ -34,7 +38,7 @@ export class AntiGroundStaticDefence implements AiBuildingRules {
34
38
  game: GameApi,
35
39
  playerData: PlayerData,
36
40
  technoRules: TechnoRules,
37
- threatCache: GlobalThreat | null
41
+ threatCache: GlobalThreat | null,
38
42
  ): number {
39
43
  // If the enemy's ground power is increasing we should try to keep up.
40
44
  if (threatCache) {
@@ -53,7 +57,7 @@ export class AntiGroundStaticDefence implements AiBuildingRules {
53
57
  game: GameApi,
54
58
  playerData: PlayerData,
55
59
  technoRules: TechnoRules,
56
- threatCache: GlobalThreat | null
60
+ threatCache: GlobalThreat | null,
57
61
  ): number | null {
58
62
  return null;
59
63
  }
@@ -1,17 +1,19 @@
1
- import { GameApi, PlayerData, TechnoRules } from "@chronodivide/game-api";
1
+ import { GameApi, GameMath, PlayerData, TechnoRules } from "@chronodivide/game-api";
2
2
  import { GlobalThreat } from "../threat/threat.js";
3
- import { AiBuildingRules, getDefaultPlacementLocation, numBuildingsOwnedOfType } from "./buildingRules.js";
3
+ import { AiBuildingRules, numBuildingsOwnedOfType } from "./buildingRules.js";
4
4
 
5
5
  export class ArtilleryUnit implements AiBuildingRules {
6
- constructor(private basePriority: number,
6
+ constructor(
7
+ private basePriority: number,
7
8
  private artilleryPower: number,
8
9
  private antiGroundPower: number,
9
- private baseAmount: number) {}
10
+ private baseAmount: number,
11
+ ) {}
10
12
 
11
13
  getPlacementLocation(
12
14
  game: GameApi,
13
15
  playerData: PlayerData,
14
- technoRules: TechnoRules
16
+ technoRules: TechnoRules,
15
17
  ): { rx: number; ry: number } | undefined {
16
18
  return undefined;
17
19
  }
@@ -20,16 +22,15 @@ export class ArtilleryUnit implements AiBuildingRules {
20
22
  game: GameApi,
21
23
  playerData: PlayerData,
22
24
  technoRules: TechnoRules,
23
- threatCache: GlobalThreat | null
25
+ threatCache: GlobalThreat | null,
24
26
  ): number {
25
27
  const numOwned = numBuildingsOwnedOfType(game, playerData, technoRules);
26
28
  let priority = this.basePriority;
27
29
  // If the enemy's defensive power is increasing we will start to build these.
28
30
  if (threatCache && threatCache.totalDefensivePower > threatCache.totalAvailableAntiGroundFirepower) {
29
- priority += (
31
+ priority +=
30
32
  this.artilleryPower *
31
- (threatCache.totalAvailableAntiGroundFirepower / Math.max(1, threatCache.totalDefensivePower))
32
- );
33
+ (threatCache.totalAvailableAntiGroundFirepower / Math.max(1, threatCache.totalDefensivePower));
33
34
  }
34
35
  if (threatCache && this.antiGroundPower > 0) {
35
36
  // If the enemy's power is increasing we should try to keep up.
@@ -37,19 +38,15 @@ export class ArtilleryUnit implements AiBuildingRules {
37
38
  priority +=
38
39
  this.antiGroundPower *
39
40
  this.basePriority *
40
- (threatCache.totalOffensiveLandThreat /
41
- Math.max(1, threatCache.totalAvailableAntiGroundFirepower));
41
+ (threatCache.totalOffensiveLandThreat / Math.max(1, threatCache.totalAvailableAntiGroundFirepower));
42
42
  } else {
43
43
  // But also, if our power dwarfs the enemy, keep pressing the advantage.
44
44
  priority +=
45
45
  (this.antiGroundPower *
46
46
  this.basePriority *
47
- Math.sqrt(
47
+ GameMath.sqrt(
48
48
  threatCache.totalAvailableAntiGroundFirepower /
49
- Math.max(
50
- 1,
51
- threatCache.totalOffensiveLandThreat + threatCache.totalDefensiveThreat,
52
- ),
49
+ Math.max(1, threatCache.totalOffensiveLandThreat + threatCache.totalDefensiveThreat),
53
50
  )) /
54
51
  (numOwned + 1);
55
52
  }
@@ -61,7 +58,7 @@ export class ArtilleryUnit implements AiBuildingRules {
61
58
  game: GameApi,
62
59
  playerData: PlayerData,
63
60
  technoRules: TechnoRules,
64
- threatCache: GlobalThreat | null
61
+ threatCache: GlobalThreat | null,
65
62
  ): number | null {
66
63
  return null;
67
64
  }
@@ -1,4 +1,4 @@
1
- import { GameApi, PlayerData, TechnoRules } from "@chronodivide/game-api";
1
+ import { GameApi, GameMath, PlayerData, TechnoRules } from "@chronodivide/game-api";
2
2
  import { GlobalThreat } from "../threat/threat.js";
3
3
  import { AiBuildingRules, getDefaultPlacementLocation, numBuildingsOwnedOfType } from "./buildingRules.js";
4
4
 
@@ -7,13 +7,13 @@ export class BasicAirUnit implements AiBuildingRules {
7
7
  private basePriority: number,
8
8
  private baseAmount: number,
9
9
  private antiGroundPower: number = 1, // boolean for now, but will eventually be used in weighting.
10
- private antiAirPower: number = 0
10
+ private antiAirPower: number = 0,
11
11
  ) {}
12
12
 
13
13
  getPlacementLocation(
14
14
  game: GameApi,
15
15
  playerData: PlayerData,
16
- technoRules: TechnoRules
16
+ technoRules: TechnoRules,
17
17
  ): { rx: number; ry: number } | undefined {
18
18
  return undefined;
19
19
  }
@@ -22,7 +22,7 @@ export class BasicAirUnit implements AiBuildingRules {
22
22
  game: GameApi,
23
23
  playerData: PlayerData,
24
24
  technoRules: TechnoRules,
25
- threatCache: GlobalThreat | null
25
+ threatCache: GlobalThreat | null,
26
26
  ): number {
27
27
  // If the enemy's anti-air power is low we might build more.
28
28
  if (threatCache) {
@@ -48,8 +48,10 @@ export class BasicAirUnit implements AiBuildingRules {
48
48
  1.0,
49
49
  Math.max(
50
50
  1,
51
- Math.sqrt(threatCache.totalAvailableAirPower / Math.max(1, threatCache.totalOffensiveAntiAirThreat))
52
- )
51
+ GameMath.sqrt(
52
+ threatCache.totalAvailableAirPower / Math.max(1, threatCache.totalOffensiveAntiAirThreat),
53
+ ),
54
+ ),
53
55
  );
54
56
  return this.baseAmount * priority;
55
57
  }
@@ -61,7 +63,7 @@ export class BasicAirUnit implements AiBuildingRules {
61
63
  game: GameApi,
62
64
  playerData: PlayerData,
63
65
  technoRules: TechnoRules,
64
- threatCache: GlobalThreat | null
66
+ threatCache: GlobalThreat | null,
65
67
  ): number | null {
66
68
  return null;
67
69
  }
@@ -1,4 +1,4 @@
1
- import { GameApi, PlayerData, TechnoRules } from "@chronodivide/game-api";
1
+ import { GameApi, GameMath, PlayerData, TechnoRules } from "@chronodivide/game-api";
2
2
  import { GlobalThreat } from "../threat/threat.js";
3
3
  import { AiBuildingRules, getDefaultPlacementLocation, numBuildingsOwnedOfType } from "./buildingRules.js";
4
4
 
@@ -40,7 +40,7 @@ export class BasicGroundUnit implements AiBuildingRules {
40
40
  priority +=
41
41
  (this.antiGroundPower *
42
42
  this.basePriority *
43
- Math.sqrt(
43
+ GameMath.sqrt(
44
44
  threatCache.totalAvailableAntiGroundFirepower /
45
45
  Math.max(
46
46
  1,
@@ -60,7 +60,7 @@ export class BasicGroundUnit implements AiBuildingRules {
60
60
  priority +=
61
61
  (this.antiAirPower *
62
62
  this.basePriority *
63
- Math.sqrt(
63
+ GameMath.sqrt(
64
64
  threatCache.totalAvailableAntiAirFirepower /
65
65
  Math.max(1, threatCache.totalOffensiveAirThreat + threatCache.totalDefensiveThreat),
66
66
  )) /
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  BuildingPlacementData,
3
3
  GameApi,
4
+ GameMath,
4
5
  ObjectType,
5
6
  PlayerData,
6
- Point2D,
7
7
  Size,
8
8
  TechnoRules,
9
9
  Tile,
10
+ Vector2,
10
11
  } from "@chronodivide/game-api";
11
12
  import { GlobalThreat } from "../threat/threat.js";
12
13
  import { AntiGroundStaticDefence } from "./antiGroundStaticDefence.js";
@@ -59,7 +60,7 @@ export function numBuildingsOwnedOfName(game: GameApi, playerData: PlayerData, n
59
60
  * @param adjacent Size of the outer rect.
60
61
  * @returns
61
62
  */
62
- function computeAdjacentRect(point: Point2D, t: Size, adjacent: number) {
63
+ function computeAdjacentRect(point: Vector2, t: Size, adjacent: number) {
63
64
  return {
64
65
  x: point.x - adjacent,
65
66
  y: point.y - adjacent,
@@ -83,10 +84,7 @@ export function getAdjacencyTiles(
83
84
  const building = game.getUnitData(buildingId);
84
85
  if (building?.rules?.baseNormal) {
85
86
  const { foundation, tile } = building;
86
- const buildingBase = {
87
- x: tile.rx,
88
- y: tile.ry,
89
- };
87
+ const buildingBase = new Vector2(tile.rx, tile.ry);
90
88
  const buildingSize = {
91
89
  width: foundation?.width,
92
90
  height: foundation?.height,
@@ -103,10 +101,10 @@ export function getAdjacencyTiles(
103
101
  tiles.push(...adjacentTiles);
104
102
 
105
103
  // Prevent placing the new building on tiles that would cause it to overlap with this building.
106
- const modifiedBase = {
107
- x: buildingBase.x - (newBuildingWidth - 1),
108
- y: buildingBase.y - (newBuildingHeight - 1),
109
- };
104
+ const modifiedBase = new Vector2(
105
+ buildingBase.x - (newBuildingWidth - 1),
106
+ buildingBase.y - (newBuildingHeight - 1),
107
+ );
110
108
  const modifiedSize = {
111
109
  width: buildingSize.width + (newBuildingWidth - 1),
112
110
  height: buildingSize.height + (newBuildingHeight - 1),
@@ -129,7 +127,7 @@ export function getAdjacencyTiles(
129
127
  return withDuplicatesRemoved.filter((tile) => !removedTiles.has(tile.id));
130
128
  }
131
129
 
132
- function getTileDistances(startPoint: Point2D, tiles: Tile[]) {
130
+ function getTileDistances(startPoint: Vector2, tiles: Tile[]) {
133
131
  return tiles
134
132
  .map((tile) => ({
135
133
  tile,
@@ -147,13 +145,13 @@ function distance(x1: number, y1: number, x2: number, y2: number) {
147
145
  if (0 === tmp) {
148
146
  return 0;
149
147
  }
150
- return Math.sqrt(tmp);
148
+ return GameMath.sqrt(tmp);
151
149
  }
152
150
 
153
151
  export function getDefaultPlacementLocation(
154
152
  game: GameApi,
155
153
  playerData: PlayerData,
156
- startPoint: Point2D,
154
+ startPoint: Vector2,
157
155
  technoRules: TechnoRules,
158
156
  minSpace: number = 1,
159
157
  ): { rx: number; ry: number } | undefined {
@@ -1,12 +1,15 @@
1
- import { GameApi, PlayerData, Point2D, TechnoRules, Tile } from "@chronodivide/game-api";
1
+ import { GameApi, PlayerData, TechnoRules } from "@chronodivide/game-api";
2
2
  import { GlobalThreat } from "../threat/threat.js";
3
- import { BasicBuilding } from "./basicBuilding.js";
4
3
  import { BasicGroundUnit } from "./basicGroundUnit.js";
5
4
 
6
5
  const IDEAL_HARVESTERS_PER_REFINERY = 2;
7
6
 
8
7
  export class Harvester extends BasicGroundUnit {
9
- constructor(basePriority: number, baseAmount: number, private minNeeded: number) {
8
+ constructor(
9
+ basePriority: number,
10
+ baseAmount: number,
11
+ private minNeeded: number,
12
+ ) {
10
13
  super(basePriority, baseAmount, 0, 0);
11
14
  }
12
15
 
@@ -15,7 +18,7 @@ export class Harvester extends BasicGroundUnit {
15
18
  game: GameApi,
16
19
  playerData: PlayerData,
17
20
  technoRules: TechnoRules,
18
- threatCache: GlobalThreat | null
21
+ threatCache: GlobalThreat | null,
19
22
  ): number {
20
23
  const refineries = game.getVisibleUnits(playerData.name, "self", (r) => r.refinery).length;
21
24
  const harvesters = game.getVisibleUnits(playerData.name, "self", (r) => r.harvester).length;
@@ -1,12 +1,8 @@
1
- import { GameApi, PlayerData, Point2D, TechnoRules, Tile } from "@chronodivide/game-api";
1
+ import { GameApi, GameMath, PlayerData, TechnoRules, Tile } from "@chronodivide/game-api";
2
2
  import { GlobalThreat } from "../threat/threat.js";
3
3
  import { BasicBuilding } from "./basicBuilding.js";
4
- import {
5
- AiBuildingRules,
6
- getDefaultPlacementLocation,
7
- numBuildingsOwnedOfName,
8
- numBuildingsOwnedOfType,
9
- } from "./buildingRules.js";
4
+ import { getDefaultPlacementLocation } from "./buildingRules.js";
5
+ import { Vector2 } from "three";
10
6
 
11
7
  export class ResourceCollectionBuilding extends BasicBuilding {
12
8
  constructor(basePriority: number, maxNeeded: number, onlyBuildWhenFloatingCreditsAmount?: number) {
@@ -16,7 +12,7 @@ export class ResourceCollectionBuilding extends BasicBuilding {
16
12
  getPlacementLocation(
17
13
  game: GameApi,
18
14
  playerData: PlayerData,
19
- technoRules: TechnoRules
15
+ technoRules: TechnoRules,
20
16
  ): { rx: number; ry: number } | undefined {
21
17
  // Prefer spawning close to ore.
22
18
  let selectedLocation = playerData.startLocation;
@@ -27,9 +23,9 @@ export class ResourceCollectionBuilding extends BasicBuilding {
27
23
  for (let i = 0; i < allTileResourceData.length; ++i) {
28
24
  let tileResourceData = allTileResourceData[i];
29
25
  if (tileResourceData.spawnsOre) {
30
- let dist = Math.sqrt(
26
+ let dist = GameMath.sqrt(
31
27
  (selectedLocation.x - tileResourceData.tile.rx) ** 2 +
32
- (selectedLocation.y - tileResourceData.tile.ry) ** 2
28
+ (selectedLocation.y - tileResourceData.tile.ry) ** 2,
33
29
  );
34
30
  if (closeOreDist == undefined || dist < closeOreDist) {
35
31
  closeOreDist = dist;
@@ -38,7 +34,7 @@ export class ResourceCollectionBuilding extends BasicBuilding {
38
34
  }
39
35
  }
40
36
  if (closeOre) {
41
- selectedLocation = { x: closeOre.rx, y: closeOre.ry };
37
+ selectedLocation = new Vector2(closeOre.rx, closeOre.ry);
42
38
  }
43
39
  return getDefaultPlacementLocation(game, playerData, selectedLocation, technoRules);
44
40
  }
@@ -48,7 +44,7 @@ export class ResourceCollectionBuilding extends BasicBuilding {
48
44
  game: GameApi,
49
45
  playerData: PlayerData,
50
46
  technoRules: TechnoRules,
51
- threatCache: GlobalThreat | null
47
+ threatCache: GlobalThreat | null,
52
48
  ): number | null {
53
49
  const harvesters = game.getVisibleUnits(playerData.name, "self", (r) => r.harvester).length;
54
50
  return Math.max(1, harvesters * 2);