A simulation project focused mainly on making AI agents.
The project centers around Jellies(entities), these are objects that can grow and change overtime. Each one has their own personality and current status variables that influence how they make their decisions. Currently they can move around the map, eat, consume energy, talk to one another, pick up items(food to save for later), and replicate.
I handle all of the moving parts in the engine by splitting each object focus up by services. This allows me to effectively separate the scope of everything in the game making it easier to add additional components and debug any issues that pop up. Currently there is a Master service, world service, entity service, object service, personality service, species service and an item service. These all implement an interface to keep similar methods between them that define a service.To manage concurrency in the engine, the master service calls all of the additional services, when other services are called they return a list of messages that can be interpreted and sent to other services. This helps manage concurrency within the engine.
During runtime the entries will move around the map, eat food that is generated, talk with one another, and once they reach a certain age they can replicate. While it is running the app will generate various log files which are then used to be pushed to the database.
The personality system is based on the five core personality traites, extroversion, agreeableness, consientiousness, neurotocism, and creativity. Each trait has a value from 0 to 1 and is the classified using similar concepts as the 16 personalities. In the future, a personality will be used the most when the jellies interact with one aother.
I recommend you install by importing a maven project.
Currently the best way to run it is in the IDE. Eventually a standalone execute file will be created.
Cleaning code, tracking my progress through Projects, adding a wiki in the near future to expand on the overall processes that make up the world I am developing. I also am working on developing the web app to interact with the database this project updaes.