Download Motor de Videojuegos - para Plataforma Android
Document related concepts
no text concepts found
Transcript
Motor de Videojuegos Contexto Motor de Videojuegos Introducción Objetivos para Plataforma Android Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Francisco Javier Ortiz Quetglas Tutor José Marı́a Buades Rubio Escola Politècnica Superior Universitat de les Illes Balears Estructura Dedicación 25 de Junio de 2014 Pruebas Conclusiones 1 / 27 Contenido Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario 1 2 3 4 5 Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización 6 7 8 9 Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones Estructura Dedicación Pruebas Conclusiones 2 / 27 Contexto Motor de Videojuegos • Actualmente la media de gasto en desarrollo por videojuegos se mueve entre 7.4 y 9.7 millones de euros. Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas • Con la aparición de las plataformas Android, iOS y Windows Phone han aumentado el numero de empresas que se dedican exclusivamente a desarrollar videojuegos para móvil. • En 2010, se tuvieron unas ganancias de 87.000 millones de dólares debido solamente a la publicidad incluida en los videojuegos para móvil. • Es un mercado que esta creciendo muy rápidamente y de fácil acceso. Licencias de bajo coste. • Windows Phone: Cuota anual de 99 dólares. • iOS: Cuota anual de 99 dólares. • Android: Pago único de 25 dólares. Conclusiones 3 / 27 ¿Qué es un Motor de Videojuegos? Motor de Videojuegos Contexto Introducción Objetivos Concepto Definición Un motor de videojuegos es un término que hace referencia a una serie de rutinas de programación que permiten el diseño, la creación y la representación de un videojuego. Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario • Arquitectura basada en capas. • No se necesitan conocimientos de librerı́as gráficas o plataforma. • Facilidad de creación de videojuegos. Estructura Dedicación Pruebas Conclusiones 4 / 27 Objetivos Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones • • • • • • • • • • Renderización de objetos 2D y 3D. Sistema de sonido. Sistema de partı́culas. Sistema de fı́sicas 2D. Detección de colisiones. Carga de modelos 3D. Animación de modelos 3D. Uso de shaders personalizados para la renderización. Interfaz de Usuario. El programador que use el motor de videojuegos no necesita tener conocimientos de Android o de las librerı́as gráficas. • Proporcionar herramientas para debugging y rendimiento. • Implementar pequeña demostración del MDV. 5 / 27 Limites Motor de Videojuegos Contexto Introducción Objetivos Concepto Limitaciones Probablemente es imposible hacer un motor para crear cualquier videojuego de forma óptima. Los motores de uso general son menos óptimos en calidad e imágenes por segundo. Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 6 / 27 Arquitectura(I) Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 7 / 27 Arquitectura(I) Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 7 / 27 Arquitectura(II) Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 8 / 27 Arquitectura(II) Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 8 / 27 Arquitectura(III) Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 9 / 27 Arquitectura(III) Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 9 / 27 Caracterı́sticas Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Herramientas utilizadas para el TFG: • SDK de Android. • Entorno Eclipse. • Blender. • Maquina virtual Android. Estructura Dedicación Pruebas Conclusiones 10 / 27 Librerı́as OpenGL Motor de Videojuegos Se dispone de tres versiones: • OpenGL ES 1.1(Android 1.0+) Contexto Introducción Objetivos • OpenGL ES 2.0(Android 2.2+) • OpenGL ES 3.0(Android 4.3+) Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 11 / 27 Librerı́as OpenGL Motor de Videojuegos Se dispone de tres versiones: • OpenGL ES 1.1(Android 1.0+) Contexto Introducción Objetivos • OpenGL ES 2.0(Android 2.2+) • OpenGL ES 3.0(Android 4.3+) Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 11 / 27 Módulo: Gestor de Recursos Motor de Videojuegos Contexto Introducción Objetivos El gestor de recursos se encarga de asegurar que solamente existe una copia en memoria de un determinado recurso. Se guardan de forma consistente e integra. Los gestores de recursos son: Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura • Gestor de Cámaras • Gestor de Materiales • Gestor de Modelos • Gestor de Shader • Gestor de Sonido • Gestor de Texturas Dedicación Pruebas Conclusiones 12 / 27 Módulo: Modelos 3D(I) Motor de Videojuegos Hay varios formatos a la hora de cargar modelos 3D: Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Formato MD2 (Quake II) MD3 (Quake III) Wavefront Autodesk 3ds Max DirectX Animación Sı́ Sı́ No No No Calidad Media Alta Alta Alta Media Estructura Dedicación Pruebas Conclusiones 13 / 27 Módulo: Modelos 3D(I) Motor de Videojuegos Hay varios formatos a la hora de cargar modelos 3D: Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Formato MD2 (Quake II) MD3 (Quake III) Wavefront Autodesk 3ds Max DirectX Animación Sı́ Sı́ No No No Calidad Media Alta Alta Alta Media Estructura Dedicación Pruebas Conclusiones 13 / 27 Módulo: Modelos 3D(II) Formato Wavefront Motor de Videojuegos El formato WaveFront se compone de los siguientes elementos: Contexto • Vértices geométricos (v) Introducción • Vértices de textura (vt) Objetivos Concepto Caracterı́sticas • Vértices de normales (vn) • Cara (f) vxyz vt tx ty vn nx ny nz f v/vt/vn v/vt/vn v/vt/vn ... OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 14 / 27 Módulo: Renderización Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Se han utilizado una serie de shader para renderizar todos los posibles casos de renderización que puede necesitar el motor de videojuegos. Los shader implementados son: • Per pixel shading. • Textura. • Per pixel shading + Textura. • Sprite. • Efectos Post-proceso. Estructura Dedicación Pruebas Conclusiones 15 / 27 Módulo: Sonido Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones Dos posibles librerı́as: MediaPlayer y SoundPool. Se ha utilizado SoundPool porque permite mantener en memoria el sonido listo para reproducirse y reproducir varios sonidos simultáneamente. La operaciones que se pueden efectuar sobre los sonidos son: • Pausar todos los sonidos. • Reanudar todos los sonidos. • Mirar si un sonido se esta reproduciendo. • Añadir un sonido. • Eliminar un sonido. • Reproducir un sonido (una vez o infinitamente). • Pausar un sonido. • Reanudar un sonido. • Parar un sonido. • Cambiar propiedades del sonido(velocidad y volumen). 16 / 27 Módulo: Fı́sicas - Herramientas Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Se han dado herramientas para modelizar el terreno en 2D. Se forma un segmento de terreno a partir de dos puntos(P1 y P2). Estos dos puntos forman una recta: y − P 1.y x − P 1.x − =0 P 2.x − P 1.x P 2.y − P 1.y Se proporcionan herramientas para comparar la posición de los diferentes elementos de la escena respecto a estos segmentos de terreno. Estructura Dedicación Pruebas Conclusiones 17 / 27 Módulo: Fı́sicas - Simulación Motor de Videojuegos Contexto Introducción Objetivos Se efectúa la simulación de las fı́sicas de forma iterativa. Además se limita el ratio de FPS a valores de 60, 45, 30, 29, 28, 27... para ahorrar recursos de CPU y mantener ratios de FPS estables. Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación La simulación se encarga de gestionar en que instantes de tiempo se ejecutan las fı́sicas de cada actor/objeto, manteniendo un tiempo estable entre ejecuciones. Pruebas Conclusiones 18 / 27 Módulo: Efectos de Post-proceso Motor de Videojuegos Contexto Introducción Se han implementado los efectos de post-proceso: • Glow • Blanco y Negro • Sepia Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 19 / 27 Módulo: Efectos de Post-proceso Motor de Videojuegos Contexto Introducción Se han implementado los efectos de post-proceso: • Glow • Blanco y Negro • Sepia Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 19 / 27 Módulo: Efectos de Post-proceso Motor de Videojuegos Se han implementado los efectos de post-proceso: • Glow Contexto • Blanco y Negro Introducción Objetivos Concepto • Sepia La forma en que se aplican estos efectos es: Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 19 / 27 Módulo: Sistema de Partı́culas Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación El sistema de partı́culas se compone de tres elementos clave: • Partı́culas: Cada partı́cula tiene un tamaño, posición, tiempo de vida y velocidad. • Simulación del sistema: Mantiene numero estable de partı́culas y simula la aparición y desaparición de estas. • Renderización del sistema: Renderiza las partı́culas del sistema. En la renderización se dibujan las partı́culas como cuadrados que siempre miran hacia la cámara utilizando la técnica del Billboarding. Pruebas Conclusiones 20 / 27 Módulo: Interfaz de Usuario Motor de Videojuegos Contexto Introducción Se han definido una serie de elementos para proporcionar al usuario una interfaz con el videojuego. Estos elementos son: Objetivos • Botones Concepto • Joystick Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura • Sprites • Texto • Fondo Estos elementos se encuentran posicionados según los bordes de la pantalla: izquierda, centro, derecha, arriba y abajo. Dedicación Pruebas Conclusiones 21 / 27 Estructura de Classes Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 22 / 27 Estructura de Classes Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 22 / 27 Estructura de Classes Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 22 / 27 Estructura de Classes Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 22 / 27 Estructura de Classes Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 22 / 27 Estructura de Classes Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 22 / 27 Dedicación Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas • • • • • • • • • • • • • • • • • • • • Semana 1-2: Trabajo previo. Semana 3: Esqueleto de Renderización. Semana 4-5: Carga modelo 3D. Semana 6-7: Optimización Carga modelo 3D. Semana 8: Sprites. Semana 9: Interfaz de Usuario. Semana 10: Documento diseño videojuego. Semana 11: Sistema de Partı́culas Semana 12: Texto y Billboarding Partı́culas. Semana 13-14: Efectos de Post-proceso Semana 15: Revisión y corrección. Semana 16: Animación de modelos 3D. Semana 17: Herramientas de terreno. Semana 18: Simulación. Semana 19: Sistema de fı́sicas. Semana 20-21: Correción y optimización. Semana 22-23: Videojuego de Ejemplo. Semana 24: Sistema de Sonido. Semana 25-27: Documentación y corrección bugs. Semana 28: Presentación. Conclusiones 23 / 27 Pruebas Motor de Videojuegos Contexto Introducción Se ha hecho un videojuego de ejemplo con todas las caracterı́sticas del motor y se ha probado en los siguientes dispositivos satisfactoriamente. Objetivos • Xperia S - Android 2.3.7 Concepto • Samsung S3 - Android 4.0 Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario • Tablet iJoy X2 - Android 4.1.1 • LG Optimus L5 - Android 4.1.2 • Sony Xperia L - Android 4.2.2 • Nexus 5 - Android 4.4.2 Estructura • Moto G - Android 4.4.2 Dedicación • Nexus 4 - Android 4.4.3 Pruebas Conclusiones 24 / 27 Conclusiones Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones • • • • • • • • • • Renderización de objetos 2D y 3D. Sistema de sonido. Sistema de partı́culas. Sistema de fı́sicas 2D. Detección de colisiones. Carga de modelos 3D. Animación de modelos 3D. Uso de shaders personalizados para la renderización. Interfaz de Usuario. El programador que use el motor de videojuegos no necesita tener conocimientos de Android o de las librerı́as gráficas. • Proporcionar herramientas para debugging y rendimiento. • Implementar pequeña demostración del MDV. • Efectos de post-proceso. 25 / 27 Lı́neas futuras Motor de Videojuegos • Editor para el motor. Contexto • Añadir tipos de iluminación más complejos. Introducción • Sistema de archivos script. Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario • Efectos de post-proceso más avanzados. • Sombras. • Más tipos de elementos de interfaz. • Más formatos para modelos 3D. • Uso de librerı́as de sonido más complejas. • Compatibilidad con OpenGL 1.1 y 3.0. Estructura • Multijugador/Networking. Dedicación • Etcétera. Pruebas Conclusiones 26 / 27 Motor de Videojuegos Contexto Introducción Objetivos Concepto Caracterı́sticas OpenGL Recursos Modelos 3D Renderización Sonido Fı́sicas Post-Proceso Partı́culas Interfaz Usuario Estructura Dedicación Pruebas Conclusiones 27 / 27