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

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

Embed Size (px)

Citation preview

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

Retos Tecnológicos en Videojuegos

Jesús de Santos García

Equipo de Tecnología

Pyro Studios

Page 2: 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

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

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

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

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

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

Retos Gráficos• Potencia gráfica de cada plataforma

– PC• 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

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

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

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

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…)

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

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));

}

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

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

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

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);

}

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

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

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

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

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

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

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

Gráficos - Materiales

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

Gráficos - Materiales

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

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

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

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

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

Gráficos - Modelado

• Displacement Mapping

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

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)

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

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

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

Gráficos - Modelado

• Subdivisión de superficies

Modelo de http://developer.nvidia.com

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

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

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

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

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

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

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

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

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

Gráficos - Sombras

• Shadow Mapping

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

Gráficos - Sombras

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

Gráficos – Animación

• Morphos– Animación facial– Soporte HW

• Esqueletos / Bones– Misma técnica desde 10 años– Nuevos modelos

• Retargeting• Generación dinámica de

animaciones

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

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.

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

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

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

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

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

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?

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

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

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

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

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

Inteligencia Artificial

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

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

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

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

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

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

Inteligencia Artificial• UnrealScript

// This is the automatic state to executeauto 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{ Begin:

Log( "I am executing the attacking state code" ); //...

}

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

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

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

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

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

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

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

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

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

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

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

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.

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

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

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

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

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

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

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

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

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

Herramientas

• Ejemplo– Editor de partículas

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

Herramientas

• Video de ejemplo

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

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

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

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

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

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

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

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

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

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

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

Video Tecnología

• Demo para probar tecnología

• Estrictamente tecnología

• No jugable

• Stress a todos los subsistemas

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

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

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

Fin de la presentación

• ¿Preguntas?

– Esta presentación con todos los links y más información en:• http://entland.homelinux.com/blog

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

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

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

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

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

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