Jump to content
Sign in to follow this  
SeanEBaby

Breeding Grounds: an evolutionary game of life inside ARMA 2 [CO or SP]

Recommended Posts

Latest version 1.7 - updated on 3/9/2012 11:07 GMT

This mission and scripts came from a discussion I had with a friend at work about creating a predator prey model using the ArmA 2 engine.

I've written a few very basic behavioural scripts which gives each AI the ability to decide where to move. Each unit has a personality which is defined by a set of parameters (or genetics). AI units can mate with each other and produce offspring, the offspring carries some of the genetic information from the parent - since only units which survive long enough get a chance to breed then over time evolution takes place. The AI units also have a need to eat, thus food/fuel is a resource on the map to fight over.

In the game there are two AI factions and one player controlled faction. Groups of players (or a single player) can control the parameters which define the personality of the new units created at their home base, and can also attempt to raid and destroy enemy spawn locations themselves to become the dominant side.

This video explains better, you'll need to be able to read captions on youtube.

Really this is just a little experiment of mine, I work in this field (genetic algorithms) of research. I've made all the scripts available so feel free to have a tinker and suggest/make changes. Thought some people may find this interesting.

I've created a google projects page where you can download everything

http://code.google.com/p/breeding-grounds-arma2/

This is what the population levels look like after 2 hours with no player input, use this as a benchmark for your AI designs.

(Please let me know if this is posted in the wrong place)

Edited by SeanEBaby

Share this post


Link to post
Share on other sites

whoa.. nice. Once I think all has been done in Arma, someone proves me wrong. I find this type of experiments to be fascinating, so thanks for sharing.

DL right now to check it out.

ETA: Just tried the PBO version and it gave me an error of No Player Slot found on startup. Just FYI.

Edited by heklos

Share this post


Link to post
Share on other sites
ETA: Just tried the PBO version and it gave me an error of No Player Slot found on startup. Just FYI.

It needs to be launched in multiplayer. Just create a new empty LAN server.

Edit:

I've added a player slot which means it should also now work in single player

Edited by SeanEBaby

Share this post


Link to post
Share on other sites

Necessarily have to try it out. Explores the very interesting issues here. Genetics algorithms? Yeah!

Personally thought, how to make in arma some kind of viruses contra antibodies "war", or some evolution (natural selection plus mutations) sim, but till now had no time to concentrate on such ideas...

Edited by Rydygier

Share this post


Link to post
Share on other sites

Could someone confirm the pbo file does work when launched in multiplayer please. It works fine on my machine, but it would make me feel better if someone else confirmed it works :)

Share this post


Link to post
Share on other sites

Confirmed on empty LAN. Works. Hm. This will be too heavy for my weak CPU, I afraid. Anyway, here is some useful RPT syntax/logic error messages (played about two minutes):

Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <t)/2);



sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawnerindy.sqf, line 77
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <)/2);
};

sleep (_rate*_factor);

};



};>
 Error position: <};>
 Error Missing {
File mpmissions\__cur_mp.Chernarus\spawner.sqf, line 88
Error in expression <//player addWeapon "itemradio">
 Error position: <//player addWeapon "itemradio">
 Error Invalid number in expression
Error in expression <//[] execVM "triggerCreation.sqf";>
 Error position: <//[] execVM "triggerCreation.sqf";>
 Error Invalid number in expression

Share this post


Link to post
Share on other sites

Thanks Rydygier. It is defiantly CPU heavy, lots of calculations going on. Everything seems to work as intended despite those error messages, and I've searched those scripts in the past and can't find the missing }'s (squint2 picked it up as well). I'll have a look after work.

Edit:

You can always download the source and make the mission smaller, delete some of the spawners and units. Should help with the CPU load...

Edit2:

Fixed those errors and uploaded new version 1.7

Edited by SeanEBaby

Share this post


Link to post
Share on other sites

In "triggerCreation.sqf" used is in setTriggerStatements this without quotes. Isn't this wrong syntax? This will be the last, I think, rest are gcam erros (variables not in scope and such). OK. Thanks for sharing, I'll explore this furher later, when time will allow me. Most fascinating experiment. :)

Share this post


Link to post
Share on other sites

"triggerCreation.sqf" isn't used any more so I just deleted the lines, but you are probably correct. I've left the gcam stuff in there if advanced users want to just observe.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×