sábado, mayo 21, 2016

Un poco de nostalgia: juegos retro

El Laberinto del Saber es un juego desarrollaod en Cuba a finales de los 80 o algo así, para MS-DOS. Aquí pueden verlo en acción:

Desde hace un buen tiempo que quiero hacer un remake moderno orientado principalmente a plataformas móviles, al principio lo intenté con SDL 2, pero luego decidí usar un motor decente. Entre Godot y Unity3d me decanté por el último, para no invertir tiempo en aprender una herramienta que no me serviría para hacer más juegos.
Sin embargo, el proyecto ya acumula unos seis meses de atraso por diversas razones, y ni siquiera tengo una imagen para mostrar. Así queni hablar de fecha de lanzamiento.

lunes, mayo 16, 2016

Leyendo a Sapkowsky

Este es uno de mis escritores favoritos y es lamentable que haya tan poco de él en español. Aunque hay que reconocer que Andrzej Sapkowsky no ha sido tan prolífico.
A Sapkowsky le basta con su saga de Geralt de Rivia para ser una figura de renombre en la literatura fantástica. La fama de los juegos basados en el personaje del brujo Geralt, me parece, no le han acarreado una fama enorme, porque muchos olvidan (o simplemente no se interesan en averiguar) que el Wiedźmin no fue creado por CD Projekt RED. Por suerte, como les decía, entre los lectores ya Sapkowsky era un referente aún antes de que salieran los juegos.
Tenía entendido que estaba trabajando otra serie de libros, basados en las Guerras Husitas, así que hace poco decidí buscar si ya estaban disponibles en español. Y resulta, que además de los dos libros de dicha saga, me encontré Víbora, un tercero completamente distinto, ambientado en Afganistán durante la invasión soviética.
No obstante, no es de eso que quiero hablarles, sino de Narrenturm, el primero de los dos basados en las Guerras Husitas. Un libro que vuelve a ese estilo desenfadado y humorístico presente en los dos primeros títulos de Geralt de Rivia, que influenció tanto mi propia forma de escribir. Aunque la historia se alarga un poco, lo cual se nota más hacia el final, es divertido de leer, más que por la trama en sí (que recuerda una clásica comedia de enredos) por ese humor que no se va más allá ni se queda corto: término medio con papitas fritas.
Un libro genial, que les recomiendo leer, por supuesto.

martes, mayo 10, 2016

COD, el más odiado, Battlefield 1, el más gustado

Al final, sabemos que COD va a vender como churros (como churros rebajados, claro), pero ahora la el futuro título de Infinity Ward está de moco caído. El trailer de COD: Infinite Warfare ha resultado ser el más odiado por los internautas, que se han extremado valorándolo con No me gusta. Parece que la nueva entrega de la saga, con sus naves espaciales y combate en baja gravedad no ha caído muy bien que digamos. Por lo menos a mí, las anteriores entregas me gustaban cada vez menos.
En cambio, el trailer de Battlefield 1 ha conseguido llevarse las valoraciones positivas que le tocaban y las del COD, siendo uno de los más gustados de Youtube. Battlefield 1 no se va al futuro para explorar escenarios nuevos, sino bien al pasado: a la I Guerra Mundial. Con un montaje frenético, nos pasea en biplanos, nos lleva a la guerra de trincheras con peleas a golpe de pala y no faltan las nubes de gas tóxico tan típicas de la época. En fin, que deja al COD a la altura del betún.
Y no podía ser de otra forma, porque creo yo que la saga COD ha perdido el rumbo en la búsqueda de la originalidad, sumiéndose cada vez más en la trama simplona y mecánicas de juego estúpidas, que hacen que jugar una de esas entregas recientes sea como ver una peli de ciencia ficción, pero de las malas. Alguien debería sacar una lección de esto, pero no me cabe duda de que no lo hará, porque, como les decía al principio, muchos van a  comprar esta porquería de juego. Aunque después se quejen.

viernes, mayo 06, 2016

Sistema de entidades

Casi todo juego debe llevar una lista del estado de ciertas entidades: donde están, si las hemos tocado, si están vivas o muertas, y etc. Una entidad no es solo un NPC (como pensé ingenuamente al principio). Si has abierto un cofre y arramblado con todo su contenido, o dejado dentro de él esa maza de hierro que no vale medio para que no haga bulto en tu inventario, eso también hay que guardarlo, o cuando regreses del otro lado del mundo, el cofre tendrá los mismos objetos que ya te llevaste una vez.
Mi primer enfoque a este asunto, que como ya decía obviaba los cofres y similares, consistía en llevar una lista, o Dictionary más exactamente, con los NPC. Al salir de una escena desactivaba los GameObjects de los NPC, agregándolos a esta lista si no existían. Al cargar una escena revisaba la lista para reactivar los GameObjects necesarios, que volvían a la vida justo donde se habían quedado. El método era sencillo y funcionaba.
Sin embargo, resulta que en realidad la forma más común de implementar esto es ligeramente diferente, y no podía faltar, más compleja. El caso es que debemos guardar en disco el estado de las entidades al salir de la escena, pare recargarlo al regresar. Eso implica enredarse con serialización/deserialización de objetos un poco complicados, un trabajito que siempre he dejado para más tarde, o para que lo haga otro. En fin, no es que mi primera solución esté mal, sino que a la gente más experimentada no le gusta por cuestiones de consumo de memoria.
Así que ya saben la forma correcta de manejar su lista de entidades. Ya también saben una menso correcta, pero que funciona.

martes, mayo 03, 2016

Localización del proyecto

Una de las cosas que quería probar en este nuevo proyecto, ya que la idea era hacerlo bien desde el principio, es la localización de toda la interfaz. La cosa no es tan difícil, pero se me había complicado por una nimiedad. Los textos estaban omitiendo las letras con tilde y la solución era, en teoría, muy fácil: el archivo de origen de los textos debía estar guardado en UTF-8. Había solventado esto diciéndole al MonoDevelop que los guardase así, pero al parecer no lo hizo, así que para salir de dudas tuve que acudir a Linux. Desde el editor de texto abrí los archivos y los volví a guardar, y para mi sorpresa, las cosas empezaron a funcionar. Por supuesto, es esencial contar con una fuente que tenga las dichosas letras, o no habrás hecho nada con guardar los textos en utf-8.
El asunto, como les decía, no es complicado, pero sí es extremadamente trabajoso. Un prototipo sencillo con apenas algunas cosas ya lleva más de un centenar de líneas, mitad español mitad inglés. Los elementos de la interfaz necesitan un script adicional que tenga el código de referencia, para cambiar el texto a mostrar en tiempo de ejecución (esa es mi solución, si alguien tiene otra mejor, me gustaría conocerla).
Hasta ahora he implementado algunos sistemas básicos que permiten algo de jugabilidad, pero solo pruebas de concepto. De ahora en adelante las cosas sí se pondrán serias, porque me estoy adentrando en terreno complicado. Por ejemplo, ya es hora de integrar una solución seria de IA, como RAIN, que parece ser la única que hay para Unity3d, y además es completamente gratis.
También quiero probar algún sistema de diálogos, algo que ha probado ser, no complicado, pero sí trabajoso en extremo a la hora de crear las conversaciones. Aquí, por desgracia, las opciones no están tan claras como con la IA, porque casi todas las soluciones son comerciales, y aunque quisiera pagarlas, de momento eso me resulta imposible.
He pensado llevar el prototipo hasta un punto medianamente jugable y liberarlo bajo alguna licencia libre para que sirva de ayuda a los que se inician. Quizás no tenga las mejores soluciones, pero un punto de partida es mejor que no tener nada.

viernes, abril 22, 2016

Video del proyecto

Pequeño gameplay, para presumir de algo (casi nada), del proyecto de juego RPG isométrico. 

Unos pocos sistemas están implementados y funcionando, aunque solo la cámara se puede decir que está al 100%, pueden encontrar el tutorial en mi otro blog (en inglés). Cualquier sugerencia que pueda ayudar a mitigar los problemas es bienvenida. El código, bastante actualizado, está en el repo de github. Algunos de los modelos 3D utilizados están disponibles en OpengGameArt.