Skip to main content

Bot Design

Behavior Trees

Behavior trees play an important role in logic decisions for bots. TreeSharp however hasn't kept up with the times.

For Gaia, the core decision trees will be async based on the coroutine pattern. Demoed by Saga in https://github.com/eddic-code/Yggdrasil/blob/master/Yggdrasil/Coroutines/Coroutine.cs.

NOTE To be replaced with the newer memoria.

Execution Runtime

Runtime will look something like this

Bot will execute Coroutines until the coroutine returns or an await is called. Alternatively Coroutines can await a Yield to release the frame and acquire a new one.

External await calls such as web requests may not perform as expected if run within a Coroutine. It is recommended to perform these tasks on a seperate thread.

Notes on Frame Lock

  • During a frame lock, memory access will be cached.

Startup

Gaia will attempt to load plugins at startup, while performing update checks and preparing the application.

Gaia will load libraries first, then plugins. Plugins are allowed to refrence librarires, Libraries are not able to refrence plugins during compilation.