Drew Karpyshyn y las novelas de Mass Effect

Estaba casi llegando a una sequía de lectura, en la que no sabía qué leer a continuación de Leviatán, de Yoss (excelente novela, que les recomiendo), cuando me dio por buscar las novelas basadas en el universo de Mass Effect. Las tres primeras de ellas fueron escritas por Drew Karpyshyn, guionista y diseñador involucrado en Mass Effect 1 y 2.
Existe un curioso paralelismo entre el Leviatán de Yoss: una criatura semi-racional, capaz de devorar civilizaciones, y los Segadores. Pero volviendo a estas tres joyitas que no deberían faltar en tu colección si eres fan de la mejor saga de juegos de CF de la última década. Eso sí, evita la cuarta novela, que fue un total desastre, tanto que tuvieron que pedir disculpas y retirarla para correcciones (no fue escrita por Karpyshyn, por supuesto, que en ese momento estaba ocupado con SWTOR, si no recuerdo mal).

 Las tres novelas se sitúan cronológicamente antes de cada título de la saga, pero no veremos al Comandante Shepard en ellas, aunque en la tercera sí se hace referencia a él en varias ocasiones. Tal vez no sean una maravilla literaria, como leí por ahí en algún lugar, pero estos libros te harán pasar un buen rato y añadirán profundidad al universo de Mass Effect.


Cámara isométrica en Unity3d

Tengo el mal hábito de que lo primero que intento hacer en un motor de juegos es una vista isométrica. Si resulta fácil, entonces el motor se puede considerar como fácil de usar. Los juegos isométricos han caído en el olvido y no es de extrañar que los motores intenten facilitar otros modos de cámara más populares como primera y tercera persona.
Pensé que lo había conseguido en Unity en unos pocos minutos (gracias a Google), pero el efecto no era exactamente el deseado. Al final, logré darme cuenta de lo que estaba mal, pero eso lo veremos más adelante.
Para empezar, crea un GameObject vacío, que servirá como padre de la cámara. En aras de simplificar, digamos que estará ubicado en (0, 0, 0). Crea una cámara y hazla hija del susodicho GameObject. Las coordenadas de la cámara serán (15, 15, 0), también en aras de simplificar. Podría ser (0, 15, 15), pero en ese caso, tendrías que calcular las rotaciones a mano. Cambia la cámara a modo ortográfico, para conseguir el efecto más aproximado al isométrico antiguo.
Agrega este script C# a la cámara:

using UnityEngine;
using System.Collections;

// Camera Controller
// Revision 2
// Allows the camera to move left, right, up and down along a fixed axis.
// Attach to a camera GameObject (e.g MainCamera) for functionality.

public class CameraController : MonoBehaviour {

    //float Xmax, Ymax;
    int UP = 1;
    int DOWN = 2;
    int LEFT = 3;
    int RIGHT = 4;
    int dir = 0;
    int rot = 0;
    int RLEFT = 1;
    int RRIGHT = 2;
    // Use this for initialization
    void Start () {
            }
   
    // Update is called once per frame
    void Update () {
        if (Input.GetKeyDown(KeyCode.W)) {
            dir = UP;
           
        } else if (Input.GetKeyDown(KeyCode.S)) {
            dir = DOWN;
        } else if (Input.GetKeyDown(KeyCode.A)) {
            dir = LEFT;
           
        } else if (Input.GetKeyDown(KeyCode.D)) {
            dir = RIGHT;
        } else if (Input.GetKeyUp(KeyCode.W) | Input.GetKeyUp(KeyCode.S) | Input.GetKeyUp(KeyCode.A) | Input.GetKeyUp(KeyCode.D)) {
            dir = 0;
        }
       
        if (Input.GetKeyDown(KeyCode.Q)) {
            rot = RLEFT;
        } else if (Input.GetKeyDown(KeyCode.E)) {
            rot = RRIGHT;
        } else if (Input.GetKeyUp(KeyCode.Q) | Input.GetKeyUp(KeyCode.E)) {
            rot    = 0;
        }       
       
        //camera scroll
        if (dir==UP) {
            transform.Translate(0,0,5*Time.deltaTime);
        } else if (dir==DOWN) {
            transform.Translate(0,0,-5*Time.deltaTime);
        } else if (dir==LEFT) {
            transform.Translate(-5*Time.deltaTime,0,0);               
        } else if (dir==RIGHT) {       
            transform.Translate(5*Time.deltaTime,0,0);       
        }
        //camera rotation
        if (rot == RLEFT ) {
            transform.Rotate(0,25*Time.deltaTime,0);
            transform.LookAt(transform.position);
        } else if (rot == RRIGHT ) {
            transform.Rotate(0,-25*Time.deltaTime,0);
            transform.LookAt(transform.position);
        }            

             
    }
}

El gran problema de mi primera versión era que la vista no rotaba alrededor de un punto, o mejor dicho, sí lo hacía, pero no mirando al centro. Y es que crear la cámara como hija del GameObject objetivo no garantiza que la cámara se mantenga enfocada en el mismo, de ahí que a cada rotación haya que agregarle un transform.LookAt(transform.position); para mantenerla mirando al centro. Como siempre, esto ha sido resultado de mucho ensayo y error, así que ni es la mejor solución y hay cosas que no sé por qué o cómo funcionan. De todas formas espero que les sirva de ayuda si se deciden a programar un reboot de Fallout 2.

Primera partida de D&D en Santiago de Cuba

Durante más de un año los dados de Dungeons&Dragons donados por Yoss habían estado durmiendo en mi gaveta, en espera de reunir un grupo para iniciar la partida. Muchos detalles conspiraban contra la realización del magno evento: para empezar, esto es Santiago: poca gente y menos entusiasmo, algo así como Pueblo Paleto. La mayoría de nosotros vive luchando el día a día, el tiempo para diversiones es escaso. Además, una partida requiere algunos manuales e implementos. De los primeros solo tenía el Manual del Dungeon Master y el Manual de Monstruos, ambos incompletos (imprimir cientos de páginas es un problema, incluso en la capital).
Llegué a la partida bastante acobardado, sin haber leído los manuales en meses, pues había prestado la copia impresa. Los demás frikis invitados conocían del tema por The Big Bang Theory, o sea, que estaban un poco marginalmente por debajo de mi calificación. Y así nos lanzamos a la aventura, inventándonos las reglas, usando piedras y monedas en vez de miniaturas, y compartiendo el parque con la comunidad de jugadores de Yugi-oh. De vez en cuando alguien se acercaba y nos miraba jugar y tirar aquellos dados raros que nunca habían visto. Hubo de todo, incluyendo un jugador que quería ser Dios (baste decir que los demás le comparan con Sheldon) y que se entretenía dibujando su personaje en la parte de atrás de la hoja de jugador.
A pesar de todos los problemas, la partida se reiniciará como debe ser el mes próximo. Esta vez sí iré mejor preparado, haremos una modesta inversión en miniaturas y manuales impresos (que aunque modesta, no dejará de hacer un hueco en mi bolsillo), y espero que sea una experiencia lo más cercana posible al D&D en otros lugares del mundo.

LEyendo a Carlos Sisí

Esta es la evidencia de que hay vida más allá de la literatura inglesa. Mi primera experiencia con este autor español no fue muy impresionante, estaba haciendo un repaso de los últimos premios Minotauro y Panteón era uno de ellos. Un libro de CF normalito (no malo, aunque de esos el premio tiene algunos que francamente, no pude terminar de leer), que me hizo pensar que el certamen estaba bastante flojo. Claro, el problema es que lo estaba comparando con  Señores del Olimpo, de Javier Negrete, que es una novelita de fantasía de las buenas.
En fin, tenía pendiente leer la saga Caminantes, al menos sus 3 primeros libros, pues creo que saldrán más, y al fin encontré un hueco para ello, después de terminar con Dashner y su Corredor del laberinto. De paso, una serie olvidable, con una precuela francamente pobre. Si algún día tienen que escoger entre comprar mi novela y Virus Mortal, les recomiendo que compren la mía. Me esperaba mucho más de una trilogía que va camino al cine.
En cambio, los 3 libros de Carlos Sisí fueron algo relajante y agradable. La serie mejora mucho en el segundo volumen, tengan eso en cuenta si por alguna razón el primero no les resulta del todo atractivo. Y ahora que me detengo a pensar, es mi segunda incursión en el tema Z (Z de zombies, por si no les queda claro), la primera fue con Guerra Mundial Z, de Max Brooks. La idea central es que el mundo ha sido desbordado por una misteriosa epidemia que convierte a los muertos en zombies agresivos. Un grupo de supervivientes tendrá que enfrentarse a la dura tarea de subsistir en una España en ruinas, donde los Caminantes no son la única amenaza.
Definitivamente tienen que leer esta trilogía, y espero que todo lo que venga después sea de similar calidad.

Amazon quiere estafarte con este concurso literario

Amazon ha organizado un concurso literario para autores independientes bastante ridículo, considerando la cantidad de dinero que mueven al año. Para empezar, ni siquiera se han molestado en pagar un jurado decente que se lea todas las obras en concurso, el premio es por popularidad, en este casi medida según las ventas. Sí, habrán 5 obras finalistas, de las cuales Amazon elegirá un ganador, pero esos 5 obviamente no saldrán de entre los menos descargados. O sea, que puedes en cierta forma influir en el resultado final, comprándote los libros y dándoles puntuación (ni idea de cómo es el proceso, pues no puedo comprar). Si uno de ellos es un bodrio, me pregunto cómo podrías deshacer tu voto, porque no sé si Amazon admite la devolución de un ebook (lo mismo, no conozco el proceso). Por supuesto que tamaño sinsentido redunda en beneficio de Amazon (y en alguna medida en favor de los autores que compiten).
Pero la cosa no para ahí. No hay un premio en metálico para el ganador, lo cual raya en lo absolutamente tacaño. Amazon bien podría permitirse un premio de algunos miles de dólares, sobre todo porque están jugando al seguro, contra dinero ya ingresado. Al parecer consideran suficiente premio que el autor venda un poco más que los demás competidores.
Por supuesto que el sistema es bastante rentable (para Amazon) y bastante poco confiable (se presta a todo tipo de trampas, está de más decirlo). Encima se quedan con algunos derechos de forma ilimitada. Para mí, es una falta de respeto mayúscula, vuelvo a repetir que Amazon podría haber organizado algo de primer nivel, en varios idiomas, con categorías por género, y un jurado de renombre. Hay que ver que es verdad eso de que mientras más adinerado más tacaño...

Torque no quiere que hagas esto

Luego de un buen tiempo, tengo que admitir que Torque3d me gusta cada vez menos. El colmo es que ha logrado que en mi disgusto, me interese más por Unity3d, que tampoco me gustaba nada.
Aunque los creadores insisten en que Torque3d es un motor que sirve para cualquier cosa, tal parece que no quisiera que hicieras algo diferente a un FPS o TPS. Entre las muchas dificultades que me he encontrado está que no puedo usar el mouse para rotar la cámara si el cursor está activo. En ese caso tengo que implementar todo eso yo mismo en vez de usar las funciones por defecto de la cámara, lo cual me ahorraría bastante trabajo. Algo similar me ocurrió en Unigine, donde tenía que cambiar entre cursor visible e invisible para moder utilizar el UI y hacer clicks.
Otro fallo curioso y bastante tonto es que si cambio la configuración de entrada, ese cambio afecta el editor. Al intentar reasignar WASD para otros usos, la cámara en el editor dejó de funcionar. Al parecer, Torque no distingue entre el juego y el editor, ambos usan la misma configuración de entrada aunque sean distintos.
Dos meses de trabajo y aún no consigo el efecto deseado. Sin embargo, todo eso que quería implementar lo conseguí en Unity3d en media hora. WTF!!

Oculus compra RakNet y lo libera bajo licencia BSD

En una movida que aún no entiendo muy bien, Oculus Rift ha comprado RakNet, la conocida biblioteca de red, desarrollada por Kevin Jenkins. Si llevas un tiempo en el mundo de los videojuegos, del lado del desarrollador, claro, te resultará familiar RakNet. Es un middleware bastante popular, pero nunca lllegué a usarla porque no me quedaba muy claro si había o no una versión libre.Sin embargo, ahora sí me queda bien claro, ya que está disponible en Github, bajo licencia BSD. Al parecer habrá algo llamado Oculus Connect, que me suena a multiplayer o algo parecido.
Así que ya saben, ya la pueden usar libremente, cortesía de Oculus Rift, que ahora tiene dinero en la cartera para salir de compras y regalar.

La aventura del correo

De vuelta luego de las vacaciones que me dejaron bastante quemado de sol, sordo de un oído y agotado. Y eso que ni siquiera me alejé más de 20km de la ciudad. Y al fin encontré tiempo para instalar mi correo en el móvil. Para estar un poquito más cerca del desarrollo, como aquel que dice.
El famoso correo nauta.cu (nauta para los amigos, que en verdad son muy pocos), que en otro lugar del mundo hubiera pasado desapercibido, aquí es toda una novedad. Como mencioné hace un tiempo, es la primera vez que un ciudadano cubano puede tener acceso a dicho medio de comunicación en un dispositivo propio. Anteriormente, dependíamos del correo corporativo o de internet (el acceso a este último desde los centros de trabajo fue prohibido hace unos años).
Pero no todo fue miel sobre hojuelas. Nauta nació con un sinfín de problemas, el más importante: pésima planificación. A los pocos días ya había colapsado, de hecho la calidad de las comunicaciones móviles ha decaído bastante y resulta casi imposible entender a alguien por teléfono móvil. Su segundo mayor defecto es que se paga por tráfico, tanto entrante como saliente, y además pagas por el tráfico habitual del protocolo y por otras cosas que ni siquiera te imaginas. Muchas personas se acostaron con un saldo para levantarse con otro mucho menor. La solución al problema fue desactivar la transferencia de datos.
En mi caso, esperé bastante para configurar mi correo. Ya tenía la cuenta, pero las colas en la agencia para activar el GPRS y configurar el APN+el cliente de correo eran kilométricas. Y resulta que cuando al fin logro ir y activar el GPRS para mi línea, pues entonces el teléfono no conecta. Esto me llevó a flashear una ROM original (adiós CyanogenMod, creo que jamás lo volveré a usar) que no arrancaba, luego intentar JellyBlast y luego otra ROM original de Movistar. En fin, casi toda una tarde luchando con el teléfono que no arrancaba el sistema.
Al final de todo aquello... pues tampoco conectaba. Estaba a punto de creer que mi móvil tenía algún problema, cuando hoy resulta que sin configurar APN ni nada, mi teléfono se conecta y descarga el correo perfectamente. WTF!!! Desde hoy puedo llevar mi correo conmigo todo el tiempo. Incluso soy uno de esos felices usuarios que pueden dejar la transferencia de datos activa sin que el saldo se escurra inexplicablemente.
Advertencia: si tienes un amigo cubano, nunca, nunca le envíes un adjunto a su cuenta nauta. A menos que estés dispuesto a recargar el saldo de su teléfono para pagarle el gasto que representa recibir varios cientos de kb.

Primera película cubana de animación 3D

Aunque el trailer es viejo, en estos días la noticia estuvo en la TV nacional: el estreno de la primera película cubana de animación 3D está cercano.


El guión está basado en un cuento de José Martí, que a su vez es una adaptación del "Pulgarcito" de Edouard Laboulaye (no del de Charles Perrault), un detalle siempre pasado por alto (probablemente el 90% de los cubanos piensen que la historia es original de Martí).
Sí, ya sé que la animación deja mucho que desear y que los modelos no tienen la calidad Pixar a la que estamos habituados. Ya hay un listillo en los comentarios del video que se apuró a criticar. Pero deberíamos tener en cuenta, antes de lanzarnos a despalillar por la libre, que es la primera película cubana, y a pesar del alto nivel de ayuda proporcionado por los productores gallegos, una parte del trabajo fue realizada por personas que cobran un salario muy lejano al de los artistas de Pixar o Dreamworks. Estas personas seguirán cobrando lo mismo aunque la peli sea un éxito mundial. Es válido aspirar a cosas mejores, pero esas vendrán con el tiempo y la experiencia. Lo importante ahora es que el primer paso está dado, habrá que ver si le siguen otros.

Torque3d está recibiendo un poco de amor

La jugada de Garage Games al fin está rindiendo frutos, una cosecha exigua, pero cosecha al fin. Hace unos años, no había nada más alejado del software libre que la familia de productos Torque. Pero la vida da vueltas, el motor que una vez fue el caballo de batalla de los desarrolladores indie (creo que el término ni siquiera existía en esa época) estuvo a punto de perderse, como lágrimas en la lluvia. Ante esta disyuntiva, Garage Games decidió abrir el código de Torque bajo licencia MIT.
Pero las historias felices no ocurren en la vida real. No apareció de la nada una comunidad dispuesta y amorosa que recibiera a Torque como el mesías salvador de los videojuegos libres. Para empezar, no era un motor multiplataforma. Nunca se le exigió tal cosa. La estructura detrás de él estaba orientada a cliente que pagaban licencia y soporte, así que la documentación es anticuada y escasa. Han tenido que pasar un par de añitos para que Torque gane contribuyentes y al fin se vean los resultados.
Por ejemplo, ya el port para Linux de Torque3d es una realidad. Torque2d incluso va más adelantado en cuanto a plataformas soportadas. El renderer OpenGL avanza, y ya hay un voluntario trabajando en un renderer DirectX 11. Otra contribución muy bienvenida es la migración de deferred lighting a deferred shading. Explicado a grosso modo, el algoritmo actual (deferred lighting) necesita dos pases y tiene ciertos inconvenientes, pero se está implementando un deferred shading más eficiente y moderno. Quizás podríamos tener Physically Based Rendering en algún momento.
Algunas de estas cosas caerán con al 3.6, otras, no tengo idea de cuándo vendrán. Sin embargo, sigo insistiendo en que Torque, más que nada, necesita documentación. Habrá que ver cuándo llega.

Worldbuilding, worldbuilding, worldbuilding!

Un consejo de alguien que ya pasó por eso, si vas a empezar tu propia saga de novelas o juego, antes deberías hacer un poco de worldbuilding. Worldbuilding, o construcción de mundos, traducido muy literalmente al idioma de Cervantes, es el proceso de crear el universo donde está ambientado el susodicho proyecto de novela o juego.
Bueno, pero se supone que la novela en sí debería detallar el universo en que se desarrolla, me diría cualquiera que haya pasado por un taller literario. Y es cierto. La novela, juego, serie de TV, o lo que sea, debe describirnos el lugar, la sociedad, etc. Sin embargo, es un ejercicio muy útil y que nos ahorrará descalabros, sentarnos con antelación y definir con cuidado (o al menos, con algo de cuidado) todos esos elementos, empezando por el lugar. Recuerdo un taller literario cuyo coordinador odiaba a muerte los mapas en los libros. Aunque tu mapa no llegue a la obra impresa (o digitalmente publicada en Amazon), es una herramienta que te permitirá organizar mejor la acción. ¿Hacia dónde viajan los personajes? ¿Cuánto tiempo les tomaría el viaje? En nuestro mundo actual acostumbramos a caminar poco. Sí, incluso yo camino relativamente poco, apenas unos kilómetros al día. Es por ello que no tenemos una noción realista de cuánto toma viajar a pie desde una ciudad a otra, cuánto agota una marcha forzada de cuarenta minutos o más.
Todas esas sencilleces se visualizan mejor con un mapa, a menos que seas un escritor veterano y con cabeza para recordar todos los detalles de tu mundo particular.
Otro elemento en que el mapa ayuda es saber dónde vive cada quién, y aquí el lugar se combina con quienes: la sociedad que habita tu universo, sus facciones, razas, y demás.
El tercer elemento esencial es la fauna y flora del lugar. No escatimes bichos, pero por favor, estudiar un poco de biología primero no está de más, o tal vez leerte algún buen ensayo sobre worldbuilding, los chicos del taller Espacio Abierto tienen algunos muy buenos. Si metes un monstruo de diez toneladas de peso, con cuernos en la nariz y la cola, capaz de volar, será mejor que tengas una muy buena justificación mágica para eso.
No está de más enriquecer el worldbuilding con un poco de historia antigua y reciente, detalles de la tecnología o magia y cosas por el estilo. No suelo llegar a incluir trasfondo para los personajes específicos, porque eso ya más bien tiene que ver con la trama del proyecto en cuestión.
Todas estas cosas evitarán que se te "olvide" incluir algo que podría ser crucial, lo que me sucedió con mi primera novela de Elymuria. En teoría, iba a ser una introducción al universo de mi proyecto de juego, sin embargo el resultado final carecía de muchos elementos que deberían estar ahí: como las pociones. Las pociones nunca faltan en un RPG, sin embargo, descubrí que las había pasado por alto completamente. Peor aún, la idea inicial era para una novela sencilla y corta, así que las aventuras eran muy pocas. Cuando lees la novela, te da la impresión de que hay muy pocos monstruos en Elymuria, y lo peor es que este problema se transfirió a la segunda novela. De sucederte esto, te verás obligado a meter cosas con calzador, o luchar con inconsistencias, y no importa lo pequeñas que sean, alguien siempre las encontrará si tu novela llega a más de cuatro gatos.
De nuevo, los remito a algún ensayo decente sobre el tema, pues este texto es más bien para aclararles que el asunto existe y es de importancia. Solo resta desearles suerte en su futuro best-seller, ya sea juego o novela.

¿Es posible hacer un juego libre con un motor privativo?

La pregunta del millón, a la cual no he obtenido respuesta precisa ni en FreeGamedev ni en la lista de correos de usuarios de Linux en Cuba. Unos dicen que sí, otros que no.
Supongamos que queremos hacer un juego libre, open source. Torque3D es la opción más avanzada, a menos que estemos dispuestos a invertir mucho cerebro en agregarle a Ogre todo lo que falta (a propósito, Ogre 1.8 no compila en Fedora 19 ni en Linux Mint 16; aún espero respuesta en el foro al respecto). Pero Torque es... digamos que tiene sus cosas, y solo de mirarlo se te quitan todos los deseos de programar en él. ¿Irrlicht? ¿CrystalSpace? Ninguno. Vamos a ahorrarnos la lista (aunque en serio recomiendo echarle un buen vistazo a Godot). ¿Podríamos hacerlo con Unity? Una herramienta potente, versátil, fácil de aprender y documentadísima. El motor de elección de un montón de proyectos recientes como Wasteland 2 y Pillars of Eternity. Dan una versión gratis, pero si no te disgusta ponerte el parche en el ojo, puedes encontrar la versión Pro en cualquier sitio de torrents. Junto con muy buenos libros, que te llevarán de cero a héroe en 21 días.
Supongamos que puedes pagar 19 dólares al mes. En ese caso eres un burgués acomodado y consumista y deberías donar dinero a las personas con hambre del tercer mundo, como yo. Ah, y también podrías pagar la suscripción de Unreal Engine 4, un motor bestia entre los bestias, y no escaso de documentación.
Aquí empieza el debate filosófico y ético. ¿Es posible hacer un juego libre con Unity3d o Unreal? Yo desisto de encontrar la respuesta correcta. La mía es que haré lo que me dé la gana.

El misterio de las 300 visitas al día

Por favor, necesito que alguien me diga si me he vuelto famoso de momento, y de ser así, dónde está la fortuna que me corresponde, para poder empezar a protagonizar escándalos y borracheras (un buen escándalo demanda cierto financiamiento). Desde hace un mes el tráfico de visitas se ha incrementado notablemente, incluso, durante la semana pasada, el promedio se mantiene sobre las 300 diarias, a pesar de que no hay ninguna publicación. Lo normal es que descienda a los 20-30 durante los días posteriores a la última anotación. El tráfico habitual en este blog nunca sobrepasaba las 50-60 visitas, y creo que cuenta con unos 100 seguidores a través del feed.
El gran emisor de visitantes es Estados Unidos, seguido a veces por Rusia o india. No me extraña la India, porque tengo un spammer jodedor tratando de colarme enlaces en los comentarios, los cuales no dejo pasar. Si quieres un dofollow, pues esfuérzate en dejar un comentario con algo de sentido, si no, te puedes ir al carajo. Pero el español nunca ha sido un lenguaje muy popular en Rusia, así que es raro que este país se mantenga por encima de España en las visitas.
El tráfico no parece venir de los buscadores ni de ningún otro referente, más bien son visitas directas. El mismo no viene acompañado de comentarios, así que alguien me ha sugerido que podrían ser bots. Lo que no me explico es qué buscan esos bots. En fin, ni puta idea de qué rayos está pasando.