viernes, diciembre 13, 2013

Sistemas para crear aventuras conversacionales (III) : INFOCOM


Zork I para TRS-80, una de las versiones mas antiguas


Introducción


De entre todas las compañías que se dedicaron a crear aventuras conversacionales en los 80, INFOCOM es seguramente una de las mas antigua y de las mas recordadas en los paises donde llegaron sus juegos. Cuando las aventuras para ordenador no dejaban de ser clones de aventuras de Scott Adams o de una simplicidad similar, INFOCOM introdujo aventuras que eran verdadera ficción interactiva. Textos largos y descriptivos, parser de texto avanzado y complejo y unas herramientas para hacer aventuras cuya influencia aun esta viva hoy en día.

Pero hagamos primero un poco de historia. Y la historia de INFOCOM esta ligada a Zork, una aventura inspirada en la original creada por varios estudiantes de MIT. Esta versión primigenia de Zork esta programando en MDL, un lenguaje basado en LISP,usado para la investigación de varios temas relacionados con inteligencia artificial dentro del MIT. Zork fue portado por un hacker a Fortran y acabo distribuyéndose por todos los main frames de la época. La historia podría haber acabado aquí, como tantas otras aventuras para grandes ordenadores de la época pero sucedió que el grupo de estudiantes que había creado Zork originalmente se decidió por crear una empresa aprovechando el boom de los micro-ordenadores de finales de los 70. Su intención era crear aplicaciones, no juegos, pero al no tener ninguna aplicación pensada, se decidieron por portar Zork a los micros de la época. Y aquí comienza la prolífica historia aventurera de INFOCOM .

Como se hicieron los juegos de INFOCOM 


Hecho el prefacio histórico, vamos a centrarnos en como INFOCOM  hacia sus juegos. La primera versión, no comercial, de Zork estaba escrita en MDL y el código esta disponible. Pero al ser un lenguaje con muy poca difusión y apenas documentación  se hace difícil analizar el código (que es bastante complejo para la época). Mejor que eso nos vamos a centrar en los ports para micro-ordenadores, que guardan relación con el MDL, pero están mucho mejor documentados y por razones que explicare mas adelante es también mucho mas claro.

El primer problema que se encontró INFOCOM para portar Zork a micros fue el mismo que tuvo Scott Adams, la falta de memoria. Pero a diferencia de Adams, INFOCOM decidio centrarse solo en sistemas con disco, lo cual ya les daba bastante soltura en cuanto espacio, pero aun así tuvieron que comprimir bien el texto y implementar su propio sistema de memoria virtual (algo que era casi experimental en ese tiempo) para que Zork cupiera en los micros de primera generación.

Otro problema a solucionar era que, aun centrándose en sistemas con disco, la variedad de micros a finales de los 70 hacia que el mercado estuviera muy disperso, por lo que para maximizar los beneficios los juegos tenían que ser portados a varios sistemas. La solución de INFOCOM es casi obvia hoy en día: diseñaron una maquina virtual, la maquina Z. Con esta solución solo tenían que portar el código de la máquina Z a cada sistema (un programa llamado ZIP), dejando el código de cada juego tal cual. Esta maquina esta, por supuesto, orientada a reproducir aventuras, y esta tan bien diseñada que sigue siendo la base para sistemas de aventuras modernos como Inform.

La máquina Z


Así que la maquina Z implementaba funciones básicas de entrada y salida, memoria virtual y el sistema de compresión  dejando todo lo demás (incluido el parser) para ser programado dentro de ella. Lo bueno de que la Z-machine fuera lo mas simple posible es que todo Z-code, el código que interpretaba, no tenia que ser portado. Con lo cual si las partes mas complejas del juego, como el parser, se creaban en código-Z, ya no era necesario re-escribirlo para todos los ordenadores de la época; ganando en potabilidad.

La técnica de memoria virtual (algo muy nuevo en la época) les permitía tener en memoria solo las partes del juego que se estaban usando en ese momento. Cuando se requería algo que no estaba en memoria se cargaba de disco, borrando alguna parte de memoria cuando fuera necesario. Para poder hacer esto, la Z-machine clasificada en dos tipos de bloques de memorias: puros e impuros. Los bloques puros eran información que no se modificaba nunca como las cadenas de texto y las definiciones de objetos (que eran todos estáticos). Los impuros eran a su vez los que si se modificaban, como los flags de los objetos, su posición o las variables globales. Así que cuando fuera necesario mas espacio en memoria del disponible, la maquina-Z solo tenia que borrar cualquier bloque "puro" y reescribirlo con la nueva información. Si volvía a hacer falta el bloque borrado, sabiendo que es invariable, solo habría que re-leerlo del disco. Los bloques impuros debían permanecer siempre en memoria, y es lo que mas limitaba la RAM mínima para ejecutar los juegos. Los primeros juegos apenas requerían RAM, unos 32Kb, pero los últimos juegos, mas avanzados, requerían muchas mas memoria y prácticamente solo funcionaban en maquinas de 16 bits.


La memoria virtual, junto con un inteligente algoritmo de compresión de textos hicieron que los juegos de INFOCOM fueran los mas avanzados, complejos y largos durante años.

El Z-code era de un nivel parecido al ensamblador con algunas instrucciones especiales. Por lo tanto de crear los juegos directamente en Z-Code hubiera sido una tarea completísima. Usando su experiencia con grandes maquinas, decidieron crear un lenguaje especial de alto nivel para crear aventuras que se compilara generando z-code. Este lenguaje no era ni mas ni menos que un MDL (o sea LISP) muy simplificado, quitando cualquier cosa que no hiciera falta para hacer juegos de aventuras y añadiendo cosas que ayudaran al desarrollo.

Mirando por Internet, ninguno de estos compiladores de ZIL (Zork Implementation Language) ha sobrevivido hasta nuestra época, pero si alguna de la documentación para crear juegos, con lo cual podemos saber mas o menos como funcionaba. Y para ser un sistema de finales de los 70-principios de los 80, era toda una maravilla al servicio del creador de aventuras. Probablemente hasta la llegada de los sistemas especializados para PC a mediados de los 90, como TADS o Inform, no hubo mejor entorno para la creación de conversacionales.

El Zork Implementation Language: ZIL


Pero vamos a meternos en materia. La programación se realizada en este pseudo-LISP y la visión desde el punto del programador era bastante orientada a objetos, aunque la Programación Orientada a Objectos aun no se había desarrollado del todo por entonces, así que tiene algunas cosas un poco "raras", vistas hoy en día.

Lo primero vamos a estudiar la definición de una habitación:

<ROOM LIVING-ROOM
    (LOC ROOMS)
    (DESC "Living Room")
    (EAST TO KITCHEN)
    (WEST TO STRANGE-PASSAGE IF CYCLOPS-FLED ELSE 
"The wooden door is nailed shut.") 
    (DOWN PER TRAP-DOOR-EXIT)
    (ACTION LIVING ROOM-F)
    (FLAGS RLANDBIT ONBIT SACREDBIT)
    (GLOBAL STAIRS)
    (THINGS <> NAILS NAILS-PSEUDO)> 

Lo primero que salta a la vista es que se usan a la vez los paréntesis típicos de LISP con partes que se señalan con < y >, como las definiciones de habitaciones, objetos y las llamadas a funciones de sistema.

En todo caso, el lenguaje funciona como LISP, de forma que todo son listas de elementos entre paréntesis (o "<" ">"). Asi que una habitación es simplemente una lista con el identificador al principio ("ROOM LIVING-ROOM") seguida de las propiedades de la habitación. El primero "LOC" es el lugar donde esta el objeto, porque en realidad las habitaciones se tratan como objetos, solo que están siempre en el objeto especial ROOMS. Seguidamente tenemos las salidas, incluyendo una salida condicional que es bastante auto explicativa. La salida hacia abajo, mas complicada, en realidad llama a la función TRAP-DOOR-EXIT para decidir si se puede pasar o no.

La siguiente linea, ACTION, define la función que tratara algunos asuntos de la habitación, lo veremos mas adelante. Luego tenemos los objetos globales que están presentes en la habitación y la ultima linea es indescifrable para mi. Como podéis ver es un lenguaje bastante potente para definir cosas (contando en el año que estaban) y que a mi gusto me parece mas claro que lenguajes mas nuevos como Inform.

Habiendo visto una habitación, el código de un objeto es también bastante claro

<OBJECT LANTERN
    (LOC LIVING-ROOM)
    (SYNONYM LAMP LANTERN LIGHT)
    (ADJECTIVE BRASS)
    (DESC "brass lantern")
    (FLAGS TAKEBIT LIGHTBIT)
    (ACTION LANTERN-F)
    (FDESC "A battery-powered lantern is on the trophy case.")
    (LDESC "There is a brass lantern (battery-powered) here.")
    (SIZE 15)>

Aparte de los parámetros ya explicados tenemos diferentes descripciones para cuando se examine o se describa con la habitación, su peso, los flags que indica que da luz y se puede coger junto con los adjetivos y sinónimos que el jugador puede usar. 

Las funciones y el parser


Tal vez la parte mas potente de ZIL en si es la capacidad de crear funciones, que se pueden utilizar para crear la interacción con el juego. Se definían así:

<ROUTINE TURN-OFF-HOUSE-LIGHTS ()
            <FCLEAR ,LIVING-ROOM ,ONBIT>
            <FCLEAR ,DINING-ROOM ,ONBIT>
            <FCLEAR ,KITCHEN ,ONBIT>>

Como podéis ver vuelven a aparecer los "<" ">", tanto para definir la rutina como para las función de sistema FCLEAR (pone a cero un flag de un objeto, en este caso el de la habitación tiene luz). Las funciones admiten parámetros, variables locales y hasta parámetros opcionales, en la forma:

< ROUTINE CALLEE (X "OPT" Y "AUX" Z)
            <some-stuff>> 

Digamos que el lenguaje tenia muchas comodidades que tardarían en llegar años al a programación en general!

Bien, pues estas funciones se utilizaban para interpretar las acciones del usuario. Primero el parser léxico identificaba un verbo, objeto directo y indirecto (si están presentes). Entonces dará la oportunidad a cada uno de estos objetos (o mas bien a su función ACTION) en el orden inverso de resolver el comando o si no dará el típico de "No puedes hacer eso". Para ello utiliza una función COND, que es una lista de pares condiciones - acciones, de las que solo se ejecute la primera que se evalúe a cierto con la forma:

<COND (<predicado-condicion-1> 
           <hacer-algo-1>)
         (<predicado-condicion-2>
           <hacer-algo-2>)
         (<predicado-condicion-3>
           <hacer-algo-3>)> 

En cada predicado podemos comprobar si el verbo y los objectos cumplen ciertas condiciones o si el estado del juego es el correcto para activar un programa que muestre un mensaje, mueva objetos, etc. Cuando se empiezan a amontonar paréntesis es un poco complicado, pero en realidad es mucho mas fácil de definir y releer condiciones complejas que con otros sistemas de los 80. Por ejemplo, podemos responder una acción así al comer un aguacate envenenado:

<ROUTINE AVOCADO-F ()
     <COND (<VERB? EAT> 
               <SETG PLAYER-POISONED T>
               <REMOVE ,AVOCADO>
               <TELL "You begin to feel sick.">)>>

Creo que es bastante auto-explicativo, pero SETG cambie el valor de una variable global, en este caso a cierto (T, es decir true), REMOVE quita un objeto (cambiando su propiedad de LOC, en realidad los objetos no se pueden destruir) y TELL muestra un mensaje por pantalla.

Las acciones de habitación, mencionadas al principio, en realidad lo hacen nada con el input del jugador, si no ejecutan ciertas funciones necesarias en cada habitación. Esta función recibe un parámetro en el que se especifica que tiene que hacer, siendo el mas habitual "M-LOOK", para describir la habitación como aquí:

<ROUTINE CAFETERIA-F (RARG) 
   <COND (<EQUAL? .RARG ,M-LOOK>
         <TELL "This is a lunch room, with windows overlooking a loading dock. ">
         <COND (<IN? LUNCH-CROWD ,CAFETERIA>
                <TELL "Every table is jammed with patrons. ">)>
                <TELL "The only exit is north." CR>)>>

Esto es especialmente útil para habitaciones que cambian con el tiempo o si hay algún objeto especial dentro. También hay funciones adicionales para cuando el jugador entra, sale o realiza una acción dentro de cada habitación; así que podemos controlar todo lo que ocurre dentro de la habitación.

Aun quedan muchas mas cosas, como crear personajes interactivos, timers, la definición del léxico... pero todo esto se hace de una manera parecida a la que hemos visto, así que si tenéis interés en saber aun mas de las interioridades de ZIL os recomiendo echar un vistazo a la bibliografía.

Conclusiones


Como podéis ver es un lenguaje muy potente, que permite especificar acciones complejas de una manera sencilla. Y todo en una época cuando muchos programadores la herramienta mas elaborada que tenia era un BASIC de 8 bits. Desde luego este sistema de creación de aventuras se tradujo en que las aventuras de INFOCOM fueran las mas depuradas, complejas y avanzadas durante toda su vida. Digamos que ello tenían una sierra mecánica para cortar arboles cuando la competencia usaba una lima de uñas.

Una parte de estas herramientas estaban tan bien diseñadas que sobrevivieron durante años, llegando hasta hoy en día. Me refiero al estándar de Maquina-Z, que esta aun vivo y portado a todos los sistemas existentes gracias a que fue la plataforma que Graham Nelson decidió para que su compilador Inform. Y aun hoy en día se crean aventuras con esta herramienta para las versiones clásicas de la máquina-Z. Desde luego el estándar ha sido extendido para soportar gráficos, sonido y quitar el limite de memoria entre otras cosas; pero hoy en día no hay ningún interprete de aventuras que no soporte el estándar Z.

Por desgracia, mientras que la máquina-Z aun sigue viva hasta hoy, el compilador ZIL se ha perdido en el tiempo y solo nos queda su documentación...


Bibliografía y links de interés

  • Post recomendadísimo en "The Digital Antiquarian" sobre las herramientas de INFOCOM .
  • Documentación interna de INFOCOM sobre ZIL que ha sobrevivido hasta nuestros días.
  • Entrada en Mobygames de Zork I, de donde he sacado la captura de esta entrada.
  • Frotz, un interprete moderno y portable de la máquina-Z.


Entradas anteriores





viernes, diciembre 06, 2013

Continuando las primeras impresines de Pokemon X/Y


Estaba vez centrandome en la nueva entrega en si.

miércoles, diciembre 04, 2013

Mis historias con Pokemon y primeras impresiones del Pokemon Y


Hablo un poco de los juegos de Pokemon que jugué y sobre el nuevo Pokemon Y.

lunes, noviembre 25, 2013

Atomic Runner para Megadrive y arcade

Este juego, también conocido como Chelnov aunque yo siempre lo recordare como Atomic Runner, es una recreativa clásica de Data East en que nuestro protagonista no parara de correr hacia delante (bueno, no, puede pararse, pero el scroll no se detiene nunca) y destruir enemigos de lo mas variopinto con un gran arsenal.

Es un juego difícil, pero como pasa con otros arcades complicados, una vez has jugado unas cuantas partidas y lo dominas se hace un juego muy gratificante. Ademas, la variedad de armas y situaciones lo hacen un juego muy entretenido y con muchos detalles para dominar.

En la versión arcade siempre me llamo la atención esos escenarios oscuros y llenos de elementos orgánicos, como manos que salen de la tierra o esa especie de "estatuas humanas" que aparecen de vez en cuando. Los enemigos también son de lo mas variopinto, desde humanos en armadura, arañas, estatuas de dioses mitológicos que cobran vida o enemigos tecnológicos... Lo cierto que quien quiera que diseño este juego tenia mucha imaginación y muchas ganas de mezclar conceptos.

Tuve la oportunidad de jugar mucho a este juego en recreativa y cuando despareció de las salas de juegos que frecuentaba dejo para mi un gran vació. Es una pena que ni siquiera tuviera una conversión a los 8 bits de la época, ya que este tipo de recreativas era frecuentemente trasladadas a Spectrums y otros ordenadores domésticos. Y es que ni siquiera conozco ningún juego de entonces que clonara las mecánicas, como hacia el clásico de Dinamic Satan con Black Tiger.

Cuando, años mas tarde, se anuncio una versión para Megadrive me dio mucha rabia no tener una entonces para jugarlo. Lo cierto es que al principio me decepciono un poco, porque habían cambiado los escenarios mas "oscuros" que yo recordaba por una orgía de color. Pero a pesar de eso, lo de hacer un collage de varias cosas seguía presente, porque sino que me expliquen que hace la Sagrada Familia en Rusia!

Un año mas tarde y ya con Megadrive, me hice con este gran cartucho y pude disfrutar mucho mas que en la recreativa (lo que tiene que cada continue no cueste cinco duros) y de la gran banda sonora de esta versión (que siendo sincero me parece mejor que el arcade).

Poniéndolo en perspectiva, Atomic Runner es una arcade que hoy en día aun sigue siendo muy divertido. El lavado de cara de la versión de Megadrive ha envejecido bastante bien, ya que algunos detalles gráficos del arcade, como algunos enemigos o fondos negros, son muy sencillotes, pero ambos te pueden hacer pasar una buena tarde en cualquier momento.

Aquí os dejo un vídeo en que echo unas partiditas a cada versión, espero que os guste.



P.D.: No comento nada de la historia porque en el arcade siempre iba demasiado rápida para leerla y la historia de la intro en Megadrive me parece tan ridícula que prefiero no contarla.

P.P.D.: Tampoco voy a hablar del parecido del nombre de Chelnov con Chernobil, ya que yo nunca lo recordé/conocí por ese nombre.

P.P.P.D.: En cambio si me interesa saber que hubo un port para Saturn del arcade original que fue cancelado pero que apareció hace poco.

miércoles, noviembre 20, 2013

Impresiones de dos juegos de iOS que no me han gustado

Mis impresiones de Metal Gear Solid Social Ops y AD&D Arena of War, que me sirven para desahogarme un poco.

viernes, noviembre 15, 2013

Como simular el movimiento de un RPG clásico en primera persona con Unity 3D

Eye of the Beholder, Ishar, Dungeon Master, Wizardray... Son solo alguno de los mas famosos nombres de RPGs en primera persona que triunfaron en los '80 y principios de los '90. Debido a limitaciones técnicas, estos juegos simulaban una vista 3D usando unos cuantos trucos que hacían que funcionaran en casi cualquier maquina. Los primeros y mas sencillos RPGs en primera persona dibujaban los pasillos de las mazmorras como lineas en perspectiva, creando la sensación de profundidad. Era un efecto que dejaba todo a la imaginación, pero tenia la ventaja que prácticamente cualquier maquina que tuviera gráficos lo podía manejar.

Un poco mas adelante, cuando las capacidades gráficas de los ordenadores y las técnicas de programación mejoraron, se empezó a utilizar un nuevo método que simulaba las paredes de los pasillos esta vez con todo detalle. El truco estaba en que el diseñador creaba, para cada tipo de pared, un gráfico desde todas las perspectivas posibles. Normalmente no eran muchas, de frente y de lado a 3 o 4 tamaños máximo. Y luego, dentro del juego, los colocaba siguiendo un mapa 2D, simulando la profundidad con los diferentes tamaños (grandes cerca, pequeños lejos). La técnica era bastante "espectacular" para la época y fue muy usada con juegos que están en la memoria de todos como los anteriormente mencionados.

 Pero también esta técnica tenia grandes defectos. Primero por que estaba limitado a un mapa 2D con paredes perpendiculares y segundo porque, al no poder haber transición entre un punto a otro del mapa, el movimiento era a saltos. Este movimiento brusco era bastante confuso hasta que te acostumbrabas, y muy desconcertante si tu no controlabas el personaje.

Con el tiempo este sistema callo en el olvido al ser remplazado primero por sistemas de ray casting (Legend of Valour, Elder Scrolls Arena como ejemplos primerizos) y mas adelante por engines 3D reales. Pero creo que en el proceso se perdió una parte de la magia y sencillez de estos primeros RPGs, que conseguían recrear un mundo 3D en cualquier maquina. No en vano aun hay juegos que intentan recuperar esta sistema junto con otros detalles retro, como Legend of Grimrock o Grimoire.

Pues bien, como un engine de este tipo es muy fácil de simular con un engine 3D actual, aquí tenéis un pequeño tutorial, con proyecto incluido, que muestra como crear vuestra vista en primera persona clásica en Unity 3D. Obviamente es solo una simulación, ya que los juegos originales utilizaban técnicas muy diferentes, pero es fácil crear una ambientación parecido.

Para el tutorial he utilizado texturas de alta calidad, pero nada os impide utilizar texturas mas retro para darle ese look vintage. También comentar que es necesario conocimientos básicos de como funciona Unity para poder seguirlo.

Espero vuestros comentarios!



Update con los links

No me había dado cuenta que con el vídeo empotrado es complicado que vierais los links que había en la información de youtube. Así que aquí los teneis:

El proyecto se puede descargar aquí
https://mega.co.nz/#!OB1WkRyC!DveNGEi...

(la demo se controla con los cursores)

El articulo en la Wiki de Unity sobre el movimiento en rejilla
http://wiki.unity3d.com/index.php/Gri...

Texturas usadas en la demo
http://opengameart.org/content/pietex...
http://opengameart.org/users/yughues

Y muchas mas arte libre en http://opengameart.org/

miércoles, noviembre 13, 2013

Sobre mi nuevo proyecto de videojuego con Unity 3D

Hablando un poco de mi nuevo proyecto de videojuego, nuevamente un RPG en primera persona con toques retro, pero esta vez con ambientación anime.

domingo, noviembre 03, 2013

Impresiones del GTA V despues de 20 horas

Lo que mas me gusta del juego después de perderme mas de 20 horas por Los Santos y alrededores.

lunes, octubre 21, 2013

Vamos a jugar al Space Quest IV (parte 2)



Continuamos con las aventuras de Roger Wilco en Space Quest IV dentro de Space Quest XII, repitiendo una parte que nos habíamos dejado y viajando atrás en el tiempo hasta Space Quest X.

miércoles, octubre 16, 2013

Primeras impresiones de Grand Theft Auto

Mis impresiones cuando solo llevaba unas pocas horas jugando con el GTA V

lunes, octubre 14, 2013

Vamos a jugar al Space Quest IV (parte 1)

A principios de los 90 vivía feliz con mi Spectrum +2 y mi flamante Amstrad CPC+ recién adquirido de un saldo del Continente. En aquella época mi principal fuente de información videojueguil provenía de la Microhobby, que ademas me proveía de una buena ración de demos y juegos completos. Pero un día de 1992, no llego a recordar si porque ya no había Microhobby, decidí atreverme con esa gran revista que era la Micromania. Y lo de grande lo digo porque por aquel entonces era tamaño que mas que periódico parecía una manta.

Y esa compra fue un shock para mi. Yo vivía tan feliz con mis juegos de 8 bits; pero esta revista me abrió los ojos a un nuevo e incipiente mundo: los 16 bits. Jamas olvidare la juegos como Future Wars o Heart of China, junto con la solucion del juego que hoy nos trae aquí, Space Quest IV. Yo era gran fan de las aventuras conversacionales, y devoraba todo lo que AD sacaba, pero este nuevo mundo de color, ratón e iconos me parecía la evolución natural del genero y me quede prendado de las nuevas aventuras gráficas.

Paso mucho tiempo hasta que tuve un PC, y aun mas hasta que pude jugar finalmente al Space Quest IV, cuando ya era casi un juego pasado de moda, pero esta aventura tiene un rincón muy especial en mis recuerdos sobre el ocio electrónico.

No me la acabe en su tiempo, y apenas recuerdo nada quitando la parte del principio, pero espero pasármelo, aunque tenga que echar un vistazo de vez en cuando a la solución.



P.D.: Curioso es que buscando una solución en internet, encontré esta en Meristation, fechada en nada mas y nada menos que en 1993, antes incluso que existiera la revista electrónica como tal.

miércoles, octubre 09, 2013

Compras de septiembre 2013


Un repaso a mis (escasas) compras de septiembre.


domingo, octubre 06, 2013

Making-of de "Tokyo Super Night"


Como sabéis Tokyo Super Night ya esta disponible tanto en iOS como en Android, así que para celebrarlo grabe un vídeo explicando como funciona la versión Android. Esta versión esta hecha con el sistema de desarrollo Unity 3D, sin usar ninguna extensión especial. No estoy seguro que sea de utilidad a nadie (demasiado técnico para gente que no conozca el mundillo, pero poco profundo para quienes sepan de que va esto de la creación de juegos), aunque si tenéis curiosidad en saber que hay detrás de un juego 2D sencillo, echadle un vistazo.

sábado, octubre 05, 2013

Impresiones del Persona 4 Golden despues de más de 10 horas

Mis impresiones del juego después de dedicarle unas horas mas. Estas impresiones las grabe hace un tiempo (ahora ya voy por las 45 horas de juego), pero no las publique cuando debía.

viernes, septiembre 27, 2013

Unas partidas a Virtua Racing de Megadrive


Virtua Racing no fue el primer juego en 3D de carreras (recuerdo muchos, incluso en las maquinas de 8 bits), pero si fue tal vez el primero en conseguir que un juego arcade de carreras 3D fuera rápido, fluido y muy divertido. Y es que este Virtua Racing sentaría precedente en como serian los arcades de conducción en el futuro, como la saga Sega Rally o Ridge Racer.

Y todo ello con unos gráficos que vistos hoy en día parecen exageradamente sencillos, casi esquemáticos; pero que en aquel entonces es lo que entendíamos como 3D. Seguramente la principal diferencia con otros juegos de conducción 3D anteriores a nivel técnico es su fluidez; todo va rápido y a un frame rate constante (bueno, eso solo en recreativa) gracias al hardware especifico de Sega y que en la versión domestica se traducía en el chip DSP.

Por otro lado, una vez se nos pasa la borrachera de su explosión gráfica, nos queda un juego divertido, pero que escasea de todo: circuitos, vehículos, modos de juego... Se nota que es una conversión del arcade solo con lo básico y que esperaban que vendiera por sus gráficos.

De todas formas es un clásico que se merece ser re-visitado y que, aun hoy en día, resulta entretenido de jugar unas carreras.

sábado, septiembre 21, 2013

Impresiones rápidas a la salida del TGS 2013





domingo, septiembre 15, 2013

Mi opinión personal de la conferencia pre-TGS 2013 de Sony


Este lunes pasado pude asistir a la conferencia pre-TGS de Sony con Meristation. Toda la información detallada la podéis encontrar en la web de Meri, aquí tenéis mi opinión personal, desde el punto de vista de alguien que vive en Japón.

sábado, septiembre 07, 2013

¡La demo de Island of the Oracle 3D ya disponible!



Ya esta disponible la demo de este "remake" del RPG que hice en MSX, esta vez para Windows y Mac; en la forma de juego en primera persona con ray casting retro (ya sabéis, a lo Wolfenstein 3D).

Podéis descargarlo desde la página oficial. También tenéis un vídeo con los primeros momentos de la demo, que espero que sirva de ayuda para jugarla, aunque hay un mini-manual en la web. Si queréis saber como se hizo, hay mas información en este otro post y en los vídeos que fui haciendo en youtube.

Solo es un pequeño pedazo del juego, que seguro contiene bugs a montones y sin final (simplemente no puedes entrar a todas las areas), pero espero que os guste y estoy deseando saber vuestras opiniones.

Disclaimer: el ingles del juego es como algo "raro" XDD, no hagáis mucho caso a todas las faltas que hay (v.v)

martes, septiembre 03, 2013

Compras de Julio-Agosto


Mis compras de estos dos meses que han coincidido con las rebajas digitales. Me he dejado alguna cosilla, pero ya la pondré con septiembre.

miércoles, agosto 28, 2013

Unas palabras sobre mi RPG retro con raycasting

Los que me sigáis por otras redes sociales o youtube seguramente habréis visto la evolución de este proyecto mejor que los lectores de este humilde blog, ya que hasta ahora no me he decidido escribir una entrada especifica sobre este tema. Pero ya que estamos, vamos a empezar desde el principio y poner todo este proyecto en perspectiva.

Una de las primeras capturas, aun con los tiles del Wolfenstein
Como es habitual, todo empezó con un objetivo muchas mas sencillo, y algo diferente a un motor de ray casting. En realidad estaba intentando recrear en Flash un sistema de dungeons en primera persona como el de Eye of the Beholder, Dungeon Master y tantos otros clásicos de los 80 y 90. No tenia ninguna intención de crear un juego completo, solo una pequeña demo, ya que era solo un proyecto empezado en unas horas muertas que tenia a la semana. 

Arreglando la ocultacion de sprites al principio del proyeto

El problema con este tipo de engines es que, para hacerlo como en esa época, hacen falta los gráficos de las paredes dibujados en diferentes tamaños y perspectivas, algo que seguramente me llevaría mucho tiempo. Probé a usar 3D y simular un efecto similar con texturas, pero siempre se notaba el "truco" y quedaba demasiado moderno para mi gusto. 

Buscando métodos para darle un aspecto mas retro al proyecto (transformar las paredes con algún tipo de escalado sencillo) en alguna página se mencionaba que lo que hacían juegos como EoB se podía ver como un ray casting simplificado. Siempre había tenido interés en los engines de Id (creadores de Wolfenstein, Doom y demás joyas), y al ver aparecer esta palabra clave pensé en utilizar un sistema de ray casting para mi demo.

Probando a crear una interfaz después de decidirme a hacer un RPG
Después de estudiar otros sistemas de ray casting escrito para C, Flash y otros lenguajes decidí que era un proyecto no tan complicado y me puse manos a la obra. Hay mucha documentación y demos funcionales, así que no me costo mucho crear mi propio sistema y aparecieron los primeros muros (primero de colores planos y luego con las texturas del Wolfenstein 3D). Y bueno, para animar un poco la cosa me decidí también a implementar los sprites, lo que hizo que el escenario se llenara de caras sonrientes, el primer sprite.

Ahora los muros pueden ser dobles
Y la verdad, no recuerdo en que momento decidí utilizar este sencillo motor para hacer un juego, pero sucedió que en cierto momento me plantee que tipo de juego debía ser. Acabe pensando en hacer un pequeño RPG inspirado por los clásicos que había jugado a principios de los 90, como Legend of Valour o Drakhen.



Así que fui ampliando el engine, añadiendo un sistema de scripts, diálogos, eventos, inventario etc... Tal vez el proceso a partir de aquí esta mejor documentado por los audioboos y vídeos pertinentes en youtube.

Probando la iluminación de los escenarios
La cosa es que al decidir el contenido del juego pensé en realizar una versión en 3D del RPG que cree para MSX, y así nació "Island of the Oracle 3D". No es mas que un sencillisimo RPG, ya que prácticamente todo lo que puedes hacer ya se podía hacer en 8 bits y 24Kb.

El engine ya terminado
La primera parte del proyecto ya esta prácticamente terminada, así que en breve voy a publicar una demo jugable, estad atentos!

lunes, agosto 26, 2013

Impresiones finales de "The Last of Us" (sin spoilers)

Lo que me ha parecido el juego después de acabármelo y sin contar nada de la trama.

miércoles, agosto 07, 2013

Mi primer contacto con el MSX y la saga Metal Gear


Más divagaciones de como conocí y use la plataforma MSX durante bastante tiempo sin tener uno nunca. Y de paso como jugué al primer Metal Gear.

lunes, agosto 05, 2013

Una partida al Splatterhouse part III para Megadrive

Este Splatterhouse 3, como se le conoce mas habitualmente fue uno de mis juegos deseados de Megadrive en la época en que solo tenia la SNES. No es que le faltara catalogo, pero esta entrega tanto como las anteriores tenían una ambientación de película gore de serie B que me atraía bastante. Y por desgracia, títulos de este tipo escaseaban en las consolas de Nintendo; al menos durante esa época.

Como no, la información del lanzamiento de este juego me llego a través de las revistas de la época, tal vez la Superjuegos, y me dejo con ganas de probarlo. Pero por desgracia no lo vi en ninguna tienda, y ninguno de mis amigos con Megadrive tampoco lo tenia. Paso el tiempo y nos hicimos con una flamante consola de Sega con el Mega-CD. Y entonces empezó una época de buscar esos juegos de "mega" que siempre quise jugar y no pude. Sin embargo este fue uno de los difíciles, ya que no estaba en stock en las tiendas y era complicado de ver de segunda mano; siempre a precio de oro.

En realidad lo acabe consiguiendo hace relativamente poco y finalmente he podido echar una partida, que tenéis a continuación. Eso si, sin leer el manual; solo con mis recuerdos de las revistas que leí en su tiempo.

miércoles, julio 31, 2013

Divagaciones sobre Shadowrun Returns y Shadowrun en general

Mis historias sobre esta saga de RPGs de mesa y sus videojuegos.

jueves, julio 18, 2013

Compras de Junio

Un repaso a mis compras del mes pasado.

miércoles, julio 10, 2013

Version Android de "Dungeons of Diablet"


Cuando empece el proyecto de "Dungeons of Diablet" en ningún momento tenia pensado en realizar versión alguna fuera de los ordenadores domésticos. Pero durante el desarrollo ocurrió algo inesperado, Unity 3D, la plataforma de desarrollo que estaba utilizando empezaba a ofrecer también gratuitamente la opción de exportar para Android y iOS.

Dado que ya era gratis y mas que nada por curiosidad, a mitad del desarrollo probé a exportar el juego a Android, generando un fichero apk que raudo probé en mi Galaxy S3. Yo me esperaba que la cosa explotaría después del menú principal, o peor, no llegaría a arrancar. Nada mas alejado de la realidad, el juego funcionaba perfectamente, Unity simulaba que los toques a la pantalla táctil eran clicks de ratón y, exceptuando que alguna textura del terreno se veía cuadriculada, no había ningún problema. Incluso la velocidad era aceptable, a pesar de no haber sido optimizado ni siquiera en PC.

Bastante después de concluir la semana con Unity y por culpa de tener unos minutos sin nada que hacer delante del ordenador, me propuse a exportar, esta vez la versión final, a Android, a ver que tal quedaba. Estaba aun el problema del suelo a cuadros, pero seguía siendo totalmente jugable. El problema de las texturas parece que se debe a limitaciones de los dispositivos que utilizan Tegra (como mi S3) y solo tiene solución haciendo algunos trapicheos con el terreno. Y claro, también esta el problema que la jugabilidad esta pensada para que el jugador utilice un ratón.

Como la semana, mi tiempo limite, ya esta concluida, y el problema de las texturas no es fatal, me he decidido a publicar el juego tal cual para Android, para que cualquiera que tenga un rato libre lo pueda probar. Esta disponible en la pagina oficial del Dungeons of Diablet.

Si alguien lo prueba en su Android y le funciona (o no), estaría muy agradecido de escuchar que le parece.


lunes, julio 08, 2013

Una partida al Bare Knuckle (Streets of Rage I)



Hubo una época en que eras de Super Nintendo o de Megadrive. En las típicas guerras de consolas, a principios de los noventa estábamos divididos entre los dos bandos que defendían sus consolas a ultranza. Claro que en general cada cual era defensor de la consola que tenia y echaba pestes de cualquier otra; a veces con razón, a veces por pura envidia.

Yo tuve una SNES, asi que estaba en este bando, pero tenia muchos amigos con una Megadrive, y disfrute de muchos juegos de Megadrive que me encantaron, aunque no reconocía del todo. Y lo cierto que este Bare Knucle o Street of Rage en Europa no me sorprendió  Tal vez porque venia del Final Fight de recreativa, este me parecía una copia cutre con sprites pequeños del juego de Capcom. 


Solo fue con el tiempo (y con la segunda parte) que pude ver este juego con otros ojos, y descubrir que, si bien los gráficos no se pueden comparar con una recreativa, era un juego muy trabajado, rápido y con unos gráficos rompedores para los 4 megabits que ocupaban. Mención aparte la música del grandísimo Yuzo Koshiro, que explotaba la Megadrive y el espacio libre en el cartucho a tope.

Resulta que hace unos días encontré en una tienda japonesa el Bare Kuncle 1 y 2 por unos miseros 100 yenes y no me pude resistir a llevármelos aun teniendo las versiones PAL. Así que aquí tenéis mi primera partida en mucho tiempo a este gran beat'em'up.

martes, julio 02, 2013

Primeras impresiones de Persona 4 The Golden

Mi opinión después de unas 4 horitas con este J-RPG, el primero de este genero que juego en una temporada

jueves, junio 27, 2013

¡Tokyo Super Night ya en castellano!



Pues eso, ya tenéis disponible en la AppStore la nueva versión de Tokyo Super Night, ahora totalmente en castellano (y alemán, por si queréis estudiar idiomas). También hemos corregido unos cuantos bugs y adaptado la resolución para la pantalla del iPhone 5.

¡Echarle un vistazo, es gratis!

Primeras impresiones de "The Last of Us" (sin spoilers)


Un primer vistazo a este gran juego de los creadores de Uncharted.

lunes, junio 24, 2013

Jugando a Ultima VII The Black Gate (y 4)



Cuarta parte de mi gameplay / impresiones de Ultima VII. En esta parte, por fin, hay combates! También exploramos un poco mas Britannia y nos hacemos con una compañera más.

miércoles, junio 19, 2013

Mis impresiones del trailer del E3 2013 de Metal Gear Solid V


Un pequeño repaso al vídeo con que Kojima-kantoku nos ha deleitado este E3.

lunes, junio 17, 2013

"Dungeons of Diablet" ya disponible!


Mi proyecto de crear un juego con Unity 3D en una semana ya esta terminado, y como prometí el juego ya esta disponible online, tanto en descarga (Mac y Windows) como para jugar directamente online (necesitas el plugin gratuito de Unity 3D).

Es un juego relativamente corto, en el vídeo podéis ver como me lo paso en 12 minutos (claro que yo me se de memoria los escenarios y donde están las llaves XD). Si tenéis un rato libre echarle un vistazo y contadme que os parece!

domingo, junio 16, 2013

Impresiones del E3 2013


Mi pequeño resumen de lo que mas me ha llamado la atención de este evento.

jueves, junio 13, 2013

Una semana con Unity: creando un clon de Gauntlet + Diablo (Día 7)



Por fin he podido acabar esta semana con Unity 3D (obviamente con días no consecutivos) y el juego ya esta listo para ser distribuido.

Durante este día solo he corregido bugs, balanceado la jugabilidad y añadido pequeños detalles como la música, así que no hay mucho que contar.

Todo los assets del juego son gratuitos de la Asset Store de Unity o bien de www.opengameart.org.

viernes, junio 07, 2013

Una semana con Unity: creando un clon de Gauntlet + Diablo (Día 6)



Esta vez me he centrado en hacer la experiencia de juego mas entretenida, nivelando el daño y mejorando la IA para que se disperse un poco y no te ataque en fila india. También he creado un par de niveles más.

Ya solo me queda un día más para terminar!

miércoles, junio 05, 2013

Tokyo Super Night!





viernes, mayo 31, 2013

Compras de abril y mayo

Un repaso a mis compras de estos dos meses.

miércoles, mayo 29, 2013

Una semana con Unity: creando un clon de Gauntlet + Diablo (Día 5)



Con un poco de retraso ya tengo terminado mi quinto día de este proyecto con Unity.Esta vez me he dedicado a crear un nuevo nivel, esta vez ambientado en una mazmorra y a crear una iluminación mas oscura.

Para el siguiente día toca arreglar la AI y seguramente crear un nivel más.

Sobre el final de Bioshock Infinite (con spoilers)


Mis impresiones sobre el final del juego (con spoilers).

jueves, mayo 23, 2013

martes, mayo 21, 2013

Una semana con Unity: creando un clon de Gauntlet + Diablo (Día 4)



Hoy ya tenemos la estructura de juego, es decir un menú principal para iniciar el juego, el juego en si y cuando mueres una pantalla de "Game Over" para volver a empezar.
A parte también hay puertas, a lo Gauntlet, que necesitan de llaves para abrirse. También he corregido algún que otro bug no demasiado visible pero que estaba ahí, dando la lata.

Impresiones de Bioshock Infinite (II)


Segunda parte de mis impresiones de Bioshock Infinite.