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