Tema01. Teoria
Tema01. Teoria
Tema01. Teoria
Videojuegos
Tema 1. Videojuegos
Puede llamarte la atención que no hayamos incluido el requisito de que sea entretenido o
divertido. Eso es correcto, aunque es deseable, un videojuego no tiene por qué ser divertido de
jugar al igual que ocurre, por ejemplo, al ver una película. Al cine se puede ir a pasar miedo
(películas de terror), a ver historias tristes (dramas) o para estar en tensión constante (acción).
¿Quiere decir que esas películas no son buenas? Nada más lejos: lo importante es que sea una
experiencia agradable, que te deje con ganas de repetir. Lo mismo ocurre con los videojuegos,
como veremos más adelante cuando analicemos los géneros.
1
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Poco después, en 1952, Alexander S. Douglas programó una versión de las tres en raya
(Noughts and Crosses) que se ejecutaba en el ordenador EDSAC de la Universidad de Cambridge en
1952. No tuvo mucha repercusión dado que solamente podía ejecutarse en el ordenador de dicha
universidad.
William Higinbotham podría considerarse como el creador del videojuego multijugador. Su "tenis
para dos" permitía a dos jugadores competir en el mismo juego. Se exhibió públicamente durante
unas jornadas de puertas abiertas celebradas en su empresa. Aunque fue disfrutado por cientos de
personas, no llegó al público adecuado y por tanto no condicionó la aparición de otros videojuegos.
En 1961, un estudiante del MIT de nombre Stephen Russell desarrolló un videojuego para dos
jugadores llamado Spacewar! que funcionaba en ordenadores PDP-11. Posteriormente el juego fue
mejorado por otros compañeros de Stephen, distribuyéndose como software de dominio público a
través de la ARPAnet, la antecesora de Internet.
Pero no fue hasta comienzos de los años 70 cuando se extendió el uso de los videojuegos en las
casas y en los salones de máquinas recreativas. Los responsables fueron Ralph Baer y Nolan
Bushnell, el primero mediante el diseño y la comercialización de la primera consola de videojuegos:
la Magnavox Odyssey, y el segundo por la fundación de una de las empresas de videojuegos más
influyentes de la historia: Atari. Esta compañía creó innumerables máquinas recreativas y la
primera consola que fue un éxito de ventas: la Atari 2600.
Hoy en día, la industria de los videojuegos está centrada en 3 grandes plataformas: los
ordenadores personales, las consolas y los dispositivos móviles. Hace unos años tendríamos que
haber mencionado las máquinas recreativas, pero la democratización de los ordenadores y las
consolas han terminado por relegarlas prácticamente al olvido.
Por lo general, los saltos tecnológicos aparecen primero en los ordenadores ya que están en
permanente evolución y sus posibilidades de expansión permiten la inclusión de nuevos tipos de
dispositivos. Eso sucedió es su momento con la introducción de las tarjetas de sonido, los gráficos
3D o las tarjetas de aceleración de cálculos físicos. Las novedades más demandadas pasan poco
después al mundo de las consolas. A su vez, los dispositivos móviles son cada vez más potentes y
van adquiriendo poco a poco las características técnicas de los otros dispositivos antes
mencionados.
2
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Programar para una de estas plataformas implica una serie de ventajas y de inconvenientes
respecto a las demás. Veamos algunos aspectos interesantes:
3
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
pueden ser muy distintas y eso necesita una inversión extra de tiempo y dinero durante el
desarrollo.
• Dispositivos móviles: Los últimos en llegar han sido los dispositivos móviles. Si bien
hace años que existen las videoconsolas portátiles (Nintendo Gameboy, Atari Lynx, Sega
GameGear, Nintendo DS, Sony PSP, etc.) el concepto ha evolucionado para dar soporte a
teléfonos móviles y a otros dispositivos similares (por ejemplo, reproductores de música).
Concretamente, la aparición de los smartphones con grandes capacidades gráficas y con un
sistema operativo de grandes prestaciones (iOS, Android, etc.) ha disparado el consumo de
videojuegos en este tipo de dispositivos.
4
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
• Acción: Los videojuegos de acción son aquellos donde se realizan movimientos y/o
combates rápidos. Aquí podemos incluir algunas de los géneros que veremos más adelante
como los juegos de lucha, simulaciones de combate, juegos de disparo en primera persona,
etc. Como representantes de los primeros juegos de acción podríamos nombrar Pong,
Asteroids y Space Invaders.
• Aventura: Son aquellos que sumergen al jugador en una historia que se va desarrollando
conforme avanza en el juego. Suelen incluir puzzles y otros desafíos que se superan con
astucia e intuición. Las más antiguas no tenían gráficos y funcionaban mediante
descripciones del entorno en forma de texto. Entre ellas destacan Zork (en modo texto) y
las series: King's Quest y Monkey Island.
• Lucha: En ellos, el jugador pelea contra otros jugadores o bien contra personajes
controlados por el videojuego. Eso incluye los juegos de lucha uno contra uno o los juegos
cooperativos donde el jugador o jugadores se enfrentan a hordas de enemigos mientras
avanzan por un nivel. Como ejemplos podríamos nombrar: Double Dragon, Street
Fighter, Mortal Kombat y Virtua Fighter.
• Videojuegos de disparo en primera persona (FPS): Los FPS son juegos donde la
pantalla representa lo que vería el personaje a través de sus ojos. En ellos, el personaje
suele ir fuertemente armado y dispara a los enemigos mientras recoge ítems desperdigados
por el nivel. Los más conocidos fueron: Wolfenstein 3D, Doom, Duke Nukem 3D y
Quake.
• Plataformas: Este tipo de juegos suele consistir en un personaje, controlado por el
jugador, que avanza por un nivel mediante movimientos rápidos y saltos. Los niveles suelen
recorrerse en horizontal o vertical. Se podría considerar Super Mario Bros. como el
iniciador del género al que siguieron otros éxitos como Bubble Bobble o Rainbow Island.
• Estrategia: Son juegos donde la planificación de las acciones suele tener bastante peso
a la hora de obtener un victoria. Podemos clasificar los juegos en dos subgéneros: estrategia
en tiempo real y estrategia basada en turnos. La diferencia principal entre ambas es el
tiempo de reacción ante los sucesos, ya que el juego no se detiene en el primer caso,
obligando a realizar acciones de forma rápida. Uno de los juegos que sentó las bases de la
estrategia en tiempo real fue The Anciert Art of War, aunque el género fue popularizado
por Dune 2, Warcraft y Command & Conquer. En el caso de la estrategia por turnos
5
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Civilization fue el gran iniciador, al que siguieron otros títulos célebres como Master of
Orion o X-Com.
• Puzzle: Estos juegos permiten al jugador aplicar estrategias y deducciones lógicas con el
fin de conseguir ciertos objetivos. Suelen trabajar mucho con formas geométricas y
combinaciones de elementos y colores que pueden ser movidos, intercambiados o rotados.
También pueden incluir un tiempo limitado o bien introducir una competición con otro
jugador para darle más emoción. El caso más claro de este tipo de juegos es Tetris.
• Simuladores: Como su nombre indica, intentan recrear un sistema del mundo real.
Desde el funcionamiento de una ciudad (SimCity), de un avión (Microsoft Flight
Simulator), de un negocio de transportes (Transport Tycoon) o de una nave espacial (X-
Wing).
• Juegos de rol (RPG): Es la versión electrónica de los juegos de rol tradicionales que se
juegan con papel y dados. Los jugadores tienen unas estadísticas (fuerza, sabiduría, dinero,
etc.) que se van incrementando conforme aumenta su experiencia. Además, pueden adquirir
y usar objetos y armas que van recopilando durante el juego. Al contrario que sus
equivalentes en papel, aquí no es necesario echar a volar la imaginación para situarse en el
juego; además, las reglas están implícitas, lo que evitar tener que memorizarlas. Las series
Ultima, Baldur's Gate o Final Fantasy son algunos ejemplos de este tipo de videojuegos.
• Juegos de rol multijugador masivos (MMORPG): Son juegos de rol cuyo principal
interés es que el desarrollo de la partida se produce en un escenario donde coinciden
cientos o miles de otros jugadores. En sus orígenes eran juegos de texto y se llamaban MUD
(Mazmorras multiusuario). Suelen ser juegos en los que se paga una suscripción mensual
para acceder. Algunos ejemplos representativos son: Ultima Online y World of Warcraft.
• Carreras: El objetivo de estos juegos es llegar el primero a la meta. En muchos de ellos
se intenta recrear lo mejor posible las sensaciones de conducir un vehículo en una
competición. El primero en convertirse en éxito de ventas fue Pole Position.
• Deportivos: Estos videojuegos tratan de transmitir la emoción de practicar un deporte
real. Esto incluye desde deportes individuales, a dobles o en equipo. El juego Summer
Games o las series PC Fútbol, Pro Evolution Soccer y FIFA.
6
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
• Musicales: El jugador tiene que seguir o acompañar el ritmo dado por el juego ya sea
mediante la pulsación de botones, movimientos o entonación al cantar. El juego clásico es el
Dance Dance Revolution, donde el jugador tiene que saltar sobre unas flechas que hay en
el suelo siguiendo las indicaciones de la pantalla. Otros juegos que popularizaron el género
son las series Singstar, Guitar Hero y Rock Band.
• Minijuegos: Son muchos juegos en uno, generalmente de muy corta duración y con unas
reglas simples. Pueden ser parte de otro tipo de juego, ofreciéndose los minijuegos como
una recompensa o como un requisito para seguir avanzando. En otros casos, el juego en sí
consiste en la superación de un conjunto de minijuegos (por ejemplo, Mario Party).
• Tradicionales: Los equivalentes electrónicos de los juegos de toda la vida. El juego
Noughts and Crosses (OXO) puede considerarse uno de los primeros juegos de este
género, pero aquí también se incluyen los juegos de cartas, de mesa (ajedrez, damas), etc.
• Educativos: Su misión es que el jugador aprenda mientras se divierte. El aprendizaje
puede producirse mediante la necesidad de memorización de ciertos datos para conseguir
cierto objetivo o bien mediante la observación y repetición de ciertas tareas o
comportamientos. Algunas de las series más conocidas son la de Carmen Sandiego y la
saga The Incredible Machine.
• Serios: Los juegos serios son un género muy reciente. Están diseñados no solo para
entretener sino para que al jugar repetidamente se adquieran ideas que entran dentro del
ámbito de la ética, la realidad social o el trabajo en equipo.
7
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
8
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Todas esas secciones forman el equipo típico de desarrollo de un videojuego moderno de gran
presupuesto.
Cada persona que participa posee un área de especialización, aunque no siempre la aplica
trabajando en lo más obvio. Por ejemplo, un programador puede estar echando una mano en
gestión de calidad o en soporte técnico ya que sus conocimientos benefician el funcionamiento de
esa parte del proyecto.
En el caso de la producción. podemos dividir al personal en otros grupos según la función que
desempeñan: diseño general, programación, diseño artístico, audio y gestión. En este módulo
profesional nos centraremos en la parte de producción, y dentro de ella en los equipos
de diseño y programación, especialmente en esta última.
La parte del equipo dedicada al diseño son las personas encargadas de determinar la idea, la
mecánica del juego, los diseñadores de niveles o de misiones y los escritores de la historia y los
diálogos. Suelen incluir un diseñador principal (en inglés, "Lead Designer"), que es quien
coordina a los demás.
Por otro lado, y dado que el producto final es software, debe haber programadores que se
encarguen de la creación del código específico, del motor de juegos y de todas las demás
herramientas relacionadas (editores de niveles, instaladores, etc.). Los equipos de programadores
suelen construirse alrededor del programador principal (en inglés: "Lead Programmer"), que
suele ser el más experimentado. Si el tamaño del equipo es grande, puede aparecer el rol de
9
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
El motor de juegos contiene la funcionalidad sobre la que se apoya el código específico para
realizar esas actividades. Como veremos más adelante, un buen motor de juegos es independiente
del tipo de juego que se está implementando y sólo incluye conceptos genéricos como la captura
de eventos del teclado/ratón, la gestión de recursos, la visualización de los objetos, las
comunicaciones por red, la reproducción de sonidos, etc.
El motor de juegos nos permite abstraernos del hardware del equipo y el sistema operativo,
aunque usan sus servicios para llevar a cabo sus funciones. Esto es muy interesante, veamos la
razón con un ejemplo: si nuestro motor de juegos soportara 3 clases de consola y 3 sistemas
operativos distintos de ordenadores personales, podemos tener un juego funcionando en 6
plataformas con muy poco esfuerzo adicional.
10
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
El tercer componente, los recursos (o assets, en inglés), es el compendio de los contenidos del
juego. Entre esos contenidos podemos encontrar música, efectos de sonido, modelos 3D, fondos de
pantalla, tipos de letra, niveles, etc. El motor de juegos cargará los recursos según le indique el
código específico. De la creación de los contenidos suelen encargarse los diseñadores artísticos,
ingenieros de sonido, escritores, diseñadores de niveles, etc. aunque su desarrollo puede estar
supervisado por programadores.
Entonces, si ya tengo la idea y quiero programar un juego, ¿por dónde empiezo? ¿Qué
componente es el primero sobre el que debo trabajar? Pues dado que la elección del motor de
juegos determinará cómo será el código específico y el formato de los recursos lo lógico es
comenzar seleccionando un motor de juegos. Es una decisión que no debe tomarse a la ligera ya
que cambiar el motor de juego a mitad de un proyecto puede tomar mucho tiempo.
En los siguientes apartados haremos una revisión de los distintos componentes que tiene un
motor de juego típico y veremos cuáles son sus características más importantes.
11
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Teniendo todo esto en cuenta, podemos clasificar los motores en dos grandes grupos
según el tipo de licencia de uso:
• De código abierto: No es necesario pagar por su uso e incluyen el código fuente del
motor. Hay que prestar atención al tipo de licencia concreto, pues algunas restringen el uso
del motor a la creación de videojuegos que también sea software libre (por ejemplo, la
licencia GPL, Licencia Pública General). La documentación y el soporte suele ser llevado a
cabo por la comunidad de usuarios. Algunos de los más conocidos son Ogre3D, Irrlicht, id
Tech 4 (publicado como código abierto en noviembre de 2011), jMonkeyEngine 3 y
Crystal Space 3D.
• Propietario: Son desarrollados por empresas que cobran por la comercialización de
juegos basados en sus motores. En algunos casos pueden ofrecerse de forma gratuita si se
cumplen determinadas condiciones. El coste final puede depender de muchos factores:
número de empleados, de copias vendidas o del dinero entregado por los editores para su
realización. Suelen estar excelentemente documentados y, por lo general, incorporan
herramientas adicionales que facilitan la gestión de los contenidos. Las empresas ofrecen
normalmente asistencia técnica de sus productos. Por todo ello, las grandes producciones
suelen basarse en este tipo de motores de juego. A la hora de escribir estas líneas, los más
reconocidos son id Tech 5, C4 Engine, Gamestudio, Source Engine, RAGE, SCUMM
(específico para aventuras gráficas), Unreal Engine, IW y Torque Game Engine.
12
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Muchos motores de juegos se apoyan en librerías ya existentes que les proporcionan parte de su
funcionalidad básica. Por ejemplo, OpenGL o DirectGraphics suelen utilizarse para mostrar
objetos en 2 y 3 dimensiones, siendo estas librerías las que acceden directamente a los
controladores de la tarjeta gráfica. Esto permite al motor no estar atado a un determinado
hardware. Más aún, algunas de esas librerías están disponibles para múltiples plataformas (por
ejemplo OpenGL) lo que facilita la portabilidad del motor a múltiples sistemas.
13
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Las librerías no tienen por qué ser exclusivamente para acceder al apartado gráfico:
existen muchas otras librerías para otros usos. Por ejemplo, OpenAL o FMOD hace lo mismo con el
audio y OpenCL con las operaciones de computación intensiva.
A priori, puede parecer una idea buena porque sólo se implementa aquello que se va a
necesitar, con lo que el resultado será más óptimo. Además, el código estará más integrado.
14
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
• Motor gráfico 2D
• Motor gráfico o de renderizado 3D
• Detector de colisiones
• Motor de físicas
• Motor de inteligencia artificial (IA)
• Motor de sonidos
• Gestor de comunicaciones en red
En los siguientes apartados desarrollaremos en qué consiste cada uno de estos componentes y
lo que aporta a un videojuego.
Antes de detallar las características de los motores gráficos debemos introducir el concepto de
2D y 3D.
Los juegos 2D son aquellos en los que los dibujos tienen dos dimensiones, por ejemplo ancho y
alto, pero no profundidad. Para entendernos, son formas planas que se mueven por la pantalla.
15
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Podemos dibujarlas más grandes para parecer que están más cerca y más pequeños para
parecer que se alejan, pero siguen siendo planos. Un motor 2Dpermite dibujar de forma sencilla
figuras geométricas (líneas, rectángulos, círculos, etc.) con lo que se evita tener que implementar
los algoritmos en el código específico.
Normalmente, un juego 2D consiste en una o varias capas de imágenes en el fondo sobre las
que se dibujan objetos 2D como pueden ser el jugador, los enemigos, monedas, obstáculos,
disparos, etc. A esos objetos que son representativos en el juego se les denomina sprites. El motor
controla todos los que estén activos en un momento dado, almacenando la posición en la que
están, si hay que dibujarlos rotados, si están o no animados, etc.
Las animaciones en los juegos 2D se producen cambiando el dibujo del sprite rápidamente de
manera que haya pequeñas diferencias entre uno y otro, lo que produce en el cerebro una
sensación de continuidad. Observa las siguientes imágenes y verás como cada dibujo está un poco
más girado que el anterior: si se dibujara uno tras de otro (de izquierda a derecha y de arriba a
abajo) en la misma posición el efecto que captarías es que estaría girando en el sentido de las
agujas del reloj.
Los motores gráficos 2D dan soporte a los sprites, ofreciendo herramientas para escalar, rotar y
mover objetos por la pantalla con comodidad. En la unidad de trabajo siguiente se verán estos
conceptos con más detenimiento. También la información que se superpone en la pantalla (como e
número de vidas o la puntuación).
Cuando dos sprites se superponen el resultado final dependerá del orden en que se dibujen.
Dicho orden normalmente se denomina plano o capa. Si el motor lo soporta, hay que elegir el
plano de cada sprites cuidadosamente para que se produzca el efecto que deseamos.
En algunos motores gráficos podemos representar mundos que sean varias veces más grandes
que el tamaño de la pantalla. El motor se encargará de mostrar solamente aquella parte que le
indique el código específico. Esto permite, por ejemplo, seguir al jugador a lo largo y ancho de un
nivel.
Otro elemento gráfico que poseen muchos motores 2D es el de tilemap (celosía), que es una
composición de imágenes pequeñas del mismo tamaño. Este recurso es muy útil para dibujar
fondos, mapas y niveles.
16
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Normalmente, los objetos 3D están constituidos por vértices que juntos forman polígonos,
generalmente de tres o cuatro lados.
En la figura se observa una esfera 3D. Los vértices son los puntos donde confluyen las líneas. La
flecha roja indica el eje X, la verde el eje Y y la azul el eje Z.
17
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Los polígonos formados por los vértices se observan mejor en esta otra figura. Fíjate que algunos
se ven en un color más claro que otros. Todo ello es debido a la iluminación de la escena.
Sobre los polígonos se pueden aplicar texturas para darle un aspecto más realista. Simplificando
mucho, podemos considerarlas como unas pegatinas que se pegan a su superficie. Las veremos
con más detalle en la unidad de trabajo de motores 3D.
18
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
El conjunto de todos los objetos de este mundo virtual junto con las cámaras, las luces y
demás elementos forman la escena. Internamente, la escena se suele almacenar mediante el
denominado grafo de escena que se estudiará más adelante.
¿Es realmente necesario que se encargue un motor? ¿No podemos comprobarlo nosotros mismo
desde el código específico de una forma sencilla? Resulta que detectar colisiones no es nada fácil,
especialmente en ciertas circunstancias. En el caso 2D, dos objetos no han colisionado hasta que
tienen un punto (píxel) en común. Eso implica tener que comprobar punto a punto de las dos
imágenes buscando que ambas coincidan en algún sitio. Si tenemos en cuenta que puede haber
decenas de objetos en pantalla de forma simultánea y que el objeto puede ser de gran tamaño, las
cosas se complican. Podríamos simplificar el proceso de detección de una colisión suponiendo
que hay un círculo o una caja que envuelve cada objeto y comprobar si dichas figuras geométricas
se superponen: matemáticamente es sencillo de comprobar. El problema es que pueden darse
falsos positivos de colisión, veamos un ejemplo.
En la parte izquierda de la imagen puedes comprobar como hay un falso positivo: las cajas de la
izquierda están superpuestas pero los objetos en realidad no se tocan. En la parte derecha sí lo
hacen. Si el motor hace bien su trabajo, cuando las figuras geométricas colisionen realizará un
estudio más cuidadoso en la zona superpuesta para saber si efectivamente han chocado; de
esta forma podemos solucionar los falsos positivos.
Algunos detectores de colisiones clasifican los objetos en tipos de manera que sólo comprueban
ciertas combinaciones. Por ejemplo: las colisiones de los objetos tipo "bala" con los tipo "enemigo"
sí se comprueban, pero las colisiones de los objetos tipo "enemigo" con otros tipo "enemigo" no.
Esto permite ahorrar mucho tiempo de cálculo.
Si el caso de los objetos 2D no es sencillo de solucionar, con los objetos 3Dserá más difícil aún
porque los objetos tienen volumen y no todo está en el mismo plano.
19
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Todos estos comportamientos son calculados por el motor de físicas y pueden ir desde
dotar de un efecto de gravedad al escenario donde estamos jugando hasta el cálculo de la
dirección que tomarán dos objetos al chocar, calcular por donde discurre un líquido derramado, por
donde se romperá un objeto al golpearlo o que al tirar de una cuerda se mueva un objeto que está
atado al otro extremo. De hecho, en entornos 3D suele ser el motor de físicas el encargado
de detectar las colisiones entre objetos. Para poder realizar todas estas actividades el motor
asignará una serie de propiedades físicas a cada objeto (velocidad, aceleración, masa, etc.) y
aplicará las ecuaciones de la física newtoniana.
Los cálculos de este tipo de motores requieren un uso intensivo del procesador. Es por
ello que hace unos años surgieron tarjetas aceleradoras de física, que permitían dejar libre la CPU
para otras tareas. Su funcionamiento era similar a las GPU. Es un procesador específico para
realizar operaciones paralelas masivas como las que se encuentran en las operaciones con gráficos
3D de las tarjetas gráficas 3D, pero su procesador (PPU) es un procesador específico para descargar
a la CPU de los cálculos del motor de físicas. En los últimos años la tendencia es que las GPU
asuman estas funciones.) estaba dedicado solamente a realizar cálculos de simulaciones físicas.
Poco después se trasladó esa funcionalidad a las propias GPU de las tarjetas gráficas, ya que éstas
son capaces de realizar millones de cálculos por segundo en paralelo.
Por tanto, es importante conocer que algunos motores de físicas son capaces de descargar la
CPU y realizar los cálculos en la GPU de la tarjeta gráfica o en la PPU de la tarjeta aceleradora de
física.
Por ejemplo, para encontrar de forma eficiente el trayecto que tendría que seguir un guardia de
seguridad para llegar a un punto en un mapa se usan algoritmos de búsqueda de caminos. El más
conocido, es el A*.
20
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Un recurso muy utilizado para simular comportamientos sería el uso de máquinas de estados
finitos. Su aplicación permite que un objeto se comporte de forma distinta según la situación. Por
ejemplo: un guardia puede estar vigilando una zona y, en caso de detectar al jugador, dejaría
inmediatamente esa tarea para proceder a perseguirlo. Si lo perdiera de vista, volvería a su tarea
original. Al personaje del juego que no está bajo control directo del ordenador se le denomina NPC
(personaje no jugador) y suele ser controlados por la IA.
Cualquier técnica en el campo de la inteligencia artificial podría aplicarse aquí: lógica difusa,
redes neuronales, redes bayesianas, algoritmos genéticos, etc. Eso sí, hay que considerar
que no deben ser muy costosas computacionalmente hablando para que el juego no se ralentice.
Tanto la música como los efectos de sonido son parte de los recursos del juego. Ambos
pueden incluirse como partitura (usando archivos MIDI) o bien de forma digitalizada, ya sea
grabada directamente del mundo real o modificada con algún editor de audio como el de la figura.
En los juegos modernos también pueden incluirse voces que se reproducirán de forma
sincronizada con el motor de gráficos con el fin de dar la sensación de que el modelo está
moviendo los labios.
21
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Los motores de sonido pueden ser muy complejos: algunos tienen conexiones con el
motor de físicas para cambiar las características del sonido según a situación. Por ejemplo, podría
producir un efecto doppler (el que hace que sepamos si una ambulancia está acercándose o
alejándose simplemente por el sonido que emite). También, otros pueden distorsionar el sonido
para simular la acústica de una sala o de un corredor, dotando de más realismo al juego.
Por último, algunos motores permiten generar sonido posicional en 3D. Eso quiere decir que
pueden localizar espacialmente el sonido en aquellos sistemas que soporten audio multicanal (por
ejemplo, 5.1) o bien simularlo en la salida de auriculares. Si el motor de sonidos está integrado con
el motor gráfico 3D, una forma de conseguirlo es asociando el sonido a uno de los objetos de la
escena; el resultado se obtiene automáticamente.
22
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Todo ello, como siempre, sin que el código específico tenga que saber nada de la
infraestructura de red, el sistema operativo o la plataforma en general.
La separación entre los roles de cliente y servidor es la más utilizada. De hecho, algunos juegos
como Quake 2 o Quake 3, siguen este modelo incluso para el modo de un jugador, simplemente la
máquina se conecta consigo misma. El servidor guarda en memoria el estado de la partida (objetos
activos, vida restante de cada jugador, ítems, munición restante, etc.) y los clientes sirven
solamente para enviar los movimientos o acciones (saltar, disparar, etc) y para mostrar por
pantalla la proyección de lo indicado por el servidor. El haberlo diseñado así permite extender
soportar sin apenas cambios los modos multijugador.
23
2º DAM – Programación multimedia y dispositivos móviles Tema 1. Videojuegos
Una de las grandes ventajas de OpenGL es el soporte de extensiones que permite ampliar la
funcionalidad de la librería o bien implementar funciones opcionales.
• OpenGL ES: es una versión reducida de OpenGL dirigida a dispositivos empotrados o con
poca potencia. Suele ser la librería utilizada en las plataformas móviles modernas como los
smartphones. Una aplicación que haga uso de OpenGL ES puede funcionar casi sin cambios
en su versión correspondiente de OpenGL estándar pero lo contrario no suele ser cierto.
Respecto al audio:
• OpenCL: es una librería estándar de programación paralela. Puede usarse para motores de
físicas o para motores de IA. Es gestionada por la misma gente de OpenGL y soporta
aceleración hardware allí donde esté disponible.
24