Contents |
[edit]
Tasks
[edit]
Required
- Genetic Algorithm model of the game agent solutions.
- The behaviour of the game agents should be encoded in an object array which is acted upon by the GA.
- Each "gene" object will have an integer value attribute which is specific to its action() method, the action will be aplied directly to the game agent object or in the case of a symbiotic partner, to its parent agent.
- Game world and rules.
- A 2D gameworld needs to be represented for the game and user agents to interact.
- Visualisation of the game for the user to see whats going on.
- Each game agent should have colour and shape specific to what genes it's carrying
[edit]
Nice Extensions
- Visualisation
- Gene explorer, to see what certain game agents are made of.
[edit]
Genes
This set of genes will be the basic logical blocks of the game agent's behaviour.
- Promotion and Inhibition of other genes, this will allow for dynamic behaviour that should provide far more game strategies than just static gene values in each generation.
- VoidPromoter, VoidInhibitor: Promote or inhibit the adjacent genes value always.
- NearSensePromoter, NearSenseInhibitor: Promote or inhibit the adjacent genes value depending on the most recently sensed heading to an object, weighted towards close by objects. Possibly break this gene down to depend on what game entity has been sensed, energy packet, another game agent or the user agent.
- FarSensePromoter, FarSenseInhibitor: Same as for the NearSense but weighted towards far away objects.
- HighEnergyPromoter, HighEnergyInhibitor: Similar again to the other promoter inhibitor pairs, specific to high energy levels in the given game agent.
- LowEnergyPromoter, LowEnergyInhibitor: Same as before weighted towards low energy levels in the game agent.
- HighLifePromoter, HighLifeInhibitor: Promote/Inhibit the next gene when the life of the game agent is high.
- LowLifePromoter, LowLifeInhibitor: Same as previous but with low life.
- Moving/navigating in the world: Need to decide upon the necessity of energy cost with different types of motion!
- ApplyForceSensedVector, ApplyInverseForceSensedVector: Apply a given force defined by the genes value to the vector or reverse vector most recently sensed.
- RotateClockwise, RotateCounterClockwise: Rotate the game agent by the gene's value (counter)clockwise.
- ApplyForceRotationVector, ApplyInverseForceRotationVector: Apply a force on the game agent in the direction of its current rotational attitude.
- Attacking in the world: This should be costly in energy!
- FireOnSensedVector: Fire a missle along the most recently sensed vector.
- FireOnRotationVector: Fire a missile along the vector of the game agents current attitude.
- Others
- Sense: Get a bearing for any game entities within a given radius from the current game agent. It might be a good idea to extend this to different types of sensing, or a more complex way of encodign what has been sensed??? e.g. SenseEnergyPacket, and how should I encode multiple objects of different distances from the agent?
- Heal: Use some energy to increase the life of the game agent
- Void: Do absolutely nothing!