SimArena is a powerful toolkit for creating, configuring, and running simulations with multiple agents in various scenarios. It provides a robust foundation for AI research and development, with support for custom objectives, brains, weapons, and maps.
Objectives are the goals of a simulation. They determine when the simulation ends and how the results are evaluated. Objectives are attached to simulations.
Objectives can be of different types, each with its own set of parameters and behavior. We provide the following objective examples:
StepsObjective
: The simulation ends after a certain number of steps.CapturePointObjective
: The simulation ends when a team captures a point a certain number of times.DefendObjective
: The simulation ends when a team defends a point for a certain amount of time.DeathmatchObjective
: The simulation ends when a team reaches a certain number of kills.Objectives are intended to be extended by users to create custom objectives, according to their needs. Objectives are intended to be fully customizable.
Rather than a single class, objectives are created through a configuration class and managed by the following helper classes:
ObjectiveConfiguration
: The base class for all objective configurations.
IObjectiveTracker
: The interface for all objective trackers.
IBuildsResult
: Builds the input data from the tracker.
ISimulationResultBuilder
: Builds the result from the input data given.ISimulationResult
: Stores the result of the objective.
Objectives cannot be directly used; instead, they are loaded at runtime from your GameConfiguration
.
Objectives are configured through their respective configuration classes, which inherit from ObjectiveConfiguration
.
These configuration classes are used to create objective instances. See the Custom Objectives
documentation for more information on creating custom objective configurations.