Title: Retos Tecnolgicos en Videojuegos
1Retos Tecnológicos en Videojuegos
- Jesús de Santos García
- Equipo de Tecnología
- Pyro Studios
2Retos 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
3Retos 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
4Retos 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
5Retos 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
6Retos 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
7Grá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)
8Grá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)) -
9Grá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
10Grá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)
-
11Grá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
12Grá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 ?
13Grá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
14Gráficos - Materiales
15Gráficos - Materiales
16Grá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
17Grá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
18Gráficos - Modelado
19Grá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)
20Grá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 ?
21Gráficos - Modelado
- Subdivisión de superficies
Modelo de http//developer.nvidia.com
22Grá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
23Grá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
24Grá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
25Grá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
26Gráficos - Sombras
27Gráficos - Sombras
28Grá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
29Grá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.
30Retos 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
31Fí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
32Fí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?
33Retos 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
34Inteligencia 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
35Inteligencia Artificial
- Entidad / Actor
- Elemento principal
- Comunicación mediante mensajes / eventos
- Máquinas de estados
36Inteligencia 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
37Inteligencia 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
38Inteligencia 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 Im 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
39Retos 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
40Multithreading
- 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
41Sistema
- 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
42Sistema
- 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
43Sistema
- 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
44Sistema
- 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.
45Retos 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
46Herramientas
- 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 ?
47Herramientas
- 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
48Herramientas
- 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
49Herramientas
- Ejemplo
- Editor de partículas
50Herramientas
51Retos 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
52Metodologí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
53Metodologí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
54Metodologí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
55Metodologí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
56Video Tecnología
- Demo para probar tecnología
- Estrictamente tecnología
- No jugable
- Stress a todos los subsistemas
57Resumen
- 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
58Fin de la presentación
- Preguntas?
- Esta presentación con todos los links y más
información en - http//entland.homelinux.com/blog
59Referencias
- 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-har
monic-lighting.html - Generalized Displacement Maps
- http//research.microsoft.com/users/xtong/gdm_elec
tronic.zip
60Referencias
- Hardware Shadow Mapping
- http//developer.nvidia.com/object/hwshadowmap_pap
er.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_p
fv.htm - The RenderMan Companion A Programmer's Guide to
Realistic Computer Graphics - http//www.amazon.com/RenderMan-Companion-Programm
ers-Realistic-Computer/dp/0201508680
61Referencias
- The Free Lunch Is Over A Fundamental Turn Toward
Concurrency in Software - http//www.gotw.ca/publications/concurrency-ddj.ht
m - Software and the Concurrency Revolution
- http//www.gotw.ca/resources/Software20and20Conc
urrency20-20OGDC.pdf - Agile Game Development - GDC2007 Tutorial
- http//www.agilegamedevelopment.com/2007/03/sessio
n-and-tutorial-slides-are-posted.html