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• 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
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– 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 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" ); //...
}
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
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