Improving API and Documentation for EVE Online

I am exploring how to improve API and documentation for development of bots for eve online.
It seems that both these aspects are closely related and that is why I work on both at the same time.

I see some ways to make bot programmers life easier:

  • Make it easier to find and use implementations of common tasks specific to eve online, like for example Warp To Bookmark and Close Popup Window.
  • Reduce unexpected runtime effects: Get rid of the (infamous) exceptions we have in C#.
  • Show how the past behavior of a bot can be inspected to understand the relationship between code and observed behavior.

I am discovering a framework to help with these points and in this post, I want to illustrate how it looks like from a users perspective.
One way to illustrate this is to show an example of a bot which is coded based on the said framework. So I pick a bot and translate it from the existing well-known C# script to the new framework. The resulting code looks quite different so I want to keep it simple to avoid information overload. That is why I picked the beginners autopilot as an example.

Below you can see the code as I expect it to look in the framework I discovered so far:

-- 'botCycle' is defined as a list. The list elements are instructions the bot should execute sequentially.
botCycle =
    [   -- Begin of list syntax

        -- The framework function 'branchOn' takes three arguments: condition, what to do if condition is true, what to do if condition is false.
        branchOn isShipWarpingOrJumping doNothing startJumpOrDockForRouteFirstMarker

        , -- We are still within a list here, remember?. A comma is used to separate elements in the list.

        -- The framework function 'delayForSeconds' takes one argument: Time to delay execution in seconds.
        delayForSeconds 4

        -- , clearStackAndContinueWithSequence botCycle (This is not needed as last element in the list because the Framework will automatically continue with the magic function `botCycle` if the call stack is empty)

    ]   -- End of list syntax

Looks like I need to tweak colors for the syntax highlighting on this code, in the meantime I add a screenshot from another editor here to improve readability of the example code:

As you can see in this example, there is less noise in the syntax compared to C# which should improve readability.
The avoidance of the problem with runtime exceptions is not obvious from this example, but it would be a side effect of removing the dependency on C# as the programming language.

If you want to give this framework for bot coding a try or have any questions let me know.

4 Likes

i remember something similar was for lineage … l2net. couple years ago it was really interesting since the bot could start the game, you could transmit the commands from another char through pm or some keywords on local channel.
Basically it was a framework and the scripting was similar.
give a shot at your new framework, if you need testers call me :slight_smile:

1 Like

Thank you, I will get back to you when we have reached a critical mass. :+1:

1 Like