Motores para videojuegos, ¿cuál elegir?

Transcripción

Motores para videojuegos, ¿cuál elegir?
MOTORES PARA
VIDEOJUEGOS
¿Cuál elegir?
Motores para videojuegos
V2
Puntos a tratar
•
•
•
•
•
•
•
•
¿Qué es un motor?
Origen de los motores
Elementos de un motor
Ventajas de los motores
Tipos de motores
Motores disponibles
Herramientas asociadas
¿Qué motor utilizar?
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
2
V2
Motores para videojuegos
¿Qué es un motor?
• Sistema software para la creación de videojuegos
• Proporcionan
• API y SDK para el desarrollo
Algunos motores pueden permitir crear juegos sin necesidad de
escribir código
Algunos proporcionan su propio lenguaje de script
• Conjunto de herramientas de edición
Algunos motores no proporcionan herramientas visuales, pero
pueden existir herramientas de terceros
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
3
V2
Motores para videojuegos
Origen de los motores (I)
• En los inicios
• Todo el juego estaba contenido en el ejecutable
• Intratable conforme avanza su complejidad
Pinball Construction Set, 1983
• Con el surgimiento de los sistemas de ficheros surgen nuevas
posibilidades
• Separar “ejecutable” y datos
• Permite cambiar contenidos sin cambiar el gameplay
• Tenemos motores reutilizables (data-driven)
• Evolución
• Definir el comportamiento también como datos
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
4
V2
Motores para videojuegos
Origen de los motores (II)
• A finales de los 80 las compañías hacían sus
propios motores, normalmente cerrados
• Script Creation Utility for Maniac Mansion
(SCUMM), de Lucas Arts
• Sierra’s Creative Interpreter (SCI) de Sierra
• En 1993 aparece Doom Engine (a.k.a. id Tech 1)
• Tanto datos como comportamiento se define en
ficheros WAD
• Se trata de un motor abierto
• Cualquiera puede editar WADs
• El término “motor de videojuegos” empieza a
utilizarse a mediados de los 90
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
5
V2
Motores para videojuegos
Origen de los motores (III)
• El enfoque de Doom es aplicado a futuros juegos
• Quake I/II (id Software), dando lugar a id Tech 2
• Unreal (Epic Games), donde surge Unreal Engine,
uno de los motores más populares en la actualidad
• Hoy en día tenemos motores de propósito
general
• El código se reduce al mínimo, genérico y
reutilizable
• Es necesaria extensa documentación debido al
aumento de su complejidad
• Algunos motores proporcionan Sistemas de
Creación de Contenidos (CCS)
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
6
V2
Motores para videojuegos
Elementos de un motor
Gráficos
Vídeo
Scripting
Física
Audio
I.A.
Entrada
Ficheros
Red
Algunos motores sólo incorporan funcionalidades de
render 3D, como OGRE o Irrlicht
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
7
V2
Motores para videojuegos
Motores y Middleware
• Un motor de videojuegos podría ser visto como un
middleware que nos permite desarrollar videojuegos
• Sin embargo, el término middleware de videojuegos
se refiere normalmente a subsistemas que pueden
ser integrados en el motor y se especializan en
tareas concretas
• Ejemplos
Interfaz
Scaleform GFx
Vídeo
Bink, CRI Movie
Físicas
Havok, PhysX, Bullet, ODE, Box2D
Audio
FMOD, Wwise, Miles
Render y animación
SpeedTree, FaceFX, Umbra, Simplygon
I.A.
Kynapse, NavPower, PathEngine, Havok AI
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
8
V2
Motores gráficos
Gráficos
• El motor gráfico es un procesador de
geometría en tiempo real
• La aceleración 3D por hardware ha
supuesto un notable incremento del
potencial gráfico de los videojuegos
• “No importa lo potente que sea tu
plataforma, siempre necesitarás más”
• Cada juego tiene problemáticas
específicas
• Es necesario realizar optimizaciones
en procesamiento y memoria
Videojuegos II
© 2013-2014 Depto. Ciencia de la Computación e IA
Motores gráficos
9
V2
Motores para videojuegos
Optimizaciones en gráficos
Determinación de la visibilidad
• Importante especialmente en “escenarios de interior”
• Escenarios compartimentados en los que sólo una zona es visible
• Debemos eliminar de forma eficiente toda la geometría no visible
Resolución
• Importante especialmente en “escenarios de interior”
• Espacios abiertos con gran cantidad de geometría visible
• Debemos reducir el detalle de los objetos lejanos
Geometría orgánica
• Elementos que no se pueden representar mediante una maya 3D sencilla
• Necesitamos técnicas apropiadas para poder mostrarlos de forma eficiente
• Sistemas de partículas: humo, fuego, chispas, etc
• Modelos específicos para nubes, agua, árboles, césped, etc
• P. ej. Creación de árboles mediante SpeedTree
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
10
V2
Motores para videojuegos
Formas de determinar la visibilidad
• Frustum culling
• Recorta según el tronco (frustum) de la
cámara
• Se realiza en la GPU, pero podemos
realizar un filtrado previo en CPU
Frustum culling
Backface culling
• Backface culling
• Elimina caras no visibles
• Se realiza en la GPU
• Occlusion culling
Occlusion culling
• Elimina objetos tapados por otros
• Se realiza en la CPU
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
11
V2
Motores para videojuegos
Particionamiento espacial
BSPs o una estructura de
“portales y habitaciones” son
convenientes para escenarios de
interior compartimentados
Quadtrees y Grids son
apropiados para frustum culling
en escenarios abiertos vistos
desde arriba
Quake 4
Lara Croft and the Guardian of the Light
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
12
V2
Motores para videojuegos
Oclusiones
• Podemos eliminar oclusiones mediante el middleware Umbra
• Se encuentra integrado en motores como Unity o UE4
• Tiene un componente offline (“cocinado”) y otro en tiempo de
ejecución
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
13
V2
Motores para videojuegos
Resolución
• Clipping, culling y test de oclusiones determinan qué se ve
• El test de resolución determina cómo se ve
• Importante cuando hay una gran cantidad de geometría visible
• El usuario se fija en los objetos grandes y cercanos
• Podemos reducir la resolución de los objetos lejanos
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Nivel de
detalle
Motores para videojuegos
14
V2
Motores para videojuegos
Nivel de detalle (LOD)
• Podemos crear LODs para un modelo con el
middleware Simplygon
• Servicio en la nube para la generación de
LODs
• Se integra en Unity
• Descarga gratuita desde Unity Asset Store
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
15
V2
Motores para videojuegos
Terreno
• Grandes extensiones de tierra
• Necesitamos contar con estructuras y algoritmos para tratarlas
• Cambio suave del nivel de detalle conforme aumenta la distancia
• Estructuras para almacenar el terreno
Mapas de alturas
Quadtrees
Binary Triangle
Trees (BTTs)
Real-time
Optimally Adapting
Meshes (ROAM)
Chunked LODs
• Algoritmos
Geomipmapping
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
16
V2
Motores para videojuegos
Edición de terrenos
• Unity proporciona un potente motor
y editor de terrenos
• Permite “dibujar” directamente la
altura
• Podemos exportar o importar los
datos en formato RAW
• Este formato puede abrirse por
Photoshop y otros motores
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
17
V2
Motores para videojuegos
Iluminación
Modelos locales
• Sólo tienen en cuenta únicamente las fuentes de luz y los objetos individuales
Modelos globales
• Se consideran las interacciones entre objetos de la escena
• Sombras, reflejos de color, etc
• Podemos incorporar iluminación global mediante light mapping
• Enfoques como radiosity son demasiado costosos para tiempo real
• Podemos precalcular la iluminación de la escena offline
• Las sombras en tiempo real tienen un alto coste
• Normalmente deberemos indicar qué objetos proyectan sombra, y sobre qué
objetos se puede proyectar sombra
• Existen diferentes técnicas para implementar sombras en tiempo real
• Shadow maps
• Shadow volumes
• Ambient occlusion
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
18
V2
Motores para videojuegos
Lightmapping
• Podemos implementar iluminación global con
lightmapping mediante el middleware Beast
• Incluido en motores como Unity y Unreal Engine
• Precalcula la iluminación global
“cocinándola” offline como texturas
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
19
V2
Motores para videojuegos
Animaciones
• Alternativas para las animaciones de los personajes
• Crear animaciones mediante una herramienta de modelado
• Sistema de captura de movimiento
• Obtener animaciones y aplicarlas a nuestros modelos
• Animation Retargeting
• Nos permite reutilizar animaciones para diferentes modelos
• Mecanim en Unity o Persona en Unreal Engine 4 lo soportan
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
20
V2
Motores para videojuegos
Scripting
• Lenguaje de alto nivel
• Normalmente utilizado para definir el comportamiento de las
entidades del juego
• Diferentes lenguajes: Lua, Javascript, Python, etc
• Scripting Visual
• Definimos comportamientos mediante una red de nodos
• Blueprints en Unreal Engine 4
• Extensiones en Unity
uScript, Playmaker, etc
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
21
V2
Motores para videojuegos
Motores de físicas
Open Source 2D
Open Source 3D
Comerciales
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
22
V2
Motores para videojuegos
Elementos del motor de físicas
v
• Sistema de simulación física
•
•
•
•
Aplicar leyes de Newton
Fuerzas ejercidas sobre los cuerpos
Actualización de la velocidad y la posición
Resuelve restricciones
a
• Detector de colisiones
• Detecta puntos de contacto entre cuerpos
• La forma de los cuerpos es importante
• Podemos utilizar detección de colisiones sin
simulación física
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
23
Motores para videojuegos
V2
Aplicaciones de la física
•
•
•
•
Proyectiles y balística
Vehículos y simulación
Muñecos de trapo (ragdolls)
Apilar cajas, cambiar gravedad, elementos elásticos, etc
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
24
V2
Motores para videojuegos
Ventajas de los motores (I)
• Mejoran el flujo de trabajo
• Separación de programadores, artistas, músicos, diseñadores, etc
• Cada componente del equipo trabaja sobre sus ficheros de datos
• Reusabilidad
• Nos permite reutilizar el mismo software para varios videojuegos
• Data-Driven Development
• Portabilidad
• Abstracción del hardware
• Nos permiten desplegar en múltiples plataformas
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
25
V2
Motores para videojuegos
Ventajas de los motores (II)
• Menor coste de desarrollo
• Algunos ofrecen entornos y herramientas que facilitan el trabajo
• Permiten llegar al mercado más rápidamente (time to market)
• Evolución del hardware
• Conforme aumenta la complejidad se necesita mayor organización
• El coste de hacer un motor propio crece con el avance de la
tecnología
• Utilizar un motor ya implementado permite centrarse en lo que
hace a nuestro juego diferente
• El motor se ocupa del ciclo del juego, modelo de objetos, gestión de
memoria, render, animaciones, físicas, pipeline de contenidos, etc
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
26
V2
Motores para videojuegos
Tipos de motores
• Según las facilidades ofrecidas
• Librerías de apoyo que facilitan el desarrollo: SDL, XNA, DirectX,
OpenGL. Gran flexibilidad. Mayor tiempo de desarrollo. Hay que
crear herramientas propias.
• Motores completos: OGRE, Unreal, id Tech. Requieren algo de
programación (scripting)
• Herramientas de creación de videojuegos: GameMaker, ShiVa,
Torque, Unity. A veces sólo sirven para determinados géneros.
• Según la licencia
• Motores propietarios (algunos con licencia gratuita)
• Motores OpenSource
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
27
V2
Motores para videojuegos
Motores
Herramientas de
creación de videojuegos
Universidad de Alicante
Motores propietarios
I Jornadas de Desarrollo de Videojuegos, 2016
Motores OpenSource
Motores para videojuegos
28
V2
Motores para videojuegos
Game Maker: Studio
• Herramienta de creación de videojuegos 2D sencillos
www.yoyogames.com
• Gratuito para publicar para Windows
• Licencia de pago para exportar para otras plataformas ($150-$800)
• Integra Box2D para físicas
• Opciones similares son Construct2 (herramienta sólo en Windows,
con licencia de 100€), o Gamesalad (con licencia mensual de $29)
Hotline Miami
Spelunky
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
29
V2
Motores para videojuegos
Unity
• Permite la creación de juegos 2D y 3D
http://unity3d.com/
• Versión gratuita con todas las funcionalidades
• La versión gratuita (Personal Edition) puede ser utilizada por
entidades con ganancias inferiores a $100.000 anuales
• Se puede utilizar de forma comercial libre de royalties
• Middleware: OculusVR, Speedtree, Simplygon, Umbra, PhysX
rain
Tiger Woods PGA Tour Online
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
30
V2
Motores para videojuegos
Source Engine
• Se puede descargar desde Steam
• Se da acceso al código fuente del SDK
• Para uso no comercial (útil para crear mods)
http://source.valvesoftware.com
• No existe licencia indie (licencia bajo acuerdo de confidencialidad)
The Stanley Parable
Portal 2
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
31
V2
Motores para videojuegos
CryENGINE 3
• Gratuito para educación y uso no comercial
• Licencia indie en la que sólo se pagan royalties (20%)
• Acceso al fuente para títulos AAA
• Puede ser complejo, importante contar con soporte
http://mycryengine.com
Crysis 2
Ryse
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
32
V2
Motores para videojuegos
Unreal Engine 4
• Gratuito
• 5% de los ingresos brutos en royalties
http://unrealengine.com
• Acceso al código C++ del motor
• Scripting visual mediante blueprints
• Integra middleware: OculusVR, Bink, Speedtree, Simplygon,
Umbra, PhysX
Daylight
Universidad de Alicante
Skara - The blade remains
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
33
V2
Motores para videojuegos
Torque 2D/3D
• Motor OpenSource (licencia MIT) para juegos 3D
• Gratuíto, soporte adicional de pago
• Tiene versión para juegos 2D y 3D
www.garagegames.com
• Cuenta con un editor visual integrado
• Se integra con middleware Box2D (2D), Physx (3D) y fmod
• Implementado en C++, scripting con TorqueScript (similar a C++)
Tribes 2
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
34
V2
Motores para videojuegos
Irrlicht
• Motor OpenSource para videojuegos 3D
• Motor gráfico con elementos para videojuegos
• Entrada, GUI, colisiones, etc
irrlicht.sourceforge.net
• Desarrollo en C++
• Código fuente asequible para iniciarse
• Implementa particionamiento con octrees, geomipmapping, etc
• Una opción similar es Ogre 3D, algo más complejo
www.ogre3d.org
Octodad
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
35
V2
Motores para videojuegos
Cocos2d-x
www.cocos2d-x.org
• Motor OpenSource multiplataforma para videojuegos 2D
• Exporta a gran cantidad de plataformas, especialmente móviles
• Implementado en C++, permite lenguajes de script. Integra Box2D
• Se integra bien con diferentes herramientas externas
• Tiled para creación de escenarios
• Texture Packer para creación de hojas de sprites
• Physics Editor para creación de la geometría de los objetos
• Una opción similar es libGDX, escrito en Java y más sencillo
libgdx.badlogicgames.com
Badland
Universidad de Alicante
Geometry Dash
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
36
V2
Motores para videojuegos
Aspectos a tener en cuenta
• ¿Qué tipo de juego queremos hacer?
• Hay motores que se adaptan mejor a determinados géneros
• Fundamental decidir si será 2D o 3D
• ¿Qué tipo de licencia necesitamos?
• Un motor OpenSource nos permitirá modificar su código
• Los motores comerciales normalmente ofrecen más facilidades
• ¿Qué herramientas utilizaremos?
• Debemos contar con un buen ecosistema de herramientas, internas
o externas
• ¿A qué plataformas nos dirigimos?
• Muchos motores permiten exportar a diferentes plataformas
• Deberemos tener en cuenta el “peso” del motor
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
37
V2
Motores para videojuegos
Herramientas de creación de videojuegos
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
38
V2
Motores para videojuegos
Motores propietarios
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
39
V2
Motores para videojuegos
Motores Open Source
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
40
V2
Motores para videojuegos
¿Qué motor elegir?
• Un motor requiere aprendizaje y familiarizarse con las herramientas
• Es importante tomar una buena decisión
• El más sencillo que se adapte a nuestras necesidades
• Motores como UDK pueden ser difíciles de abarcar para pequeños
estudios
• Una buena documentación y soporte de la comunidad es
fundamental, ¡comprobar que no se haya abandonado!
• No limitarse sólo a motores gratuitos
• Las herramientas asociadas suelen tener un coste
• Hay motores excesivamente caros sólo para equipos profesionales
• Implementar un motor propio es bueno para aprender, pero
normalmente no para un desarrollo real
• ¡Probar varios antes!
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
41
V2
Motores para videojuegos
Enlaces y contacto
• Materiales de la asignatura “Videojuegos II”, del Grado en
Ingeniería Multimedia de la Universidad de Alicante
• https://moodle2015-16.ua.es/moodle/course/view.php?id=1602
• Libro online “Videojuegos para Dispositivos Móviles” (con
Cocos2d-x), del Master en Desarrollo de Software para
Dispositivos Móviles de la Universidad de Alicante
• https://www.gitbook.com/book/mastermoviles/videojuegos-moviles/details
• Para cualquier duda o comentario podéis contactar conmigo
Miguel Ángel Lozano Ortega
[email protected]
Dpto. de Ciencia de la Computación e I.A.
Universidad de Alicante
Universidad de Alicante
I Jornadas de Desarrollo de Videojuegos, 2016
Motores para videojuegos
42

Documentos relacionados