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
andClose 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.