Allies were previously touched upon in a post last year when factions were first added to the game. Since then they've been waiting on the sidelines for someone to tell them what to do.
Now you can do just that.
First it took a re-working of the top-center console area to make it the truly multi-functional window it was intended to be. Using F-keys or the menu at the bottom right you can now switch from the "combat calculation reports" to your list of allies (additional situational windows are planned for this area).
Here you can view all the allies with which you are currently in contact, see their current status and what they're up to, and give them new orders.
Gathering allies won't be required. In fact, from a strategic point of view it may work against you in some situations as having a large posse following you everywhere wreaking havoc is sure to draw unwanted attention. While not everyone will want to have semi-autonomous followers to worry about, for those who would enjoy some friendly company I'm making the interface as convenient as possible.
Click on any ally to open a context menu that shows what orders apply to them.
Giving orders. Notice that while hovering over a given ally, their position on the map is also highlighted.
To give the same order to all your allies simultaneously use the "ALL" button, a quick and easy way to tell everyone to go somewhere, or to protect you, etc. It will filter out any allies for which the instruction does not apply (for example, unarmed robots will keep doing what they were doing if you issue an ally-wide order to "guard our hauler").
Allies on the list will appear in red if incapable of fulfilling their purpose (a tunneler class bot that's had its mining laser shot off, for example).
Selecting an order that needs a target will require you choose one on the map.
Alternatively you can also issue orders directly on the map itself with a shift-right click on the ally, which will open the same context menu right there.
Giving orders on the map. Note that while hovering over each ally, they are highlighted in the console as well.
To view all pending orders directly on the map, hold shift-alt-'o' or hover the cursor over the ally list's "ALL" button. This will highlight each unit in a different color based on their order, and connect them to their target via a line, if applicable.
The builder (u) on the right is going to build a wall, guarded by the nearby grunt (g). Two other grunts are guarding Cogmind, who is standing next to a hauler (a) which is preparing to roam the map and collect parts. A watcher (w) drone to the south is about to head around the corner.
The order list as it stands now:
- STAY: Stay at current position. Combat robots will still fight back and even chase down enemies, so for them this is equivalent to "defend."
- GOTO: Move to target location, then STAY on arrival.
- ROAM: Wander the map doing whatever they want. For combat robots this is equivalent to "hunt" since they'll engage and chase down any hostile targets.
- FOLLOW: Follow Cogmind.
- GUARD: Follow a specified robot and prioritize attacking enemies that attack it.
- AID: Follow a specified robot and prioritize attacking enemies it attacks. For the repair bot (not yet implemented), this will instruct it to assist the target with repairs.
- BUILD: Build makeshift wall barriers from current position to a designated target location.
- TUNNEL: Dig a tunnel from current position to a designated target.
- DROP: Drop all inventory items, then ROAM nearby. The latter command is automated so that your haulers will get out of the way after unloading their inventory, staying out of your way in case you want to access the parts.
- PICKUP: Collect any items within Cogmind's field of vision (i.e. nearby), then FOLLOW once their inventory is full or there are no more items to collect.
- COLLECT: Wander the map and collect items, then FOLLOW once their inventory is full.
The list will be expanded as new unit types with unique behavior are added.
You can issue orders to as many allies as you want--doing so doesn't require any time, and any new orders will simply override previous orders.
To enable you to differentiate allies from one another when they are of the same class, each will be given a unique name based on their class and the location and sequence in which they joined. You can see an example in the first image, since it's actually the mockup on which the design was based, but the game doesn't do this yet since there are not yet any methods to gain allies--I've just hard-coded some for testing. A player rename feature can be added later if desired.
One caveat to the order system is that you can only see and order allies that are currently within your field of vision. Cogmind is a roguelike and we're trying to steer clear of excessive micromanagement RTS territory. This design decision is a bit "gamey," but good gameplay has to trump realism, this being a game, after all ;) The good news is you can expand your visual range around corners and further away (up to a certain limit) by launching remote control drones.
A disadvantage of letting non-combat allies out of your area of influence is that if they encounter enemy Programmers they may be reprogrammed. This and other facets of electronic warfare may come into play later, but none of it will be designed or implemented until work begins on the overall enemy behavior.
One final note about the interface: While the above introduction focuses on mouse control, as usual every command is also possible via the keyboard. Pressing 'o' enters "order mode" which automatically opens the ally list and shows a column of numbers 0~5 to their left. Pressing an ally's corresponding number opens their context menu, in which you can see that each order has an associated letter command. Pressing 'o' while highlighting an ally in look mode will also open their order menu directly.