# $Id: README,v 1.7 2007/03/05 00:26:43 orts_mburo Exp $ ORTS RTS game AI tournament directory ------------------------------------- Installation: ------------- On the ORTS web page you can find instructions on how to download and install the software. Files: ------ game definitions: game1.bp multi-unit collaborative pathfinding game2.bp base defense with tanks game3.bp "real" RTS game game4.bp tactical combat core.bp central definitions main.bp common/ common defitinitions (across races) terrans/ terran units/structures doc/ documentation game?_orts shell files that start the server game?_ortsg shell files that start a gfx client game?_orts_test quick test (server, 2d gfx, no clients) ortsg/ GUI scripts and models Preparation: ------------ - build bin/orts and bin/ortsg (instructions in orts3/makefile) - see orts3/tournament-2008/doc for information on individual games Test: ------ After building orts and ortsg issue ./tournament-2008/game1_orts_test. A window should pop up showing a map and some moving dots. This is the top-down view of category 1 single player games. In this demo, workers don't do much - they just move randomly. Use - = to zoom, arrows to move view. See tournament-2008/doc/game? for more information about the individual categories. AI Clients: ----------- To learn how to interface to the ORTS server, have a look at apps/sampleai/README. For the competition, gfx clients are not required. apps/sampleai/src/SampleEventHandler.C shows how to receive update messages and how to send unit actions back to the server. ORTS Overview: -------------- - ORTS is an RTS game engine. Games and the GUI are scriptable. - The main executable files are bin/orts (server) and bin/ortsg (OpenGL GUI) - ORTS implements a server/client architecture. Only the server knows the entire game state. In each game simulation tick it sends individual views to the clients (players), which in turn can send one action per game object back to the server. See orts3/apps/sampleai/ to learn how client software communicates with the server. - ORTS worlds are represented as layered rectangular playfields which are populated by simple geometric shapes. For this tournament only the ground level will be used. Mobile objects are represented by circles, structures by rectangles, and terrain boundaries such as ground-plateau transitions are represented by line segments. To see a sample 2D playfield view start bin/orts -disp and bin/orts -m client -act (use - = for zoom, arrows to move view) - ORTS implements a simple straight-line, constant speed motion model. The "move(x,y[,speed])" action sets an object in motion. Collision times are computed exactly. When two objects collide, the default action - which is also used in this competition - is to stop them both. Additional effects such as taking damage can be scripted. - The server simulation loop (libs/kernel/src/Game.C:805) does the following: - wait and receive client actions - shuffle actions and execute them in turn, also execute scheduled actions from the action queue - move objects - send view updates to clients - The default game simulation frame rate is 8 fps. Outgoing server messages (views) are queued. Incoming action messages are executed in order in the frame they arrive in - which due to network lag may not be the frame they were intended for. Clients are not forced to read view messages or to respond with action messages, and the server will not disconnect clients in these circumstances. Consult the client documentation file misc/doc/client-code to learn how the server deals with delayed action messages. Please visit the ORTS page to learn more.