@supalosa/chronodivide-bot 0.2.2 → 0.3.1

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 (108) hide show
  1. package/.prettierrc +5 -5
  2. package/TODO.md +18 -0
  3. package/dist/bot/bot.js +4 -4
  4. package/dist/bot/bot.js.map +1 -1
  5. package/dist/bot/logic/awareness.js +8 -8
  6. package/dist/bot/logic/awareness.js.map +1 -1
  7. package/dist/bot/logic/building/ArtilleryUnit.js +30 -9
  8. package/dist/bot/logic/building/antiGroundStaticDefence.js +2 -2
  9. package/dist/bot/logic/building/antiGroundStaticDefence.js.map +1 -1
  10. package/dist/bot/logic/building/artilleryUnit.js.map +1 -0
  11. package/dist/bot/logic/building/basicAirUnit.js +3 -2
  12. package/dist/bot/logic/building/basicAirUnit.js.map +1 -1
  13. package/dist/bot/logic/building/basicBuilding.js +1 -1
  14. package/dist/bot/logic/building/basicBuilding.js.map +1 -1
  15. package/dist/bot/logic/building/basicGroundUnit.js +4 -3
  16. package/dist/bot/logic/building/basicGroundUnit.js.map +1 -1
  17. package/dist/bot/logic/building/building.js +11 -55
  18. package/dist/bot/logic/building/buildingRules.js +162 -0
  19. package/dist/bot/logic/building/buildingRules.js.map +1 -0
  20. package/dist/bot/logic/building/harvester.js.map +1 -1
  21. package/dist/bot/logic/building/massedAntiGroundUnit.js +20 -0
  22. package/dist/bot/logic/building/powerPlant.js +1 -1
  23. package/dist/bot/logic/building/powerPlant.js.map +1 -1
  24. package/dist/bot/logic/building/queueController.js +1 -1
  25. package/dist/bot/logic/building/queueController.js.map +1 -1
  26. package/dist/bot/logic/building/queues.js +19 -0
  27. package/dist/bot/logic/building/resourceCollectionBuilding.js +5 -3
  28. package/dist/bot/logic/building/resourceCollectionBuilding.js.map +1 -1
  29. package/dist/bot/logic/common/scout.js +49 -32
  30. package/dist/bot/logic/common/scout.js.map +1 -1
  31. package/dist/bot/logic/common/utils.js +50 -1
  32. package/dist/bot/logic/common/utils.js.map +1 -1
  33. package/dist/bot/logic/knowledge.js +1 -0
  34. package/dist/bot/logic/map/map.js +17 -19
  35. package/dist/bot/logic/map/map.js.map +1 -1
  36. package/dist/bot/logic/map/sector.js +10 -13
  37. package/dist/bot/logic/map/sector.js.map +1 -1
  38. package/dist/bot/logic/mission/basicMission.js +26 -0
  39. package/dist/bot/logic/mission/expansionMission.js +32 -0
  40. package/dist/bot/logic/mission/missionFactories.js +2 -0
  41. package/dist/bot/logic/mission/missionFactories.js.map +1 -1
  42. package/dist/bot/logic/mission/missions/attackMission.js +4 -4
  43. package/dist/bot/logic/mission/missions/attackMission.js.map +1 -1
  44. package/dist/bot/logic/mission/missions/defenceMission.js +2 -1
  45. package/dist/bot/logic/mission/missions/defenceMission.js.map +1 -1
  46. package/dist/bot/logic/mission/missions/engineerMission.js +34 -0
  47. package/dist/bot/logic/mission/missions/engineerMission.js.map +1 -0
  48. package/dist/bot/logic/mission/missions/retreatMission.js.map +1 -1
  49. package/dist/bot/logic/squad/behaviours/attackSquad.js +56 -63
  50. package/dist/bot/logic/squad/behaviours/combatSquad.js +18 -19
  51. package/dist/bot/logic/squad/behaviours/combatSquad.js.map +1 -1
  52. package/dist/bot/logic/squad/behaviours/common.js +19 -2
  53. package/dist/bot/logic/squad/behaviours/common.js.map +1 -1
  54. package/dist/bot/logic/squad/behaviours/defenceSquad.js +2 -15
  55. package/dist/bot/logic/squad/behaviours/engineerSquad.js +36 -0
  56. package/dist/bot/logic/squad/behaviours/engineerSquad.js.map +1 -0
  57. package/dist/bot/logic/squad/behaviours/retreatSquad.js.map +1 -1
  58. package/dist/bot/logic/squad/behaviours/scoutingSquad.js +21 -17
  59. package/dist/bot/logic/squad/behaviours/scoutingSquad.js.map +1 -1
  60. package/dist/bot/logic/squad/behaviours/squadExpansion.js +31 -0
  61. package/dist/bot/logic/squad/behaviours/squadScouters.js +8 -0
  62. package/dist/bot/logic/squad/squad.js +5 -8
  63. package/dist/bot/logic/squad/squad.js.map +1 -1
  64. package/dist/bot/logic/squad/squadBehaviour.js.map +1 -1
  65. package/dist/bot/logic/squad/squadController.js +2 -3
  66. package/dist/bot/logic/squad/squadController.js.map +1 -1
  67. package/dist/bot/logic/threat/threatCalculator.js +4 -3
  68. package/dist/bot/logic/threat/threatCalculator.js.map +1 -1
  69. package/dist/exampleBot.js +6 -6
  70. package/dist/exampleBot.js.map +1 -1
  71. package/package.json +5 -9
  72. package/src/bot/bot.ts +8 -10
  73. package/src/bot/logic/awareness.ts +13 -17
  74. package/src/bot/logic/building/antiGroundStaticDefence.ts +13 -9
  75. package/src/bot/logic/building/artilleryUnit.ts +65 -0
  76. package/src/bot/logic/building/basicAirUnit.ts +10 -8
  77. package/src/bot/logic/building/basicBuilding.ts +1 -1
  78. package/src/bot/logic/building/basicGroundUnit.ts +4 -4
  79. package/src/bot/logic/building/{building.ts → buildingRules.ts} +94 -48
  80. package/src/bot/logic/building/harvester.ts +7 -4
  81. package/src/bot/logic/building/powerPlant.ts +1 -1
  82. package/src/bot/logic/building/queueController.ts +1 -1
  83. package/src/bot/logic/building/resourceCollectionBuilding.ts +8 -12
  84. package/src/bot/logic/common/scout.ts +83 -38
  85. package/src/bot/logic/common/utils.ts +65 -1
  86. package/src/bot/logic/map/map.ts +27 -31
  87. package/src/bot/logic/map/sector.ts +17 -21
  88. package/src/bot/logic/mission/missionFactories.ts +2 -0
  89. package/src/bot/logic/mission/missions/attackMission.ts +27 -27
  90. package/src/bot/logic/mission/missions/defenceMission.ts +3 -3
  91. package/src/bot/logic/mission/missions/engineerMission.ts +61 -0
  92. package/src/bot/logic/mission/missions/retreatMission.ts +2 -2
  93. package/src/bot/logic/squad/behaviours/combatSquad.ts +24 -26
  94. package/src/bot/logic/squad/behaviours/common.ts +33 -3
  95. package/src/bot/logic/squad/behaviours/engineerSquad.ts +53 -0
  96. package/src/bot/logic/squad/behaviours/retreatSquad.ts +2 -2
  97. package/src/bot/logic/squad/behaviours/scoutingSquad.ts +26 -28
  98. package/src/bot/logic/squad/squad.ts +8 -13
  99. package/src/bot/logic/squad/squadBehaviour.ts +9 -10
  100. package/src/bot/logic/squad/squadController.ts +2 -5
  101. package/src/bot/logic/threat/threat.ts +15 -15
  102. package/src/bot/logic/threat/threatCalculator.ts +4 -3
  103. package/src/exampleBot.ts +6 -6
  104. package/dist/bot/logic/awarenessImpl.js +0 -132
  105. package/dist/bot/logic/awarenessImpl.js.map +0 -1
  106. package/dist/bot/logic/building/ArtilleryUnit.js.map +0 -1
  107. package/dist/bot/logic/building/building.js.map +0 -1
  108. package/src/bot/logic/building/ArtilleryUnit.ts +0 -43
@@ -1,132 +0,0 @@
1
- import { ObjectType } from "@chronodivide/game-api";
2
- import { calculateGlobalThreat } from "./threat/threatCalculator.js";
3
- import { getDistanceBetweenPoints, getPointTowardsOtherPoint } from "./map/map.js";
4
- import { Circle, Quadtree } from "@timohausmann/quadtree-ts";
5
- import { ScoutingManager } from "./common/scout";
6
- const SECTORS_TO_UPDATE_PER_CYCLE = 8;
7
- const RALLY_POINT_UPDATE_INTERVAL_TICKS = 60;
8
- const THREAT_UPDATE_INTERVAL_TICKS = 30;
9
- const rebuildQuadtree = (quadtree, units) => {
10
- quadtree.clear();
11
- units.forEach((unit) => {
12
- quadtree.insert(new Circle({ x: unit.tile.rx, y: unit.tile.ry, r: 1, data: unit.id }));
13
- });
14
- };
15
- export class MatchAwarenessImpl {
16
- constructor(threatCache, sectorCache, mainRallyPoint, logger) {
17
- this.threatCache = threatCache;
18
- this.sectorCache = sectorCache;
19
- this.mainRallyPoint = mainRallyPoint;
20
- this.logger = logger;
21
- this._shouldAttack = false;
22
- const { x: width, y: height } = sectorCache.getMapBounds();
23
- this.hostileQuadTree = new Quadtree({ width, height });
24
- this.scoutingManager = new ScoutingManager(logger);
25
- }
26
- getHostilesNearPoint2d(point, radius) {
27
- return this.getHostilesNearPoint(point.x, point.y, radius);
28
- }
29
- getHostilesNearPoint(searchX, searchY, radius) {
30
- const intersections = this.hostileQuadTree.retrieve(new Circle({ x: searchX, y: searchY, r: radius }));
31
- return intersections
32
- .map(({ x, y, data: unitId }) => ({ x, y, unitId: unitId }))
33
- .filter(({ x, y }) => getDistanceBetweenPoints({ x, y }, { x: searchX, y: searchY }) <= radius)
34
- .filter(({ unitId }) => !!unitId);
35
- }
36
- getThreatCache() {
37
- return this.threatCache;
38
- }
39
- getSectorCache() {
40
- return this.sectorCache;
41
- }
42
- getMainRallyPoint() {
43
- return this.mainRallyPoint;
44
- }
45
- getScoutingManager() {
46
- return this.scoutingManager;
47
- }
48
- shouldAttack() {
49
- return this._shouldAttack;
50
- }
51
- checkShouldAttack(threatCache, threatFactor) {
52
- let scaledGroundPower = Math.pow(threatCache.totalAvailableAntiGroundFirepower, 1.025);
53
- let scaledGroundThreat = (threatFactor * threatCache.totalOffensiveLandThreat + threatCache.totalDefensiveThreat) * 1.1;
54
- let scaledAirPower = Math.pow(threatCache.totalAvailableAirPower, 1.025);
55
- let scaledAirThreat = (threatFactor * threatCache.totalOffensiveAntiAirThreat + threatCache.totalDefensiveThreat) * 1.1;
56
- return scaledGroundPower > scaledGroundThreat || scaledAirPower > scaledAirThreat;
57
- }
58
- isHostileUnit(unit, hostilePlayerNames) {
59
- if (!unit) {
60
- return false;
61
- }
62
- return hostilePlayerNames.includes(unit.owner);
63
- }
64
- onGameStart(gameApi, playerData) {
65
- this.scoutingManager.onGameStart(gameApi, playerData, this.sectorCache);
66
- }
67
- onAiUpdate(game, playerData) {
68
- const sectorCache = this.sectorCache;
69
- sectorCache.updateSectors(game.getCurrentTick(), SECTORS_TO_UPDATE_PER_CYCLE, game.mapApi, playerData);
70
- this.scoutingManager.onAiUpdate(game, playerData, this);
71
- let updateRatio = sectorCache?.getSectorUpdateRatio(game.getCurrentTick() - game.getTickRate() * 60);
72
- if (updateRatio && updateRatio < 1.0) {
73
- this.logger(`${updateRatio * 100.0}% of sectors updated in last 60 seconds.`);
74
- }
75
- const hostilePlayerNames = game
76
- .getPlayers()
77
- .map((name) => game.getPlayerData(name))
78
- .filter((other) => other.name !== playerData.name &&
79
- other.isCombatant &&
80
- !game.areAlliedPlayers(playerData.name, other.name))
81
- .map((other) => other.name);
82
- // Build the quadtree, if this is too slow we should consider doing this periodically.
83
- const hostileUnitIds = game.getVisibleUnits(playerData.name, "hostile", (r) => r.isSelectableCombatant || r.type === ObjectType.Building);
84
- try {
85
- const hostileUnits = hostileUnitIds
86
- .map((id) => game.getUnitData(id))
87
- .filter((unit) => this.isHostileUnit(unit, hostilePlayerNames));
88
- rebuildQuadtree(this.hostileQuadTree, hostileUnits);
89
- }
90
- catch (err) {
91
- // Hack. Will be fixed soon.
92
- console.error(`caught error`, hostileUnitIds);
93
- }
94
- if (game.getCurrentTick() % THREAT_UPDATE_INTERVAL_TICKS == 0) {
95
- let visibility = sectorCache?.getOverallVisibility();
96
- if (visibility) {
97
- this.logger(`${Math.round(visibility * 1000.0) / 10}% of tiles visible. Calculating threat.`);
98
- // Update the global threat cache
99
- this.threatCache = calculateGlobalThreat(game, playerData, visibility);
100
- this.logger(`Threat LAND: Them ${Math.round(this.threatCache.totalOffensiveLandThreat)}, us: ${Math.round(this.threatCache.totalAvailableAntiGroundFirepower)}.`);
101
- this.logger(`Threat DEFENSIVE: Them ${Math.round(this.threatCache.totalDefensiveThreat)}, us: ${Math.round(this.threatCache.totalDefensivePower)}.`);
102
- this.logger(`Threat AIR: Them ${Math.round(this.threatCache.totalOffensiveAirThreat)}, us: ${Math.round(this.threatCache.totalAvailableAntiAirFirepower)}.`);
103
- // As the game approaches 2 hours, be more willing to attack. (15 ticks per second)
104
- const gameLengthFactor = Math.max(0, 1.0 - game.getCurrentTick() / (15 * 7200.0));
105
- this.logger(`Game length multiplier: ${gameLengthFactor}`);
106
- if (!this._shouldAttack) {
107
- // If not attacking, make it harder to switch to attack mode by multiplying the opponent's threat.
108
- this._shouldAttack = this.checkShouldAttack(this.threatCache, 1.25 * gameLengthFactor);
109
- if (this._shouldAttack) {
110
- this.logger(`Globally switched to attack mode.`);
111
- }
112
- }
113
- else {
114
- // If currently attacking, make it harder to switch to defence mode my dampening the opponent's threat.
115
- this._shouldAttack = this.checkShouldAttack(this.threatCache, 0.75 * gameLengthFactor);
116
- if (!this._shouldAttack) {
117
- this.logger(`Globally switched to defence mode.`);
118
- }
119
- }
120
- }
121
- }
122
- // Update rally point every few ticks.
123
- if (game.getCurrentTick() % RALLY_POINT_UPDATE_INTERVAL_TICKS === 0) {
124
- const enemyPlayers = game
125
- .getPlayers()
126
- .filter((p) => p !== playerData.name && !game.areAlliedPlayers(playerData.name, p));
127
- const enemy = game.getPlayerData(enemyPlayers[0]);
128
- this.mainRallyPoint = getPointTowardsOtherPoint(game, playerData.startLocation, enemy.startLocation, 10, 10, 0);
129
- }
130
- }
131
- }
132
- //# sourceMappingURL=awarenessImpl.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"awarenessImpl.js","sourceRoot":"","sources":["../../../src/bot/logic/awarenessImpl.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ArtilleryUnit.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/ArtilleryUnit.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgD,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAEtG,MAAM,OAAO,aAAa;IACtB,YAAoB,YAAoB,EAAU,UAAkB;QAAhD,iBAAY,GAAZ,YAAY,CAAQ;QAAU,eAAU,GAAV,UAAU,CAAQ;IAAG,CAAC;IAExE,oBAAoB,CAChB,IAAa,EACb,UAAsB,EACtB,WAAwB;QAExB,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,6EAA6E;QAC7E,IAAI,WAAW,EAAE;YACb,IAAI,WAAW,CAAC,mBAAmB,GAAG,WAAW,CAAC,iCAAiC,EAAE;gBACjF,OAAO,CACH,IAAI,CAAC,YAAY;oBACjB,CAAC,WAAW,CAAC,iCAAiC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC,CACjG,CAAC;aACL;SACJ;QACD,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED,WAAW,CACP,IAAa,EACb,UAAsB,EACtB,WAAwB,EACxB,WAAgC;QAEhC,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"building.js","sourceRoot":"","sources":["../../../../src/bot/logic/building/building.ts"],"names":[],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import { GameApi, PlayerData, TechnoRules } from "@chronodivide/game-api";
2
- import { GlobalThreat } from "../threat/threat.js";
3
- import { AiBuildingRules, getDefaultPlacementLocation, numBuildingsOwnedOfType } from "./building.js";
4
-
5
- export class ArtilleryUnit implements AiBuildingRules {
6
- constructor(private basePriority: number, private baseAmount: number) {}
7
-
8
- getPlacementLocation(
9
- game: GameApi,
10
- playerData: PlayerData,
11
- technoRules: TechnoRules
12
- ): { rx: number; ry: number } | undefined {
13
- return undefined;
14
- }
15
-
16
- getPriority(
17
- game: GameApi,
18
- playerData: PlayerData,
19
- technoRules: TechnoRules,
20
- threatCache: GlobalThreat | null
21
- ): number {
22
- // If the enemy's defensive power is increasing we will start to build these.
23
- if (threatCache) {
24
- if (threatCache.totalDefensivePower > threatCache.totalAvailableAntiGroundFirepower) {
25
- return (
26
- this.basePriority *
27
- (threatCache.totalAvailableAntiGroundFirepower / Math.max(1, threatCache.totalDefensivePower))
28
- );
29
- }
30
- }
31
- const numOwned = numBuildingsOwnedOfType(game, playerData, technoRules);
32
- return this.basePriority * (1.0 - numOwned / this.baseAmount);
33
- }
34
-
35
- getMaxCount(
36
- game: GameApi,
37
- playerData: PlayerData,
38
- technoRules: TechnoRules,
39
- threatCache: GlobalThreat | null
40
- ): number | null {
41
- return null;
42
- }
43
- }