Skip to content

Commit 5d783de

Browse files
committed
Merge branch 'main' into 2026-01-31-eve-online-local-watch
2 parents f68b209 + c4d73f8 commit 5d783de

File tree

54 files changed

+4222
-1094
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+4222
-1094
lines changed

.github/copilot-instructions.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
For any adaptations of the code, apply </guide/general-bot-programming-guide.md>
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: test-and-publish
2+
3+
on:
4+
push:
5+
workflow_dispatch:
6+
pull_request_review:
7+
types: [submitted]
8+
9+
jobs:
10+
build:
11+
12+
runs-on: ubuntu-24.04
13+
14+
steps:
15+
16+
- name: Avoid git mutating files on checkout
17+
run: |
18+
git config --global core.autocrlf false
19+
20+
- uses: actions/checkout@v4
21+
22+
- name: Install elm-format
23+
run: npm install -g elm-format
24+
25+
- name: Check formatting in Elm program code
26+
run: elm-format --validate ./implement/

.vscode/extensions.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"recommendations": [
3+
"pine.pine"
4+
]
5+
}

guide/elvenar/elvenar-bot.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ If the BotLab client is not already installed on your machine, follow the guide
99
The BotLab client is a tool for developing bots and also makes running bots easier with graphical user interfaces for configuration.
1010

1111
In the BotLab client, load the bot by entering the following link in the 'Select Bot' view:
12-
<https://catalog.botlab.org/3e28ced601b84b5c>
12+
<https://catalog.botlab.org/7f6d59000a220ea0>
1313

1414
There is a detailed walkthrough video on how to load and run a bot at <https://to.botlab.org/guide/video/how-to-run-a-bot-live>
1515

guide/eve-online/eve-online-combat-anomaly-bot.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ If the BotLab client is not already installed on your machine, follow the guide
2626
The BotLab client is a tool for developing bots and also makes running bots easier with graphical user interfaces for configuration.
2727

2828
In the BotLab client, load the bot by entering the following link in the 'Select Bot' view:
29-
<https://catalog.botlab.org/652cc2a5b91ca558>
29+
<https://catalog.botlab.org/42b27878d6914b67>
3030

3131
There is a detailed walkthrough video on how to load and run a bot at <https://to.botlab.org/guide/video/how-to-run-a-bot-live>
3232

@@ -48,6 +48,7 @@ All settings are optional; you only need them in case the defaults don't fit you
4848
+ `anomaly-wait-time`: Minimum time to wait after arriving in an anomaly before considering it finished. Use this if you see anomalies in which rats arrive later than you arrive on grid.
4949
+ `warp-to-anomaly-distance`: Defaults to 'Within 0 m'
5050
+ `deactivate-module-on-warp` : Name of a module to deactivate when warping. Enter the name as it appears in the tooltip. Use this setting multiple times to select multiple modules.
51+
+ `hide-location-name` : Name of a location to hide. Enter the name as it appears in the 'Locations' window.
5152

5253
When using more than one setting, start a new line for each setting in the text input field.
5354
Here is an example of a complete settings string:
@@ -58,6 +59,7 @@ anomaly-name = Drone Horde
5859
hide-when-neutral-in-local = yes
5960
avoid-rat = Infested Carrier
6061
activate-module-always = shield hardener
62+
hide-location-name = Dock me here
6163
```
6264

6365
----

guide/eve-online/eve-online-mining-bot.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ If the BotLab client is not already installed on your machine, follow the guide
3131
The BotLab client is a tool for developing bots and also makes running bots easier with graphical user interfaces for configuration.
3232

3333
In the BotLab client, load the bot by entering the following link in the 'Select Bot' view:
34-
<https://catalog.botlab.org/c35c830f69125b42>
34+
<https://catalog.botlab.org/acc1d7748ad9838b>
3535

3636
There is a detailed walkthrough video on how to load and run a bot at <https://to.botlab.org/guide/video/how-to-run-a-bot-live>
3737

@@ -58,21 +58,27 @@ To give an overview of the performance of the bot, it displays statistics like t
5858

5959
All settings are optional; you only need them in case the defaults don't fit your use-case.
6060

61+
+ `mining-site` : Name of a mining location, as it appears in the 'Label' column of the 'Locations' window.
6162
+ `unload-station-name` : Name of a station to dock to when the mining hold is full.
6263
+ `unload-structure-name` : Name of a structure to dock to when the mining hold is full.
6364
+ `activate-module-always` : Text found in tooltips of ship modules that should always be active. For example: "shield hardener".
6465
+ `hide-when-neutral-in-local` : Should we hide when a neutral or hostile pilot appears in the local chat? The only supported values are `no` and `yes`.
65-
+ `unload-fleet-hangar-percent` : This will make the bot to unload the mining hold at least XX percent full to the fleet hangar, you must be in a fleet with an orca or a rorqual and the fleet hangar must be visible within the inventory window.
66+
+ `unload-fleet-hangar-percent` : This will make the bot unload the mining hold at least XX percent full to the fleet hangar, you must be in a fleet with an orca or a rorqual and the fleet hangar must be visible within the inventory window.
6667
+ `dock-when-without-drones` : This will make the bot dock when it's out of drones. The only supported values are `no` and `yes`.
6768
+ `repair-before-undocking` : Repair the ship at the station before undocking. The only supported values are `no` and `yes`.
69+
+ `afterburner-module-text` : Text found in tooltips of the afterburner module.
70+
+ `afterburner-distance-threshold` : Distance threshold (in meters) at which to activate/deactivate the afterburner.
71+
+ `return-drones-when-no-rats-visible` : Return drones to bay when no rats are visible in space. Default is `yes`.
6872

6973
When using more than one setting, start a new line for each setting in the text input field.
7074
Here is an example of a complete settings string:
7175

7276
```
77+
mining-site = mining bookmark label
7378
unload-station-name = Noghere VII - Moon 15
7479
activate-module-always = shield hardener
7580
activate-module-always = afterburner
81+
return-drones-when-no-rats-visible = no
7682
```
7783

7884
The bot searches the configured structure or station name in the 'Locations' window and all overview windows.

guide/eve-online/eve-online-warp-to-0-autopilot-bot.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ If the BotLab client is not already installed on your machine, follow the guide
1010
The BotLab client is a tool for developing bots and also makes running bots easier with graphical user interfaces for configuration.
1111

1212
In the BotLab client, load the bot by entering the following link in the 'Select Bot' view:
13-
<https://catalog.botlab.org/687f249e812a6187>
13+
<https://catalog.botlab.org/5f9b88a6fcafa8c8>
1414

1515
There is a detailed walkthrough video on how to load and run a bot at <https://to.botlab.org/guide/video/how-to-run-a-bot-live>
1616

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# General Bot Programming Guide
2+
3+
BotLab offers a system to automate activities in video games. As part of this system, we translate descriptions of these activities into a formal language that enables efficient operation and evolution at scale.
4+
5+
This document is a guide to the formalization process, distilling common learnings on how to go about adapting bots.
6+
7+
## General Rules for Bot Program Code
8+
9+
In addition to using a formal and explicit form, distilled bot program code follows additional rules to ensure high reliability and reusability. BotLab automatically enforces these rules: When looking at existing or future bot programs, we can see that these apply without exception.
10+
11+
We don't need to worry about code breaking these rules when running a bot, since BotLab tools apply them automatically. However, when working on adapting a bot, considering these rules from the start helps avoid wasting time on incompatible implementation plans.
12+
13+
Planning program structures is about modelling data flow and control flow, and the following rules ensure that both are transparent.
14+
15+
### No-Side-Effects Rule
16+
17+
There are no hidden effects from the bot to the game or the outside world: The bot program explicitly communicates all effects by returning them from the 'main' entry function called by the runtime. In this system of managed effects, an effect in the bot program code is modeled as a data structure, encoding the type of effect (e.g., move mouse cursor in game) and related parameters (new x-coordinate, y-coordinate) Any function in the bot program can create these, but to apply them they need to be returned eventually from the entry function.
18+
19+
There are no hidden effects in the outside world on the bot: The classic example of such a hidden effect is getting 'the current time' in some subroutine. To make this information flow from the outside world transparent and explicit, the runtime hands it to the bot program as an explicit parameter to the 'main' entry function of the bot program.
20+
21+
This rule also enables the repeatable, deterministic session replay we use to train and test new bots efficiently.
22+
23+
### No-Mutations Rule
24+
25+
The bot program code does not assign new values to existing names or declarations. The content of a declaration is only assigned once at creation and never changed. This rule has implications for how we update a bot's memory, the past observations it needs to remember to make decisions in the future.
26+
27+
To make changing the program state possible, one single assignment in the program code replaces the complete program state at once. The bot returns the new program state from its 'main' entry function.
28+
29+
The runtime calls the 'main' entry function of the bot program whenever there is new information to process, and the bot can then return the new program state and a list of effects to apply to the game client.
30+
31+
## Structuring the Development Process
32+
33+
When we adapt a bot program, it's because we want to see a different behavior of the bot. It means we have at least one example of a situation in which the existing bot program behaved differently from how we would like.
34+
35+
The development process starts by identifying at least one moment in which the bot should have taken a (different) action in the game.
36+
37+
Next, we list all factors that contribute to our preference for the desired action in the game.
38+
39+
## Planning Bot Program Changes
40+
41+
When adapting a bot program, we often don't start from zero, but with an existing program we want to build on. That existing program already encodes lots of behavior that we distilled from many learnings about the mechanics of the game world and the game client.
42+
Therefore, in most cases, we search for an implementation that fits well with the current overall program structure.
43+
44+
Most bot program frameworks follow an architecture dividing programs into the following two phases:
45+
46+
+ Aggregate and consolidate bot memory.
47+
+ Select an input to send to the game.
48+
49+
For example, this bot for EVE Online uses a function declared as `updateMemoryForNewReadingFromGame` to update the bot's memory about the game world: <https://github.com/Viir/bots/blob/bb872a5e3a1caa0d4b1a6f02f9f347bb806dfedd/implement/applications/eve-online/eve-online-combat-anomaly-bot/Bot.elm#L1970-L2100>
50+
51+
```Elm
52+
updateMemoryForNewReadingFromGame : UpdateMemoryContext -> BotMemory -> BotMemory
53+
updateMemoryForNewReadingFromGame context botMemoryBefore =
54+
55+
```
56+
57+
The way that this bot program is structured, all the aggregating of information that the bot should remember in future steps should go into this function.
58+
Also, if we find that it should remember something that it has not so far, we might want to expand the `BotMemory` declaration to support that new kind of memory.

guide/guides-overview.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
What is more interesting than playing video games? - Programming bots to play video games!
1+
# AI playing video games
22

33
## Guides
44

@@ -20,6 +20,8 @@ What is more interesting than playing video games? - Programming bots to play vi
2020

2121
+ [Walkthrough, Programming, Video] Combining behaviors of multiple bot programs: <https://youtu.be/ALXsLznDOfM>
2222

23+
+ General Bot Programming Guide: [general-bot-programming-guide.md](./general-bot-programming-guide.md)
24+
2325
+ Learn how to develop EVE Online bots and intel tools. Discover the engineering methods and tools behind the most advanced bots: <https://to.botlab.org/guide/developing-for-eve-online>
2426

2527
+ Syntax of the Elm programming language: <https://elm-lang.org/docs/syntax>

guide/how-to-install-the-botlab-client-and-register-the-botlab-command.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ operable program or batch file.
1111

1212
The BotLab client program is a tool for developing and running bots, and many guides assume it is registered on your Windows system. To make these guides and scripts work, follow these steps:
1313

14-
+ Download the file from <https://botlab.blob.core.windows.net/library/by-name/2024-11-05-botlab-client.zip>
14+
+ Download the file from <https://botlab.blob.core.windows.net/library/by-name/2026-01-03-botlab-client.zip>
1515
+ Extract the downloaded zip archive. The extraction will give you a file named `BotLab.exe`.
1616

1717
![BotLab client executable file in Windows Explorer](./image/2024-02-18-botlab-client-executable-file-in-explorer.png)

0 commit comments

Comments
 (0)