Orders as First-Class Entities (OFCEs)

=Background= In Total Annihilation and the Supreme Commander series, orders have traditionally been assigned to specific units. The major drawback of associating orders with a group of units is that the orders are lost when the last unit in the group dies. There is also no way to assign another unit the same orders as another after the orders have been issued. The closest one can get is to assign units to "assist" a target unit with the desired orders, but if that target unit dies, the rest of the units lose their orders and stop where they are. There are also pathfinding issues associated with groups assisting a unit or a congo-line assisting.

If orders were able to exist as first-class entities, then they could be stored for persistent use by many units over time. For orders to exist as first-class entities they need only be detached from units, and have extra user-interface features to manage them.

=Implementation (Gameplay behavior)= Orders can be created without a unit selected. The process of creation will be (similar?) to issuing orders to unit(s). The queue of orders will be saved as a first-class entity and continue to exist on the map. Once created, they can be modified (similarly) to how you would modify a unit's order queue.

To issue orders to unit(s), the player would select the unit(s) as usual. From here, the player may give them orders just like before and the unit(s) would go carry it out immediately; or, alternatively, if some orders already exist on the map, the player may assign the unit(s) to any one of them (by right-clicking) and the unit(s) will carry out that order and then, if that order was part of a queue, proceed to any subsequent orders in the queue.

=User Interface= In Zero-K, first class orders exist in the context of retreat zones and ferry points. The UI elements to create one of these first-class orders appear in the "unit order box" whether a unit is selected or not. In the case of all orders being first-class, it seems appropriate to make first-class orders buttons only appear when no units are selected. First-class orders could even be initiated when a user right-clicks on the map without a unit selected, and appended to while holding the "Shift" button, in the same way that unit orders are issued.

Since different units have different contexts, it would be reasonable to make first-class context-sensitive orders have their own "context-sensitive" icon, since they cannot be converted into "move", "assist", or "attack" commands until a unit is assigned to them. For example, a scout plane cannot attack, so any orders targeting an enemy unit will be resolved differently for scout planes than for units with weapons.

Selection
Selecting waypoints will be possible by clicking on a waypoint. In Supreme Commander the waypoints were draggable by clicking and dragging, which won't conflict with selecting waypoints as you would select a unit. Once a waypoint is selected, you could hold Shift to select more waypoints so they can be moved as a group. To avoid conflict with additive selection of actual units, once a waypoint is selected any addtive selection with Shift will only select other waypoints.

Deletion
An extra modifier key would be required to be able to delete order queue waypoints or their corresponding edges. A user would simply hold the delete modifier key, with visual feedback on the mouse cursor, and click on the waypoint or edge. Deleting an edge or a waypoint would sever the queue into two separate queues.

Connection
First-class order queues can be connected to each other by creating a new order queue, and assigning the last order of a new queue on top of one another existing queue's waypoints.

A player may not always want to connect a queue and instead put a waypoint in the same place as another queue's waypoint. In this case, the default action would be to simply place the waypoint on the map, but after hovering over the waypoint for a period of time with the mouse button still held, a "connection" icon would appear indicating that these queues will be connected. If the user wishes not to connect the waypoints, they could move their mouse off the existing waypoint and move it back on after the delay has been reset, then let go of the mouse button.