The agent simulation is implemented using a utility based AI system called needs-based AI. Agents have needs (Hunger, fun, energy) and try to perform activities in order to receive rewards that refill those needs. This is achieved using “smart objects' that advertise their potential reward and the agent chooses the next activity based on the best score amongst the advertised rewards. No predefined and hard-coded behaviors are needed, the needs-based algorithm is capable of always finding the best available activity in the environment. Designers using data assets can easily add new needs, add smart objects or change advertisement values without touching cpp or bp code.
Simulation Video: https://youtu.be/pISn2FbwIM8
Decision Making algorithm: The core decision making process is implemented using the following algorithm in pseudocode:
Code architecture: High level UML architecture (some class info are omitted):