Retos Tecnológicos en Videojuegos

Slides:



Advertisements
Presentaciones similares
U.M.L A/Gx. Diego Gutiérrez Application Analysis and Design.
Advertisements

Complejidad Computacional
Desarrollo de Juegos de Video en 3D
COLEGIO UNIVERSITARIO DE ADMINISTRACION Y MERCADEO
Graphics Processing Units (GPUs)
Virtual PC.
INTRODUCCIÓN A JAVA.
TEMA 2: «CONFIGURACIÓN DE MÁQUINAS VIRTUALES»
1. Visión Artificial Industrial. Introducción.
Microprocesadores.
2.02B Métodos y usos de la animación
INSTITUTO TECNOLOGICO DE MINATITLAN
INTRODUCCIÓN A LOS GRÁFICOS POR COMPUTADOR SÍNTESIS DE GRÁFICOS POR ORDENADOR Tema 1: Introducción a los gráficos por computador SÍNTESIS DE GRÁFICOS POR.
Metodologías OMT Republica bolivariana de Venezuela
Java Binding for the OpenGL API Unidad III. ¿Qué es OpenGL? Open GL es un entorno de desarrollo portable de aplicaciones gráficas interactivas en 2D y.
Introducción al software
Ascii art - Pixel art – Vector art Modelado 3d – Fotografia HDR
Estructuras en Sistemas Operativos
Es el arte de instruir a un computador sobre los pasos necesarios para resolver los problemas que influyen en la creación de un videojuego. Es el.
Ingeniería del Software
Software Se conoce como software al equipamiento lógico o soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos.
Composición Interna de un Procesador
Unified Modeling Language (Lenguaje de Modelamiento unificado)
HERRAMIENTAS CASE.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Microprocesadores en Consolas
Introducción a los SSOO Sebastián Sánchez Prieto.
Computadoras analógicas Miden magnitudes físicas que se distribuyen en escala continua como pueden ser la temperatura y la presión. Este tipo de computadoras.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
TIPOS DE SOFTWARE Se denomina software a un programa, equipamiento lógico o soporte lógico necesario para hacer posible la realización de una tarea con.
Desarrollo de aplicaciones para ambientes distribuidos
Arquitectura Orientada a Servicios
Graficacion.
GPUs Rayco González Sicilia Microprocesadores para Comunicaciones 5º ETSIT.
Aspectos Tecnológicos de la Programación de Videojuegos Video Juegos y el Cine SEMINCI 2006 Museo de la Ciencia David Escudero Mancebo Universidad de Valladolid.
UML 2.0 Integrantes: Diana Carolina Valencia M. Jhon Fernando Lopez T. Carlos Alberto Castillo.
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
 Middleware  Portabilidad  Herramientas  Módulo central. Procesamiento y operaciones  Componentes:  Módulo de matemática  Módulo de física 
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Evolución del procesador
Computación Gráfica I – CI4321
Sistemas Operativos Avanzados
2. Motor de Videojuegos..  En un comienzo se programaba para un hardware específico, usando directamente instrucciones de los diversos microprocesadores.
TIPOS Y MODELOS. Realizar las operaciones de calculo Dar ordenes a los componentes para que funcionen.
El Microprocesador.
HERRAMIENTAS CASE.
Términos y Conceptos Básicos
“El mundo del Software Educativo”
Metodología de la programación
Por: Ernesto Y. Soto Rivas G
VIRTUALIZACIÓN.
UNIDAD 7 “OTROS PARADIGMAS DE PROGRAMACIÓN“ LI & MSC OSCAR RAMIREZ CORTÉS Universidad de la Huasteca Veracruzana.
Mónica Quintana Pineda
MICROPROCESADORES INTEGRANTES: Williams Rodríguez C.I: Peña julio C.Ojeda 17/04/2012.
Realización de las tareas básicas de internet. ¿Qué es Internet? Podemos definir a Internet como una "red de redes", es decir, una red que no sólo interconecta.
Naime Cecilia del Toro Alvarez
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Navarro Hernández Nadia Samantha. Preescolar 1º. B.
Unified Modeling Language (Lenguaje de Modelamiento unificado)
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
Generación Procedural de Terrenos en la GPU
Tendencia De Los Sistemas Operativos
Tema : Selección del tipo de Computadora (Hardware)
Tema : ¿Tipos de Computadoras?
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Introducción AOO. Contenido - Introducción - Repaso de Orientación a Objetos - UML - Casos de Uso.
Las fases del ciclo de la vida de desarrollo de sistemas
1 ESTIMACIÓN basada en PUNTOS de FUNCIÓN. 2 Agenda de la presentación 4 Técnicas de estimación. 4 Puntos de Función. (En general) 4 Puntos de Función.
LAS 14 AREAS TEMATICAS DE LA COMPUTACIÓN En los años la ACM(Association for Computing Machinery) y la IEEE (Institute for Electrical and Electronic.
Transcripción de la presentación:

Retos Tecnológicos en Videojuegos Jesús de Santos García Equipo de Tecnología Pyro Studios

Retos Tecnológicos en Videojuegos Filosofía general de esta presentación Pocos detalles técnicos (referencias al final de la presentación) Abarcar el mayor numero de áreas posible Dar una visión general del tipo de problemas técnicos a los que nos enfrentamos los programadores de videojuegos No estrictamente problemas técnicos ¿Qué tipo de “retos tecnologicos”? Puramente técnicos Problemas de tratamiento de datos Complejidad humana en el proceso

Retos Tecnológicos en Videojuegos En la siguiente hora Tecnología gráfica Física IA Multithreading Desarrollo de Herramientas Metodologías / Procesos de Trabajo Resto Preguntas

Retos Gráficos Potencia gráfica cada vez mayor. Ritmo de crecimiento superior a la Ley de Moore GPU: cada vez mas funcionalidad de propósito CPU: cada vez mas cores paralelos http://www.reghardware.co.uk

Retos Gráficos Potencia gráfica de cada plataforma PC XBox 360 Shader Model 3.0 Shader Model 4.0 OpenGL 2.0, DX9, DX10 XBox 360 3 PowerPC 3.2GHz x 2 threads hardware Tarjeta ATI – SM 3.0 - 500Mhz Memoria unificada 512Mb ~DX9.5 PlayStation3 1 PPU (PowerPC 3.2Ghz) + 6 SPU (3.2Ghz) Tarjeta nVidia – SM 3.0 – 550Mhz 256Mb Video / 256Mb Sistema libgcm / ~OpenGL ES Wii PowerPC 729Mhz Tarjeta ATI 243Mhz (Gamecube) 64Mb ~OpenGL

Retos Gráficos Aprovechar todo el potencial disponible Cada vez podemos asimilar más técnicas provenientes del mundo del Cine 3D Materiales (Shaders) Modelado Iluminación Sombras Animación

Gráficos - Materiales RenderMan Render empleado por Pixar para todas sus películas. La especificación es pública y ha sido empleado en un gran número de películas. RenderMan Shading Language: un lenguaje para describir las propiedades visuales de los materiales (plástico, cristal…)

Gráficos - Materiales Ejemplo de RSL surface metal( float Ka = 1; float Ks = 1; float roughness = 0.1;) { normal Nf = faceforward(normalize(N), I); vector V = - normalize(I); Oi = Os; Ci = Os * Cs * (Ka * ambient() + Ks * specular(Nf, V, roughness)); }

Gráficos - Materiales Los videojuegos empezaron el camino de los shaders hace mucho tiempo. Es ahora, en esta generación, cuando realmente estamos llegando a la libertad disponible en el cine. Fin de la época de los Pseudoshaders HLSL, GLSL, CG

Gráficos - Materiales HLSL // // Directional Fragment Shader float4 metal_fp( dirVertexOutput IN, uniform float Ks, uniform float SpecExpon, uniform float3 LightDir) : COLOR { float3 Nn = normalize(IN.WorldNormal); float3 Ln = -normalize(LightDir); float3 Vn = normalize(IN.WorldView); float3 Hn = normalize(Vn + Ln); float spec = pow(dot(Hn, Nn), SpecExpon); float3 color = Ks * spec; return float4(color, 1.0); }

Gráficos - Materiales En el pasado Prácticamente un material común para todos los objetos. Quizá algún material específico Artistas ajustan el aspecto visual mediante parámetros de ese material Textura Color por vértice Aspecto muy uniforme

Gráficos - Materiales En esta generación Materiales específicos para cada uso. Podemos emplear materiales distintos para un mismo personaje por ejemplo: pelo, piel, ojos, metal Ajuste de parámetros específicos del material Librerías de materiales Un montón de herencia proveniente del cine, que por supuesto hay que optimizar 

Gráficos - Materiales Efectos de postproceso Un nuevo campo en este generación Soporte de imágenes en coma flotante Disponible todo el soporte de materiales Ejemplos: Desenfoque Motion Blur Gamma/Color correction Flares / Glares

Gráficos - Materiales

Gráficos - Materiales

Gráficos - Modelado Técnicas de modelado para tiempo real Bump Mapping. Jim Blinn (1978) Optimizada dio como resultado Normal Mapping. Usada prácticamente en todas las superficies de esta generacion Información proveniente de un modelo de alta poligonización

Gráficos - Modelado Evolución del Bump Mapping Desplazamiento real de geometría. Displacement Mapping Ray Tracing implementado en el shader No aplicable a todas las superficies (costoso) Solo aquellos partes importantes (por ejemplo las más cercanas, cinemáticas) En superficies más aptas para esta técnica, como por ejemplo los terrenos

Gráficos - Modelado Displacement Mapping

Gráficos - Modelado Gracias a estas técnicas, los modeladores solo crean una malla visual Sin restricción de ningún tipo Polígonos Texturas / Mapeado Zbrush Esa malla es convertida luego a otra de menor detalle Alto Detalle ~ Malla + Bump + Displacement Proceso automatizable (asistido)

Gráficos - Modelado Subdivisión de superficies Complemento ideal Displacement Mapping Compresión / Reducción Bandwidth Complicado de implementar en software El siguiente paso necesario a implementar por hardware en la industria Fin de los polígonos 

Modelo de http://developer.nvidia.com Gráficos - Modelado Subdivisión de superficies Modelo de http://developer.nvidia.com

Gráficos - Iluminación Uno de los grandes retos actuales Técnicas habituales Iluminación estática pegada en texturas: lightmaps. Generada offline. Baking Luces dinámicas ordenadas por importancia Luces por píxel Luces por vértice Luces por objeto

Gráficos - Iluminación Retos en iluminación Iluminación dinámica Mapas de opacidad Precálculos de visibilidad Información de transmisión de luz (PRT) Ambient occlusion Luces de área Cube Maps Spherical Harmonics Cielos

Gráficos - Sombras Tema tradicionalmente complicado. Muchos años luchando en este área. Muchos años por luchar Implementación más sencilla con restricciones conocidas Proyección en el suelo Juegos de lucha Juegos de coches Volúmenes de sombras precalculados

Gráficos - Sombras Reto tecnológico Toda la iluminación dinámica Auto sombras Sin casos particulares Tras un periodo confuso de técnicas, el cine marca una vez mas el camino a seguir: Shadow Mapping Lance Williams (1978) Simple Eficiente Soportado por hardware

Gráficos - Sombras Shadow Mapping

Gráficos - Sombras

Gráficos – Animación Morphos Esqueletos / Bones Retargeting Animación facial Soporte HW Esqueletos / Bones Misma técnica desde 10 años Nuevos modelos Retargeting Generación dinámica de animaciones

Gráficos En resumen Gran parte de técnicas heredadas del mundo del cine Poder creativo en manos del artista El principio básico sigue funcionando: no tiene que ser realista, tiene que parecerlo. Y si es posible, de la manera mas sencilla.

Retos Tecnológicos en Videojuegos En la siguiente hora Tecnología gráfica Física IA Multithreading Desarrollo de Herramientas Metodologías / Procesos de Trabajo Resto Preguntas

Física Responsabilidad del sistema Físico Interacción del jugador con el entorno Interacción entre objetos Usos específicos según el tipo de videojuego: telas, vehículos Ragdolls Por lo general el sistema físico emplea una representación del mundo independiente a la visual KDTree BSP OBBTree KDopTree

Física La física de un videojuego es un campo en el que el empleo de middleware es una norma habitual Havok AGEIA / PhysX Un camino que acabaran siguiendo prácticamente todos los subsistemas de un videojuego ¿Para qué reinventar la rueda si otro la vende mas barata?

Retos Tecnológicos en Videojuegos En la siguiente hora Tecnología gráfica Física IA Multithreading Desarrollo de Herramientas Metodologías / Procesos de Trabajo Resto Preguntas

Inteligencia Artificial Campo con increíble potencial Poco explotado hasta la fecha El puesto de programador de IA era algo poco reconocido hasta hace poco La potencia actual permite empezar a desarrollar inteligencia artificial de verdad.  Comportamientos emergentes Principal área de desarrollo del propio juego Según vaya evolucionando el concepto de middleware los programadores del juego estarán mayormente en este campo

Inteligencia Artificial Entidad / Actor Elemento principal Comunicación mediante mensajes / eventos Máquinas de estados

Inteligencia Artificial Es práctica habitual recurrir a lenguajes más eficientes en este campo que C/C++ Lenguajes de script propios Lua Python Lenguajes funcionales

Inteligencia Artificial Un lenguaje paralelizable es altamente deseable Queremos cientos de actores ejecutándose individualmente Cada uno es un cerebro implementado en un procesador virtual Comunicación con otros cerebros mediante mensajes Ejecución en una máquina virtual Dominio diferente al del motor Virtualización de recursos Replicación de entidades por red Analogía con un sistema operativo

Inteligencia Artificial UnrealScript // This is the automatic state to execute auto state Idle { // When touched by another actor… function Touch( actor Other ) log( "I was touched, so I’m going to Attacking" ); GotoState( ‘Attacking’ ); Log( "I have gone to the Attacking state" ); } Begin: log( "I am idle…" ); sleep( 10 ); goto ‘Begin’; // Attacking state. state Attacking state Attacking Log( "I am executing the attacking state code" ); //...

Retos Tecnológicos en Videojuegos En la siguiente hora Tecnología gráfica Física IA Multithreading Desarrollo de Herramientas Metodologías / Procesos de Trabajo Resto Preguntas

Multithreading Reto principal Arquitecturas con varios núcleos La evolución de los microprocesadores está cambiando No se evoluciona creando micros con mayor frecuencia de cálculo Se crean micros con varios núcleos que trabajan en paralelo

Sistema La concurrencia hardware es una realidad a día de hoy PC procesadores con 2 núcleos, con 4 núcleos… XBox 360 3 procesadores con 2 threads por hardware = 6 unidades de ejecución en paralelo PlayStation3 1 procesador principal (PPU) + 6 procesadores (SPU) de cálculo

“The free luch is over” – Herb Sutter Sistema Estamos ante una nueva revolución a nivel de software Es necesario adaptar las técnicas de programación actuales para sacar provecho de la concurrencia. Adaptar el motor de un videojuego a estas técnicas nuevas para poder sacar provecho. “The free luch is over” – Herb Sutter

Sistema Objetivo Descomponer el trabajo realizado a lo largo de un fotograma en muchas tareas pequeñas Conseguir una aplicación escalable a n núcleos Portabilidad siempre interesante

Sistema Riesgos El nuevo paradigma es difícil de llevar a cabo con los lenguajes actuales. Lenguajes funcionales al rescate? Prolog, Haskell C/C++ sigue siendo el principal lenguaje para crear videojuegos Diseños con una gran cantidad de bloqueos ineficientes y muchas veces innecesarios El resultado son arquitecturas complejas y con un alto riesgo Primera generación de juegos de Xbox360 solo empleaba un núcleo No existe una solución clara a día de hoy.

Retos Tecnológicos en Videojuegos En la siguiente hora Tecnología gráfica Física IA Multithreading Desarrollo de Herramientas Metodologías / Procesos de Trabajo Resto Preguntas

Herramientas La parte más importante en todo el proceso de producción del videojuego El verdadero reto actual en la producción de videojuegos Interface de la tecnología para los artistas Una tecnología potente no vale para nada sin unas herramientas que expongan la potencia a los artistas Esta es posiblemente la pagina mas importante de la presentación 

Herramientas Evolución en la complejidad de los datos en videojuegos Commandos Strike Force (Pyro Studios) 31000 ficheros 12 GB NextGen en desarrollo (Pyro Studios) 65462 ficheros 17.7 GB

Herramientas Características deseables en cualquier herramienta “decente” Interacción entre las herramientas y el motor lo mas rápida posible Visualización directa en el motor del juego Recarga en caliente Texturas Modelos Lógica

Herramientas Ejemplo Editor de partículas

Herramientas Video de ejemplo

Retos Tecnológicos en Videojuegos En la siguiente hora Tecnología gráfica Física IA Multithreading Desarrollo de Herramientas Metodologías / Procesos de Trabajo Resto Preguntas

Metodologías / Procesos de Trabajo Principales problemas a resolver en esta área Problemas de comunicación en equipos grandes Optimizarla Importancia de las personas en el equipo Difusión del conocimiento en equipos

Metodologías / Procesos de Trabajo Herramientas para mejorar el flujo de trabajo y comunicación Wiki Más eficiente que documentos sueltos Comunicación entre departamentos Mensajería interna RSS Más eficiente que el mail

Metodologías / Procesos de Trabajo Concepto de compilación continua Una máquina dedicada exclusivamente a compilar la ultima versión del juego Directamente del repositorio de código Compilación en las diversas configuraciones Ejecución de “test de regresión” Compilación de datos Empaquetado Siempre existe una última versión del juego en la máquina de compilación Importante para mejorar la sensación de progresión. Moral del equipo

Metodologías / Procesos de Trabajo Metodologías “Agile” Nuevas filosofías de trabajo con el objetivo de incrementar la productividad Scrum Dos ciclos de desarrollo Sprint: 2 - 3 semanas Scrum diario

Video Tecnología Demo para probar tecnología Estrictamente tecnología No jugable Stress a todos los subsistemas

Resumen Realización de un videojuego cada vez más y más compleja. Mucha herencia proveniente del cine Evolución del HW muy superior a lo “asimilable” Desarrollo de videojuegos con un alto factor de riesgo tecnológico Reducción del riesgo mediante middleware Importancia de las herramientas durante la producción Nueva revolución de software: paralelismo Nuevas metodologías de trabajo

Fin de la presentación ¿Preguntas? Esta presentación con todos los links y más información en: http://entland.homelinux.com/blog

Referencias Real-Time Rendering http://www.realtimerendering.com/ D3D10 Unleashed: New Features and Effects d3d10 unleashed - new features and effects.zip Spherical Harmonic Lighting: The Gritty Details http://www.research.scea.com/gdc2003/spherical-harmonic-lighting.html Generalized Displacement Maps http://research.microsoft.com/users/xtong/gdm_electronic.zip

Referencias Hardware Shadow Mapping http://developer.nvidia.com/object/hwshadowmap_paper.html Practical Dynamic Parallax Occlusion Mapping http://ati.amd.com/developer/SIGGRAPH05/Tatarchuk-ParallaxOcclusionMapping-Sketch-print.pdf Subdivision Surface Theory http://www.gamasutra.com/features/20000411/sharp_pfv.htm The RenderMan Companion: A Programmer's Guide to Realistic Computer Graphics http://www.amazon.com/RenderMan-Companion-Programmers-Realistic-Computer/dp/0201508680

Referencias The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software http://www.gotw.ca/publications/concurrency-ddj.htm Software and the Concurrency Revolution http://www.gotw.ca/resources/Software%20and%20Concurrency%20-%20OGDC.pdf Agile Game Development - GDC2007 Tutorial http://www.agilegamedevelopment.com/2007/03/session-and-tutorial-slides-are-posted.html