@supalosa/chronodivide-bot 0.4.0 → 0.5.2
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/.env.template +5 -0
- package/README.md +54 -47
- package/dist/bot/bot.js +14 -35
- package/dist/bot/bot.js.map +1 -1
- package/dist/bot/logic/awareness.js +13 -8
- package/dist/bot/logic/awareness.js.map +1 -1
- package/dist/bot/logic/building/ArtilleryUnit.js +2 -29
- package/dist/bot/logic/building/antiAirStaticDefence.js +43 -0
- package/dist/bot/logic/building/antiAirStaticDefence.js.map +1 -0
- package/dist/bot/logic/building/antiGroundStaticDefence.js +10 -20
- package/dist/bot/logic/building/antiGroundStaticDefence.js.map +1 -1
- package/dist/bot/logic/building/artilleryUnit.js.map +1 -1
- package/dist/bot/logic/building/basicAirUnit.js +2 -23
- package/dist/bot/logic/building/basicAirUnit.js.map +1 -1
- package/dist/bot/logic/building/basicBuilding.js +3 -2
- package/dist/bot/logic/building/basicBuilding.js.map +1 -1
- package/dist/bot/logic/building/basicGroundUnit.js +2 -43
- package/dist/bot/logic/building/basicGroundUnit.js.map +1 -1
- package/dist/bot/logic/building/buildingRules.js +15 -9
- package/dist/bot/logic/building/buildingRules.js.map +1 -1
- package/dist/bot/logic/building/common.js +19 -0
- package/dist/bot/logic/building/common.js.map +1 -0
- package/dist/bot/logic/building/harvester.js +2 -1
- package/dist/bot/logic/building/harvester.js.map +1 -1
- package/dist/bot/logic/building/queueController.js +69 -42
- package/dist/bot/logic/building/queueController.js.map +1 -1
- package/dist/bot/logic/common/utils.js +21 -0
- package/dist/bot/logic/common/utils.js.map +1 -1
- package/dist/bot/logic/composition/alliedCompositions.js +13 -0
- package/dist/bot/logic/composition/alliedCompositions.js.map +1 -0
- package/dist/bot/logic/composition/common.js +2 -0
- package/dist/bot/logic/composition/common.js.map +1 -0
- package/dist/bot/logic/composition/sovietCompositions.js +13 -0
- package/dist/bot/logic/composition/sovietCompositions.js.map +1 -0
- package/dist/bot/logic/mission/actionBatcher.js +92 -0
- package/dist/bot/logic/mission/actionBatcher.js.map +1 -0
- package/dist/bot/logic/mission/behaviours/combatSquad.js +124 -0
- package/dist/bot/logic/mission/behaviours/combatSquad.js.map +1 -0
- package/dist/bot/logic/mission/behaviours/common.js +56 -0
- package/dist/bot/logic/mission/behaviours/common.js.map +1 -0
- package/dist/bot/logic/mission/behaviours/engineerSquad.js +39 -0
- package/dist/bot/logic/mission/behaviours/engineerSquad.js.map +1 -0
- package/dist/bot/logic/mission/behaviours/expansionSquad.js +46 -0
- package/dist/bot/logic/mission/behaviours/expansionSquad.js.map +1 -0
- package/dist/bot/logic/mission/behaviours/retreatSquad.js +31 -0
- package/dist/bot/logic/mission/behaviours/retreatSquad.js.map +1 -0
- package/{src/bot/logic/squad/behaviours/scoutingSquad.ts → dist/bot/logic/mission/behaviours/scoutingSquad.js} +27 -51
- package/dist/bot/logic/mission/behaviours/scoutingSquad.js.map +1 -0
- package/dist/bot/logic/mission/mission.js +91 -19
- package/dist/bot/logic/mission/mission.js.map +1 -1
- package/dist/bot/logic/mission/missionController.js +262 -21
- package/dist/bot/logic/mission/missionController.js.map +1 -1
- package/dist/bot/logic/mission/missions/attackMission.js +113 -39
- package/dist/bot/logic/mission/missions/attackMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/basicMission.js +13 -0
- package/dist/bot/logic/mission/missions/basicMission.js.map +1 -0
- package/dist/bot/logic/mission/missions/defenceMission.js +43 -28
- package/dist/bot/logic/mission/missions/defenceMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/engineerMission.js +37 -7
- package/dist/bot/logic/mission/missions/engineerMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/expansionMission.js +42 -6
- package/dist/bot/logic/mission/missions/expansionMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/missionBehaviour.js +2 -0
- package/dist/bot/logic/mission/missions/missionBehaviour.js.map +1 -0
- package/dist/bot/logic/mission/missions/retreatMission.js +31 -5
- package/dist/bot/logic/mission/missions/retreatMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/scoutingMission.js +103 -6
- package/dist/bot/logic/mission/missions/scoutingMission.js.map +1 -1
- package/dist/bot/logic/mission/missions/squads/combatSquad.js +116 -0
- package/dist/bot/logic/mission/missions/squads/combatSquad.js.map +1 -0
- package/dist/bot/logic/mission/missions/squads/common.js +58 -0
- package/dist/bot/logic/mission/missions/squads/common.js.map +1 -0
- package/dist/bot/logic/mission/missions/squads/squad.js +2 -0
- package/dist/bot/logic/mission/missions/squads/squad.js.map +1 -0
- package/dist/bot/logic/squad/squadController.js +6 -2
- package/dist/bot/logic/squad/squadController.js.map +1 -1
- package/dist/bot/logic/threat/threatCalculator.js +9 -9
- package/dist/bot/logic/threat/threatCalculator.js.map +1 -1
- package/dist/exampleBot.js +50 -18
- package/dist/exampleBot.js.map +1 -1
- package/package.json +5 -4
- package/src/bot/bot.ts +19 -51
- package/src/bot/logic/awareness.ts +34 -22
- package/src/bot/logic/building/antiAirStaticDefence.ts +64 -0
- package/src/bot/logic/building/antiGroundStaticDefence.ts +7 -20
- package/src/bot/logic/building/artilleryUnit.ts +2 -28
- package/src/bot/logic/building/basicAirUnit.ts +2 -33
- package/src/bot/logic/building/basicBuilding.ts +8 -6
- package/src/bot/logic/building/basicGroundUnit.ts +2 -46
- package/src/bot/logic/building/buildingRules.ts +15 -9
- package/src/bot/logic/building/common.ts +23 -0
- package/src/bot/logic/building/harvester.ts +2 -1
- package/src/bot/logic/building/queueController.ts +98 -43
- package/src/bot/logic/common/utils.ts +28 -0
- package/src/bot/logic/composition/alliedCompositions.ts +22 -0
- package/src/bot/logic/composition/common.ts +3 -0
- package/src/bot/logic/composition/sovietCompositions.ts +21 -0
- package/src/bot/logic/{squad/behaviours → mission}/actionBatcher.ts +66 -7
- package/src/bot/logic/mission/mission.ts +186 -37
- package/src/bot/logic/mission/missionController.ts +340 -31
- package/src/bot/logic/mission/missionFactories.ts +3 -3
- package/src/bot/logic/mission/missions/attackMission.ts +181 -44
- package/src/bot/logic/mission/missions/defenceMission.ts +72 -45
- package/src/bot/logic/mission/missions/engineerMission.ts +67 -15
- package/src/bot/logic/mission/missions/expansionMission.ts +67 -14
- package/src/bot/logic/mission/missions/retreatMission.ts +50 -6
- package/src/bot/logic/mission/missions/scoutingMission.ts +138 -14
- package/src/bot/logic/{squad/behaviours → mission/missions/squads}/combatSquad.ts +56 -33
- package/src/bot/logic/{squad/behaviours → mission/missions/squads}/common.ts +11 -17
- package/src/bot/logic/mission/missions/squads/squad.ts +19 -0
- package/src/bot/logic/threat/threatCalculator.ts +10 -10
- package/src/exampleBot.ts +56 -24
- package/.prettierrc +0 -5
- package/TODO.md +0 -15
- package/rules.ini +0 -23126
- package/src/bot/logic/mission/missions/oneTimeMission.ts +0 -33
- package/src/bot/logic/squad/behaviours/engineerSquad.ts +0 -58
- package/src/bot/logic/squad/behaviours/expansionSquad.ts +0 -64
- package/src/bot/logic/squad/behaviours/retreatSquad.ts +0 -50
- package/src/bot/logic/squad/squad.ts +0 -165
- package/src/bot/logic/squad/squadBehaviour.ts +0 -66
- package/src/bot/logic/squad/squadBehaviours.ts +0 -8
- package/src/bot/logic/squad/squadController.ts +0 -271
package/src/exampleBot.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
import
|
|
1
|
+
import "dotenv/config";
|
|
2
|
+
import { Agent, Bot, CreateBaseOpts, CreateOfflineOpts, CreateOnlineOpts, cdapi } from "@chronodivide/game-api";
|
|
2
3
|
import { SupalosaBot } from "./bot/bot.js";
|
|
3
4
|
|
|
5
|
+
// The game will automatically end after this time. This is to handle stalemates.
|
|
6
|
+
const MAX_GAME_LENGTH_SECONDS: number | null = 7200; // 7200 = two hours
|
|
7
|
+
|
|
4
8
|
async function main() {
|
|
5
9
|
/*
|
|
6
10
|
Ladder maps:
|
|
@@ -15,6 +19,19 @@ async function main() {
|
|
|
15
19
|
|
|
16
20
|
Other maps:
|
|
17
21
|
mp03t4 large map, no oil derricks
|
|
22
|
+
mp02t2.map,mp06t2.map,mp11t2.map,mp08t2.map,mp21s2.map,mp14t2.map,mp29u2.map,mp31s2.map,mp18s3.map,mp09t3.map,mp01t4.map,mp03t4.map,mp05t4.map,mp10s4.map,mp12s4.map,mp13s4.map,mp19t4.map,
|
|
23
|
+
mp15s4.map,mp16s4.map,mp23t4.map,mp33u4.map,mp34u4.map,mp17t6.map,mp20t6.map,mp25t6.map,mp26s6.map,mp30s6.map,mp22s8.map,mp27t8.map,mp32s8.map,mp06mw.map,mp08mw.map,mp14mw.map,mp29mw.map,
|
|
24
|
+
mp05mw.map,mp13mw.map,mp15mw.map,mp16mw.map,mp23mw.map,mp17mw.map,mp25mw.map,mp30mw.map,mp22mw.map,mp27mw.map,mp32mw.map,mp09du.map,mp01du.map,mp05du.map,mp13du.map,mp15du.map,mp18du.map,
|
|
25
|
+
mp24du.map,mp17du.map,mp25du.map,mp27du.map,mp32du.map,c1m1a.map,c1m1b.map,c1m1c.map,c1m2a.map,c1m2b.map,c1m2c.map,c1m3a.map,c1m3b.map,c1m3c.map,c1m4a.map,c1m4b.map,c1m4c.map,c1m5a.map,
|
|
26
|
+
c1m5b.map,c1m5c.map,c2m1a.map,c2m1b.map,c2m1c.map,c2m2a.map,c2m2b.map,c2m2c.map,c2m3a.map,c2m3b.map,c2m3c.map,c2m4a.map,c2m4b.map,c2m4c.map,c2m5a.map,c2m5b.map,c2m5c.map,c3m1a.map,c3m1b.map,
|
|
27
|
+
c3m1c.map,c3m2a.map,c3m2b.map,c3m2c.map,c3m3a.map,c3m3b.map,c3m3c.map,c3m4a.map,c3m4b.map,c3m4c.map,c3m5a.map,c3m5b.map,c3m5c.map,c4m1a.map,c4m1b.map,c4m1c.map,c4m2a.map,c4m2b.map,c4m2c.map,
|
|
28
|
+
c4m3a.map,c4m3b.map,c4m3c.map,c4m4a.map,c4m4b.map,c4m4c.map,c4m5a.map,c4m5b.map,c4m5c.map,c5m1a.map,c5m1b.map,c5m1c.map,c5m2a.map,c5m2b.map,c5m2c.map,c5m3a.map,c5m3b.map,c5m3c.map,c5m4a.map,
|
|
29
|
+
c5m4b.map,c5m4c.map,c5m5a.map,c5m5b.map,c5m5c.map,tn01t2.map,tn01mw.map,tn04t2.map,tn04mw.map,tn02s4.map,tn02mw.map,amazon01.map,eb1.map,eb2.map,eb3.map,eb4.map,eb5.map,invasion.map,arena.map,
|
|
30
|
+
barrel.map,bayopigs.map,bermuda.map,break.map,carville.map,deadman.map,death.map,disaster.map,dustbowl.map,goldst.map,grinder.map,hailmary.map,hills.map,kaliforn.map,killer.map,lostlake.map,
|
|
31
|
+
newhghts.map,oceansid.map,pacific.map,potomac.map,powdrkeg.map,rockets.map,roulette.map,round.map,seaofiso.map,shrapnel.map,tanyas.map,tower.map,tsunami.map,valley.map,xmas.map,yuriplot.map,
|
|
32
|
+
cavernsofsiberia.map,countryswingfixed.map,4_country_swing_le_v2.map,dorado_descent_yr_port.mpr,dryheat.map,dunepatrolremake.map,heckbvb.map,heckcorners.map,heckgolden.mpr,heckcorners_b.map,
|
|
33
|
+
heckcorners_b_golden.map,hecklvl.map,heckrvr.map,hecktvt.map,isleland.map,jungleofvietnam.map,2_malibu_cliffs_le.map,mojosprt.map,4_montana_dmz_le.map,6_near_ore_far.map,8_near_ore_far.map,
|
|
34
|
+
offensedefense.map,ore2_startfixed.map,rekoool_fast_6players.mpr,rekoool_fast_8players.mpr,riverram.map,tourofegypt.map,unrepent.map,sinkswim_yr_port.map
|
|
18
35
|
*/
|
|
19
36
|
const mapName = "mp03t4.map";
|
|
20
37
|
// Bot names must be unique in online mode
|
|
@@ -43,42 +60,57 @@ async function main() {
|
|
|
43
60
|
8=Russians
|
|
44
61
|
*/
|
|
45
62
|
|
|
46
|
-
const
|
|
47
|
-
|
|
63
|
+
const baseSettings: CreateBaseOpts = {
|
|
64
|
+
buildOffAlly: false,
|
|
65
|
+
cratesAppear: false,
|
|
66
|
+
credits: 10000,
|
|
67
|
+
gameMode: cdapi.getAvailableGameModes(mapName)[0],
|
|
68
|
+
gameSpeed: 6,
|
|
69
|
+
mapName,
|
|
70
|
+
mcvRepacks: true,
|
|
71
|
+
shortGame: true,
|
|
72
|
+
superWeapons: false,
|
|
73
|
+
unitCount: 0,
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const onlineSettings: CreateOnlineOpts = {
|
|
77
|
+
...baseSettings,
|
|
78
|
+
online: true,
|
|
48
79
|
serverUrl: process.env.SERVER_URL!,
|
|
49
80
|
clientUrl: process.env.CLIENT_URL!,
|
|
50
|
-
agents: [
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
],
|
|
81
|
+
agents: [
|
|
82
|
+
new SupalosaBot(process.env.ONLINE_BOT_NAME ?? firstBotName, "Americans"),
|
|
83
|
+
{ name: process.env.PLAYER_NAME ?? secondBotName, country: "French" },
|
|
84
|
+
] as [Bot, ...Agent[]],
|
|
85
|
+
botPassword: process.env.ONLINE_BOT_PASSWORD ?? "default",
|
|
54
86
|
};
|
|
55
87
|
|
|
56
|
-
const
|
|
57
|
-
|
|
88
|
+
const offlineSettings1v1: CreateOfflineOpts = {
|
|
89
|
+
...baseSettings,
|
|
90
|
+
online: false,
|
|
91
|
+
agents: [
|
|
92
|
+
new SupalosaBot(firstBotName, "French", [], true).setDebugMode(true),
|
|
93
|
+
new SupalosaBot(secondBotName, "Russians", [], false),
|
|
94
|
+
],
|
|
95
|
+
};
|
|
58
96
|
|
|
59
|
-
const
|
|
97
|
+
const offlineSettings2v2: CreateOfflineOpts = {
|
|
98
|
+
...baseSettings,
|
|
99
|
+
online: false,
|
|
60
100
|
agents: [
|
|
61
101
|
new SupalosaBot(firstBotName, "French", [firstBotName], false),
|
|
62
|
-
|
|
102
|
+
new SupalosaBot(secondBotName, "Russians", [firstBotName], true).setDebugMode(true),
|
|
63
103
|
new SupalosaBot(thirdBotName, "Russians", [fourthBotName], false),
|
|
64
104
|
new SupalosaBot(fourthBotName, "French", [thirdBotName], false),
|
|
65
105
|
],
|
|
66
106
|
};
|
|
67
107
|
|
|
68
|
-
const game = await cdapi.createGame(
|
|
69
|
-
...offlineSettings,
|
|
70
|
-
buildOffAlly: false,
|
|
71
|
-
cratesAppear: false,
|
|
72
|
-
credits: 10000,
|
|
73
|
-
gameMode: cdapi.getAvailableGameModes(mapName)[0],
|
|
74
|
-
gameSpeed: 6,
|
|
75
|
-
mapName,
|
|
76
|
-
mcvRepacks: true,
|
|
77
|
-
shortGame: true,
|
|
78
|
-
superWeapons: false,
|
|
79
|
-
unitCount: 0,
|
|
80
|
-
});
|
|
108
|
+
const game = await cdapi.createGame(process.env.ONLINE_MATCH ? onlineSettings : offlineSettings1v1);
|
|
81
109
|
while (!game.isFinished()) {
|
|
110
|
+
if (!!MAX_GAME_LENGTH_SECONDS && game.getCurrentTick() / 15 > MAX_GAME_LENGTH_SECONDS) {
|
|
111
|
+
console.log(`Game forced to end due to timeout`);
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
82
114
|
await game.update();
|
|
83
115
|
}
|
|
84
116
|
|
package/.prettierrc
DELETED
package/TODO.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# TODO for Supabot
|
|
2
|
-
|
|
3
|
-
Urgent
|
|
4
|
-
|
|
5
|
-
- leader pathfinding
|
|
6
|
-
|
|
7
|
-
Medium priority
|
|
8
|
-
|
|
9
|
-
- detect naval map (can scan tiles to check if more of the map is water or not)
|
|
10
|
-
- handle naval construction
|
|
11
|
-
- detect islands and implement island-hopping
|
|
12
|
-
|
|
13
|
-
Not urgent
|
|
14
|
-
|
|
15
|
-
- Remove squad paradigm, all unit-related for mission can just go into the mission.
|