~~META: status = finished &relation firstimage = :project:brmlife.png ~~
We would like to create an Artificial Life platform for research in the area of AI. Multiple agents will be able to live on the same map, compete for energy, interact, fight and procreate.
Aims and Architecture
We are using a server-client architecture. The server will maintain the world map and enforce physical laws. The client will have free choice of decision on attributes of the artificial being (compensated by energy cost) and actions taken (the clients will run in a simple sense-action loop, with discrete time frames). The client may be a complex combination of ANNs and genetic algorithm, or a simple automaton - up to you!
The server platform is written in C++ and so far provides a very simple, but roughly functional world for multiple agents with possibility to move on a torus-wrapped map and compete for energy by collecting herbs and attacking each other. More to come. The world parameters (energy costs and inputs etc.) are easily configurable.
You can get the brmlife server code at http://github.com/brmlab/brmlife - soon, there will be an example Perl code for a client as well, but you can use any language for clients that enables you to communicate over very simple text-based, line-oriented TCP socket.
We have a brmlife server running on host brmlife in brmlab LAN. If you have an account on data, you can run your script there or setup a tunnel:
ssh -f nat.brmlab.cz -L 27753:brmlife:27753 -N
- [DONE] Basic server with environment for simple ecology
- [TODO] More complex sensors and actuators
- Agents should not be dots but lines - implement agent orientation
- Less rough visual sensor
- [DONE] Pheromone sensor (“smell”)
- Spectral sensor (“hearing”)
- Noise model for sensors above
- [DONE] Basic attach/defense behavior
- [DONE] Gradual attack/defense behavior
- Grab/leech riders and parasites
- [DONE] Procreation and preserving agents over disconnects
- [TODO] Web interface and huge map
- [TODO] Multiple terrains (esp. wrt. ability to sustain herbs and movement difficulty)
- [TODO] Wave-based distribution of sound and light
- [TODO] Large map and multiple, permanently inhabitating species