Motores de Visualización Para Videojuegos

20
Universidad Autónoma Metropolitana Unidad Azcapotzalco División de Ciencias Básicas e Ingeniería Licenciatura en Ingeniería en Computación Trabajo de investigación del tercer parcial. Motores de visualización para videojuegos. Padilla Segura Omar Eduardo 209202106 8 de noviembre de 2013 Trimestre 2013 Otoño Risto Fermín Rangel Koopa Profesor Titular 1

description

Motores de Visualización Para Videojuegos

Transcript of Motores de Visualización Para Videojuegos

Universidad Autnoma Metropolitana Unidad AzcapotzalcoDivisin de Ciencias Bsicas e IngenieraLicenciatura en Ingeniera en Computacin

Trabajo de investigacin del tercer parcial.Motores de visualizacin para videojuegos.

Padilla Segura Omar Eduardo209202106

8 de noviembre de 2013

Trimestre 2013 Otoo

Risto Fermn Rangel KoopaProfesor TitularDepartamento de Sistemas

ContenidoIntroduccin3Qu es un motor de visualizacin de videojuego?3Breve historia de la evolucin de los motores de videojuegos5Arquitectura general del motor de visualizacin para videojuegos7Capa de hardware8Capa de Drivers9Capa Sistema Operativo9Capa de SDKs y Middlewares9Capa independiente de la plataforma10Subsistemas principales10Biblioteca matemtica10Estructura de datos y algoritmos10Gestin de memoria.10Depuracin y logging11Gestor de recursos11Motor de rendering11Renderizado de bajo nivel11Scene graph/culling y optimizaciones11Efectos visuales12Front-end12Herramientas de depuracin12Motor de fsica13Interfaces de usuario13Networking y multijugador13Subsistema de juego13Audio14Subsistemas especficos de juego14Conclusiones14Referencias15

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. Tipo de plataforma (para PCs, PlayStation, Xbox, etc.) 2. Sonido (que formatos de sonido se van a emplear)3. Ambiente (esto va de acuerdo a la historia)4. 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.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 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 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.

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

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.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 usuarioEste 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.

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.

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? [Con acceso el 6 de noviembre de 2013][3] [Con acceso el 7 de noviembre de 2013][4] [Con acceso el 7 de noviembre de 2013][5] > [Con acceso el 7 de noviembre de 2013][6 [Con acceso el 7 de noviembre de 2013]

3