In an adversarial multi-robot task, such as playing robot soccer, decisions for team and single robot behavior must be made quickly to take advantage of short-term fortuitous events when they occur. When no such opportunities exist, the team must execute sequences of coordinated action across team members that increases the likelihood of future opportunities. We have developed a hierarchical architecture, called STP, to control an autonomous team of robots operating in an adversarial environment. STP consists of Skills for executing the low-level actions that make up robot behavior, Tactics for determining what skills to execute, and Plays for coordinating synchronized activity amongst team members. Our STP architecture combines each of these components to achieve autonomous team control. Moreover, the STP hierarchy allows for fast team response in adversarial environments while carrying out actions with longer goals. In this article, we present our STP architecture for controlling an autonomous robot team in a dynamic adversarial task that allows for coordinated team activity towards long-term goals, with the ability to respond rapidly to dynamic events. Secondly, we present the sub-component of skills and tactics as a generalized, single-robot control hierarchy for hierarchical problem decomposition with flexible control policy implementation and reuse. Thirdly, we contribute our play techniques as a generalized method for encoding and synchronizing team behavior, providing multiple competing team responses, and for supporting effective strategy adaptation against opponent teams. STP has been fully implemented on a robot platform and thoroughly tested against a variety of unknown opponent teams under in a number of RoboCup robot soccer competitions. We present these competition results as a mechanism to analyze the performance of STP in a real setting.