Retos Tecnológicos en Videojuegos by wuyunyi

VIEWS: 3 PAGES: 61

									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 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
{
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_electr
    onic.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%20an
    d%20Concurrency%20-%20OGDC.pdf
• Agile Game Development - GDC2007 Tutorial
  – http://www.agilegamedevelopment.com/2007/
    03/session-and-tutorial-slides-are-posted.html

								
To top