Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Motor de Videojuegos
para Plataforma Android
Francisco Javier Ortiz Quetglas Tutor
Jos´e Mar´ıa Buades Rubio Escola Polit`ecnica Superior Universitat de les Illes Balears
25 de Junio de 2014
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Contenido
1 Contexto 2 Introducci´on 3 Objetivos 4 Concepto 5 Caracter´ısticas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario 6 Estructura 7 Dedicaci´on 8 Pruebas 9 Conclusiones 2 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Contexto
• Actualmente la media de gasto en desarrollo por
videojuegos se mueve entre 7.4 y 9.7 millones de euros.
• Con la aparici´on de las plataformas Android, iOS y
Windows Phone han aumentado el numero de empresas que se dedican exclusivamente a desarrollar videojuegos para m´ovil.
• En 2010, se tuvieron unas ganancias de 87.000 millones de
d´olares debido solamente a la publicidad incluida en los videojuegos para m´ovil.
• Es un mercado que esta creciendo muy r´apidamente y de
f´acil acceso. Licencias de bajo coste.
• Windows Phone: Cuota anual de 99 d´olares. • iOS: Cuota anual de 99 d´olares.
• Android: Pago ´unico de 25 d´olares.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
¿Qu´
e es un Motor de Videojuegos?
Definici´on
Un motor de videojuegos es un t´ermino que hace referencia a
una serie de rutinas de programaci´on que permiten el dise˜no, la creaci´on y la representaci´on de un videojuego.
• Arquitectura basada en capas.
• No se necesitan conocimientos de librer´ıas gr´aficas o plataforma.
• Facilidad de creaci´on de videojuegos.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Objetivos
• Renderizaci´on de objetos 2D y 3D. • Sistema de sonido. • Sistema de part´ıculas. • Sistema de f´ısicas 2D. • Detecci´on de colisiones. • Carga de modelos 3D. • Animaci´on de modelos 3D.• Uso de shaders personalizados para la renderizaci´on.
• Interfaz de Usuario.
• El programador que use el motor de videojuegos no
necesita tener conocimientos deAndroid o de las librer´ıas
gr´aficas.
• Proporcionar herramientas para debugging y rendimiento.
• Implementar peque˜na demostraci´on del MDV.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Limites
LimitacionesProbablemente es imposible hacer un motor para crear
cualquier videojuego de forma ´optima. Los motores de uso
general son menos ´optimos en calidad e im´agenes por segundo.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Arquitectura(I)
7 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Arquitectura(I)
7 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Arquitectura(II)
8 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Arquitectura(II)
8 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Arquitectura(III)
9 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Arquitectura(III)
9 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Caracter´ısticas
Herramientas utilizadas para el TFG:
• SDK de Android.
• Entorno Eclipse.
• Blender.
• Maquina virtual Android.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Librer´ıas OpenGL
Se dispone de tres versiones:
• OpenGL ES 1.1(Android 1.0+)
• OpenGL ES 2.0(Android 2.2+)
• OpenGL ES 3.0(Android 4.3+)
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Librer´ıas OpenGL
Se dispone de tres versiones:
• OpenGL ES 1.1(Android 1.0+)
• OpenGL ES 2.0(Android 2.2+)
• OpenGL ES 3.0(Android 4.3+)
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Gestor de Recursos
El gestor de recursos se encarga de asegurar que solamente existe una copia en memoria de un determinado recurso. Se
guardan de formaconsistente e integra. Los gestores de
recursos son: • Gestor de C´amaras • Gestor de Materiales • Gestor de Modelos • Gestor de Shader • Gestor de Sonido • Gestor de Texturas 12 / 27
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Modelos 3D(I)
Hay varios formatos a la hora de cargar modelos 3D:
Formato Animaci´on Calidad
MD2 (Quake II) S´ı Media
MD3 (Quake III) S´ı Alta
Wavefront No Alta
Autodesk 3ds Max No Alta
DirectX No Media
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Modelos 3D(I)
Hay varios formatos a la hora de cargar modelos 3D:
Formato Animaci´on Calidad
MD2 (Quake II) S´ı Media
MD3 (Quake III) S´ı Alta
Wavefront No Alta
Autodesk 3ds Max No Alta
DirectX No Media
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Modelos 3D(II) Formato Wavefront
El formato WaveFront se compone de los siguientes elementos:
• V´ertices geom´etricos (v)
• V´ertices de textura (vt) • V´ertices de normales (vn) • Cara (f) vx y z vttx ty vn nx ny nz f v/vt/vn v/vt/vn v/vt/vn ... 14 / 27
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Renderizaci´
on
Se han utilizado una serie deshader para renderizar todos los
posibles casos de renderizaci´on que puede necesitar el motor de
videojuegos. Losshader implementados son:
• Per pixel shading.
• Textura.
• Per pixel shading + Textura.
• Sprite.
• Efectos Post-proceso.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Sonido
Dos posibles librer´ıas:MediaPlayer ySoundPool. Se ha
utilizadoSoundPool porque permite mantener en memoria el
sonido listo para reproducirse y reproducir varios sonidos
simult´aneamente. 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˜nadir 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).
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: F´ısicas - Herramientas
Se han dado herramientas para modelizar el terreno en 2D. Se
forma un segmento de terreno a partir dedos puntos(P1 y
P2). Estos dos puntos forman una recta:
x−P1.x P2.x−P1.x−
y−P1.y P2.y−P1.y = 0
Se proporcionan herramientas para comparar la posici´on de los
diferentes elementos de la escena respecto a estos segmentos de terreno.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: F´ısicas - Simulaci´
on
Se efect´ua la simulaci´on de las f´ısicas de formaiterativa.
Adem´as 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.
La simulaci´on se encarga de gestionar en que instantes de
tiempo se ejecutan las f´ısicas de cada actor/objeto, manteniendo un tiempo estable entre ejecuciones.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Efectos de Post-proceso
Se han implementado los efectos de post-proceso:
• Glow
• Blanco y Negro
• Sepia
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Efectos de Post-proceso
Se han implementado los efectos de post-proceso:
• Glow
• Blanco y Negro
• Sepia
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Efectos de Post-proceso
Se han implementado los efectos de post-proceso:
• Glow
• Blanco y Negro
• Sepia
La forma en que se aplican estos efectos es:
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Sistema de Part´ıculas
El sistema de part´ıculas se compone de tres elementos clave:
• Part´ıculas: Cada part´ıcula tiene un tama˜no, posici´on, tiempo de vida y velocidad.
• Simulaci´on del sistema: Mantiene numero estable de part´ıculas y simula la aparici´on y desaparici´on de estas.
• Renderizaci´on del sistema: Renderiza las part´ıculas del sistema.
En la renderizaci´on se dibujan las part´ıculas como cuadrados que siempre miran hacia la c´amara utilizando la t´ecnica del
Billboarding.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
M´
odulo: Interfaz de Usuario
Se han definido una serie de elementos para proporcionar al usuario una interfaz con el videojuego. Estos elementos son:
• Botones
• Joystick
• Sprites
• Texto
• Fondo
Estos elementos se encuentran posicionados seg´un los bordes
de la pantalla: izquierda, centro, derecha, arriba y abajo.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Estructura de Classes
22 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Estructura de Classes
22 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Estructura de Classes
22 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Estructura de Classes
22 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Estructura de Classes
22 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Estructura de Classes
22 / 27Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Dedicaci´
on
• Semana 1-2: Trabajo previo. • Semana 3: Esqueleto de Renderizaci´on. • Semana 4-5: Carga modelo 3D.
• Semana 6-7: Optimizaci´on Carga modelo 3D. • Semana 8: Sprites.
• Semana 9: Interfaz de Usuario. • Semana 10: Documento dise˜no videojuego. • Semana 11: Sistema de Part´ıculas • Semana 12: Texto y Billboarding Part´ıculas. • Semana 13-14: Efectos de Post-proceso • Semana 15: Revisi´on y correcci´on. • Semana 16: Animaci´on de modelos 3D. • Semana 17: Herramientas de terreno. • Semana 18: Simulaci´on.
• Semana 19: Sistema de f´ısicas. • Semana 20-21: Correci´on y optimizaci´on. • Semana 22-23: Videojuego de Ejemplo. • Semana 24: Sistema de Sonido.
• Semana 25-27: Documentaci´on y correcci´on bugs. • Semana 28: Presentaci´on.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Pruebas
Se ha hecho un videojuego de ejemplo con todas las caracter´ısticas del motor y se ha probado en los siguientes dispositivos satisfactoriamente.
• Xperia S - Android 2.3.7
• Samsung S3 - Android 4.0
• 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
• Moto G - Android 4.4.2
• Nexus 4 - Android 4.4.3
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
Conclusiones
• Renderizaci´on de objetos 2D y 3D. • Sistema de sonido. • Sistema de part´ıculas. • Sistema de f´ısicas 2D. • Detecci´on de colisiones. • Carga de modelos 3D. • Animaci´on de modelos 3D.• Uso de shaders personalizados para la renderizaci´on.
• Interfaz de Usuario.
• El programador que use el motor de videojuegos no
necesita tener conocimientos deAndroid o de las librer´ıas
gr´aficas.
• Proporcionar herramientas para debugging y rendimiento.
• Implementar peque˜na demostraci´on del MDV.
• Efectos de post-proceso.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones
L´ıneas futuras
• Editor para el motor.
• A˜nadir tipos de iluminaci´on m´as complejos.
• Sistema de archivosscript.
• Efectos de post-proceso m´as avanzados.
• Sombras.
• M´as tipos de elementos de interfaz.
• M´as formatos para modelos 3D.
• Uso de librer´ıas de sonido m´as complejas.
• Compatibilidad con OpenGL 1.1 y 3.0.
• Multijugador/Networking.
• Etc´etera.
Motor de Videojuegos Contexto Introducci´on Objetivos Concepto Caracter´ısti-cas OpenGL Recursos Modelos 3D Renderizaci´on Sonido F´ısicas Post-Proceso Part´ıculas Interfaz Usuario Estructura Dedicaci´on Pruebas Conclusiones 27 / 27