1. A method comprising: defining, in a non-player object controller object, at least one game play rule of a virtual multiplayer game; maintaining, in the non-player object controller object, at least one state of the non-player object; maintaining, in a first player object controller object, at least one state of a first player object in a virtual multiplayer game environment, wherein the first player object is a first player object type; maintaining, in a second player object controller object, at least one state of a second player object in the virtual multiplayer game environment, wherein the second player object is second player object type different from the first player object type; receiving, over a network, first user commands regarding the first player object; executing the game play rule based on the first user commands, the state of the first player object, and the state of the non-player object, wherein execution of the game player rule modifies the state of the non-player object; receiving, over the network, second user commands regarding the second player object; and executing the game play rule based on the second user commands, the state of the second player object, and the state of the non-player object, wherein execution of the game play rule modifies the state of the non-player object.