The RoboCup 3D Simulated Soccer League allows software agents to control humanoid robots to compete against one another in a realistic simulation of the rules and physics of a game of soccer. The platform strives to reproduce the software programming challenges faced when building real physical robots for this purpose. In doing so, it helps research towards the RoboCup Federation's goal of developing a team of fully autonomous humanoid robots that can win against the human world soccer champion team in 2050. The first version of the 3D server was released on 2003-12-30, after an initial proposal presented at the 2003 RoboCup symposium. Architecture The simulation is executed in the RoboCup Simulated Soccer Server 3D (rcssserver3d) which runs on Linux, Windows and Mac OS X. The underlying simulation engine is SimSpark. Agents are controlled by external processes. The competition's rules dictate that each agent must be a separate process, though there is no technical restriction for this. Agents communicate with the soccer server via TCP, by default on port 3100. Inter-process communication is otherwise forbidden. Agents may talk to one another, but only through the server which imposes certain restrictions on the distance and amount of information that may be sent. The server sends game and agent state information to each agent. In response, the agent sends commands to the simulation that control the movement of the agent's body. Messages are sent using Lisp-like S-expressions in single-byte ASCII, prefixed by a 32-bit unsigned integer representing the length of the following string. The simulation server does not have a GUI of its own. Instead, a dedicated monitor application connects to the server via TCP port 3200 and receives information about the state of play. The standard monitoring application is rcssmonitor3d which is additionally capable of replaying log files from recorded matches. RoboViz is a newer Java-based monitoring application with extended 3D graphical and debugging capabilities. Robot Models The SimSpark simulation system is a generic simulator, capable of simulating different agent models. In its history, the 3D league has used different models. Changing of models represents progress simulating an improved approximation of a real robot. However, when models change, existing teams must rework their agents to control the new bodies. Soccerbot The first agent model used in the 3D league was the Soccerbot, which was based on the HOAP-2 by Fujitsu. As the first RoboCup 3D model, teams were primarily concerned with