ORTS is a programming environment for RTS games.
Open Real-Time Strategy
ORTS is a programming environment for studying real-time AI problems such as pathfinding, dealing with imperfect information, scheduling, and planning in the domain of RTS games. These games are fast-paced and very popular. Furthermore, the current state of RTS game AI is bleak which is mainly caused by the lack of planning and learning - areas in which humans are currently much better than machines. Therefore, RTS games make an ideal test-bed for real-time AI research. Unfortunately, commercial RTS games are closed software which prevents researchers from connecting remote AI modules to them. Furthermore, commercial RTS games are based on peer-to-peer technology - which in a nutshell runs the entire simulation on all player machines and just hides part of the game state from the players. By tampering with the client software it is possible to reveal the entire game state and thereby gain an unfair advantage. We feel that this is unacceptable for playing games on the internet. We therefore started the ORTS project to create a free software system that lets people and machines play fair RTS games. The communication protocol is public and all source code and artwork is freely available. Users can connect whatever client software they like. This is made possible by a server/client architecture in which only the currently visible parts of the game state are sent to the players. This openness leads to new and interesting possibilities ranging from on-line tournaments of autonomous AI players to gauge their playing strength to hybrid systems in which human players use sophisticated GUIs which allow them to delegate tasks to AI helper modules of increasing performance.
We have a working platform-independent server/client RTS game engine which includes a 3d OpenGL GUI. We are working on a standard ORTS game and flexible client software right now. By autumn 2006 we hope to have a working system which is interesting for both RTS players and AI researchers.
ORTS is not a single RTS game, it's an RTS game engine. Users define the game they want to play in form of scripts which describe all unit types, structures, and their interactions. These scripts are loaded by the ORTS server and executed. The second part of the ORTS system is client software which connects to the server and generates actions for objects in the game. The server sends player views to the clients and receives actions for all the player objects, which are then executed. This loop is executed multiple times a second. If the 3d graphics client is connected, the world is rendered using OpenGL and the user can issue commands using the mouse and keyboard.
ORTS is free software. It is licensed under the GNU public license (GPL). This means that all source code of ORTS is available, changable, and freely redistributable. It also means that publicly available applications using ORTS source code must also be licensed under the GPL.
C++ is used for the server and client cores, and a home-brewed scripting language for defining games and customizing the GUI. We currently make use of the standard C++ library, Boost, SDL, SDL_net, and OpenGL in conjunction with glew.
Yes - as long as the libraries mentioned above are available. We started off implementing ORTS on Linux and Cygwin using g++, but recently also managed to compile it natively on Windows using MS VC++ by working around several problems - most notably the unsupported typeof functionality. In April 2006 we got ORTS working in the MinGW environment and cygwin, which is now the preferred way of running ORTS under Windows.
|Feature||Current Commercial RTS Games||ORTS|
|Cost||~US$ 50||US$ 0|
|License||Closed Software |
No code changes possible; company in control rather than user
|Free Software (GPL) |
Users can study and improve code
The entire game simulation is run on each peer node; prone to map-revealing hacks
Server simulates world and sends local views to clients; no map-revealing hacks; but need a server
|Game Complexity||high; RTS games are becoming more complex: more races, more unit types, more spells ...||flexible: users define their own games|
|Game Specification||fixed||flexible: ORTS is a meta-game system. When starting a game, the server reads the game and world description from a text file|
|GUI||Nice looking but inflexible interfaces; frequent context switches necessary in case of simultaneous battles due to a confined sector view||Roll your own client: flexible resolution, split view, or no graphics at all.|
|CPU requirements||medium to high due to fancy graphics||low to high: depends on client mode|
|Network requirements||low: only mouse clicks and keyboard events are sent||medium: incremental and compressed view updates|
|Unit control||essentially sequential: mouse clicks/pressed keys + predefined low-level unit behaviour||parallel: one command per unit per simulation frame; atomic actions - no predefined low-level behaviour; clients are in total control|
|AI||AI code for all players runs on all peer nodes||AI is local to each client|
|Remote AI||not supported; local AI is limited to scripts||Yes - by design; if necessary you can connect a super-computer to the server to let it play RTS games on its own or help you playing games|
Send me email at mburo_DELETE_@cs.ualberta.ca (remove _DELETE_).