BotLab Devlog

@Kawz helped to make the most popular bot even more robust. They discovered a scenario were the Tribal Wars 2 farmbot did not work correctly. This bug caused the bot sometimes not to see all owned villages, which in turn resulted in farm cycles ending too early.

Tribal Wars 2 farmbot problem before 2020-07-06

Based on their report, the root cause was identified quickly, leading to fixing the code and version 2020-07-06 of the farmbot.

Debugging apps for EVE Online became much easier this week.

Have you ever wondered what the bot did when you weren’t looking? What kind of NPC destroyed your ship? Or maybe it was another player? The time machine helps you answer these questions.

The development tools introduced this week help us travel back in time to examine past states of an app and see what happened in the game at that time. Using this tool, you also have a new way to check if the code you wrote worked as expected. I added the section “Observing and Inspecting an App” to the guide on developing for EVE Online, explaining how the new tools work: bots/ at f69463028e163511e870ceb03c2885d7f582de91 · Viir/bots · GitHub

@BrianCorner explored how you can repair your ship in EVE Online.

Adding this behavior to your bot means further reducing the time spent on manual maintenance.
They also provided the training data for the parsing of the repair shop window from the game client’s user interface. The parsing framework now has a guide to this window in the new repairShopWindow field:

BrianCorner repair ship guide

1 Like

There is a new video for EVE Online developers:

Here we take a look at how you make a bot see anomalies and other pilots in the overview. You can use the functions introduced here to get more information about your surroundings in the game. These building blocks are also useful if you want to make your bot remember in what anomalies it found other pilots on arrival.

Also interesting for developers in general: In this video, we also see how to use simulations to quickly test new reading and parsing code without the need to start a game client.

I have news for developers regarding app-settings:

You can now use line-breaks to organize settings strings for your apps. Version 2020-08-07 of the botengine for Windows supports encoding line breaks as \n in the app-settings string. To make it easy for users to compose these strings, the configuration interface on the catalog entries for apps now contains this multiline textbox for the app-settings string:

new user interface to configuring how to run an app

To see how to adapt your app to support the line-breaks to separate assignments in the app-settings, see the example projects’ changes at Improve readability in app-settings · Viir/bots@1ab3cf1 · GitHub

Version 2020-08-14 of the botengine for Windows brings a new feature to simulations.

Replacing App-Settings in a Session Replay

When developing a new feature for your app, you sometimes want to add a new app-setting to let users configure that feature. But how do you test this with a session replay? The app-settings are defined in the session events, so we don’t want an exact replay but one with modified events.

To make modifying the app-settings events easy, the simulate-run command offers the --replace-app-settings option. When you use this option, the engine replaces the app-settings string with the new value for each app-settings event in the loaded session, before giving it to the app.

Forgot to mention this earlier: @Threepwood shared numerous functions for parsing the user interface of the EVE Online game client. Many of these support running missions, including reading the agents in the station window and information about the current solar system. You can see the new parsing functions here:

There is a new version of the AppSettings module to build configurable apps. The latest version provides more specific and more detailed error messages when parsing settings strings, so users don’t get stuck trying to figure out the configuration.

What is the AppSettings module? Many apps support configuration with an app-settings string like this:

anomaly-name = Drone Patrol
anomaly-name = Drone Horde
hide-when-neutral-in-local = yes
rat-to-avoid = Infested Carrier

The AppSettings Elm module contains functions to parse settings like these, to get the individual assignments and finally transform them into a strongly typed value that you can use in your bot decision logic:

type alias BotSettings =
    { hideWhenNeutralInLocal : AppSettings.YesOrNo
    , anomalyNames : List String
    , ratsToAvoid : List String

But the role of the AppSettings module is not limited to parsing. It also generates error messages for the user if they try to enter settings that don’t match your app.

This week I got around to examine that module and improve the messages to guide users on how to configure your app.
The parseSimpleListOfAssignments function now provides users with several new messages that are more specific than the older ones.

For example, in case we misspell the name of a setting. In this case, the app automatically identifies the most similar setting name and also lists the available setting names. Here is the full error message from parseSimpleListOfAssignments:

Failed to parse these app-settings: Unknown setting name 'rat-avoid'.
Did you mean 'rat-to-avoid'?
Here is a list of supported settings names: 'anomaly-name', 'hide-when-neutral-in-local', 'rat-to-avoid'      

(In case you see a particular way of misspelling appear frequently, you could also define it as an alternative name for the same field)

I updated the example apps to use the new version of the AppSettings module. You can see the code changes here:

I got around to compiling a guide on running bots on multiple clients. It describes the most common type of multi-client support and how you use bots following this approach. You can read the full guide at

@Neled77 expanded the libraries for developing for the EVE Online game client.

Neled had a look at the EVE Online game client and collected training data for the fleet window and watchlist panel to help you keep track of other pilots:

The resulting new shortcuts to these UI elements are useful for a lot of multi-account players.

For more information about these parts of the games UI, see

1 Like

Have you seen problems when running multiple bots at the same time?
If you saw bots messing with each other’s sending input to a game client, you will want to use this new feature.

This month, I added built-in input focus scheduling functionality to the botengine for Windows software. Input focus scheduling is a technique to resolve the contention for device input focus between multiple bots. This problem occurs when we run multiple bots requiring input focus on the operating system level in parallel. To make sure this feature is enabled for your bot instances, see the guide at

two botengine instances coordinating for input scheduling

1 Like

@Mohano has published some functions to work with drones in EVE Online. These functions let you choose subsets of your drones to return to the bay or to launch and engage:

@Zalain and @Mohano explored how to use cloaking devices in EVE Online. One outcome was discovering new, more robust functions to check if the module is already active.

See the discussion and resulting program codes at Cloaking device in warp to 0 bot

Renaming BotEngine to BotLab

I realized that the name ‘BotEngine’ doesn’t describe well what we do here. So I’m changing it.

I started with BotEngine about six years ago. Since then, I have learned a few things. Some of these learnings made me understand that there are better names for a platform like ours.

‘BotLab’ seems a more appropriate name.
I expect this name to save new arrivals time because it better summarizes what we do: Learn about and develop bots.

How does the renaming affect you?

As part of the renaming of BotEngine to BotLab, the website address will change to
However, you don’t need to update programs or bookmarks right away, as the old links will continue to work for the time being.

I just deployed an update to the reactor regarding the renaming announced two months ago at BotLab Devlog - #65 by Viir

The reactor now redirects HTTP requests coming with an old domain under *
If you have problems running a bot in an online session, upgrade to version 2021-08-12 (or later) of the botlab client. See the installation guide at bots/ at main · Viir/bots · GitHub

Introducing Elm Editor - a web-based IDE for Elm programs

We made a big step in improving development tools for bots and other apps with the introduction of Elm Editor.

In the past, we asked developers to set up tools on their machines for working on code. These tools help explore libraries, view documentation, and get feedback on our creations. For example, one crucial feature of a development environment is pointing out problems in the program code.
While these tools are very helpful, setting them up was complicated, which was a great barrier to getting started.

To solve this problem, I started developing a new web-based integrated development environment. This work began circa one year ago. Now Elm Editor has reached a level of sophistication that makes it the better choice for beginners.
Instead of installing a specific program on your system, you can use Elm Editor like any other web page in web-browsers like Chrome, Firefox, and Edge.
I updated the guides on bot development to skip the work for setting up tools and bringing readers right into the action.
The guides currently point to the instance at
In the future, we might have a customized version that adds features specific to bot development and botlab, like configuring the bot-settings or starting a bot session directly from the editor.

Elm Editor is an open-source project organized for easy customization and deployment of custom instances. The source code lives at elm-fullstack/implement/example-apps/elm-editor at main · elm-fullstack/elm-fullstack · GitHub

To learn more about Elm Editor, its current state, and plans, have a look at the projects overview at elm-fullstack/ at main · elm-fullstack/elm-fullstack · GitHub or the announcement over at Introducing Elm Editor - a web-based IDE for Elm programs - Show and Tell - Elm

First Graphical User Interface of the BotLab Client

The November releases of the BotLab client introduced the first graphical user interface.
While the functionality for automation remained the same, this new interface improved usability. Users frequently struggled with the command-line interface. The graphical interface removes friction in many use cases with more straightforward navigation and specialized visual elements.

Some of the highlights in Novembers’ version include:

  • A dedicated dialog to help report a problem with a bot or share a session.
  • Visual separation of the status text generated by the bot and other status information.
  • Hyperlinks to help reach catalog entries and sessions.
  • Dedicated controls for Devtools to import artifacts to inspect with an open file dialog.
  • Dedicated dialog for installing the client.

Below is a screenshot of the view running a bot in a live session:

And here is a screenshot of the new interface to import session recordings in Devtools:

I have already updated the most popular guides to match the new UI, and the work on documentation continues to update everything for consistency.

In January, EVE Online developer @CLEMARC tirelessly tested the framework and engine and shared and analyzed session recordings to improve bot performance.
This work improved both botlab client and the frameworks for EVE Online. The botlab client evolved over several iterations in January, finally resulting in version 2022-01-25: Improve response times for agent tasks from bot in play session · Viir/bots@6577a13 · GitHub
The performance improvements in the client also removed blockers that could delay the execution of tasks started by a bot.
On the framework side, we improved readability and introduced unique task IDs so that bot developers can easily track tasks in inspection tools.

For the changelog of the botlab client, see History for guide/ - Viir/bots · GitHub

@Abaddon introduced support for Korean localizations of EVE Online. This change enables bots to understand the game state better when working with a game client in the Korean version.

Software like bots and local monitors often use textual labels in the game client to understand what is going on in the game world. These labels can vary depending on the language settings in the game client.
Abbadon shared multiple sessions with training data for Korean, enabling the use of apps with Korean EVE Online game clients.

For more details on the development, see the discussion at I want to add Korean support on eve online bot. What should I do?

In September and October, the user interface of the BotLab client evolved fast. Most importantly, the last few months saw the introduction of a new graphical user interface (GUI). The new GUI is a complete rewrite and replacement of the previous GUI. Based on a new technical foundation, it enables more efficient development and, as a result, the addition of functionality that reduces the complexity for gamers and bot developers.
Transitioning from the main menu into the session review is already much easier in the new version: The DevTools views are now inside the main window, so switching to a separate window is no longer necessary.
And for bots working on websites, there was another addition simplifying the usage of these bots: As of version ‘2022_10_23’, the interface for bots supports opening a web browser window directly inside the BotLab window. This new way of hosting web browser instances brings several benefits: Since the web browser component is integrated with the BotLab client, the separate download and waiting period when starting a bot is now obsolete. And when running many bots at the same time, the integration helps us see which browser window belongs to which bot instance.
When comparing the BotLab client from August to the newest one, you will also see a striking difference in the colors. While reimplementing all the views in the BotLab client, I also made the visuals consistent with other BotLab GUIs, like the one in the Reactor.
One of my favorite improvements in DevTools last month was supporting using the up-and-down arrow keys to scroll through the timeline: No need anymore to move your mouse for that: Press ‘up’ or ‘down’ to get to the previous or next event in the timeline.
Many thanks to the early adopters who helped test the new interface and squash bugs over the last weeks.
I hope you enjoy the simplified workflows and improved usability with the new interface.
As always, I am keen to hear about your experience, as these reports enable me to make bot development even easier in the future.