BotLab Devlog

An update regarding EVE Online development:

@ORly recently helped improve the robustness of the parsing of the EVE Online clients user interface. (Mining bot "I cannot see the ore hold capacity gauge.")

To summarize the developments: @ORly discovered a scenario in which reading the capacity of the selected container in the inventory failed. They provided training data for this scenario, resulting in an update to the standard parsing library for EVE Online. I updated the example apps here to use the new version of the parsing library:

By the way: In case you are looking for an easy way to keep track of updates to the EVE Online parsing library, you can use the history view at

The last six weeks have been quite busy. Now I am trying to remember the most outstanding developments, to give an overview.

After three weeks of testing and iterating, near the end of January, the new Tribal Wars 2 Farmbot was mature enough to replace the old bot from 2018. As I now see on the catalog, the new farmbot quickly became popular, rivalling the diverse applications for EVE Online.

For EVE Online, I also saw some noteworthy developments: After the mining bot had been ported to the 64-bit client, it was time to tackle the next in-game activity calling for automation. So in February, the anomaly ratting bot was updated to support the 64-bit game client too, just in time to prevent interruptions by the phase-out of the older game client.

Diverse questions led to clarifying how to develop for EVE Online, for example, how to efficiently find the objects in the game to use when working on an application.

Besides improving the guides, the framework and tooling for EVE Online itself saw several improvements: For example, the shortcut to inventory items now also works for all view types. Before, that shortcut was limited to the List view, which sometimes caused confusion. The setup process for the tool to inspect the parsed user interface was simplified, reducing the number of steps. Also, the inspection views were expanded to offer a comprehensive tree view of the parsed user interface in the game client. In the views for the individual UI nodes, you now also find the new property getAllContainedDisplayTexts. This addition in the inspection view reflects the widespread use of this derivation in bots and other apps.

Thank you all for sharing videos, screenshots, process samples and other data about your scenarios and helping to improve the bots!

Windows App Version 2020-03-05

Version 2020-03-05 of the Windows app brings several improvements to the user interface.

Making it easier to use online sessions

Some people had reported problems with starting online sessions. It was not always clear how to input the personal key into the UI. The first step to improve on this was expanding the guides to cover this in more detail. Now I also found a way to make the user interface itself simpler to prevent those issues in the future:
Starting online sessions is now easier with the new --online-session option on the run-bot command. When using this option, you don’t anymore have to copy your key for each bot. Instead the engine uses the key you stored as the default on your system. You can set the default key using the new online-session-key store-default-key command. To make this easier too, the web UI at shows you the complete command. Just copy and paste to run it in the command prompt.

As usual, you can explore the new commands in the botengine app using the --help option:

PS C:\Users\John> botengine  online-session-key  --help                                                                             Subcommands to manage online bot session keys. You can test keys and store a default key.

Usage: BotEngine online-session-key [command] [options]

  -?|-h|--help        Show help information

  reveal-default-key  Display the stored default key. Other commands don't display the key to avoid accidentally sharing this
  store-default-key   Store the default key to use when attempting to start an online bot session. I will use this key when you add
                      the '--online-session' option to a 'run-bot' command. The key will be stored in a file scoped to your Windows
                      user account
  test-key            Test a key to see if it can be used to start an online bot session.

Run 'online-session-key [command] -?|-h|--help' for more information about a command.

Improving error messages and recommendations

I refined several error messages and recommendations in the user interface. For example, it now makes suggestions in case of misspelling commands or options:

Contributions From the Community

@Lanson and @TheRealManiac refined guides and bots:

There is a new guide for EVE Online developers to find things faster in the game client user interface: bots/ at a364d5d7c120450786ba05de2ca5ad5dd3931523 · Viir/bots · GitHub

Visual maps help you where to find things and how shortcuts to popular elements are named in the framework:

It also contains examples of how to use these shortcuts in your app.

1 Like

@Medede was looking for help with a modification to a EVE Online mining bot: Help with mining bot

I programmed that modification and also recorded a walktrough on how to implement it:

In this video I show how to add a setting to a botengine app.

1 Like

The Tribal Wars 2 farmbot recently saw a lot of updates to make it more efficient. I updated the guides to integrate version 2020-03-25. To summarize, the most significant improvements:

  • Faster farming: The newest version sends between 800 and 1000 attacks per hour.
  • New feature to avoid smaller barbarian villages. You can set a threshold for minimum points using the app-settings.
  • Improved user interface, including a detailed report on the last completed farm cycle and many improved status description texts.

I also updated the guide on the forum for the new version: Farm Manager - Tribal Wars 2 Farmbot

@Murderburger shared a question about an EVE Online mining bot:

I explored and added an implementation to add this to the display:

In this video I explain the development process:

Jim @ElHefe shared an improvement to EVE Online mining bots here:

This gives an app-setting that lets you define what you want the threshold to be. It keeps the default at the original 99%.

When I have a 7000 capacity in my Ore hold, and my ice miners cycle at 1500 each every two minutes, I don’t want to waste two minutes every round trip for the last few percents to fill up.

Several people asked about adding defense functionality using drones to EVE Online mining bots. We had people come up with different approaches to defend against rats, and these resulted in various implementations.

Now I made this video of a more recent variant, explaining how it works and showing all the programming:

The merge commit with the code changes is at Merge - add drones defense for EVE Online mining bot · Viir/bots@485cec1 · GitHub

Today I updated the botengine reactor and the catalog.

In the view of online sessions, you can now directly see the beginning of the description of the app used in that session. You can see this, for example, in the list of most recent online sessions:

Reactor most recent online sessions

People reported problems with composing the commands used to run apps with non-default settings and running those commands in the Command Prompt. The catalog can now do this for you automatically. All you do have to enter your settings into the input fields. The system then generates a script for these settings that you can download and execute via double-click from the Windows explorer.

Interface to configure how to run an app

The settings you enter here are stored in the URL in the web browsers address bar, so you can bookmark your settings or share it with others.

This new configuration interface is automatically available for all bots you published on the catalog; you can open the tool using the ⚙️ Configure app button in the catalog entry:

Button to enter configure run app

I made this video summarizing the developments of the past week:

I updated the example projects for EVE Online to improve app settings. Last weeks changes benefit both users and developers:

  • Users now get faster feedback on app settings: The new app framework parses app settings as soon as it receives them from the user and sends the response with the response to the same app event. This change also means users do not have to wait anymore for the completion of the startup sequence to see results for their app settings string. The new immediate response has further implications: It also means that the whole of parsing and getting the response can be replicated easier in other environments, such as a web browser. So mid-term, this enables the inclusion of a quick check of any app settings string into the interface where users type their settings. Starting an app is then not necessary anymore to see if the settings are valid: Any time the user types a new character, they can see the result of the app-specific validation within one second.
  • Developers now find more helper functions in the framework to compose app settings syntax for their project. The Common.AppSettings module contains building blocks to help with parsing and generating specific error messages to guide users of your app. As shown in the example projects, apps integrate the app settings parsing and validating using the new parseAppSettings field in the framework function to compose an app.

Allan shared a new feature for the EVE Online mining bot with us: This version he published on Github docks to structures:

You can run this mining bot from FrontendWeb.Main

To make finding bots and other artifacts easier, I added this search box to the catalog today:

search on the catalog

The search box lets you filter published artifacts by their description text, tags, the names of authors, framework version, etc…

Today I expanded the guide on developing for EVE Online. The newest chapter explains the overall app code structure and data flow.

Here is a direct link to the new chapter: bots/ at 56333a44d00364cb9a45558faa6600a26b7212de · Viir/bots · GitHub

Cameron shared an improved version of the EVE Online local watch intel tool: His version sounds an alarm only when a new pilot with bad standing appears.

You can find his version here: FrontendWeb.Main

Credits also to @Terpla for sharing sample data for reading the pilot standings from the game client, the basis to develop the reading functionality in the app:

sample data for pilot standings shared by Terpla

@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