Introducción ORTSModelado y Comportamiento de Personajes
MIGJRV 2011-2012
Luis Peña
ORTSArquitectura Cliente / ServidorMúltiples plataformas: Windows, Linux, Mac???Recomendado usar Linux.Creación modular de controladoresFácil de instalar ?
http://skatgame.net/mburo/orts/
InstalaciónDos opciones
Descargar el Daily Snap: http://skatgame.net/mburo/orts/src_snapshot/snap.html
Descargar del SVN svn co svn://[email protected]:/all/pubsoft/orts svn co
svn://[email protected]:/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)
LinuxSe 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
WindowsPara windows es necesario descargar el fichero
que viene en la página http://skatgame.net/mburo/orts/files/windows/win32.
zipTeó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 (creo que para 2010, etc también… pero no lo hemos probado)
Es necesario crear una solución (.sln) para VisualStudio y compilar desde ahí.
DesarrolloLa 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.
DesarrolloPara 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 DirectorioEjemplo: 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.mkAPP_DIR := destroyer
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
Nombre de la IA
Librerías que empleemos. Es posible que no queramos liarnos
empleando muchas. Pero ya hay bastantes cosas hechas. Mirad un poco
Desarrollo. Clase EventHandler.CEs 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>/docsTampoco 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ónSi 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ónSe propondrá un