UNIVERSIDAD DE CASTILLA-LA MANCHA
ESCUELA SUPERIOR DE INFORMÁTICA
GRADO EN INGENIERÍA INFORMÁTICA
TRABAJO FIN DE GRADO
Instrumentación de un videojuego 3D con fines
docentes
Isaac Lacoba Molina
Julio, 2015
INSTRUMENTACIÓN DE UN VIDEOJUEGO 3D CON FINES DOCENTES
UNIVERSIDAD DE CASTILLA-LA MANCHA
ESCUELA SUPERIOR DE INFORMÁTICA
Tecnologías y Sistemas de Información
TECNOLOGÍA ESPECÍFICA DE
INGENIERÍA DE COMPUTADORES
TRABAJO FIN DE GRADO
Instrumentación de un videojuego 3D con fines
docentes
Autor: Isaac Lacoba Molina
Director: Dr. David Villa Alises
Julio, 2015
Isaac Lacoba Molina
[email protected]
Ciudad Real – Spain
E-mail:
Teléfono: 123 456 789
c(cid:13) 2015 Isaac Lacoba Molina
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU
Free Documentation License, Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy
of the license is included in the section entitled "GNU Free Documentation License".
Se permite la copia, distribución y/o modificación de este documento bajo los términos de la
Licencia de Documentación Libre GNU, versión 1.3 o cualquier versión posterior publicada por
la Free Software Foundation; sin secciones invariantes. Una copia de esta licencia esta incluida en
el apéndice titulado «GNU Free Documentation License».
Muchos de los nombres usados por las compañías para diferenciar sus productos y servicios son
reclamados como marcas registradas. Allí donde estos nombres aparezcan en este documento, y
cuando el autor haya sido informado de esas marcas registradas, los nombres estarán escritos en
mayúsculas o como nombres propios.
i
TRIBUNAL:
Presidente:
Vocal:
Secretario:
FECHA DE DEFENSA:
CALIFICACIÓN:
PRESIDENTE
VOCAL
SECRETARIO
Fdo.:
Fdo.:
Fdo.:
iii
Resumen
L A importancia de los videojuegos en la sociedad actual está fuera de toda duda. De
hecho, la industria del videojuego genera al año mas ingresos que la del cine y la música
juntas.
Sin embargo, aunque el desarrollo de videojuegos es una actividad que desde el punto de
vista comercial es muy interesante, desde el punto de vista del desarrollo es muy exigente,
ya que involucra una gran cantidad de disciplinas: motor del juego, físicas, interfaces de
usuario, inteligencia artificial, networking, programación gráfica, programación de niveles,
diseño de las mecánicas de juego (gameplay), etc.
Incluso limitándonos a las disciplinas relacionadas con las cuestiones más técnicas, su
dominio requiere años de experiencia y un gran nivel de especialización. En las grandes
compañías de desarrollo existen grupos de trabajo con objetivos muy concretos, mientras
que en las pequeñas compañías los desarrolladores deben aunar conocimientos de diversas
técnicas.
En este contexto tan favorable, en el que el sector de los videojuegos está en pleno au-
ge, surge el proyecto Tinman. La motivación es crear un videojuego que sirva como caso
práctico, un ejemplo funcional fácil de estudiar que muestre y facilite la comprensión de los
mecanismos internos del mismo a los profesionales que quieran introducirse en el sector del
videojuego, algo que tiene especial valor dada la naturaleza reservada de esta industria.
Un aspecto novedoso de este proyecto es la implementación de una serie de técnicas de
instrospección e instrumentación del motor de juego que han permitido crear pruebas au-
tomáticas. Dado que el proceso de testing en videojuegos pasa por jugar una y otra vez al
juego que se está desarrollando, y debido a la enorme complejidad de estos proyectos, el uso
de testing automático tiene especial relevancia para reducir costes y tiempo de desarrollo,
permitiendo la detección temprana de errores.
El videojuego creado es un clon del clásico arcade de los 90’s Super Off Road. Sin embar-
go, atendiendo a las demandas del mercado, se ha implementado un modo multijugador en
red utilizando ZeroC Ice como middleware de comunicacione, que ha ayudado a abstraer los
detalles de bajo nivel. Por último lado, se ofrece tambien la posibilidad de juego local compi-
tiendo contra Bots. Para ello se ha creado un componente de inteligencia artificial, primando
la facilidad para integrar nuevos algoritmos por encima de la complejidad del mismo.
V
Abstract
T HE relevance of the videogames in nowday’s society is out of doubt. In fact, the game
industry generates more income per year than the film and music industry together.
However, although the development of video games is a very interesting activity from the
commercial point of view, from the point of view development is very challenging because
it involves a lot of disciplines: game engine, physical, user interfaces, artificial intelligence,
networking, graphical programming, programming levels, design game mechanics (game-
play), etc.
Even limiting ourselves to the more technical disciplines, your domain requires years of
experience and a high level of specialization. In large videogame companies there are de-
velopment groups with very specific goals, while in small companies their developers must
combine knowledge of various techniques.
In this so favorable context , in which the video game industry is in booming, is where
born is the project Tinman . The motivation is to create a game that serve as a study case, an
easy example to study functional to show and facilitate understanding of the inner workings
to those professionals who want to enter the video game industry, which is something with
added value given the confidential nature of this industry.
A novel aspect of this project is the implementation of a series of introspection techniques
and instrumentation of the game engine that allow to create automated tests. Since the pro-
cess of testing in videogames consist in play video games again and again to the game that is
being developed, and due to the enormous complexity of these projects, the use of automated
testing has special relevance to reduce costs and development time, allowing early detection
of errors.
The game created is a clone of the arcade classic 90’s emph Super Off Road. However,
in response to market demands, it has been implemented multiplayer mode using ZeroC Ice
as communication middleware, which has helped to abstract the low-level details. Finally, it
also offers the possibility of competing against local game Bots. For this we have created a
component of artificial intelligence, giving priority easy to integrate new algorithms above
complexity.
VII
Agradecimientos
En primer lugar gracias a mis padres y mi hermana, vuestro cariño y apoyo me han dado
fuerzas para seguir.
En segundo, gracias a todos los Danis, son muchos en mi vida y todos me han ayudado a
lo largo de ella.
En tercero, a Thanatos, amigo desde tiempo inmemorial, la amistad es intemporal, y espero
que la nuestra siga así de fuerte muchas décadas más.
En cuarto, a toda la gente de ARCO, en especial a Tato y Oscar. El día a día ha sido mas
ameno con vuestra compañía y vuestros consejos me han hecho mas sabio.
En quinto, a mi director, David, gracias a tu guía he madurado como ingeniero. He apren-
dido muchísimo de ti, ha sido duro seguir el ritmo, pero ha merecido la pena.
Por último, gracias a Inés y a toda la gente del grupo. Nada de lo que diga puede expresar
mi agradecimiento por vuestros consejos y apoyo. Gracias a vosotros he podido evolucionar
y este proyecto es el resultado.
Nada sería lo mismo sin la gente que me ha acompañado a lo largo de los años. A todos
vosotros, gracias.
Isaac Lacoba Molina
IX
xi
Índice general
Resumen
Abstract
Agradecimientos
Índice general
Índice de cuadros
Índice de figuras
Índice de listados
Listado de acrónimos
1. Introducción
1.1. Estructura del documento . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Repositorio, Nombre del proyecto y página web . . . . . . . . . . . . . . .
2. Objetivos
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1. Objetivo general . .
2.2. Objetivos específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2.1. Objetivo 1 .
2.2.2. Objetivo 2 .
2.2.3. Objetivo 3 .
2.2.4. Objetivo 4 .
3. Antecedentes
3.1. Motores de Juego .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1. Motores de juegos comerciales . . . . . . . . . . . . . . . . . . . .
3.2. Alternativas libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XIII
V
VII
IX
XIII
XVII
XIX
XXI
XXIII
1
2
3
5
5
5
5
6
6
6
7
7
8
10
. .
. .
. .
.
. .
. .
.
. .
.
.
3.4. Visión general de la Inteligencia Artificial
3.4.1. Algoritmo A* .
.
3.4.2. Rubber Band . .
3.2.1. Motor de Juegos Libre: Godot
3.2.2. Ogre3D .
3.2.3. Bullet Physics .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Físicas en dinámica de vehículos . . . . . . . . . . . . . . . . . . . . . . .
3.3.1. Movimientos rectilíneos . . . . . . . . . . . . . . . . . . . . . . .
3.3.2. Transferencia de peso . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
3.3.3. Giros
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . .
3.5. Caso de estudio: The Open Racing Car Simulator (TORCS) . . . . . . . . .
3.6. Historia de los juegos en red . . . . . . . . . . . . . . . . . . . . . . . . .
3.6.1. Peer-to-Peer Lockstep . . . . . . . . . . . . . . . . . . . . . . . .
3.6.2. Cliente-Servidor
. . . . . . . . . . . . . . . . . . . . . . . . .
3.6.3. Mecanismo de predicción en el lado del cliente . .
Comentarios de: Instrumentación de un videojuego 3D con fines docentes (0)
No hay comentarios