@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.
- package/.prettierrc +5 -5
- package/TODO.md +18 -0
- package/dist/bot/bot.js +4 -4
- package/dist/bot/bot.js.map +1 -1
- package/dist/bot/logic/awareness.js +8 -8
- package/dist/bot/logic/awareness.js.map +1 -1
- package/dist/bot/logic/building/ArtilleryUnit.js +30 -9
- package/dist/bot/logic/building/antiGroundStaticDefence.js +2 -2
- package/dist/bot/logic/building/antiGroundStaticDefence.js.map +1 -1
- package/dist/bot/logic/building/artilleryUnit.js.map +1 -0
- package/dist/bot/logic/building/basicAirUnit.js +3 -2
- package/dist/bot/logic/building/basicAirUnit.js.map +1 -1
- package/dist/bot/logic/building/basicBuilding.js +1 -1
- package/dist/bot/logic/building/basicBuilding.js.map +1 -1
- package/dist/bot/logic/building/basicGroundUnit.js +4 -3
- package/dist/bot/logic/building/basicGroundUnit.js.map +1 -1
- package/dist/bot/logic/building/building.js +11 -55
- package/dist/bot/logic/building/buildingRules.js +162 -0
- package/dist/bot/logic/building/buildingRules.js.map +1 -0
- package/dist/bot/logic/building/harvester.js.map +1 -1
- package/dist/bot/logic/building/massedAntiGroundUnit.js +20 -0
- package/dist/bot/logic/building/powerPlant.js +1 -1
- package/dist/bot/logic/building/powerPlant.js.map +1 -1
- package/dist/bot/logic/building/queueController.js +1 -1
- package/dist/bot/logic/building/queueController.js.map +1 -1
- package/dist/bot/logic/building/queues.js +19 -0
- package/dist/bot/logic/building/resourceCollectionBuilding.js +5 -3
- package/dist/bot/logic/building/resourceCollectionBuilding.js.map +1 -1
- package/dist/bot/logic/common/scout.js +49 -32
- package/dist/bot/logic/common/scout.js.map +1 -1
- package/dist/bot/logic/common/utils.js +50 -1
- package/dist/bot/logic/common/utils.js.map +1 -1
- package/dist/bot/logic/knowledge.js +1 -0
- package/dist/bot/logic/map/map.js +17 -19
- package/dist/bot/logic/map/map.js.map +1 -1
- package/dist/bot/logic/map/sector.js +10 -13
- package/dist/bot/logic/map/sector.js.map +1 -1
- package/dist/bot/logic/mission/basicMission.js +26 -0
- package/dist/bot/logic/mission/expansionMission.js +32 -0
- package/dist/bot/logic/mission/missionFactories.js +2 -0
- package/dist/bot/logic/mission/missionFactories.js.map +1 -1
- package/dist/bot/logic/mission/missions/attackMission.js +4 -4
- package/dist/bot/logic/mission/missions/attackMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/defenceMission.js +2 -1
- package/dist/bot/logic/mission/missions/defenceMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/engineerMission.js +34 -0
- package/dist/bot/logic/mission/missions/engineerMission.js.map +1 -0
- package/dist/bot/logic/mission/missions/retreatMission.js.map +1 -1
- package/dist/bot/logic/squad/behaviours/attackSquad.js +56 -63
- package/dist/bot/logic/squad/behaviours/combatSquad.js +18 -19
- package/dist/bot/logic/squad/behaviours/combatSquad.js.map +1 -1
- package/dist/bot/logic/squad/behaviours/common.js +19 -2
- package/dist/bot/logic/squad/behaviours/common.js.map +1 -1
- package/dist/bot/logic/squad/behaviours/defenceSquad.js +2 -15
- package/dist/bot/logic/squad/behaviours/engineerSquad.js +36 -0
- package/dist/bot/logic/squad/behaviours/engineerSquad.js.map +1 -0
- package/dist/bot/logic/squad/behaviours/retreatSquad.js.map +1 -1
- package/dist/bot/logic/squad/behaviours/scoutingSquad.js +21 -17
- package/dist/bot/logic/squad/behaviours/scoutingSquad.js.map +1 -1
- package/dist/bot/logic/squad/behaviours/squadExpansion.js +31 -0
- package/dist/bot/logic/squad/behaviours/squadScouters.js +8 -0
- package/dist/bot/logic/squad/squad.js +5 -8
- package/dist/bot/logic/squad/squad.js.map +1 -1
- package/dist/bot/logic/squad/squadBehaviour.js.map +1 -1
- package/dist/bot/logic/squad/squadController.js +2 -3
- package/dist/bot/logic/squad/squadController.js.map +1 -1
- package/dist/bot/logic/threat/threatCalculator.js +4 -3
- package/dist/bot/logic/threat/threatCalculator.js.map +1 -1
- package/dist/exampleBot.js +6 -6
- package/dist/exampleBot.js.map +1 -1
- package/package.json +5 -9
- package/src/bot/bot.ts +8 -10
- package/src/bot/logic/awareness.ts +13 -17
- package/src/bot/logic/building/antiGroundStaticDefence.ts +13 -9
- package/src/bot/logic/building/artilleryUnit.ts +65 -0
- package/src/bot/logic/building/basicAirUnit.ts +10 -8
- package/src/bot/logic/building/basicBuilding.ts +1 -1
- package/src/bot/logic/building/basicGroundUnit.ts +4 -4
- package/src/bot/logic/building/{building.ts → buildingRules.ts} +94 -48
- package/src/bot/logic/building/harvester.ts +7 -4
- package/src/bot/logic/building/powerPlant.ts +1 -1
- package/src/bot/logic/building/queueController.ts +1 -1
- package/src/bot/logic/building/resourceCollectionBuilding.ts +8 -12
- package/src/bot/logic/common/scout.ts +83 -38
- package/src/bot/logic/common/utils.ts +65 -1
- package/src/bot/logic/map/map.ts +27 -31
- package/src/bot/logic/map/sector.ts +17 -21
- package/src/bot/logic/mission/missionFactories.ts +2 -0
- package/src/bot/logic/mission/missions/attackMission.ts +27 -27
- package/src/bot/logic/mission/missions/defenceMission.ts +3 -3
- package/src/bot/logic/mission/missions/engineerMission.ts +61 -0
- package/src/bot/logic/mission/missions/retreatMission.ts +2 -2
- package/src/bot/logic/squad/behaviours/combatSquad.ts +24 -26
- package/src/bot/logic/squad/behaviours/common.ts +33 -3
- package/src/bot/logic/squad/behaviours/engineerSquad.ts +53 -0
- package/src/bot/logic/squad/behaviours/retreatSquad.ts +2 -2
- package/src/bot/logic/squad/behaviours/scoutingSquad.ts +26 -28
- package/src/bot/logic/squad/squad.ts +8 -13
- package/src/bot/logic/squad/squadBehaviour.ts +9 -10
- package/src/bot/logic/squad/squadController.ts +2 -5
- package/src/bot/logic/threat/threat.ts +15 -15
- package/src/bot/logic/threat/threatCalculator.ts +4 -3
- package/src/exampleBot.ts +6 -6
- package/dist/bot/logic/awarenessImpl.js +0 -132
- package/dist/bot/logic/awarenessImpl.js.map +0 -1
- package/dist/bot/logic/building/ArtilleryUnit.js.map +0 -1
- package/dist/bot/logic/building/building.js.map +0 -1
- 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
|
-
}
|