Friday, January 13, 2017

Covert Team Formations

The Goal

I think it would be super cool to be able to get small groups of bots working together as a team in formation, in much the same way a real life team of soldiers would work together and not as individuals. Compound unit types would make a sweeping blow against the opposing team. Imagine a scout, tank, some soldiers and a gardener all moving in as a team on one solid mission.

How To Be Covert

Broadcasting to the shared channels will give away the bot's location and the opposing team could be listening for that. I find it a very interesting technique to use the bot's map location as a way to covertly hand data to other nearby bots.

Meaning, I think it is a good idea to encode information into the precision of the bot's map location. Using these bits will not broadcast and if used correctly can become very informative to the nearby bots that know how to read the data.

How To Build Formations

Instead of each bot working independently in an area, once they notice others are around they can work together. One of the bots can set its own location to a precision that denotes it is trying to build a certain formation. When bots near this one take their turn, they see this, move into the nearest spot for that formation, and denote this role by setting their own location precision to pass the knowledge.

In this way you could end up with group that has a leader taking point, soldiers flanking to its left and right. Others filling in to cover from behind. Maybe a scout just ahead, or a tank taking hits for soldiers falling in behind it.

The Benefits

Whatever the formation you choose, I think it could be much stronger to have small groups working together than to have individual bots on their own. Each in the area taking on known roles for this formation and stepping up to a higher role if the bot in that role dies off.

Doing this could help dramatically with friendly fire. It would also help the problem of bots all trying to do their own thing, getting in each other's way, and effectively blocking everyone to the point of getting nothing done. The shared knowledge and skills the group would have is often going to be better than any one bot out on its own.

The Hard Part

Figuring out how to get all that working in code would be pretty difficult. I think first you have to get the bots working well on their own. Having them dodging, attacking and exploring on their own. Once that is working pretty well you can abstract to routines that manage the group and keep them in formation.

Once a bot signals to start a formation, the others start grabbing roles and moving into place. The management of this group should still allow each bot to run the individual tasks they would have known to run on their own such as attacking and dodging. The difference is now they have more knowledge about the bots around them, knowing what they are tasked to and where they are heading.

I can picture how all this would work, but I could only do it if I was a better coder.