GALAXIAN is a space combat simulator where two factions fight against each other. Each faction is composed of the following units:

White fighters are the units of the white faction. They fight against the black fighters. Vs. Black fighters are the units of the black faction. They fight against the white fighters.
White cruisers send fighters in order to defeat the adverse fleet. Black cruisers send fighters in order to defeat the adverse fleet.
White fighters can regroup into squads and lead raids against black frigates. Frigates back up the black fighters. They fight back the white squads' raids.

The IODA Methodology

IODA was designed and developed by the SMAC team at CRIStAL, Lille, France. IODA is a multiagent methodology whose goal is to ease the involvment of non-computer scientists in the participatory design of a simulation. To that end, IODA advocates for a few recommendations and is bundled with several implementation tools like JEDI (a Java implementation of IODA) and IODA-Unity (which was used for this project). IODA's basic principles are detailed below.

Everything is agent!

Every spaceship in the simulation is represented by an agent, e.g. an entity endowed with an autonomous behaviour and a local synthetic perception of its environment

The image on the right depicts the "perception graph" of the simulation. It shows that every agent are not omniscient but only aware of the other agents in their local neighborhood.

An interaction-oriented approach

The behaviour of each agent in the simulation is defined by the set of elementary interactions they can trigger or undergo. An interaction is defined between a source agent and a target agent. It is triggered when preconditions are met and provided a limit distance between the two agents is matched.

The model of the simulation is represented by the interaction matrix, summarising all the interactions every agent can trigger or undergo.

How to read this matrix? Basically, it shows all the interactions enabled between two agent families... and the whole model is pretty much there, really. Every interaction is emitted by a source agent (the matrix's row) and undergone by a target agent (the corresponding column) or by the environment in the case of a "degenerate" interaction (column ∅). An interaction is written:

+(name_of_the_interaction, distance, priority)


A uniform action selection

Every time step, each agent evaluates which interactions are possible with respect to its perception and depending on the preconditions and the limit distance of each interaction. Then, among the realisable interactions, the one with the highest priority is selected and triggered in the environment.

The image on the right is an illustration of the action selection process. Each coloured line represents a different interaction in progress between a source agent an a target agent (for instance, green is for Engage, yellow for intercept, red is for Escape, etc.)

As a consequence, the behaviour of an agent is reactive, e.g. it is not predefined but arises gradually along its interactions with the other agents. Yet, complex or collaborative behaviours can be designed in IODA, as the GALAXIAN simulation demonstrates.


The resulting demonstrator features a space combat where units fight and collaborate to raid over enemy's frigates. IODA-Unity is a lightweight implementation enabling a substantial number of agents to operate smoothly, which eases its integration in a resource-intensive program like a 3d application.

This is a web version of GALAXIAN, the Unity plugin is needed to play it.