Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refining bot development examples and guides - improving EVE Online jet can collection example #8

Open
Viir opened this issue May 4, 2020 · 0 comments

Comments

@Viir
Copy link
Owner

Viir commented May 4, 2020

Today I discovered a way to improve on yesterdays implementation for Foivos Saropoulos jet can collection in EVE Online (See the commit at b5f2fb0)

The benefit of this improvement is making it easier to implement similar functionality in the future; it would not necessarily bring any improvement for this particular app. That is why I do not add it there immediately; it is not on the shortest path to a working app for Foivos.

A problem with changes in the linked commit is the introduction of remembering the action we performed. In this specific case, a sequence to initiate warping to a fleet member (App-specific language). Yesterday's implementation bases this memory on a leaf of the decision tree selecting this action. This kind of dependency makes development more complex, also affecting the ability to employ machine learning to automate programming by training data.

To get rid of this dependency again, we can instead draw on what we can observe passively. The analogy here is watching someone play: Given a video recording of the gameplay, can we decide if the warp-to-fleet member is complete? Drawing on what I know about the game, it seems possible: Is the context menu close enough to the right character in the chat window? Is it expanded up to the stage where we can initiate the warp with the next click? If these conditions are met, we can check if the ship started a warp within two seconds of the context menu disappearing.
We do not have to stop here. If, for some reason, the set of conditions to meet is not strict enough yet, we could also draw on remembering the location of the last mouse click to boost confidence. We can check if that location is within the right context menu entry. This dependency on past inputs is less problematic than the dependency taken in yesterday's change, as it is not specific to the origin of the action in the policy.

Not depending on the learning/collecting policy is the goal, since it allows for reuse of already available data sets. A concrete example is a case where we attempt to implement that jet can collection feature and test it: We don't want to depend on starting a game client to perform a live test, as this would slow down the development process. With the policy-independent variant, we can test the new implementation using a recording from another session. That other session does not even have to be related to the use of any bot; it could be as well a record of a human playing.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant