jueves, julio 31, 2014

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.


martes, julio 29, 2014

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.

lunes, julio 21, 2014

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.

miércoles, julio 16, 2014

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.

lunes, julio 14, 2014

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...

viernes, julio 11, 2014

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!!

miércoles, julio 09, 2014

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.

martes, julio 08, 2014

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.