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