Introducción ORTS Modelado y Comportamiento de Personajes MIGJRV 2011-2012 Luis Peña
ORTS Arquitectura Cliente / Servidor Múltiples plataformas: Windows, Linux, Mac??? Recomendado usar Linux. Creación modular de controladores Fácil de instalar? http://skatgame.net/mburo/orts/
Instalación Dos opciones Descargar el Daily Snap: http://skatgame.net/mburo/orts/src_snapshot/snap.html Descargar del SVN svn co svn://anonymous@skatgame.net:/all/pubsoft/orts svn co svn://anonymous@skatgame.net:/all/pubsoft/orts_data Password: guest Sólo es necesario el orts. El paquete de ORTS_DATA es necesario si quieres levantar el interfaz 3D (no necesario para la práctica)
Linux Se requieren las librerías: Boost library, SDL, SDL_net, zlib, OpenGL, glew, and freeglut. Sobre ubuntu: apt-get install libboost-dev libsdl-dev libsdl-net1.2-dev zlib1- dev freeglut3-dev libglew1.5-dev
Windows Para windows es necesario descargar el fichero que viene en la página http://skatgame.net/mburo/orts/files/windows/win32.zip Teóricamente no requiere librerías para hacerlo funcionar, pero si requiere que se creen los ejecutables orts.exe Para poder compilar función en VisualStudio 2008 (No funciona correctamente para 2010, etc) Es necesario crear una solución (.sln) para VisualStudio y compilar desde ahí. Emplead la herramienta VSTool que está en el directorio orts/misc/win/vstool para generar las soluciones de las IAs
Desarrollo La práctica consistirá en desarrollar un controlador para un torneo entre IA s. Para montar el entorno de desarrollo aconsejo emplear eclipse (Linux) o VisualStudio(Win), pero no incluyáis dentro del entorno el SVN. Cread un proyecto con todas las fuentes del paquete ORTS (directorio orts/trunk/) así tendréis todas las clases del sistema.
Desarrollo Para crear un cliente que maneje a un bando debemos crear un directorio dentro de la carpeta <ORTS>/apps. Os recomiendo crearos una copia de una IA básica llamada sample. Es necesario que nombréis las carpetas con un nómbre en minúsculas y que en la memoria indiquéis claramente el nombre de la IA.
Desarrollo. Estructura del Directorio Ejemplo: destoyer destroyer/ GRUPO.txt <En este fichero se incluirán los nombre de los miembros del grupo. MEMORIA.pdf (.doc) < Memoria explicativa de las decisiones de diseño de la IA src/ app.mk < Hay que modificarlo (ver siguiente trasparencia) destroyer_main.c <Debe tener el mismo nombre de la IA + _main SampleEventHandler.C (.H) < Manejador de los eventos (donde empezaremos a codificar /mirar)
Desarrollo. Fichero app.mk APP_DIR := destroyer! Nombre de la IA APP_LIBS := kernel network serverclient gfxclient ai/low kmlocal mapterrain pathfinding/ simple_terrain pathfinding/dcdt/se pathfinding/dcdt/sr pathfinding/triangulation pathfinding/ triangulation/gfxclient ai/movement! APP_EXT_HD +=! APP_EXT_LIBS :=! APP := $(APP_DIR)! include config/app.rules! Librerías que empleemos. Es posible que no queramos liarnos empleando muchas. Pero ya hay bastantes cosas hechas. Mirad un poco
Desarrollo. Clase EventHandler.C Es la que se encarga de analizar cada vez que se producen cambios en el entorno. Se invoca cada Tick de actualización y espera a que se actualice la acción de cada objeto controlado por esta IA dentro del Tick. Nos interesa el método compute_actions Devuelve todos los objetos. Los propios y los contrarios. Observad el código de ejemplo del sample Ojo a las macros FORS/FORALL/ERR definidas en orts/libs/ kernel/src/global.h
Desarrollo. Más documentación. Documentación Doxygen: http://skatgame.net/mburo/orts/doxygen/html/ No es la mejor documentación del mundo, pero Documentos en <ORTS>/docs Tampoco son demasiados, pero algo más de información dan. Otras IA s. Dentro de <ORTS>/apps hay otras IA s y librerías que os pueden ayudar. Tutorías y clases (algunos ratos dedicaremos a ver algún contenido teórico aplicado al ORTS)
Desarrollo. Compilación Si todo ha ido bien es sencillo. Sólo hay que hacer (Linux): Desde el directorio raíz del ORTS make destroyer << nombre de nuestra IA. Eso generará en el directorio <ORTS>/bin un fichero ejecutable destroyer que será el cliente para manejar un bando.
Ejecución Se propondrá un conjunto de scripts y ficheros de configuración para lanzar la práctica. En general, para lanzar ORTS es necesario abrir 3 terminales para ejecutar el servidor, y los dos clientes que manejarán las IA que controlarán cada bando. #> bin/orts -disp -disp crea un interfaz 2D en modo servidor (ver todo) #> bin/sampleai #> bin/sampleai Este modo de ejecución permite ver un escenario DEMO, no jugable
Ejecución Para la práctica se usará el directorio mdp-2011 que está comprimido en mdp-2011.tar.gz En él hay un fichero mdp-2011.sh o mdp-2011.bat que lanza en servidor con las opciones del escenario a evaluar. Habrá que ejecutar las IAs que hacen de clientes #> mdp-2011/mdp-2011.sh #> bin/sampleai #> bin/destroyer