A downloadable game for Windows, macOS, and Linux
This is a football team simulation. You can see a team of wobbly limbed players learn to play football before your own eyes by evolution.
W A S D - Move around.
Z X - Zoom in or out.
R - Simplified rendering
When you open the game, you see the setup of your team. Select the grab tool in the top left corner to grab players and put them in the desired position on the field. With the select tool you can select a player and change it’s properties, like it’s name, length, brain type and inputs. When you are done, click on Start Training.
When you are training a team, you can increase the speed of the game, so that you don’t have to wait forever for evolution to happen. Now you can watch your team become better and better over time.
Turn on hardcore to allow players to knock each other unconscious.
How it works
Each player is controlled by a neural network, it’s brain. The brain receives some inputs, like the location of the nearest team member, or the position of the ball. Then the brain gives an output which controls the player. The training happens by making a couple of copies of the brain each generation, and then letting these brains compete against each other. The better brains are then combined into a new brain for the next generation.
The inputs can be seen when you select a player with the select tool. You can only set properties of a player that hasn’t been trained yet. Indicated by the purple text. The options are:
Nearest team inputs: number of nearest players from it’s own team this player receives information about.
Nearest opp inputs: number of nearest players from the opposing team this player receives information about.
Fixed team inputs: number of fixed players from it’s own team this player receives information about.
Fixed opp inputs: number of fixed players from the opposing team this player receives information about.
Team distance: Whether this player receives the distance to a player.
Team angle: Whether this player receives the angle to a player.
Ball distance/angle: Whether this player receives the distance/angle to the ball.
Ball direction: Whether this player receives the direction the ball is moving in.
Own goal distance/angle: Whether this player receives the distance/angle to it’s own goal.
Opp goal distance/angle: Whether this player receives the distance/angle to the goal of it’s opponent.
Field edge distance/angle: Whether this player receives the distance/angle to the edge of the field.
Brain Type: The neural network structure that is being used.
FFNN: Stands for Feed Forward Neural Network. This network is really simple and can’t form memories.
GRU: Stands for Gated Recurrent Unit. This network is more complicated, but can form memories. This network usually leads to better results.
Layer size: Amount of neurons in a single layer. The GRU network only has one layer, so this is the entire brain size if GRU is selected.
Hidden layers: Only for FFNN. This is the amount of layers in the network. More layers mean more possible behaviors but also a longer training time.
Length: The length of this player. This does not affect it’s abilities.
You can compose a team with different players. The players are then trained in turn. It can be difficult to get good results, so I encourage you to experiment. For instance: when you combine a previously trained player with a new player fresh from the cloning machine, the new player will be much worse. It might be a better strategy for this player to stand in the corner and let the previously trained player do all the work, since the overall team performance is being optimized. To prevent this, you can add 3 previously trained players such that the performance of the new player is relatively more important.
You can save players after training by clicking the save button under settings. The saved players are loaded into the game automatically. To delete a player, throw it into the incinerator at the bottom left.
Click download now to get access to the following files:
Leave a comment
Log in with itch.io to leave a comment.