Entity Programming Interface
Some games allow players to program the entities under their control. The programming method can vary from a graphical approach, like in Swarm General [Lichti, 2004] or Carnage Heart [Iizuka, 1995] to a text-based code approach, as in Robocode [Nelson, 2001] or Core War [Dewdney, 1984].
While the exact implementation a game uses can vary, many such games separate entity programming and program execution. Players program their programmable entities at one time, the entities execute their programs "at" one another. (Robocode, Core War, and Carnage Heart frame entities' program execution in an arena setting. After players program their entities, they set those entities loose to fight other entities in an arena battle.) Alternatively, a game could allow players to program or reprogram entities on the fly, as in Swarm General.
Some games that use menu driven or point and click interfaces allow players to string commands together into macros. Games typically use such macro capabilities to simplify performing complicated tasks that players must perform repeatedly. (Such capabilities are most common in massively multiplayer role playing games.) The distinction between entity programming and macro building is largely one of purpose. Macro languages exist for player convenience as a supplement to another manipulation method (point and click, menu interface, etc.). Entity programming refers to programming activity that isn't duplicated within the game through other manipulation methods.
Strong example Robocode [Nelson, 2001] teaches players the basics of Java coding by allowing them to program battle tanks using the Java programming language. Players use Java routines to set the battle strategy for their robot tanks, programming the tank's default behavior and its response to various stimuli (getting scanned by radar, shot at, and the like). After players have programmed their tanks, they enter the arena to see who is the last robot standing.
Strong example Core War [Dewdney, 1984] provides players the opportunity to code small programs that compete with one another, trying to erase one another from the memory of a virtual computer. Core warriors are created in redcode, a Core War specific language styled after assembly language, then released into a virtual computer core where they try to destroy one another.
Dewdney, A. K. (1984). In the game called core war hostile programs engage in a battle of bits. Scientific American. 262(5), 14-22.
Iizuka, M. (1995). Carnage Heart. Artdink, playstation edition.
Lichti, N. (2004). Swarm general. Master's thesis, Georgia Institute of Technology, Atlanta.
Nelson, M. (2001). Robocode. IBM.