t2: arquitectura del motor

Click here to load reader

Post on 11-Feb-2017

223 views

Category:

Documents

3 download

Embed Size (px)

TRANSCRIPT

  • Introduccin a la Programacin de Videojuegos y Grficos

    GRADO EN INGENIERA INFORMTICA

    CURSO 2012/2013

  • T2: ARQUITECTURA Y LGICA DE VIDEOJUEGO

    2.1. Ingeniera del software aplicada a videojuegos

    (paradigmas y patrones)

    2.2. Modelos y Programa principal de un videojuego

    2.3. Motores lgicos. Arquitectura del motor

    2.4. Lenguajes de scripting

  • T2: ARQUITECTURA Y LGICA DE VIDEOJUEGO

    2.3 Motores lgicos. Arquitectura del motor

    1. Hardware, drivers y sistema operativo

    2. SDKs y middlewares

    3. Capa independiente de la plataforma

    4. Subsistemas principales

    5. Gestor de recursos

    6. Motor de rendering

  • 2.3 Motores lgicos. Arquitectura del motor

    7. Herramientas de depuracin

    8. Motor de fsica

    9. Interfaces de usuario

    10.Networking y multijugador

    11.Subsistema de juego

    12.Audio

    13.Subsistemas especficos de juego

    T2: ARQUITECTURA Y LGICA DE VIDEOJUEGO

  • T2: Arquitectura del motor

    Visin general de la arquitectura de un motor de juegos independiente al gnero de los mismos

    los motores de juegos se basan en una arquitectura estructurada en capas

    Las capas de nivel superior dependen de las capas de nivel inferior, pero no de manera inversa

    Este planteamiento permite ir aadiendo capas de manera progresiva

    Permite modificar determinados aspectos de una capa en concreto sin que el resto de capas inferiores se vean afectadas por dicho cambio

  • Visin conceptual de la arquitectura general de un motor de juegosAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 1. Hardware, drivers y sistema operativo

    La capa relativa al hardware est vinculada a la plataforma en la que se ejecutar el motor de juego

    Ejemplos: consola de juegos de sobremesa, PC, dispositivos mviles, tablets,,

    Los desarrolladores de videojuegos siempre llevan a cabo optimizaciones en el motor de juegos para mejorar la eficiencia

    La capa de drivers soporta aquellos componentes software de bajo nivel que permiten la correcta gestin de determinados dispositivos

    Ejemplos: tarjetas de aceleracin grfica, tarjetas de sonido

    T2: Arquitectura del motor

  • 1. Hardware, drivers y sistema operativo

    La capa del sistema operativo representa la capa de comunicacin entre los procesos que se ejecutan en el mismo y los recursos hardware asociados a la plataforma en cuestin

    Tradicionalmente, en el mundo de los videojuegos los sistemas operativos se compilan con el propio juego para producir un ejecutable

    Las consolas de ltima generacin (ej. Sony Playstation 3 o Microsoft XBox 360), incluyen un sistema operativo capaz de controlar ciertos recursos (incluso interrumpir a un juego en ejecucin, reduciendo la separacin entre consolas de sobremesa y ordenadores personales)

    T2: Arquitectura del motor

  • Visin conceptual de la arquitectura general de un motor de juegosAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 2. SDKs y middlewares

    El desarrollo de un motor de juegos se suele apoyar en bibliotecas existentes y Software Development Kits (SDKs) para proporcionar una determinada funcionalidad

    Ejemplo representativo de biblioteca para el manejo de estructuras de datos es STL (Standard Template Library)

    STL es una biblioteca de plantillas estndar para C++

    C++ lenguaje ms extendido actualmente para el desarrollo de videojuegos

    T2: Arquitectura del motor

  • 2. SDKs y middlewares

    Ejemplos de SDKs en C++: 3D Rad, Box2D, Cafu Engine, Cube, gameplay, Spring,

    Otros lenguajes populares son Java, Lua y Python C#

    Ejemplos de SDKs en Java: Env3D, Jake2, JGame, JMonkeyEngine, JOgre,

    Ejemplos en Pyhton: Blender, Multiverse

    Ejemplos en LUA: LVE,

    T2: Arquitectura del motor

  • Visin conceptual de la arquitectura general de un motor de juegosAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 3. Capa independiente de la plataforma

    Definicin: capa software que aisla al resto de capas superiores de cualquier aspecto que sea dependiente de la plataforma

    En teora las herramientas multiplataforma deben abstraer los aspectos subyacentes a las mismas (abstraccin funcional), por ejemplo el sistema operativo

    En la prctica suele ser necesario realizar ajustes en funcin de la plataforma existente en capas de nivel inferior

    T2: Arquitectura del motor

  • 3. Capa independiente de la plataforma

    La capa de SDKs y middleware no suele ser suficiente para separar la parte funcional de la fsica (e.g. suelen existir pequeas diferencias en libreras y SDKs para diferentes plataformas)

    Mdulos incluidos en esta capa:

    gestin de hilos

    wrappers : envolturas sobre los mdulos de la capa superior (e.g. deteccin de colisiones, gestin de grficos)

    T2: Arquitectura del motor

  • Visin conceptual de la arquitectura general de un motor de juegosAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 4. Subsistemas principales

    Esta capa est vinculada a todas aquellas utilidades o bibliotecas de utilidades que dan soporte al motor de juegos

    Algunos de los subsistemas ms representativos son:

    Biblioteca matemtica: facilitan el tratamiento de operaciones relativas a vectores, matrices, cuaterniones u operaciones vinculadas a lneas, rayos, esferas y otras figuras geomtricas

    Estructuras de datos y algoritmos: proporciona una implementacin ms personalizada y optimizada de diversas estructuras de datos (listas enlazadas, rboles binarios, alg. de bsqueda, ordenacin, )

    T2: Arquitectura del motor

  • 4. Subsistemas principales

    Algunos de los subsistemas ms representativos son:

    Gestin de memoria: responsable de garantizar la asignacin y liberacin de memoria de una manera eficiente

    , Depuracin y logging: responsable de proporcionar herramientas para facilitar la depuracin y el volcado de logs para su posterior anlisis

    T2: Arquitectura del motor

  • Visin conceptual de la arquitectura general de un motor de juegosAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 5. Gestor de recursos

    Responsable de proporcionar una interfaz unificada para acceder a las distintas entidades software que conforman el motor de juegos (por ejemplo la escena o los objetos 3D)

    Existen dos aproximaciones principales:

    1. Disear el gestor de recursos mediante un enfoque centralizado y consistente

    2. Dejar en manos del programador dicha interaccin mediante el uso de archivos en disco

    T2: Arquitectura del motor

  • 5. Gestor de recursos

    Visin conceptual del gestor de recursos y sus entidades asociadasAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 5. Gestor de recursos

    EJEMPLO: Ogre 3D

    El motor de rendering Ogre 3D est escrito en C++ y permite que el desarrollador se abstraiga de un gran nmero de aspectos relativos al desarrollo de aplicaciones grficas

    El gestor de recursos est representado por la clase Ogre::ResourceManager

    La clase principal mantiene diversas especializaciones, las cuales estn ligadas a las distintas entidades que a su vez gestionan distintos aspectos en un juego

    T2: Arquitectura del motor

  • 5. Gestor de recursos

    EJEMPLO: Ogre 3D (http://www.ogre3d.org)

    T2: Arquitectura del motor

  • T2: Arquitectura del motor

    5. Gestor de recursos

    EJEMPLO: Daleks game (http://backspaces.net/sun/daleks/)

  • Visin conceptual de la arquitectura general de un motor de juegosAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 6. Motor de rendering

    Es uno de los mdulos ms complejos de cualquier motor de juegos

    Al igual que ocurre con la propia arquitectura de un motor de juegos, el enfoque ms utilizado para disear el motor de renderizado est basado en una arquitectura multicapa

    T2: Arquitectura del motor

  • 6. Motor de rendering

    Visin conceptual de la arquitectura general de un motor de renderingAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 6. Motor de rendering

    La capa de renderizado de bajo nivel aglutina las distintas utilidades de renderizado del motor: funcionalidades asociadas a la representacin grfica de las distintas entidades en un determinado entorno (cmaras, primitivas de rendering, materiales, texturas, etc)

    Proporciona una serie de abstracciones para manejar tanto las primitivas geomtricas como las cmaras virtuales y las propiedades vinculadas a las mismas

    Gestiona el estado del hardware grfico y los shaders asociados

    T2: Arquitectura del motor

  • 6. Motor de rendering

    shader: conjunto de instrucciones software que permiten aplicar efectos de renderizado a primitivas geomtricas.

    Al ejecutarse en las unidades de procesamiento grfico (Graphic Processing Units - GPUs), el rendimiento de la aplicacin grfica mejora considerablemente.

    Cada primitiva recibida por esta capa tiene asociado un material y se ve afectada por diversas fuentes de luz

    T2: Arquitectura del motor

  • 6. Motor de rendering

    Objetivo principal: renderizar las distintas primitivas geomtricas tan rpido como sea posible, sin tener en cuenta posibles optimizaciones (e.g. qu partes de las escenas son visibles desde el punto de vista de la cmara)

    Responsable de gestionar la interaccin con las APIs de programacin grficas, como OpenGL o Direct3D

    Dispone de componentes encargados de procesar el dibujado de distintas primitivas geomtricas, gestin de la cmara, los diferentes modos de proyeccin,

    T2: Arquitectura del motor

  • 6. Motor de rendering

    Visin conceptual de la arquitectura general de un motor de renderingAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 6. Motor de rendering

    La capa de scene graph/culling y optimizaciones, es la responsable de seleccionar qu parte o partes de la escena se enviarn a la capa de rendering

    Esta capa permite optimizar el rendimiento del motor de rendering, que nicamente dibuja las primitivas del viewport (campo de visin de la cmara)

    Optimizaciones habituales:

    Estructuras de datos de subdivisin espacial (scene graph, o grafo de escena): almacenan el conjunto de objetos potencialmente visibles, habitualmente se trata de rboles

    T2: Arquitectura del motor

  • 6. Motor de rendering

    Optimizaciones habituales:

    Mtodos de culling: permiten calcular las oclusiones en una escena. Los objetos (o partes) solapados no son enviados a la capa de rendering

    En funcin de la tecnologa empleada es posible utilizar diferentes grafos de escenas y optimizaciones.

    T2: Arquitectura del motor

  • 6. Motor de rendering

    Visin conceptual de la arquitectura general de un motor de renderingAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 6. Motor de rendering

    La capa de efectos visuales proporciona soporte a distintos efectos que, posteriormente, se pueden integrar en los juegos desarrollados haciendo uso del motor

    Ejemplos: mdulos de gestin de sistemas de partculas (humo, agua, etc), los mapeados de entorno o las sombras dinmicas

    La capa de front-end suele estar vinculada a funcionalidad relativa a la superposicin de contenido 2D sobre el escenario 3D

    Ejemplos: mdulos para la visualizacin del men de un juego o la interfaz grfica que permite conocer el estado del personaje principal del videojuego (inventario, armas, herramientas, etc).

    T2: Arquitectura del motor

  • 2.3 Motores lgicos. Arquitectura del motor

    7. Herramientas de depuracin

    8. Motor de fsica

    9. Interfaces de usuario

    10.Networking y multijugador

    11.Subsistema de juego

    12.Audio

    13.Subsistemas especficos de juego

    T2: Arquitectura del motor

  • 7. Herramientas de depuracin

    Existe gran nmero de herramientas que permiten depurar y optimizar el propio motor de juegos para obtener el mejor rendimiento posible

    Puede diferenciarse entre:

    Herramientas de propsito general: cualquier entorno de desarrollo (IDEs) como Visual Studio, Netbeans, Eclipse, etc y la herramientas de depuracin asociadas

    Herramientas especficas o de profiling: vinculadas al anlisis del rendimiento, o depuracin que estn asociadas al propio motor

    T2: Arquitectura del motor

  • 7. Herramientas de depuracin

    Caractersticas bsicas de las herramientas de profiling:

    1. Mecanismos para determinar el tiempo empleado en ejecutar un fragmento especfico de cdigo.

    2. Utilidades para mostrar de manera grfica el rendimientodel motor mientras se ejecuta el juego.

    3. Utilidades para volcar logs en ficheros de texto o similares.

    T2: Arquitectura del motor

  • 7. Herramientas de depuracin

    Caractersticas bsicas de las herramientas de profiling:

    4. Herramientas para determinar la cantidad de memoria utilizada por el motor en general y cada subsistema en particular. Este tipo de herramientas suelen tener distintas vistas grficas para visualizar la informacin obtenida.

    5. Herramientas de depuracin para gestionar el nivel de informacin generada.

    6. Utilidades para grabar eventos particulares del juego, permitiendo reproducirlos posteriormente para depurar bugs.

    T2: Arquitectura del motor

  • 7. Herramientas de depuracin

    Ejemplos herramientas de profiling:

    Genricas (desarrollo de sw): AMD CodeAnalyst, Apple Inc. Shark (OSX), oprofile (Linux), Intel VTune and Parallel Amplifier

    Especficas (videojuegos) : Pinnacle Game Profiler, Criminal Profiling, Logitech Gaming Software Game Profiles (Wingman sw)

    T2: Arquitectura del motor

  • 8. Motor de fsica

    Definicin: Un motor de juegos (o physics engine) es un programa software que proporciona una simulacin aproximada y realista de elmenentos y sistemas fsicos como terrenos, fluidos y objetos, partculas, etc

    Ampliamente utilizados (normalmente en forma de middleware) en computacin grfica, videojuegos y pelculas

    Funciones bsicas: Dinmica de cuerpos slidos Deteccin de colisiones Dinmica de cuerpos blandos Dinmica de fluidos

    T2: Arquitectura del motor

  • 8. Motor de fsica

    La deteccin de colisiones en un videojuego y su posterior tratamiento resultan esenciales para dotar de realismo al mismo

    Sin un mecanismo de deteccin de colisiones, los objetos se traspasaran unos a otros y no sera posible interactuar con ellos

    El sistema de deteccin de colisiones es responsable de llevar a cabo las siguientes tareas:

    1. La deteccin de colisiones, cuya salida es un valor lgico indicando si hay o no colisin.

    2. La determinacin de la colisin, cuya tarea consiste en calcular el punto de interseccin de la colisin.

    3. La respuesta a la colisin, que tiene como objetivo determinar las acciones que se generarn como consecuencia de la misma.

    T2: Arquitectura del motor

  • 8. Motor de fsica

    Los mecanismos de gestin de colisiones se suelen aproximar para simplificar la complejidad de los mismos y no reducir el rendimiento del motor

    Los objetos 3D se aproximan con una serie de lneas, utilizando tcnicas de interseccin de lneas para determinar la existencia o no de una colisin

    Es bastante comn hacer uso de rboles BSP para representar el entorno y optimizar la deteccin de colisiones con respecto a los propios objetos

    T2: Arquitectura del motor

  • 8. Motor de fsica

    Algunos juegos incluyen sistemas realistas o semi-realistas de simulacin dinmica

    En el mbito de la industria del videojuego, estos sistemas se suelen denominar sistema de fsica y estn directamente ligados al sistema de gestin de colisiones

    La mayora de compaas utilizan motores de colisin/fsica desarrollados por terceras partes, integrando estos kits de desarrollo en el propio motor

    T2: Arquitectura del motor

  • 8. Motor de fsica

    Ejemplos de motores de colisin/fsica:

    Real-time physics engines

    Open source: Box2D, Bullet, Chipmunk physics engine-2D physics engine, Farseer Physics Engine - 2D physics engine for Microsoft XNA and Silverlight, Open Dynamics Engine (ODE), Physics2D.Net - 2D physics engine for the .NET Framework 2.0 or greater, SOFA (Simulation Open Framework Architecture), Tokamak physics engine

    Comerciales: Havok, PhysX, Vortex by CMLabs Simulations, AGX Multiphysics by Algoryx Simulation AB, D-Cubed AEM by Siemens PLM Software

    T2: Arquitectura del motor

  • 9. Interfaces de usuario

    Mdulo que permite crear una abstraccin respecto a la interaccin del usuario. Se suele denominar comnmente componente de entrada/salida del jugador (player I/O component)

    Principalmente responsable de procesar los eventos de entrada del usuario y los eventos de salida

    Ejemplos bsicos eventos de entrada: pulsacin de una tecla, movimiento del ratn , uso de un joystick, mandos especficos (wii motion),

    Ejemplos bsicos eventos de salida: sistema de vibracin del mando de una consola, fuerza ejercida por un volante en un juego de conduccin

    T2: Arquitectura del motor

  • 10. Networking y multijugador

    Actualmente existe una gran cantidad de juegos comerciales desarrollados en la actualidad incluyen modos de juegos multijugador

    Incrementan la jugabilidad y duracin de los ttulos lanzados al mercado

    El modelo de negocio de algunos de estos juegos se basa en el modo online

    World of Warcraft (Blizzard Entertainment)

    Call of Duty (Activision)

    Gran cantidade juegos gratuitos para iPad y otras tablets

    T2: Arquitectura del motor

  • 10. Networking y multijugador

    El modo multijugador de un juego afecta de forma muy significativa a diversos mdulos del motor de juego

    el modelo de objetos del juego el motor de renderizado el mdulo de entrada/salida el sistema de animacin de personajes

    Filosofa actual en el diseo y desarrollo de motores de juegos actuales: se trata el modo de un nico jugador como un caso particular del modo multijugador

    T2: Arquitectura del motor

  • 10. Networking y multijugador

    El modo de networking de un juego es el responsable de informar de la evolucin del juego a los distintos actores o usuarios involucrados en el mismo mediante el envo de paquetes de informacin

    Habitualmente, dicha informacin se transmite utilizando sockets.

    Para reducir la latencia del modo multijugador (especialmente si la inf. se envia a travs de Internet) se minimiza la cantidad de inf.

    Ej. en juegos tipo FPS suele enviarse inf. sobre la posicin de otros jugadores

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    El subsistema de juego (gameplay) integra todos aquellos mdulos relativos al funcionamiento interno del juego

    Aglutina tanto las propiedades del mundo virtual como la de los distintos personajes

    Este subsistema permite la definicin de las reglas que gobiernan el mundo virtual en el que se desarrolla el juego (ej. derrotar a un enemigo antes de enfrentarse a otro de mayor nivel)

    tambin permite la definicin de la mecnica del personaje, as como sus objetivos durante el juego

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    Sirve como capa de aislamiento, o abstraccin entre las capas de ms bajo nivel, como por ejemplo la de rendering, y el propio funcionamiento del juego

    Uno de los principales objetivos de diseo que se persiguen consiste en independizar la lgica del juego de la implementacin subyacente

    En esta capa es bastante comn encontrar algn tipo de sistema de scripting o lenguaje de alto nivel

    Se emplean para definir el comportamiento de los personajes, lgica del juego, reglas, etc

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    Visin conceptual de la arquitectura general del subsistema de juegoAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    En esta capa se manejan conceptos como el mundo del juego

    Se refiere a los distintos elementos que forman parte del mismo, ya sean estticos o dinmicos

    Los tipos de objetos que forman parte de ese mundo se suelen denominar modelo de objetos del juego

    Este modelo proporciona una simulacin en tiempo real de esta coleccin heterognea

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    La simulacin en tiempo real de los objetos suele incluir:

    Elementos geomtricos relativos a fondos estticos, como por ejemplo edificios o carreteras.

    Cuerpos rgidos dinmicos, como por ejemplo rocas o sillas.

    El propio personaje principal.

    Los Personajes No Controlados por el usuario (NPCs).

    Cmaras y luces virtuales.

    Armas, proyectiles, vehculos, etc.

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    Visin conceptual de la arquitectura general del subsistema de juegoAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    En la capa de subsistema de juego se integra el sistema de eventos

    Encargada de dar soporte a la comunicacin entre objetos, independientemente de su naturaleza y tipo

    Un enfoque tpico en el mundo de los videojuegos consiste en utilizar una arquitectura dirigida por eventos, en la que la principal entidad es el evento

    Ejemplo: Linden Scripting Language (LSL), mundos virutales (Second Life, OpenSim,)

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    El evento consiste en una estructura de datos que contiene informacin relevante, la comunicacin est guiada por el contenido del evento, y no por el emisor o el receptor del mismo

    Los objetos suelen implementar manejadores de eventos (event handlers) para tratarlos y actuar en consecuencia

    Ejemplo LSL (OpenSim):

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    Ejemplo LSL (OpenSim):

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    Visin conceptual de la arquitectura general del subsistema de juegoAdaptado de la arquitectura propuesta en [J. Gregory. Game Engine Architecture. 2009]

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    El sistema de scripting permite modelar fcilmente la lgica del juego

    En algunos casos, los motores de juego pueden seguir en funcionamiento al mismo tiempo que se carga un nuevo script

    En esta capa es posible encontrar algn mdulo que proporcione funcionalidad aadida respecto al tratamiento de la Inteligencia Artificial (IA) (normalmente de los NPCs).

    T2: Arquitectura del motor

  • 11. Subsistema de juego

    Ejemplo: ejecucin de scripts en LSL (vdeo)

    T2: Arquitectura del motor

  • 12. Audio

    El mundo del desarrollo de videojuegos siempre ha prestado ms atencin al componente grfico

    Para conseguir una inmersin total del usuario en el juego este aspecto ha tomado una mayor relevancia

    Actualmente (al igual que ocurre con otros componentes de la arquitectura del motor de juego) es bastante comn encontrar desarrollos listos para utilizarse e integrarse en el motor de juego

    Estos motores de audio han sido desarrollados por compaas externas a la del propio motor de juegos

    T2: Arquitectura del motor

  • 12. Audio

    Incluidos dentro de alguno de los middleware ms populares para juegos:

    Los cuatro paquetes ms populares que proporcionan estas funcionalidades son:

    RAD Game Tools' Bink

    Firelight FMOD

    Havok

    Scaleform GFx

    T2: Arquitectura del motor

  • 13. Subsistemas especficos de juego

    En esta capa se integran aquellos mdulos responsables de ofrecer las caractersticas propias del juego

    En funcin del tipo de juego a desarrollar, en esta capa se situarn un mayor o menor nmero de mdulos

    Ejemplos: sistema de cmaras virtuales, mecanismos de Inteligencia Artificial especficos de los personajes no controlados por el usuario (NPCs), aspectos de renderizados especficos del juego, sistemas de armas, puzzles, etc

    Idealmente, la lnea que separa el motor de juego y el propio juego estara entre la capa de subsistema de juego y la capa de subsistemas especficos de juego

    T2: Arquitectura del motor