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.