Vous êtes sur la page 1sur 15

Universidad Autnoma Metropolitana Unidad Azcapotzalco

Divisin de Ciencias Bsicas e Ingeniera


Licenciatura en Ingeniera en Computacin

Trabajo de investigacin del tercer parcial.


Motores de visualizacin para videojuegos.

Padilla Segura Omar Eduardo


209202106

8 de noviembre de 2013

Trimestre 2013 Otoo

Risto Fermn Rangel Koopa


Profesor Titular
Departamento de Sistemas

Contenido
Introduccin........................................................................................................ 3
Qu es un motor de visualizacin de videojuego?.............................................3
Breve historia de la evolucin de los motores de videojuegos............................5
Arquitectura general del motor de visualizacin para videojuegos.....................7
Capa de hardware............................................................................................ 8
Capa de Drivers............................................................................................... 9
Capa Sistema Operativo.................................................................................. 9
Capa de SDKs y Middlewares...........................................................................9
Capa independiente de la plataforma............................................................10
Subsistemas principales................................................................................ 10
Biblioteca matemtica................................................................................... 10
Estructura de datos y algoritmos...................................................................10
Gestin de memoria...................................................................................... 10
Depuracin y logging..................................................................................... 11
Gestor de recursos......................................................................................... 11
Motor de rendering........................................................................................ 11
Renderizado de bajo nivel.............................................................................. 11
Scene graph/culling y optimizaciones............................................................11
Efectos visuales............................................................................................. 12
Front-end....................................................................................................... 12
Herramientas de depuracin.........................................................................12
Motor de fsica............................................................................................... 13
Interfaces de usuario..................................................................................... 13
Networking y multijugador............................................................................. 13
Subsistema de juego...................................................................................... 13
Audio.............................................................................................................. 14
Subsistemas especficos de juego..................................................................14
Conclusiones..................................................................................................... 14
Referencias....................................................................................................... 15

Introduccin
Los videojuegos han evolucionado bastante desde aquel primer videojuego
llamado Pong lanzado a la venta en 1972. Los videojuegos de aquella lejana
poca se caracterizaban por su sencillez en los grficos. En la actualidad el
desarrollo y capacidades del software y hardware han alcanzado niveles
inimaginables y en consecuencia a esto los videojuegos han mejorado la calidad
de grficos. [1]
En este trabajo se desarrolla el tema de los motores de visualizacin para
videojuegos ya que el motor es el eje fundamental para desarrollar videojuegos.
Los temas que se tratan son los siguientes; definicin de motores grficos, historia
y evolucin de los motores grficos, funcionamiento de los motores.

Figura 1. El videojuego Pong fue parte de la primera generacin de consolas de


videojuegos.

Qu es un motor de visualizacin de videojuego?


Un motor es algo que mueve, una mquina que produce movimiento. Respecto al
tema de los videojuegos un motor es un programa o conjunto de programas sin los
cuales no sera posible darle movimiento al juego, esto quiere decir que el motor
de un videojuego es un equipo de construccin que puede construir un mundo
virtual a partir de un conjunto de reglas tales como: leyes fsicas, sonidos,
animaciones, efectos, entre otras cosas que se necesiten para crear dicho mundo
virtual. [2]

Cabe mencionar que un motor grfico es el que utiliza grficas simples (no
grficas en 3D, ni grficas basadas en texto), esto quiere decir que un motor
grfico no puede mostrar imgenes las imgenes 3D reales pero lo que hace
dicho motor es simular efectos 3D mediante la manipulacin de los grficos en 2D.
En el libro titulado: Desarrollo de videojuegos. Arquitectura del motor de
videojuegos se dice que el trmino de motor de videojuego surgi a mediados de
los 90s con la aparicin del famoso juego de accin en primera persona Doom,
desarrollado por la compaa id Software bajo la direccin de John Carmack. Esto
se sustenta por el hecho de que Doom fue diseado con una arquitectura
orientada a reutilizacin mediante una separacin adecuada de distintos mdulos
de los componentes fundamentales. Por ejemplo el sistema de renderizado
grfico, el sistema de deteccin de colisiones o el sistema de audio, y los
elementos ms artsticos, como por ejemplo los escenarios virtuales o las reglas
que gobernaban al propio juego.[1]
Con el motor de juego diseado de esta forma se facilitaba demasiado la
reutilizacin del software y el concepto de motor de videojuego tom ms fuerza y
se hizo popular, con esto los desarrolladores de videojuegos se vieron
beneficiados ya que comenzaron a utilizar los mdulos de videojuegos licenciados
para crear los suyos, no necesitaban hacerlo todo desde cero ya que el ncleo,
por llamar as al motor de videojuego, no era modificado, lo nico que se
modificaba era el arte y las reglas que deba seguir el juego.
Hoy en da los videojuegos son ms realistas con efectos increbles y compiten
casi a la par con la industria cinematogrfica, todo esto se logra gracias a los
motores 3D. El motor 3D ayuda a manejar todo lo que est detrs de las
animaciones en tres dimensiones pero hacer un motor 3D no es nada trivial, por
suerte existen personas que generosamente dejan al pblico los motores que ellos
han creado, tambin existe quien vende motores muy caros pero con ellos se
pueden lograr videojuegos de mucho mejor calidad.
A grandes rasgos, las etapas que se siguen para crear un videojuego son las
siguientes:
1. Elaboracin del guion o historia.
Ya que se tiene el guion se desglosan las siguientes partes:
1.
2.
3.
4.

Tipo de plataforma (para PCs, PlayStation, Xbox, etc.)


Sonido (que formatos de sonido se van a emplear)
Ambiente (esto va de acuerdo a la historia)
Pblico al que ir dirigido,

Despus de haber completado todo este proceso se hace una pregunta muy
importante: De cunto tiempo se dispone para realizar el videojuego?

Si se tiene bastante tiempo existe la posibilidad de que se estudie o se haga uso


de alguna librera como por ejemplo Opengl o Directx para crear el juego, pero si
no se dispone de mucho tiempo se puede invertir en un motor 3D.
La forma en que ayuda un motor 3D es que tiene un conjunto de funciones
organizadas para el manejo de objetos en tres dimensiones que estn sumergidos
en un ambiente y que interactan entre s. Cada motor 3D usa diferentes
funciones para hacer que los objetos y personajes interacten con el ambiente.
Se puede concluir lo siguiente: crear un motor de videojuegos cuesta bastante
trabajo pero al final vale la pena el esfuerzo ya que una vez terminado, el motor
permitir crear videojuegos rpidamente sin hacerlo todo desde cero. Como se
dijo al principio, son los motores grficos o motores 3D los que logran la tarea ms
espectacular: la visualizacin de grficos en 3D y mueven todo lo que se ve en
pantalla al jugar adems que con un mismo motor se pueden desarrollar diferentes
juegos. [3]

Breve historia de la evolucin de los motores de


videojuegos
Cuando los videojuegos hicieron su aparicin lo que se acostumbraba era a
programarse desde cero ya que no exista software intermediario como hoy en da.
Se programaban de esta forma porque los juegos tenan una menor complejidad.
En esa poca haba muy pocas herramientas especficas para el desarrollo de
videojuegos ocasionando que el desarrollar un videojuego fuera poco prctico. Por
ejemplo, uno de las pocas herramientas ms populares que existan era SEUCK
(Shoot'Em-Up Construction Kit) para el Commodore 64. [4]

Figura 2. Edicin de un sprite con la herramienta SEUCK.

En el ao de 1991 Id Software comienza el desarrollo revolucionario de los


motores grficos al mando de John Carmak que en ese tiempo fue considerado el
mejor programador para motores grficos.
En 1992 aparece el primer juego en 3D llamado Wolfstein 3D, el motor grfico que
tena era innovador y a la par algo limitado ya que slo se permitan ngulos de
90, altura de las paredes deban ser fijas y todos los objetos eran representados
con imgenes en 2D.
Como se mencion anteriormente la salida de Doom en el ao de 1993
revolucion el mundo de los videojuegos, apareci con un motor mejorado, ya no
se tena restriccin de slo tener ngulos de 90, las alturas ya podan variar y se
haban agregado distintos escenarios y elementos como escaleras, ascensores,
ventanas, etc. An con todas estas mejoras e innovaciones an se tenan algunas
restricciones, por ejemplo, las paredes deban ser verticales y el suelo deba ser
horizontal adems de que el jugador no poda mirar hacia arriba o abajo.

Figura 3. Escena de Doom.

En 1994 aparecen juegos como Heretic y Hexen con un motor mejorado basado
en Doom, entre una de las mejoras, al jugador ya se le permita mirar hacia arriba
o abajo.
En 1995 hay una nueva revolucin con la aparicin de Quake. Aqu ya todo era en
3D, desde los objetos, enemigos y sin limitaciones con los ngulos de las paredes
o los suelos.
En 1997 llega Quake II con un nuevo motor y es de los pioneros en implementar la
aceleracin de grficos por hardware.
6

En el ao de 1998 llega un competidor para Quake II, Unreal. El motor de dicho


juego es el segundo ms vendido para ser utilizado por otros juegos. Ms tarde se
lanz al mercado una versin mejorada de Unreal, llamada Unreal Tournament.
Pero en 1999 lleg el contraataque de Id Software con Quake III. Optimizacin
mxima. Hoy en da se utiliza este juego para comprobar el rendimiento de las
nuevas tarjetas grficas.
En el 2003 se lanza al mercado Unreal Tournament 2003 y Unreal. Adems de
tener una aceleracin de grficos muy potente tambin utiliza las altas velocidades
del internet para jugar en red.
En el 2005 Id Software vuelve a sacar una obra maestra, Doom III que implementa
iluminacin fotorrealista y sensacin de terror. [5]
Del 2006 a la fecha el desarrollo de motores grficos se ha mejorado bastante, se
usan efectos masivos de: unificacin total de luces y sombras, sombras
suavizadas, distintos tamaos de texturas, tcnicas cinematogrficas, ciclos de
da-noche, entornos totalmente interactivos entre otros.

Arquitectura general del motor de visualizacin para


videojuegos
Hasta ahora se ha hablado de los motores de juego de una forma muy superficial,
en esta parte se explicar que hay de tras de los motores y como est conformada
su arquitectura.
Hay muchos lenguajes de programacin utilizados para el desarrollo de
videojuegos, de los ms populares se tiene: C, C++, C# y Java. Existe mucha
diversidad en cuanto a motores de juegos, estos pueden estar orientados a
consolas o a computadoras personales, pero aun con esa diferencia, se
encuentran funciones comunes entre los motores de juegos tales como; la
rederizacin, deteccin de colisiones, animacin, manejo de memoria y de
escenarios.
Una de las tantas ventajas que tiene la arquitectura del motor de juegos, es que
permite la portabilidad entre varias plataformas, esto incluye diferentes sistemas
operativos de computadoras de escritorio, consolas de videojuegos y dispositivos
mviles.
Otra de las ventajas que poseen los motores de juegos es que para ejecutar varias
rutinas slo se necesita un comando a diferencia de si se usara una biblioteca
grfica como OpenGL o DirectX. [6]
El motor de juego es un software tiene una complejidad muy grande por lo que su
arquitectura se basa en una arquitectura estructurada en capas. Esto quiere decir
que las capas de nivel superior dependen de las capas de nivel inferior, pero
7

nunca de manera inversa. Est diseado de esta manera para que se puedan ir
aadiendo ms capas progresivamente si as se requiere, as no se afecta las
capas que ya estn construidas. [1]
En la figura 4 se pueden observar los principales mdulos que forman parte de la
arquitectura.

Figura 4. Esquema conceptual de arquitectura general de un motor de juego.

Capa de hardware
Esta capa consiste en la plataforma en donde se ejecutar el motor del juego. En
esta capa se describen y especifican cosas especiales que se deben de tomar en
8

cuenta para cada plataforma en donde se ejecutar el motor de juego. Esto con la
finalidad de optimizar el rendimiento del juego .

Capa de Drivers
Esta capa contiene los componentes de software de bajo nivel que sirven para
gestionar y que los dispositivos de hardware funcionen correctamente.

Capa Sistema Operativo


En esta capa se realiza la comunicacin entre los procesos que se ejecutan en el
sistema operativo y el hardware que est conectado a la plataforma. En los
videojuegos antiguos el sistema operativo se compilaban dentro del juego
generando as el ejecutable pero en los juegos de nueva generacin no es as,
estos ya incluyen un propio sistema operativo. En la actualidad la brecha entre las
consolas de videojuegos y las computadoras personales se ha reducido mucho.

Capa de SDKs y Middlewares


El desarrollo de un motor de juegos se basa en bibliotecas ya hechas en algn
lenguaje de programacin o en los famosos Software Development Kits (SDKs).
Dentro de los ejemplos de bibliotecas se puede nombrar el Standard Template
Library (STL) que es una de las bibliotecas de C++ que sirve para manejar
estructuras de datos. Cabe sealar que C++ es uno de los lenguajes que tiene
ms capacidades para el desarrollo de los videojuegos debido a su eficiencia y
portabilidad.
Para los grficos en 3D existen muchas bibliotecas de desarrollo para el
renderizado de modelos tridimensionales. Y en esta parte es dnde se utilizan las
APIs grficas como OpenGL y Direct3D, dichas APIs ocultan los diferentes
aspectos de las tarjetas grficas por medio de una interfaz.
Otros aspectos importantes que cubren los SDKs son aquellos que dan soporte a
la deteccin y tratamiento de colisiones y la fsica que estn inmersos en el
videojuego.
La parte importante de esta capa es que se abstrae de la complejidad y
heterogeneidad de sistemas operativos y lenguajes de programacin, todo esto
bajo la proporcin de una API para la fcil programacin.

Capa independiente de la plataforma


Entre las distintas plataformas existen diferencias en las bibliotecas incluso
aunque sean un estndar. Por esta razn existe esta capa que asla el resto de las
capas superiores de cualquier aspecto que dependa la plataforma.
Como ejemplo tenemos las bibliotecas para manejar hilos o las envolturas sobre
alguno de los mdulos de la capa superior como podra ser el mdulo responsable
de la parte grfica.

Subsistemas principales
Esta capa est llena de utilidades o bibliotecas de utilidades que dan el soporte al
motor de juegos. Se listan los subsistemas que tienen mayor relevancia:

Biblioteca matemtica
Esta biblioteca proporciona al programador muchas utilidades para tratar
operaciones que contengan vectores, matrices, operaciones de lneas, rayos,
esferas y cualquier otra figura geomtrica. Obviamente se necesitan todas estas
operaciones ya que el desarrollo del motor de juegos est basado en algoritmos
matemticos.

Estructura de datos y algoritmos


Es responsable del manejo de estructuras de datos tales como listas ligadas y
arboles binarios y en la parte de los algoritmos se manejan bsquedas y
ordenacin. Este subsistema se utiliza cuando la plataforma donde corre el motor
no tiene suficiente memoria o tiene recursos limitados.

Gestin de memoria.
Asigna y libera la memoria de forma eficiente.

10

Depuracin y logging
Este subsistema se encarga de facilitar depuraciones y volcados de logs para su
anlisis.

Gestor de recursos
En esta capa se proporciona una interfaz para gestionar eficientemente la
memoria y carga de los diferentes recursos como pueden ser: recurso esqueleto,
recurso colisin, mundo, recursos modelo 3D, recurso de textura, entre otros.

Motor de rendering
El motor de rendering es de las partes ms importantes y tambin de las ms
complejas, es por eso que tambin tienen una arquitectura en capas y las capas
que la conforman son las siguientes:

Renderizado de bajo nivel


Esta capa junta muchas utilidades que ayudan al funcionamiento de la
representacin grfica, por ejemplo, cmaras, primitvas de renderizacin,
materiales, texturas, entre otras. Su objetivo es renderizar las primitivas
geomtricas lo ms rpido que le sea posible sin considerar que partes son
visibles al observador.
Tambin se gestiona la interaccin con las APIs como OpenGL o Direct3D para
que stas tengan acceso a los dispositivos de hardware grficos que se tengan
disponibles en la plataforma.
Otra de las cosas que se gestionan en esta capa son los shaders asociados. Cada
que se recibe una primitiva en esta capa se le tiene asociado un material y fuentes
de luz. El material describe varias cosas como cuales pixeles y vectores de
shaders se van a usar para renderizar la imagen.

Scene graph/culling y optimizaciones

11

Aqu se seleccionan las partes de la escena que se enviarn al renderizado. Con


esto se aumenta la eficiencia del motor de renderizado ya que se delimitan el
nmero de las primitivas geomtricas que se van a enviar a la capa que est en un
nivel inferior.
Dentro de las optimizaciones que se hacen est el hacer una estructura de datos
(generalmente rboles binarios) de divisin espacial, as se selecciona ms rpido
el conjunto de objetos que estn dentro del campo de visin.
Los mtodos de culling consisten en, dada cierta informacin saber que objeto
est siendo tapado por otro objeto, as el objeto que se encuentre oculto no se
manda a renderizar, esto optimiza an ms el proceso de redenrizado.

Efectos visuales
Como su nombre lo indica en esta capa se proporcionan distintos efectos que se
pueden agregar al videojuego, por ejemplo, agua, niebla, etc.

Front-end
Esta parte se encarga de dibujar contenido 2D sobre el escenario en 3D, por
ejemplo, cuando se despliega un men dentro del juego. La cama front-end
tambin incorpora componentes para reproducir vdeos, secuencias cinemticas,
etc.

Herramientas de depuracin
Estas herramientas tienen el objetivo de depurar y optimizar el motor de juego
para obtener el mejor rendimiento posible. Las herramientas ms relevantes son
las siguientes:

Mecanismos que determinan el tiempo en que se ejecuta un fragmento de


cdigo.
Utilidades que muestran de manera grfica el rendimiento del juego.
Utilidades para volcar logs.
Herramientas que determinan la cantidad de memoria utilizada por el motor
y en cada uno de los subsistemas.
Herramientas para depurar bugs.
12

Motor de fsica
En esta parte se tratan las colisiones para dar realismo al juego ya que si no se
trataran de manera especial cuando colisionan dos objetos, estos se transpasaran
entre s. Este sistema de detecciones lleva a cabo las siguientes tareas:
1. Deteccin de colisiones, nos indica por medio de una variable lgica si
existe o no colisin.
2. Determinacin de la colisin, se calcula el punto de interseccin de la
colisin.
3. Respuesta de la colisin, determina las acciones que se deben seguir como
consecuencia de la colisin.

Interfaces de usuario
Este mdulo funciona mediante el tratamiento de eventos, estos eventos estn
asociados comnmente con eventos que realiza el usuario como pueden ser la
pulsacin de una tecla, movimiento del joystick, entre otros.
En otras palabras es el componente de entrada/salida del jugador, como resultado
de las salidas puede ser la vibracin del control al realizar una accin.

Networking y multijugador
Los juegos ms actuales ya incorporan el sistema de multijugador por medio de
una red, esto contiene el soporte para que varios jugadores interacten al mismo
tiempo. El mdulo de networking se encarga de gestionar la informacin que se
transmite entre varios usuarios por medio de sockets.

Subsistema de juego
Este subsistema es conocido mejor como gameplay, el cual contiene todos los
mdulos relativos al juego, es decir, contiene las propiedades del mundo virtual,
propiedades de los personajes, reglas que gobiernan el juego, objetivos y
mecnica que deben seguir los personajes.
En la figura 5 se muestra el diagrama conceptual de la arquitectura del subsistema
de juego.
Figura 5. Esquema conceptual de arquitectura general del subsistema de juego.

13

El sistema scripting se utiliza para definir el comportamiento de los personajes que


participan en el juego y permite modelar rpidamente la lgica del juego.
El sistema de eventos proporciona comunicacin entre los objetos.

Audio
El objetivo de la capa de audio consiste en obtener un alto grado de fidelidad y
garantizar una buena experiencia desde el punto de vista auditivo.

Subsistemas especficos de juego


En esta capa se integran los mdulos responsables de ofrecer las caractersticas
propias del juego. Por ejemplo, se definen cuantas cmaras virtuales se
necesitaran, mecanismos de inteligencia artificial, sistemas de armas, etc.[1]

Conclusiones
Hoy en da el motor de visualizacin de los videojuegos tiene una gran versatilidad
y los programadores pueden reconfigurar el hardware.
Los desarrolladores que se dedican a generar motores de juego le facilitan mucho
los programadores de juego ya que con un mismo motor de juego se pueden
desarrollar distintos videojuegos, el inconveniente sera que no habra mucha
diferencia entre los juegos.
14

Referencias
[1] Vallejo, D. 2012, Desarrollo de videojuegos: Arquitectura del Motor,
LibroVirual.org, 1 ed. 312pp
[2] Fabrizio Ferri-Benedetti, 2013. Qu es un motor grfico 3D?
<http://articulos.softonic.com/que-es-un-motor-grafico-o-motor-3d> [Con acceso el
6 de noviembre de 2013]
[3]<http://es.wikibooks.org/wiki/Creaci
%C3%B3n_de_videojuegos/Motores#Motores_gr.C3.A1ficos> [Con acceso el 7 de
noviembre de 2013]
[4] <http://en.wikipedia.org/wiki/Shoot%27Em-Up_Construction_Kit> [Con acceso
el 7 de noviembre de 2013]
[5]<http://sabia.tic.udc.es/gc/Contenidos
%20adicionales/trabajos/MotoresGraficos/motores
%20graficos/motoresgraficos.htm> > [Con acceso el 7 de noviembre de 2013]
[6<]<https://intranet.matematicas.uady.mx/personal/mramirez/website/madera/una
carPaper.pdf> > [Con acceso el 7 de noviembre de 2013]

15

Vous aimerez peut-être aussi