diciembre 30, 2006

Un YouTube de juegos caseros, con XNA


XNA es una de las ideas felices de Microsoft que más me ha sorprendido desde que supe de este proyecto.
Podríamos decir que XNA es un gran SDK enfocado a juegos y en el que podemos desarrollar tanto para Windows como para XBOX 360.
Como ya he comentado en otras ocasiones, el valor añadido que los usuarios le dan a un juego/plataforma cuando se le da la posibilidad de crear sus propios proyectos, es enorme. Tenemos ejemplos de Open Source que son muchos más útiles que su contrapartida "cerrada", o como comentaba el otro día, tenemos MODs de juegos que hacen del producto algo muchísimo más interesante que si se tratara del juego en sí, sin nada más. La posibilidad de hacer grandes cambios en un juego o en un programa (desde la IA, hasta los gráficos), da pie a que se den resultados que ni los propios creadores tenían pensado o ni siquiera pudieran sospechar.
Los ejemplos los hay a montones y sólo hay que acercarse a cualquier juego que te permita MODificarlo, para ver los resultados.
EL caso es que XNA es algo parecido a eso, pero a una escala mucho mayor. Tenemos a Microsoft que ha pensado en una plataforma (XBOX 360), en casi todos sus aspectos, a saber, no sólo es potente y no demasiado cara (comparada con PS3, aunque cara comparada con Wii), también tenemos XBOX Live! que le da una dimensión más a la consola, además también se ha pensado en los estudios, no se deja de lado a los desarrolladores a los que les ha dado la posibilidad de crear en un gran IDE de desarrollo como es Visual Studio 2005 (conocido por todos, con sus ventajas y sus defectos) y con este SDK que facilita la tarea enormemente. Ahora entra en juego XNA.
XNA, no es algo nuevo, desde que salió la XBOX 360 se viene hablando de ella y se ha intentando potenciar con más o menos éxito. Ahora Microsoft, que ya tiene cuatro millones de usuarios en su XBOX Live!, se ha visto preparada para darle un empujón más a XNA.
Qué tal si hablamos de una plataforma en la que tu haces tus juegos, los cuelgas al igual que en YouTube cuelgas tus videos, y la gente juega con ellos votándolos?, esa es la visión de Microsoft.
Las posibilidades que da esto son prácticamente ilimitadas, Microsoft quiere premiar a los mejores juegos poniéndolos a disposición de todos desde Xbox Live Arcade, dándoles beneficios en dinero, es decir, quiere potenciar el desarrollo Indie, quiere hacer de XBOX una plataforma con juegos gratis o muy baratos, creados por los propios usuarios y para los usuarios y fomentando una comunidad en donde los bajas, votas y comentas a modo de "YouTube for Games".
El modelo YouTube es tan revolucionario que hasta cuesta trabajo creer que salga a ganancias (teniendo en cuenta los costes del Ancho de Banda, por ejemplo), ha revolucionado de tal forma que ahora los más grandes también quieren usar este modelo, a su manera claro está, para poder ofrecer nuevas posibilidades y dar un nuevo valor añadido a sus productos.
Si esta aventura tiene éxito, ¿que otra plataforma puede imitar esto?, ¿acaso Sony puede hacer un SDK para el desarrollo Indie?, si hasta los propios desarrolladores van a sudar tinta china para sacarle el partido que se merece el procesador CELL... Ya decía Phil Morrison que nadie va a sacar el 100% del Cell pues bien, si eso ocurre desde luego que es culpa de Sony. Esto es como si yo vendo un coche que tiene 1000Cv de potencia pero justo después te digo que solo vas a poder usar 200Cv... ¿que diferencia hay con uno de 200Cv?, ninguna, así que no me lo vendas como uno mejor, tu coche da lo que da y lo demás es indemostrable (por mucho que tenga un motor increíble, en teoría).
Esa es la gran ventaja de Microsoft frente a Sony, de momento Microsoft a dado hechos, Sony solo problemas, retrasos, cancelaciones y dolores de cabeza. Desde mi punto de vista, tendrían que echar desde Phil para abajo y fichar a unos cuantos de Nintendo, lo mismo les iría mejor.

El caso es que XNA, el modelo que quieren crear de "YouTube for Games" y XBOX tienen aun muchísimo recorrido. Todos los desarrolladores van a querer embarcarse en el carro de XBOX ya que si es más barato hacer juegos (gracias a las herramientas), es más sencillo (gracias a una arquitectura mucho más balanceada, aunque menos potente) y los resultados pueden ser espectaculares (véase Gears Of War) ¿qué mas se puede pedir?, pues que tengamos millones de desarrolladores potenciales que cuelguen sus juegos y tú puedas divertirte con ellos, solamente eso.
A todo este gran compendio de aciertos yo solo le veo una pequeña pega y es que Microsoft, está trivializando el desarrollo de los juegos. Al igual que crear una película, hacer un juego decente requiere de un esfuerzo, un tiempo, unos conocimientos y un presupuesto, que no están al alcance de todos, de hecho está al alcance de muy pocos. Por la misma razón que en YouTube solo encontramos vídeos más malos que buenos, muy pocos de creación propia, y aun muchos menos con un mínimo de calidad. Por esa misma razón, encontraremos muchos juegos muy malos, bastantes malos, y alguno (muy pocos) medianamente buenos o regulares. El sueño de XNA, de democratizar el desarrollo de un juego, es bonito, pero a mi modo de ver practicamente irrealizable.
No creo que encontremos demasiados juegos colgados desde el principio. Coger una cámara y grabar a tu hijo de dos años bailando es mucho mas fácil que hacer un come-cocos. Aun teniendo las herramientas de forma gratuita, habiendo gente con un gran talento, y teniendo la plataforma necesaria para dar a conocer tu trabajo, tengo serias dudas de que vayamos a ver algo decente a medio plazo.El crecimiento de YouTube ha sido enorme gracias a la facilidad de crear algo muy sencillo, en poco tiempo y con un coste casi nulo. No veo un "Youtube para juegos" con varios miles, ni siquiera cientos de juegos hasta dentro de bastante tiempo.
Espero estar equivocado.

diciembre 28, 2006

Juegos con Código Abierto


No es noticia que un estudio quiera alargar la vida de un juego de todas las formas posibles. Tenemos desde secuelas, hasta nuevos mapas, objetos, misiones, expansiones al poco tiempo de haber salido... etc.
La vida de un juego es en la mayoría de los casos de meses, raro es el caso como WoW (que merece un estudio a parte), en que un juego puede tener tantos seguidores durante un año o más.
Para los estudios, es una necesidad alargar la vida del juego a través del mecanismo que sea para poder amortizarlo al máximo. Normalmente ofreciendo renovar el juego en algún aspecto.

Desde mi punto de vista una de las formas más acertadas para alargar un poco el ciclo de vida de un juego es a través de las comunidades de jugadores que se crean alrededor de los buenos juegos. Los auténticos Fans pueden hacer de un juego un éxito total, un ejemplo es Half Life, un mod como Counter Strike ha conseguido tantas ventas para Half Life que ya forma parte de la distribución normal del mismo juego. OSea, que te compras el juego y el MOD ya te viene :).

Ejemplos los hay a montones, los jugadores de Oblivion para PC, habrán probado algunos de los muchos MODs que hay para este juegazo de antología. Desde mejoras en las texturas, hasta una revisión completa de cada una de las criaturas del juego (Obscuro). Prácticamente cada nuevo juego que sale, tiene MODs de los usuarios.
Conodísimo es el caso del Hot Coffe, para GTA San Andreas, el éxito o la polémica también se debió al enorme desconocimiento que tienen la mayoría de los medios de comunicación (sobre todo la televisión) sobre lo que hablan. Se llegó a confundir el Hot Coffee y las "sordidas" imágenes del jugador haciéndolo en un montón de posturas distintas ;) con las chicas que ibas encontrando por la calle , con el propio juego original. Tal fue la confusión, que al final tuvieron que salir los chicos de Rock Star Studios diciendo que su juego es otro, que eso que veían era un MOD. Mo le vino demasiado mal, de todas formas, la publicidad que se le hacía en todos los telediarios...
El mundo esta lleno de gente con una capacidad y una calidad en el trabajo que los estudios saben que cualquier juego que saquen puede ser mejorado con creces y en muy corto tiempo si abren la posibilidad a los MODs.
Normalmente todo esto se consigue a través de SDKs para cada uno de los juegos, creo que fue el Quake (ID) quienes fueron de los primeros en los que podías hacer mapas. Era muy divertido (yo hice mi fcultad :D)...
Todo esto viene a colación por que me he encontrado un SDK, muy interesante, en el que además viene el código fuente del CORE del juego en sí, se trata del SDK del Civilization IV.
Yo he re-jugado a este juego no hace demasiado y la verdad que es un grandísimo juegos de estrategia por turnos (para mi la auténtica estrategia es por turnos, el RTS me gusta, pero me estresa un poco :D).
Además me he encontrado esta noticia en la que se dice que se quiere liberar el código fuente del Second Life. Para mí, esto es un error, pues como saquen el código fuente entero (creo que será parte, no entero) el juego se va a ver inundado de Hacks y Cheats que van a cargarse la Segunda Vida.

Feliz Navidad! :D


Pues eso, Feliz Navidad a todos ;), que deis muchos tiros (ya se sabe que con el PAD) o saltos o busquéis muchos tesoros :) en el formato que más os guste! :D... yo estoy aprovechando ahora que tengo un poco más de tiempo (Zelda).

Y a ver si Papa Noel, o Mama Noel o los Reyes Magos (lo que cada uno prefiera) se portan bien!

Saludos a todos.

diciembre 19, 2006

Rumor: PS3 para Marzo en Europa


Esta noticia es más típica de TNFGN, pero como me ha parecido importante, lo pongo aquí ;)... digamos que le ponemos el titulillo de Rumor, por que no es nada oficial...
Parece ser que la cosa está rondando entre el 2 o 9 de Marzo.
Por lo visto, preferen sacar la consola antes del final del presente año fiscal para Sony, que finaliza en la tercera semana de Marzo... teniendo en cuenta que es costumbre sacarlas en Viernes, el gato se lo llevan el 2 o el 9 de Marzo.
Normalmente a la rumorología de este calibre ;), no suelo hacerle demasiado caso, pero me parece que la fuente (Phil Harrison, botones presidente de Sony Worldwide Studios) es de fiar ;).
Ademas, para esas fechas se sacara un update para el firmware que afectará a las PS3 que se vendan por "estos lares".
aquí os dejo algunas de las cosillas que quiere actualizarle a la PS3:


* Multi-tasking (included will be audio/video conferencing while browsing the Cross Media Bar (aka XMB) and its features/gameplay).
* New XMB display options.
* New animations for audio playback.
* New photo album options.
* PlayStation Store auto-resume.
* PSP remote play advanced access option, so you can have access to your PS3’s content anywhere where there’s an internet connection.
Por fin fantasticas!!! buenas noticias de Sony, se me hace raro...;)

Raytracing en el motor de Quake 3

Hoy me he encontrado una cosa bastante impresionante, por lo "bonito" que se ve y por que no tenia ni idea que alguien estuviera haciendo esto.
El tema está en que la renderizacion es RayTracing, nada de técnicas de motores, de HDR y demás... nada, un rayo de renderización como toda la vida se ha hecho.
Obviamente la calidad en las sombras y demás es acojonante increible, fijaros en las sombras, en los reflejos y todo lo demás...
Dificilmente las cosas vayan a evolucionar por este camino, digamos... a medio plazo, pues la potencia de cálculo necesaria da miendo solo de pensarlo :)... pero es muy, muy interesante ver que hay gente por ahí que esta haciendo este tipo de cosas.
Recomendado echarle un vistazo a los video y a las fotos.

diciembre 14, 2006

El negocio del Futuro y del presente

Llevo observando un tiempo que las grandes empresas están haciendo movimientos hacia el negocio del entretenimiento de una forma muy decidida, vemos como Microsoft lanza su Windows Vista anunciando a bombo y platillo nuevos títulos en DX10, o incluso títulos exclusivos de WinVista (eso conlleva perdidas para el estudio, que paga Microsoft), vemos como Sony tira literalmente la casa por la ventana asumiendo perdidas gigantescas (a corto plazo) para ser una de las grandes, o a Nokia sacando su nueva N-Gage, con una estrategia totalmente distinta a la anterior generación de N-Gage, mejorando HW y haciéndose con juegos muy populares, y ahora vemos a Apple meter la cabeza con un IPOD para poder jugar... y es que el negocio del entretenimiento basado en los Vídeo Juegos es tan gigantesco, que si una empresa puede asumir los enormes costes iniciales, el beneficio puede llegar a ser muy muy grande.

Veamos los casos.
Microsoft:
Microsoft ha hecho una apuesta total por los video juegos , recientemente ha compra
do estudios , ha formado otros (nada menos que con Peter Jackson a la cabeza) y ha comprado empresas de publicidad para in-game Advertising. Además saben que una de las grandes bazas para Windows con respecto a otros sistemas operativos en el mercado es que tiene muchos juegos. Un "Linuxero" podrá decir lo que quiera en contra de Windows (y probablemente tenga bastante razón), un amante de Mc podrá decir que Windows es una burda y muy mala copia de MacOS, pero lo que seguro que ninguno de los dos puede discutir es que la cantidad de juegos que salen para PC Windows abruma cualquier intento de comparación con juegos para Mac o Linux.
Es un hecho objetivo (yo mismo he usado Linux y lo uso para cualquier tema de Red) y que seguramen
te más de un usuario habitual de Linux puede corroborar, que no es poco habitual usar Linux en el día a día, pero a la hora de jugar al PS6 o al FIFA o a lo que se quiera (exceptuando unos pocos casos de juegos OpenGL que salen para Linux también) tienes que poner un Windows o la consola, por que en otros SSOO no hay demasiado donde elegir.
Este es un hecho que no pasa inadvertido, y que crea un diferencial que además, Microsoft quiere alimentar.

Microsoft ha hecho un cambio fundamental en su WinVista para hacer un uso mucho más racional de los drivers de Video, no incluyendo en el CORE (o eso dicen) nada importante que tenga que ver con el interFaz o los gráficos. Han rehecho también DirectX... que le pese a quien le pese es una mejora enorme y muy bien hecha, y además han creado XNA que facilita enormemente la creacion de video juegos en XBOX 360 y la migración a PC.

Con todo esto, vamos a tener juegos en PC que van a ser realmente espectaculares, y que van a marcar un antes y un después...
Eso en cuanto a PC... pero y en cuanto a XBOX?
No creo que nadie me pueda discutir que la ganadora indiscutible, sin ningún tipo de duda es PS2 en la anterior generación, el número de PS2 vendidas (112 millones) hacen que XBOX palidezca (24 millones) y el número de dispositivos para PS2 de terceras partes es tan grande que "da hasta cosa" (micrófonos en plan Karaoke
, cámaras, juegos de baile, pulsadores, palos de golf... y mil cosas mas), hay de todo.
Me estaba el otro día comprando la Wii, y mientras lo hacia, entraron una pareja para comprar la PS2 con el BUZZ y unos minutos después, un niño c
on su madre a comprar otra PS2 con no recuerdo qué juego!, aun se venden y como churros! y no me extraña, la verdad.
Microsoft ha perdido bastante con XBOX , de hecho salió a perdidas enormes. Sin embargo, todo eso estaba mas que asumido ya que se suponía que era el paso anterior a lo actual, porque qué está pasando con
XBOX 360? pues que han hecho una consola tan buena que hasta cuesta trabajo creer.
Lleva una tarjeta gráfica que
tiene nada menos que un año, en ese mismo periodo de tiempo han salido dos familias de tarjetas para PC... pues bien ¿alguien ha visto Gears Of War? :) que más decir, es impresionante, se puede decir con tranquilidad que es, como mínimo, como lo mejor de PC actualmente.
No contentos con todo eso, además resulta que está a la altura de la PS3, que es un año más moderna pero que no le saca "un año" tecnológico ni mucho menos, de hecho hay quien dice que XBOX 360 corre más (yo no lo creo el, Cell es mucho Cell)... Resultado: 8 millones de consolas vendidas hasta la fecha y contando... no creo que bajen de los 10 millones a finales de las Navidades.
En este a
ño, XBOX 360 ha dejado de costar dinero a Microsoft, lo que significa que ya ganan dinero por consola vendida... y además, por si la cosa no fuera suficiente, está Live! (4 millones de usuarios pagando cada año), el que lo haya usado sabe que es un paso más allá para disfrutar la consola... pero Live! no es gratis... o sea que por ahí también le saca dinero.

Mejor hecho imposible, de verdad lo creo.
La única pega que le pongo a Microsoft es que no vaya a abrir su XBOX 360 tanto como seguramente lo hará So
ny con su PS3 y no veremos dispositivos de todos los gustos y colores como en PS3.

Sony:
Bueno, el tema de Sony es digno de estudio y de un artículo a parte. Ya he dicho en más de una ocasión que no se puede hacer peor. Sony no para de equivocarse, la PS3 le está costando carísima, no solo a nivel económico (muchísimo), sino a nivel corporativo, de imagen.
Para mí, So
ny hace un año era la mejor o una de las mejores empresas de tecnología. Ahora pienso que son unos chapuceros de cuidado.
Todo les ha salido mal, y seguramente no todo sea por culpa suya, pero no han sabido conectar con el usuario, ni transmitir buenas vibraciones. Prácticamente todas las noticias que llegan de Sony son regulares o malas... al menos de un tiempo a esta parte. Espero que la cosa cambie mucho cuando le pillen el truco a fabricarlas.
El caso es que la PS3 es cara, muy muy cara, a Sony le esta costando un mínimo de 805$ por unidad, las roturas de Stock hacen que pierdan continuamente clientes, IBM tiene problemas con su CELL... pero con todo y con eso siguen para adelante, sabiendo que ahora les cuenta dinero, pero que dentro de poco (un año o dos) van a ganar muchísimo.
Saben que la gente cambiará de opinión en cuanto vea los primeros juegazos en PS3 y entonces todos (yo incluido) diremos que vaya “maquinón”
que ha hecho Sony (estoy deseando que llegue el momento).
Nokia:
Pero quien es Nokia en este mundillo?, que hacen estos aquí?... pues es que Nokia es la empresa europea que
más dinero gana. Nokia ha sido una empresa que ha hecho hasta monitores de ordenador y que ha ido dejando los negocios menos lucrativos para centrarse en lo que saben hacer (moviles), sin embargo siguen empecinados en los Video juegos.

Vamos a ver, con su N-Gage creo que lo que hicieron estaba adelantado a su tiempo (juegos en un teléfono, para poder jugar en red, escuchar musica y más..) aunque perdieron mucho dinero no obstante han continuado con NGage y tienen preparada una nueva familia , mucho más potente, con juegos mejores (y mejores, y mejores) y un chip gráfico mucho mejor ... será que les vale la pena?, pues debe ser que sí… por que después de haber sido un fracaso siguen dale que te pego…

Apple:
Y es que no podía ser menos :d Apple ha visto como su Ipod Video tenía mucho menos éxito del esperado, de
hecho han vendido "muy pocos" (comparado con el IPod). Una forma de alimentar esas posibles ventas va a ser que con el Ipod se pueda jugar, desde luego que a mi me parece muy buena idea, ya que tienes una pantalla medianamente grande, y que el video parece que no termina de despegar... usemos esa pantalla para poder jugar un poco :D... veremos por donde sale esta aventura de Apple.
Supongo que necesitará el apoyo de los estudios para hacer juegos lo suficientemente interesante (y adictivos) como para que valga la pena comprar el juego.
Vemos juegos en ITunes , eso a un estudio de juegos le interesa muchísimo pues es un médio de compras más que validado, con un gran exito y que puede funcionar a la perfección.

Así que vemos cuatro grandísimas empresas, perdiendo dinero a montones, pero aun así apostando fortísimo por el vídeo juego. Tendrá algo que ver los 7.000 millones de dólares vendidos solamente en USA en 2005? ¿alguien me discute que esto no es el negocio del futuro? (y del presente!).

diciembre 13, 2006

Parece que se divierten con la Wii

Dando vueltas por las paginas por las que me suelo mover, me he encontrado un post con un enlace a Flickr "The Wii Motion Pool" :)... es divertido ver como gente de todas las edades, desde pequeñajos de 6 o 7 años tanto niños como niñas, hasta gente mucho más mayor juegan a la Wii :).
Me ha resultado curioso que comentan que niños de apenas 8 años que no sabían poner ni su nombre con el teclado qwerty (virtual) que tiene la Wii, no tenían ningún problema en jugar a los bolos o a los juegos de Wii Sport...
Eso es, ni más ni menos lo que creo que Nintendo buscaba, y no se me ocurre un éxito mas claro.

diciembre 10, 2006

Publicidad en Counter Strike 1.6 el año que viene


Está claro que el mundo de la publicidad ha llegado a los vídeo juegos y ya no se irá. Es deseable esta situación?, yo creo que sí, que es muy bueno que los estudios tengan otras formas de ingresos. No creo que tardemos mucho en ver empresas especializadas en este nicho de negocio que está sin explorar.
Una prueba más de todo esto son las noticias que salen últimamente a la luz, por ejemplo ahora se sabe que CS 1.6 contendrá publicidad, eso será a partir del año que viene (que está a la vuelta de la esquina).
El publico potencial de esa publicidad es enorme teniendo en cuenta que CS es el juego Online más jugado de la historia de los vídeo Juegos.

diciembre 08, 2006

Finalmente, compré la Wii :)

Ayer recogí mi Wii (250E) + Zelda (59.95E) , la puse en mi TV (que es un poco cutre, pero bueno), Y la verdad, que muy bien.
Como es sabido por todos, la Wii no es una consola como XBOX 360, PS3, o un PC con dos tarjetones de vídeo... los gráficos no son lo suyo, y precisamente por eso me la he comprado. Yo no necesito comprarme una consola (de momento) para ver buenos gráficos y echar un rato totalmente inmerso en el juego, con sonido 5.1, y una calidad de imagen que tira de espaldas, para eso ya tengo el PC (en mi caso), pero Wii es otro concepto, y pongo un ejemplo muy simple: mi novia se puso a jugar y en menos de 5 minutos ya sabía como iba todo, no tuve que explicarle absolutamente nada, simplemente es sencilla y a ella le pareció divertida a rabiar.
Un amiguete mio, se compró otra y estuvimos jugando con dos mandos al tenis, al béisbol, al boxeo (mi segundo mando viene de camino...).
En general la detección de movimientos sorprende, aunque no es del todo fina y precisa, pero lo suficiente como para poder jugar bien. El Boxeo, por ejemplo, no responde bien del todo a los movimientos (supongo que habrá que aprendérselos mejor), pero en un par de asaltos yo ya estaba sudando ;), el golf me encantó, aunque de nuevo la detección no era muy exacta, pero para mí el mejor es el de Tenis: sencillo y con una cantidad de posibles golpes impresionante.
Hoy por hoy no hay ninguna consola (a parte de PS2 + Eye toy o Buzz o cosas así) que se parezca a este tipo de diversión, nada "inmersivo" desde el punto de vista gráfico y el sonido, pero absolutamente divertido en la jugabilidad.
En cuanto al Zelda, he jugado como 10 minutos y no he continuado, cuando tenga una buena visión o me lo haya hecho (que será dentro de bastante pues no cuento con demasiado tiempo para jugar) ya os contaré desde mi punto de vista muy personal, qué me han parecido los aspectos más técnicos del juego, cosas como gráficos, sonido, IA y demás aspectos, no una review que hay montones y en las que la gran mayoría le dan entre un 9 y un 10... y seguro que dan más y mejor información que yo.
Además un amiguete viene de USA este fin de semana y me trae la segunda tarjeta de Video, que espero que con la mía, den mucho más rendimiento y pueda jugar sin demasiados problemas a Spliter Cell y demás a 1600 y en buenos detalles... ya contaré que tal la experiencia SLI.
En fin, esa es la Navidad de me espera ;)... intentaré aprovecharla.

diciembre 05, 2006

Nuevo Video de Crysis, DX10

Seguramente muchos de vosotros ya lo habrán visto, yo lo he bajado esta mañana y, sinceramente, lo he tenido que reproducir como tres veces... la potencia que requerirá estos gráficos y los prototipos con los que hayan contado para el desarrollo han tenido que ser descomunales!...
En fin, esto es lo que nos espera en PC como para Abril del 2008, paciencia mientras tanto ;).
El vídeo es bastante grande, pero vale la pena verlo.

Diseño de un juego en Red

Hace poco me pidieron que posteara algún artículo sobre el juego en Red, y como me pareció buena idea, me puse en ello poco a poco.

El resultado han sido dos artículos,un poco técnicos, pero no demasiado… en el que explico cuales son las técnicas más habituales en la programación de los juegos en Red.

Técnicas de programación de juegos en Red:

Para poder empezar con un sentido, creo que antes de nada podría intentar clasificar los distintos tipos de juegos en red, pues las soluciones posibles buscadas para cada uno de ellos no son las mismas.

Por un lado tendríamos una clasificación por tipos de red, es decir juegos en LAN o juegos en WAN, y por otro lado tendríamos una clasificación por tipos de juegos, esto es FPS, RTS, o MMG (Massively Multiplayer Games), como veis me he ceñido a solamente tres tipos de juegos.

Con esta clasificación no quiero decir que, necesariamente, las soluciones tengan que ser distintas para LAN (redes locales) que para WAN (Internet) o para cada uno de los tipos de juegos, pero lo que si es verdad es que esos dos tipos de redes son muy distintos y las características de nuestra solución deberán ser tales que sean aplicables para ambos o para una sola de estas redes.

En el caso de la LAN tendremos una red bastante rápida, eso es, con gran ancho de banda(BW) y con un retardo (LAG) muy pequeño. En este tipo de redes solemos tener muy pocos problemas de sincronismo, y el número de jugadores es, por lo general, no superior a la centena (en el peor de los casos). Pero ¿que pasa cuando estamos en una WAN en la que hay un retardo mucho más alto y el ancho de banda es mucho menor?

Por otro lado, tenemos el tipo de juego al que se le quiere aplicar la solución, no es lo mismo de exigente un RTS sobre LAN, que un FPS sobre WAN (mucho más exigente), además estas dos soluciones son completamente distintas a un MMG, que siempre es sobre WAN (las técnicas para MMGs las comentaré en el segundo artículo).

Con todo esto ya tenemos el contexto claro.

El problema del sincronismo:

El problema principal con el sincronismo se debe a que es necesario que cada uno de los jugadores vea exactamente la misma escena en el mismo instante de tiempo en sus monitores, aun teniendo cada uno de ellos retardos con el servidor totalmente dispares.

Examinemos con detenimiento el problema:

1). Supongamos que estamos en un juego en el que el jugador(j1) en el instante t0, está en una posición dada en el monitor y el jugador (j1) desea avanzar, para ello j1 pulsará la tecla de avance. Lo que ocurre en ese instante es que un mensaje (m1) sale del ordenador de j1, en el instante t0, para informar del movimiento del jugador j1 al resto de jugadores de la partida (ya se que es un poco lió… podéis verlo mucho mejor en el gráfico).

2). Supongamos que ese mensaje llega al servidor en el instante t1 (t1 = t1+tr1, donde tr1 es el tiempo de transporte, o tiempo que tarda el mensaje (m1) en llegar al servidor desde el ordenador j1), el servidor gestiona el mensaje, lo procesa y lo envía cada uno de los clientes (incluido j1).

3). Supongamos que el mensaje llega a todos los clientes en el instante t2 (t2=t1+tr2+tp1, donde tr2 es el tiempo de transporte del mensaje desde el servidor hasta el resto de jugadores, y tp1 es el tiempo de procesado del mensaje (m1) en el servidor). Fijaros que estamos suponiendo que se tarda lo mismo en llegar a todos los ordenadores a la vez, cosa que en realidad no es cierta, pero que podemos suponer sin perdida de generalidad, para este caso.

Para cuando los mensajes lleguen a los clientes (en t2), está claro que el jugador que ha iniciado la cadena de mensajes (j1) ya habrá pasado por la posición a la que quería llegar, de hecho es muy probable que este en otra posición bien distinta, por tanto, lo que ven los jugadores es una posición errónea, es más, cuando el mensaje llegue a j1 de nuevo (pues el mensaje de j1 llegará de nuevo a sí mismo a través del servidor) y vea que hay una discordancia entre la posición que dice el servidor en la que está y su actual posición, intentará corregirla (o no, depende de la implementación), con lo que la confusión aumenta aun más.

Como se puede observar, un problema de estas características, que viene dado por el transporte de los paquetes, es inherente a los juegos en red, es decir, no podremos en ningún caso evitar el problema, lo que si podemos es paliar los efectos (que no las causas) e intentar que los jugadores tengan la mejor experiencia posible. Para paliar estos efectos podremos usar distintas técnicas, como son Predicción y Extrapolación.

Para poder explicar bien estas técnicas necesitaremos saber, antes de nada, qué es el determinismo en los juegos.

Decimos que una un juego es determinista si una situación en un instante I1, llegaremos siempre la misma situación resultado en el instante I2, si usamos el mismo método y siempre que se den exactamente las mismas condiciones.

Para conseguir el determinismo en los juegos, básicamente tendremos que quitar cualquier variable de aleatoriedad. Para ello, un método usado normalmente es el cálculo y negociación de una tabla de números aleatorios a priori antes de empezar la partida.

Todos los jugadores en red tendrán la misma tabla, que será usada cada vez que en el juego se requiera un número aleatorio. Esta tabla permite que dada una situación, cuando tenemos que decidir algo que requiera cierta "aleatoriedad", siempre llegaremos a la misma situación resultante si usamos el mismo número en la tabla.

Este mecanismo nos permite dos cosas muy importantes, por un lado evitamos tener que calcular los números aleatorios en tiempo de ejecución (lo que nos ahorra bastantes ciclos) y por otro lado hemos descartado la aleatoriedad en nuestra partida.

Una vez que sabemos esas cosas podemos continuar con las técnicas de sincronismo de las partidas en red

Técnicas de sincronismo: Predicción y Extrapolación.

El jugador j1 conoce su posición real, y además conoce lo que quiere hacer y el tiempo que tarda (de media) un mensaje en llegar desde su ordenador al servidor... ese tiempo será (t0-t1), que se calcula básicamente haciendo un ping entre ambos ordenadores o de una forma mucho más compleja que no explicare aquí por ser un poco “espesa”, para nuestro caso nos sirve el Ping.

Pues bien, como el ordenador que controla j1 sabe lo que quiere hacer, donde está y a donde quiere llegar, y además conoce el tiempo que tomará al servidor transmitir esta nueva posición, se puede presentar en el monitor de j1 el cambio de posición, con ese retardo calculado, para que la situación que ve j1 sea justamente la que está llegando al resto de los jugadores de la partida.

Pero con esta solución tenemos solamente parte del problema solucionado. Es decir, hemos paliado el problema al meter un retardo en la representación igual al retardo necesario para que el mensaje m1 llegue del origen al resto de jugadores, pero esto degradaría enormemente la experiencia de juego, pues para el refresco de cada posición se tendría que esperar un tiempo de retardo!... sin embargo, cuando jugamos nosotros no notamos esta degradación, ¿Qué pasa entonces?.

Bien, fijaos que hemos empezado diciendo que el jugador j1 quiere hacer un movimiento y ese cambio de posición es el que se le manda al servidor... supongamos que en vez de estar molestando al servidor a cada movimiento, con cada nueva posición (muchas nuevas posiciones en cada segundo), ¿que tal si solamente le enviamos el diferencial cuando valga la pena informar de él?. Es decir, si estamos avanzando y anteriormente estábamos avanzando, ¿que necesidad hay de decirle al servidor que continuamos en esa dirección?, será mucho más efectivo si ahorramos ancho de banda y en vez de enviar cada nueva posición, simplemente enviamos, cada cambio en el estado.

Si el jugador j1 iba hacia la derecha y ahora quiere ir hacia arriba, eso sí que se manda, pero si se estuvo tres segundos hacia la derecha, no hay necesidad de estar enviando cada nueva posición al servidor dentro de esos tres segundos.

Detrás de esta idea está la técnica llamada "de Extrapolación".

Cada uno de los clientes (jugadores en la partida) “extrapola” la posición del resto de jugadores, es decir, se la inventa!, y la compara con lo que le llegue por red (que a menudo le llegam posiciones referentes a un instante pasado), si la comparación da positivo, es decir que se inventó bien la posición, entonces no hace nada, pero si resulta que se inventó mal la posición, la refrescará en la situación de partida y ya está. El resultado de una extrapolación fallida son esos “saltos” que vemos que algunas veces dan los jugadores contrarios (lo que se suele llamar “lagazo”).

Los algoritmos de extrapolación de la posición son variados y algunos realmente complejos, como veis, del buen hacer de este algoritmo dependerá muchísimo la calidad del juego en red.

Otras técnicas más específicas para juegos en los que hay escenarios muy grandes y el número de jugadores es extraordinariamente alto (como por ejemplo, WoW) lo comentaré en un segundo artículo (por no aburrir, más que nada ;)).

diciembre 04, 2006

Las partidas de Video Juegos serán retransmitidas por TV

Pues sí, tarde o temprano tenía que llegar. A mi me parece que incluso tarde, por que no es la primera vez que se escucha aunque, que yo sepa, es la primera vez que una cadena seria como CBS Sports le dedica un programa para retransmitir partidas de vídeo juegos.
No es demasiado difícil imaginar partidas retransmitidas por televisión y siendo seguidas por decenas de miles de personas (seguramente más), en una gran final.
Esto que parece una utopía, sería de vital importancia para la industria del video-juego, en donde veríamos publicidad in-game siendo retransmitida por televisión al igual que hay publicidad en los estadios de fútbol, y los estudio cobrando beneficios de esa publicidad por ser retransmitida.
Este tipo de cosas, podrían ayudar enormemente el desarrollo de juegos muchos más caros de crear, no solamente costeados por las ventas, sino también por la publicidad (que recordemos, es una gran la fuente de ingresos para muchísimos negocios, algunos enormes... véase Google!).
De esto ya hablamos en su momento en el artículo: "los estudios necesitan nuevas formas de ingresos?" por lo que me ha parecido interesante postear esta noticia aquí y no en TheNeedForGamingNews.

diciembre 03, 2006

Reserva de Wii

Ayer, después de mucho cabilar sobre el asunto durante las semana pasada, me decidí a comprar una Wii. Fué un amiguete (gracias Iván!) quien me reservó una Wii para el día del estreno (cosa que yo siempre digo que no se haga), más que nada por que Nintendo me da confianza y no creo que vayan a sacar un producto poco probado o con demasiados fallos.
Esta mañana me he conectado y he indagado un poco, tirando del hilo de varias noticias que me he ido encontrado, para investigar sobre posibles problemas de la Wii.
Por un lado estaba totalmente convencido (aunque debo confesar que no llegué a mirarlo) de que la Wii tenia cable VGA. Craso error, lo cierto es que la Wii tiene un D-Cable pero en Japón... ya se sabe que los fabricantes japoneses cuidan mucho su propio mercado (y bien que hacen!), el caso es que en España saldrán RGB, composite y video compuesto que es el que incluye la consola y a la vez el más básico de los tres (si quieres ver las cosas en 480p, tendras que comprar algunos de los cables por el módico precio de 20€)... El caso es que este es un problema que no esperaba y estoy reconsiderando seriamente el anular la reserva (pues lo que quiero es poder jugar en mi monitor del PC, que esta bastante bien...).
En fin, que aún estoy pensado que hacer... alguno me recomienda una solución (no demasiado cara para este "contratiempo"?).

noviembre 26, 2006

Como se hace un Video Juego?, el papel del Diseñador.

La creación de un Vídeo Juego, como una película, es algo tan 'único' en cada caso, que difícilmente se puede generalizar a la hora de describir el proceso completo de la creación del mismo. Sabiendo eso y salvando todas las diferencias en los procesos utilizados en juegos sobradamente conocidos y de éxito (como Half Life y su proceso Cabal), no es menos cierto que suelen ocurrir una serie de circunstancias que dan como resultado un juego de los llamados AAA.

Además, la organización dentro de los estudios, aun siendo algo muy propio de cada uno de ellos y no siempre genérico, siguen directrices que se pueden decir más o menos estándar (todos sabemos que cualquier cosa comparada con la media, tiene una desviación típica).
En esta serie de artículos he pensado en reconstruir la historia de un vídeo juego desde el momento de la gestación, hasta la maduración, el desarrollo y la publicación del mismo... más adelante vendrá el mantenimiento (que no es cosa menor), centrándome en los papeles principales de los creadores del juego, esto es: Diseñador, Productor, Lead Programming y Lead Artist.

Antes de nada, comentar que a mi no me gusta traducir los conceptos que están en ingles, pues realmente la documentación que después se busca está en Inglés, y es mucho más sencillo hacer estas búsquedas si se conoce la palabra anglosajona. Por eso, os vais a encontrar un artículo con algunas palabras anglosajonas, espero que no sea un impedimento insalvable, o que os suene demasiado extraño la mezcla que hago de Spanglish mal entendido!.

La mejor parte para empezar una historia suele ser el principio, y este caso no es menos ;). Cuando hablamos de un vídeo juego, estamos hablando de una idea que se ha llevado a cabo por un amplio grupo de personas altamente cualificada (entre decenas y hasta centenares, como el caso del Assassins Creed que han participado 250 personas a lo largo del juego). En este artículo me voy a centrar en el papel de uno de los miembros más importantes, a mi parecer, en la creación del juego, este miembro es el principio primero, quien tiene la idea y quien si tiene éxito en la venta de la idea, el juego se hará realidad.
Me refiero al designer (diseñador).
Antes de nada habría que preguntarse. ¿qué es un Designer en un video juego, y que papel juega?, para contestar a esa pregunta y resumiendo bastante, el diseñador de un juego es quien concibe la idea inicial del juego y quien diseña cada una de las partes del mismo, desde los interfaces, hasta los personajes, desde las reglas, hasta la historia... todo, además es el encargado de darle "alma" al juego, dándole un contexto, un mundo, una idea detrás del mismo.
Lo primero que suele hacer un diseñador es esbozar su idea en un documento de alto nivel de concepto en el que se plasma la idea general y en donde se describe en aproximadamente 4 paginas qué es el juego, el concepto de juego, el género, la audiencia a quien va dirigido, la plataforma de juego, la jugabilidad (qué es lo que se supone que debe hacer el jugador) y algunos otros conceptos de alto nivel, sin entrar en demasiado detalle sobre cada uno de ellos.

A partir de este momento, una vez que se tienen las ideas generales muy claras y sin ninguna duda, deberemos hacer el segundo documento que amplia al primero en muchos más detalles, profundizando en las cosas más importantes, se hacen bocetos (dibujos) del mundo (una imagen, vale siempre mas que mil palabras). Se describe el mundo del juego, su ambiente, el contexto que rodea a los personajes y una breve introducción a los mismos, además se debe destacar cualquier parte que sea novedosa (recordemos que se deseará vender la idea del juego!), se profundiza un poco más en la historia. No se debe intentar abarcar cada uno de los detalles del juego, sino que se quiere una idea mucho más concreta sobre qué se pretende hacer.
Estos dos documentos anteriores, suelen servir a los estudios de creación para “vender” su idea al Publisher, es decir, la empresa que invierte en el juego y quien correrá con los gastos de producción del juego, que al igual que una productora de discos o de cine, corre con los gastos de un título concreto.

Esto no siempre ocurre así, hay grandes empresas como UBISOFT o EA, que son productoras de sus propios juegos generalmente (tienen sus estudios propios, como puede ser UBISOFT Paris o UBISOFT Montreal <>), aunque hay otras como Konami, Lucas, Capcom, Midway, Codemasters, que son Publisher que se dedican a financiar la producción de un juego.

Una vez lograda la misión de vender la idea (que fácil ha sido! J), se pasa a la fase inicial de vídeo juego.

En esta fase inicial del juego, el diseñador es fundamental para transmitir la idea a cada uno de los miembros del equipo, desde artistas a programadores, modeladores... etc. Cada uno de ellos debe empaparse sobré el mundo que van a desarrollar (reglas del juego, personajes, gráficos, sonido… etc), deben conocer a la perfección cada una de las partes del juegos que van a implementar. Para conseguir todo eso, y que cada una de esas partes no sea fruto de una idea en un “momento feliz”, se deben remitir cada una de las decisiones tomadas en una descripción formal, a un gran documento que guiará todo el desarrollo del juego. Este documento será pues, muchísimo más amplio que los anteriores (hasta 500 paginas) en donde se describa cada una de las partes del juego, cada una de las reglas, cada uno de los interfaces, los personajes, la historia, el mundo, todo.. con un nivel de detalle tan alto, que en el mejor de los casos no quepa duda después de mirar este documento. A este "gran libro" del juego lo llaman "la biblia" y no siempre es tan bueno como debería, este trabajo es sin duda el más complejo para el diseñador que debe saber transmitir sus ideas con palabras lo suficientemente claras y ricas, como para que otra persona entienda a la perfección su idea.
La biblia es un documento "vivo" a lo largo del desarrollo del juego, y debe ser tan descriptivo, que lo ideal sería que cada una de las dudas que surgen por cada uno de los miembros del equipo se contestaran en este libro. Sin embargo, eso no suele ser así, y de ahí que este documento esté en constante cambio a lo largo del desarrollo.

Un diseñador debe ser una persona con unas cualidades muy específicas, de su labor dependerá que el juego tenga alguna posibilidad o sea un fracaso. ¿Cuantas veces hemos visto un juego con una gran historia y unos grandes gráficos, pero con una interfaz tan mala que no hemos aburrido a los dos minutos?. O al contrario, ¿cuantas veces hemos visto un juego aparentemente simple, pero que es adictivo y divertido hasta la saciedad?. Esa es la labor del Diseñador, él es quien mejor conoce el concepto de "divertido", quien sabe sacar jugo a cada uno de los puntos del juego para lograr de él sacar un título de éxito.

Diseñadores que venden juegos con su solo nombre son por ejemplo Sid Meier (Civilization), Will Writght (Sim City) o Hideo Kojima (Metal Gear Solid), por nombrar a tres que han creado juegos espectaculares y de un éxito aplastante en sus respectivas plataformas… a ellos, en buena medida, se debe el éxito de esos títulos.

Un diseñador no tiene por que tener una base técnica (aunque sería ideal, pues debe conocer los límites técnicos que tiene su idea), él no se encarga de los diseños del software, o del diseño artístico de los personajes, (aunque en su cabeza hay una idea muy clara de como debe ser cada uno de los personajes), pero se necesita que tenga imaginación a raudales, capacidad de describir lo que piensa, si es posible que sea un buen dibujante y un gran comunicador, además es necesarios que el diseñador tenga conocimientos de estadística para que el balanceo de las razas y las reglas hagan del juego algo jugable y justo, y no imposible o demasiado sencillo de "pasar”. Esas, diría yo, son las características que hacen a un gran diseñador.

noviembre 16, 2006

5600 paginas vistas y 3600 visitas en 1 mes de datos

La idea del BLOG se me ocurrió como una especie de repositorio en donde poner algunas cosillas que van pasando por la cabeza, un sitio en donde analizar, a mi manera, las noticias, las nuevas consolas, las tecnologías que se usan... etc, todo lo relacionado con el vídeo Juego. Como digo es más un repositorio de ideas y análisis que un BLOG en el que hacer Marketing,o captar lectores, digamos que "el objetivo es otro". Con esa idea, el tema del número de visitantes y todo lo demás no es mi gran finalidad y de hecho no puse desde el principio ningún contador ni nada parecido. Sin embargo, cuando me publicaron en Barrapunto se me ocurrió que sería interesante saber qué número de personas llegaban despues y antes de barrapunto... pero ya era tarde ;).

Con eso en mente, hace como 1 mes que empecé a usar google Analytics para contabilizar el número de visitas al BLOG, empecé exactamente el 11 de Octubre, unos días después de que nombraran el BLOG en la portada de Barrapunto.

No esperaba grandes cosas, aunque lo cierto es que no ha ido mal y parece ser que ha gustado, a algunos más, a otros mucho menos ;)... en fin.

Así que ayer por la tarde hice un recuento por curiosidad, ya que poniendo las etiquetas a los post me he dado cuenta de que había pasado un mes desde que empecé a usar Google Analytics.
En general, no se puede decir que haya habido poco movimiento: un total de 3623 Visitas y 5609 paginas vistas. He recibido visitas de elotrolado.net, barrapunto, xataca(un referal desde un comentario), tec.fresqui.com, todoxbox360.com ... y muchos otros. Se han recibido visitas desde 39 paises: Mexico, Chile, Colombia, Argentina, USA, Japón... etc.. Aunque un gran porcentaje viene de españa: 84% (mirar foto con las 500 primeras localizaciones en el Mapa).
El artículo más visitado ha sido la segunda parte sobre Directx 10 (2,716), seguido del artículo sobre la programacion de la PS3 vs XBOX360 (979), este artículo es sorprendente pero sigue teniendo visitas todos los días a razón de 30 al menos.
El sitio desde el que más visitas se han recibido es elotrolado.net y barrapunto y además el grado de fidelidad es bastante grande: 25%, lo que significa que hay muchos más locos de lo que pensaba ;)... El tiempo medio en la pagina Web es de 2m 15seg, siendo el siendo el primer artículo el de DirectX 10 y el de la programación de consolas los que mas tiempo de visitas se llevan, 6 minutos y 32 segundo y 5 minutos y 35 segundo, respectivamente.
En fin, aqui termina el leve recuento :).
Muchas gracias a todos los que visitan el BLOG y sobre todo gracias a los que aportan su granito de arena comentando lo que les parece en los post.
Saludos a todos.

Los gobiernos con los Video Juegos

He posteado hace un rato una noticia en TheNeedForGamingNews acerca de que el gobierno Frances está pensando en darle el rango de Arte a la creación de video juegos... ni que decir tiene que estoy absolutamente de acuerdo con eso... ahora leo esta otra noticia en la que el gobierno Canadiense está pensando en invertir en empresas de video juegos locales.

Es cierto que en ambos paises hay empresas de video juegos muy consolidadas y serias (Ubisoft, es el mejor ejemplo) y que eso ayuda mucho. España, no obstante, debería tomar buena nota de estas cosas, pues estamos hablando de un negocio que mueve mucho dinero y que genera en la sociedad unos beneficios indiscutibles (ya hablamos de eso en este post).

noviembre 15, 2006

Jugando al GoW

He estado en París unos días, y en la Avenida de los campos Eliseos, en una tienda llamada Micromania (curioso, como la conocida revista), pude probar el Domingo pasado el GoW.... aunque solo estuve unos minutos probándolo (cuando uno va a París, no se pone a jugar a la XBOX360 xDD), la verdad que el juego es increíble, el movimiento, los gráficos, la acción, el sonido... en fin, tiene todas las papeletas para ser el juego de la XBOX360, y yo diría que esa es la intención con la que se ha hecho, veremos si lo consigue... aquí os dejo una imagen de mi jugador, escondido detrás de una piedra y esperando a ser machacado por unos malos con una cara de pocos amigos que no os cuento :)....
El estreno es el 17 de Noviembre, un par de días y lo podremos probar muuucho más a fondo!

noviembre 06, 2006

Una forma de Empezar

Que en España no se presenten demasiadas oportunidades, es una razón de peso para aprovechar la más mínima que se presente. Si crees que esto del Video Juego puede ser tu vida, este concurso de Nvidia puede ser justo la ayuda que necesitas para hacer realidad un estudio en España (cosa bien excasa). Si decides presentarte, Suerte!.

noviembre 01, 2006

La IA en la Nueva Generacion de juegos

He leido últimamente en bastantes ocasiones () el concepto de “Next Gen A.I.”… y he pensado en comentarlo en un articulo, pero sin demasiada profundidad, sin demasiados tecnicismos y dando una visión general de qué es la I.A en los juegos y por qué se supone que la próxima I.A. será mucho mejor que la presente.
La IA en un juego es fundamental para que la inmersión sea lo más real posible…. Todos hemos visto como de simple era matar a los monstruos en Doom y como se ha llegado hasta comportamientos más complejos como F.E.A.R por poner un ejemplo… o como hemos llegado a situaciones totalmente inesperadas con la IA de Oblivion… cómo hemos llegado hasta aquí, y qué nos espera en el futuro es de lo que va este artículo.

La IA en los juegos:
Lo primero que habría que comentar sobre la IA y que siempre te dicen en la Universidad o en cualquier curso de IA medianamente profundo, es que eso de Inteligencia Artificial es un nombre demasiado pretencioso ;), en general la Inteligencia que vemos en los juegos está muy lejos de ser ni siquiera parecida a la Inteligencia humana, creativa o inesperada y por lo tanto ya de entrada el nombre es muy engañoso.

La inteligencia en los juegos va a ser tan fundamental, que a mi parecer va a estar, en poco tiempo, a la altura de los gráficos y el sonido.

Una de las razones que los jugadores dan para los juegos online es que jugando con personas tenemos enemigos que son “muy listos” o “muy buenos” y eso le da un grado de realismo al juego que no tiene cuando es Offline. Seguramente muchos de vosotros hayais probado el Battlefield 2, o el Battlefield 2142 tanto en modo Offline como en modo Online, y aunque la inteligencia es buena en Offline, no tiene nada que ver cuando se juega Online (dependiendo de lo manta que sea el otro, claro ;)). Y aunque normalmente los juegos suelen tener un grado de dificultad, este grado no suele variar la IA o su comportamiento (a veces sí, por ejemplo en los RTS), sino la cantidad de enemigos o el grado de “accuracy” (puntería) que tienen.

Entonces qué es lo que tiene la nueva generación para que la IA sea distinta?.

Como todas las tecnologías, la IA avanza, pero la verdad es que no avanza todo lo rápido que se quisiera y, desde luego, que el avance en la IA no es la razón fundamental para que sea un elemento importante (o de igual importancia a los gráficos, por ejemplo) en la nueva generación. Dejando de lado el marketing que conlleva introducir un nuevo elemento a tener en cuenta, y que ese elemento tenga un efecto tan grande en la inmersión, la verdad es que ahora mismo el hardware nos permite muchas cosas que antes ni siquiera se planteaban.

Tener varios hilos de ejecución va a tener un efecto tan grande en todos los aspectos del juego que, en cuanto pase un tiempo y los desarrolladores tengan la destreza suficiente para aprovechar toda esa potencia, vamos a ver cosas muy nuevas y realmente interesantes.

Me gustaría comentar alguna de las técnicas de IA que se usan en los vídeo juegos y analizar, por que ahora esas técnicas van a tener un mayor impacto en el resultado final.

Antes de nada comentar, que como en todo, hay muchas técnicas y que cada una de ellas puede ser muy buena para determinados casos, pero no demasiado buenas para otros. Además, no se trata de hacer un estudio de las técnicas, ni mucho menos!, sino nombrar que algoritmos se usan en cada caso y relacionarlos con experiencias que hayamos visto en los juegos que hayamos probado.

Para distintos tipos de juegos hay distintos algoritmos a tener en cuenta, por ejemplo no tiene nada que ver (o poco que ver) la IA de un juego RPG como Oblivion, con uno RTS, o un FPS. Yo me voy a centrar en esos tres tipos de juegos en este artículo, para no extenderme demasiado.

En un juego FPS tipo F.E.A.R, o Ghost Recon o BattleField hay que tener en cuenta antes de nada que lo que se desea es un BOT que sea bueno, que no haga movimientos “tontos” y que su puntería sea natural (el ordenador puede ser tan bueno como quiera!), además sabemos que los niveles son “cerrados” y en ocasiones no demasiado grandes, sabemos también por donde tiene que pasar el jugador en cada momento para ir hacia el objetivo, por que puntos tendrá que pasar obligatoriamente y qué opciones tiene. Todo eso lo sabemos por que tenemos un mapa (un nivel), finito, manejable y cerrado.

En el caso de F.E.A.R o Ghost Recon es muy claro que los enemigos aparecen una vez que rebasamos ciertos puntos específicos en los niveles (esquinas, pasillos, calles… etc). A estos puntos se le llama Trigger y están programados de antemano por el diseñador de niveles para que cuando el jugador pase por ahí ocurran ciertas cosas o aparezcan los enemigos. Una vez pasado el punto los enemigos “ven” y “oyen” al jugador usando determinadas técnicas, el sonido es un objeto (tal como se lee, un objeto ;) del juego) que sale de un punto concreto y llega a otro. Si un sonido generado por el jugador llega hasta el enemigo, ese sonido (que se sabe de donde partió) tendrá determinadas características de dirección, volumen y degradación (dependiendo de la distancia de partida), esto se usa, por ejemplo, en el Splinter Cell o en el Oblivion, en donde si vamos en modo silencioso no nos escucharan con la misma facilidad que si vamos de pie o corriendo. Además esta característica es muy importante en el desarrollo del juego.

Pues bien, tanto la vista como el oído, como el tacto (si le dan un tiro, lo siente y sabe de donde viene) son dos elementos fundamentales para los juegos del tipo FPS.

Como hemos dicho, una vez pasado el Trigger los enemigos salen y si nos ven o nos oyen o nos sienten, tendrán que calcular varias cosas (como mínimo), a saber, donde están ellos, donde está el jugador objetivo, y como llegar hasta el de la forma “más segura” o “más rápida”. Para el cálculo de rutas, se usa el Algoritmo A*.

En este conocidísimo algoritmo se tienen en cuenta factores como los objetos que hay que sortear, el inicio, la meta y el coste que tiene llegar por cada uno de los caminos calculados. Podríamos decir que calculamos un camino (sea del coste que sea) y lo vamos refinando según iteraciones (no es exactamente así, pero podemos darlo por bueno para esta explicaciónJ) hasta encontrar el mejor. Esto quiere decir que con A* podemos encontrar un camino “no óptimo” hasta la meta y después pulirlo hasta que nos guste el coste o simplemente no tengamos mas tiempo de calculo. Aunque una ejecución completa de A* nos garantiza el óptimo, podríamos encontrar un camino "no optimo" hasta la meta de forma muy rápida usando A* y quedándonos con una solución parcial del mismo.

En A* usamos un heuristico (o regla por la cual mejoramos la solución actual) que nos llevará de un punto a otro por el camino más corto, o que más ganancia nos represente (dependiende del heuristico lo que queramos maximizar o minimizar).

Además del uso de A*, el diseñador del nivel predefine determinadas opciones o caminos pre-determinados (waypoints o Pathnodes, estos conceptos se usan también para la definición de caminos de patrulla, por ejemplo) para llegar de un punto a otro de forma más inteligente (no siempre el camino más corto es el más inteligente) y darle cierta prioridad, peso o de forma probabilística (al azar) a cada uno de esos caminos posibles. Todo eso combinado con A* nos debería dar un camino hasta la meta bastante bueno en terminos de realismo y en los que se maximiza la ganancia, ya sea esa ganancia preservar al NPC o hacer que llegue lo antes posible hasta su meta, además el objetivo también puede variar según el estado actual del juego, como por ejemplo el número de tropas que nos quedan, como está de cerca del final del nivel (en ese caso será más cauteloso!), etc…

En la imagen, un ejemplo de WayPoints en el diseño de un nivel.

También tenemos los juegos de estrategia en tiempo real (RTS). En ellos no se tienen que tener en cuenta todos esos factores, además el juego tiene más tiempo para hacer bien las cosas (en comparación con los FPS) y no suele usarse los waypoint o pathnodes como en los FPS, pues cada partida es completamente distinta y carecería de sentido. Se suele usar A* (que es el rey de los algoritmos para PathFinding) con heurísticos mucho más complejos que en el caso de los FPS, pues se tienen en cuenta muchas más variables.

En los juegos de estrategia en tiempo real, se nota enseguida si los programadores han hecho un buen trabajo o no. Se deben tener en cuenta muchos factores, tantos como variables tenga el juego, eso es diplomacia, dinero, tropas, tipo de tropas, contexto (otros jugadores), posibles ataques, mejora de tropas, mejora de edificios… y muchísimas cosas más. Está claro que predefinir una táctica sería absurdo en este tipo de juegos, por que cada partida es totalmente distinta de otras.

Para los juegos de estrategia en tiempo real, se suelen definir tendencias en los jugadores controlados por el ordenador, son Agentes con una personalidad, es decir, algunos son más pacíficos, otros optan por la defensa, otros por el ataque… etc. En general, esa es la aproximación más “sencilla” desde el punto de vista del programador, que puede predefinir estrategias genéricas de comportamiento encaminadas a un mismo objetivo (planning), por ejemplo, generar muchas tropas, o muchas defensas, o muchos recursos… etc.

Lo que suele ocurrir es que los jugadores controlados por el ordenador pasan de un estado a otro de forma “cíclica” (esto es raro, pero podría ser) o disparada por eventos externos (dependiendo de cómo vaya la partida). Es posible entonces, ver como un jugador pasa los primeros minutos de la partida centrado en los recursos, para pasado un tiempo o dadas ciertas condiciones, pasar a “estilo constructor” y empezar a crear tropas, en vez de generar recursos… etc, lo realmente difícil aquí es hacer una estrategia multiobjetivo.

Los algoritmos de los juegos de estrategia en tiempo real, son tan variados como distintos son los juegos en sí. Pues se han de tener en cuenta distintos factores según el juego, lo normal es que los scripts y estrategias sean muy distintos, no pasa como en los FPS, en donde las técnicas están más “estandarizadas” (podéis buscar Planning, Agents o AI RTS para más datos, os adelanto que este campo es complejo)

Y pasamos al que a mi parecer, son los más difíciles de todos, por tener un número totalmente incontrolable de casos posibles… me refiero a los juegos RPG tipo Oblivion. Es tan difícil hacer un mundo totalmente abierto, en donde cada uno de los NPC (Non-Player Character) tiene una “vida” y además tantas posibilidades de interactuar con los demás NPCs que es abrumadora la sola idea de querer hacerlo medianamente bien. En el caso de Bethesda lo han hecho tan bien, que parece mentira.

Para darle una vida a cada uno de los NPC se tiene que dedicar un tiempo de desarrollo a cada uno de los NPC. Cada NPC tendrá un tipo de personalidad, en el sentido de que estará mas dispuesto a atacar a otro NPC o defender su “propiedad”, además tiene que tener definidas las habilidades especificas de ese NPC, puede ver mejor?, oir mejor?, de que raza es?, tiene mas o menos fuerza?. Todos esos factores se tienen en cuenta para definir un NPC y su inteligencia.

Si os habéis fijado bien en el Oblivion, os daréis cuenta de que cada NPC cena, come, habla, se levanta a unas horas específicas, que tienen conversaciones entre ellos (aunque algunas absurdas y realmente graciosas) y que esas horas no son iguales para todos necesariamente (cada uno tiene su vida).

Para definir toda esa ingente cantidad de parámetros Bethesda ha creado herramientas específicas de definición de personajes y se les ha dado un Path (camino de recorrido) concreto por el que puede (o debe) andar… por ejemplo el dueño de una tienda ira de la tienda a su casa y de ahí a la tienda a determinadas horas, la gente con misiones concretas te las puedes encontrar en distintos sitios del mundo y hay ciertos NPCs que están en los bosques. Lo que es muy difícil es que nos encontremos un NPC con total libertad (creo que ninguno).

De nuevo cada NPC tendrá que calcular Paths hasta objetivos y sus estrategias en el combate variarán según el estado en el que se encuentre, según el estado del enemigo y según la posición relativa de cada uno. Además las armas para algunos NPCs van mas allá de armas como espadas, o hachas, sino también habilidades que bien combinadas pueden hacer mucho daño (combos), todas esas combinaciones pueden estar pre-determinadas, aunque en el caso concreto del Oblivion lo desconozco (es de suponer que sí).

Bien, habiendo hecho este breve repaso por algunas de las técnicas de IA para los juegos, la pregunta que nos podemos hacer es, que nos ofrecerán las nuevas consolas y los nuevos procesadores para hacer más “inteligentes” los juegos… está claro que las técnicas no van a cambiar demasiado, pero lo que si que va a cambiar es el tiempo que se le dedica al cálculo de cada una de las soluciones buscadas, ahora el NPC tendrá mucho mas tiempo para calcular el mejor camino con lo que los heuristicos serán mucho mas complejos y tendrán más variables en cuenta, por lo que nos los encontraremos (a los NPCs) buscándonos la espalda, o generando plannings mucho más complejos en los RTS. Todas esas mejoras y mucho más, será lo que nos encontraremos en la nueva generación de vídeo juegos, mejorando de forma brutal la inmersión en los mismos.

Update:
Windup hace un comentario a este artículo y por el cual hago una correción al uso y la forma de funcionar de A*. Ciertamente en la versión primera de este artículo cometo un error al comentar que la solución dada por A* puede ser parcial, cuando no es cierto, pues con A* siempre tendremos una solución unica (no parcial) y además óptima. Desde aquí pido disculpas si al leer el artículo se ha llevado a error y doy las gracias a los lectores como Windup por tenerme en guardia ante las meteduras de pata.

Algunas direcciones de interés:
http://www.computing.dcu.ie/~bgorman/
http://www.aiwisdom.com/bygenre_rts.html
http://www.technomagi.com/josh/gdc2003/ai_strategy_fri.html
http://www.peachpit.com/articles/article.asp?p=102090&seqNum=2&rl=1


octubre 25, 2006

DirectX 10, la verdadera nueva Next-Gen, Parte II

DirectX 10, parte II.

Unificación de los Shader:

Como ya comenté en el anterior artículo, el problema de la infrautilización de los Shaders teniendo un path fijo se podría solucionar haciendo una unidad de ejecución más genérica con el objetivo de tratar en cada momento cada punto según su necesidad de píxel o vertex, en vez de esperar que salga de una unidad de ejecución para que entre en otra.

Si pudiéramos mirar dentro del Pipeline de Direct3D podríamos ver como en un mismo momento, tenemos al Vertex Shader con unidades de ejecución vacías, mientras que el Píxel Shader esta saturado de trabajo o viceversa .

La solución más obvia a este problema es la Unificación de los Shader, es decir, si tenemos a partir de este momento una unidad de ejecución que puede adaptarse a las necesidades puntuales, en vez de tener un estricto Path, es de suponer que el rendimiento final será mayor.

La pregunta que se puede hacer uno es ¿Por qué hasta ahora no se ha hecho de la forma más genérica?. El problema que supone la genericidad no es pequeño, es mucho más eficiente hacer unidades de ejecución de propósito específico que de propósito general, además es más barato, es más flexible a subidas en la frecuencia del reloj y supone un reto tecnológico mucho menor, por ello se explica que hasta ahora no se haya afrontado el problema, de hecho, NVIDIA no ha seguido este camino y continúa con el Path fijo (pues no está del todo claro que sea peor!), al contrario que ATI que ya tiene desarrollado el primer producto con Shaders unificados (la tarjeta gráfica de la XBOX 360). ATI sacará al mercado las tarjetas con nombre R600, que serán las que tengan Shaders unificados.

Entonces la pregunta es, ¿es necesario o no el tener los Shaders unificados para DirectX 10?. La respuesta es no, simplemente se deben soportar Shaders 4.0, da igual la implementación que cada uno de los fabricantes siga (ya sea de Shader unificados o nó), simplemente tienen que cumplir con ese requisito.

Geometry Shader (Shader Model 4.0):

El elemento más importante, a mi parecer, en DirectX 10 será la introducción de otro elemento de ejecución en el pipeline que estará situado entre el Vertex y el Píxel Shader, se trata del Geometry Shader (en verde en la figura), que tratará triángulos enteros (todos los objetos en una escena están formado por un número mas o menos grande de triángulos, ver Pez).




Qué hace este nuevo Shader:

El Vertex Shader tradicional, toma un solo vértice a la entrada y debe tener un solo vértice (tratado) a la salida, es imposible para el Vertex Shader crear o destruir triángulos. El Geometry Shader, sin embargo, permite operar sobre primitivas geométricas enteras, esto es líneas, triángulos y puntos, y a su vez permite operar sobre las primitivas vecinas. El Geometry Shader además, puede crear nuevas primitivas, nuevos triángulos, antes de enviarlos por el Pipeline.

Incluso es posible que el Geometry Shader envíe los resultados de nuevo a memoria, permitiendo que los datos vuelvan al inicio del Pipeline sin tener que pasar por la CPU, con ello se podrá acelerar muchísimo los sistemas de partículas como humo o explosiones que normalmente cargan mucho la CPU, siendo de esta forma independiente este efecto de la CPU. Además, se podrá usar también como una herramienta muy poderosa para los “cube mappings”. Un “Cube Mapping” se utilizan para que la textura de un objeto refleje el mundo que hay a su alrededor. Pues bien, el Geometry Shader junto con un array de texturas puede acelerar este efecto.

Veamos como:

Para hacer que un objeto con una textura de metal refleje el mundo que tiene alrededor, se debe determinar qué es lo que rodea a este objeto y mapearlo encima. Normalmente, esta tarea lleva hasta seis pasadas, pero con el Geometry Shader junto con un Array de Texturas podemos hacer el mismo efecto en una sola pasada, es decir estamos dividiendo por seis el tiempo que tardamos en hacer este efecto tan común (agua, objetos metálicos, cristal… etc).

Ejemplo de texturas y efectos en recreación de rostros humanos.


Ejemplo de Real (izquierda) Vs Renderizado en Crysis con DirectX 10(derecha).

Este nuevo modelo de Shader (Shader Model 4.0) va a permitir una gran cantidad de efectos que antes no eran posibles, cosas como Displacement Mapping, Stencil Shadow Extrusion, Motion Blur y muchos otros (lo pongo todo en inglés por que no me gusta pasar los nombres de los conceptos al Español).

Cada uno de estos efectos va a mejorar muchísimo la calidad final de cada una de las escenas. Encontrándonos con unas texturas que van a rozar lo real (ver imágenes de Crysis, arriba). Además DirectX 10 trae características de morphing, así que esperad transformaciones de personajes en cosas, cambiando de forma mucho más a menudo y con mucho menor coste. Por otro lado, también se espera que la GPU se encargue de parte de la física gracias a DirectX 10, lo que significará una mayor cantidad de objetos interactuando entre ellos. ATI, de hecho, mostró una demo en la que se veía un océano cuya física era tratada enteramente por la GPU

Además de todo eso, por hacernos una idea de los cambios, en Shader Model 3.0 en número máximo de instrucciones por cada Shader era de 512, ahora será de 64000, el número de registros temporales (algo muy importante para los programadores) pasará de 32 a 4096. Además se pasará de cuatro a tener hasta ocho objetivos de renderizado (para los que no sepan de lo que hablo, no me refiero a objetivo de cámara, sino a objeto de renderizado) y el número de texturas disponibles para un mismo Shader pasa de 16 a 128, el tamaño de textura más grande pasa de 2048x2048 a 8192x8192. Por último no se soportará en adelante puntos flotantes de 16Bits y serán todos de 32Bits (FP16 a FP32).

Esta parrafada de números, lo pongo mas que nada para que nos hagamos una ligera idea del cambio que supondrá DirectX 10 y las nuevas herramientas que tendrán los desarrolladores.


Screenshot de Flight Simulator X, con DirectX 9.


Screenshot de Flight Simulator X, con DirectX 10.

En estas imágenes podemos ver ejemplos del efecto que supone toda esta cantidad de herramientas nuevas en DirectX 10, frente a DirectX 9, por ejemplo, las texturas del agua (sistema de partículas, mayor número de triángulos, morphing de triángulos, física avanzada), los árboles (mayor numero de triángulos, luz entre los objetos), las nubes (Texturas volumétricas, luz entre objetos) suponen un salto como no recuerdo otros en cuanto a gráficos se refiere. De DirectX 7 a DirectX 8 hubo un gran salto, una mejora grande, pero como este no, desde luego que no hay parangón, la calidad que vamos a ver en PC con DirectX 10 y la cantidad de objetos en la escena va a ser tan abrumador que pueden llegar a causar rechazo, y no es broma, me refiero al efecto conocido como Uncanny Valley (de nuevo en Inglés).

Entonces, viendo todo esto ¿significa que DirectX 10 le da ventaja al PC frente a las nuevas consolas (PS3 o XBOX360)?, la respuesta es a la vez, si y no... me explico:
Lo que DirectX10 trae al PC es un kit de herramientas que antes no estaban disponibles en DirectX9, pero que se podrían haber programado los desarrolladores de los juegos "a pelo" sobre el Hardware en cuestión y de esta forma suplir las carencias de DirectX. Pero claro, esto aunque no deja de ser posible es una Utopía. Ningún estudio en sus sano juicio haría algo así para PC por que se tiene que cubrir una gran familia de tarjetas gráficas. La ventaja es que eso no ocurre en las consolas, en donde los desarrolladores tienen que hacer las cosas sobre un mismo hardware conocido.
Esa y no otra es la razón por la que consolas con mucha menos potencia que un PC mueve juegos que un PC con las mismas características técnicas que la consola apenas podría ni soñar. Pero no dejemos de lado a los estudios de video juegos y el negocio en sí.
Tener un Kit como DirectX 10 acelera de forma brutal el desarrollo de un juego con muy buena calidad, es decir, tendremos juegos más buenos a menos coste (relativo a la calidad) para los estudios.
Eso nos dará juegos mas completos en PC que en consolas, por el simple hecho de que es mucho más facil hacerlo en PC, pues ya ha habido alguien que ha trabajado para ellos, simplificando muchisimo la tarea (Microsoft y su Directx 10).
En el mundo de las consolas están solos, cada cosa que quieran hacer "extra" les va a suponer un tiempo de desarrollo y un coste económico. Coste, que en muchas ocasiones será tan alto que no será posible hacerlo o simplemente no interese. Entonces el razonamiento no es si es posible hacer este tipo de cosas en las consolas, la respuesta seguramente será sí!, la pregunta que nos tenemos que hacer es, ¿se pueden hacer esas cosas sin DirectX 10 a un coste razonable para los estudios?, si la respuesta es sí, lo veremos, si es no... tendremos que experar a la siguiente generación o como mínimo casi al final de la vida de las consolas de la presente generación, yo personalmente me quedo con esta última opción.