Our goal is to build an "AI Engine" akin to the graphics engines that have revolutionized some parts of the game industry. A central issue is finding a general way to specify and control an agent’s actions, since it is the behavior of an agent that makes it intelligent. We describe our agent design toolkit HAC (Hierarchical Agent Control), focusing on the lessons learned during its development. HAC is an action-centric uniform language for specifying actions that uses an abstract resource and sensing model. We conclude by identifying some of the guiding principles that have emerged during our work.