Nunca fui muy aficionado a Wine. En verdad, prefiero tener un arranque dual (ni siquiera una máquina virtual) y los dos sistemas operativos "de verdad". Sin embargo, en esta PC que uso la mayor parte del tiempo solo tengo Linux, así que me vi obligado a hacer algunas pruebas con juegos, a ver cómo se movían. Tengo que decir que aunque no he tenido mucho éxito, estoy complacido con el resultado. Si nos detenemos a pensar, emular un sistema operativo no es nada fácil y en especial los juegos tienen características muy especiales.
Y digo que he tenido poco éxito porque de las cosas que he probado ninguna ha funcionado, o más exactamente, lo hacen a medias. El beta de Starcraft 2, aunque en teoría debe funcionar, no lo hace, se queda la pantalla negra con el cursor. En cambio, si lo cargo directamente, me entra perfecto a la pantalla para loguearme al Battle Net.
Anarchy Online, lo mismo, luego de completado el proceso de parcheo, no logro pasar del login, debido a un error de timeout. En cambio, el Warhammer 40k sí funcionó correctamente, al igual que el Warcraft 3.
Lucas, molesto porque le copiaron su sable de luz
A George Lucas no le ha hecho ninguna gracia que una empresa de Hong Kong esté comercializando un dispositivo láser portable, muy similar a los sables de luz que tanto trabajo le costó crear. En respuesta, fustigó a sus abogados, que estaban sentados echándose fresco en sus partes, para que se curraran una carta de cease and desist. Aquí podemos ver el artilugio de la discordia:
Dicho aparato tiene usos militares, investigativos y médicos, curiosamente parecido a los versátiles sables de luz de la saga, como podemos apreciar en la siguiente ilustración.
Si no se detiene la venta, Lucas amenaza con emprender acciones legales sin más aviso. O sea, todo un bloqueo de naves de la Federación de Comercio.
Noticia original aquí.
Dicho aparato tiene usos militares, investigativos y médicos, curiosamente parecido a los versátiles sables de luz de la saga, como podemos apreciar en la siguiente ilustración.
Si no se detiene la venta, Lucas amenaza con emprender acciones legales sin más aviso. O sea, todo un bloqueo de naves de la Federación de Comercio.
Noticia original aquí.
Trabajando con el nuevo sistema de terrenos de Ogre
Hoy hice algunas pruebas sencillas con el nuevo sistema de terrenos de Ogre. En versiones anteriores, el terreno era un componente totalmente atípico de las escenas. No podías acceder a él, eliminarlo sin eliminar todos los nodos al mismo tiempo, ni tampoco era muy fácil de crear solo con código. Necesitabas un archivo de configuración, que se cargaba y generaba la geometría.
A partir de la rama 1.7 se incluye un nuevo sistema, al respecto he hablado aquí hasta la saciedad, pero aún no lo había probado en el proyecto. Ahora disponemos de una clase Ogre::Terrain, que nos ofrece mucha flexibilidad a la hora de crear un terreno y manejar sus propiedades, podemos pasarle un Ogre::Image como su mapa de alturas, manejar el paginado para lograr escenarios infinitos, agregar texturas... Y por supuesto, siempre podemos cargarlo a la manera antigua y fácil.
El demo me parece un poco complejo, porque cubre muchas características nuevas, en mi opinión debieron hacerse dos demos: uno para mostrar el sistema en su forma más sencilla y otro para ilustrar la edición en tiempo de corrida de los terrenos. Pero complejo no quiere decir imposible de entender, solo lleva más tiempo.
A partir de la rama 1.7 se incluye un nuevo sistema, al respecto he hablado aquí hasta la saciedad, pero aún no lo había probado en el proyecto. Ahora disponemos de una clase Ogre::Terrain, que nos ofrece mucha flexibilidad a la hora de crear un terreno y manejar sus propiedades, podemos pasarle un Ogre::Image como su mapa de alturas, manejar el paginado para lograr escenarios infinitos, agregar texturas... Y por supuesto, siempre podemos cargarlo a la manera antigua y fácil.
El demo me parece un poco complejo, porque cubre muchas características nuevas, en mi opinión debieron hacerse dos demos: uno para mostrar el sistema en su forma más sencilla y otro para ilustrar la edición en tiempo de corrida de los terrenos. Pero complejo no quiere decir imposible de entender, solo lleva más tiempo.
Anarchy Online, otra vez
Pues si no sucede otra cosa, creo que me quedé sin Anarchy Online. Luego de concluir el proceso de parcheado, resulta que no logro pasar de la creación del personaje. Ahí tengo que abortar y a la siguiente corrida, el personaje aparece como creado, pero me da un error de timeout si intento usarlo.
Y ya que volvemos a hablar de este juego, había un detalle acerca de su diseño que quería comentarles. En el post anterior mencionaba que su diseño es bastante rico, y me refería en especial a su árbol de habilidades. Al igual que World of Warcraft (del que no puedo hablar mucho, pues mi experiencia es limitada), Anarchy Online ofrece muchas habilidades para cada profesión, y un sistema muy parecido para mejorarlas, salvando ciertas diferencias, claro. En esto, se alejan mucho del estilo del típico MMORPG gratis asiático, que se convierte en algo aburrido: obtienes una habilidad en el nivel X, la próxima en el Y, y así sucesivamente. Una de las cosas que aprecio en un MMORPG (aparte de que sea gratis) es que me dejen escoger entre varias habilidades. Aunque me equivoque. Y también la posibilidad de mejorar esas habilidades con el tiempo.
Esa es la única crítica que puedo hacerle al diseño de Regnum Online, que en ese apartado es un poco engañoso. En RO por cada nivel obtenemos una cantidad de puntos que podemos usar para subir disciplinas y cada X niveles (3 o algo así) recibimos puntos de poder. Ojo con esto, subir el nivel de las disciplinas no incrementa la potencia de las habilidades, para eso necesitas los susodichos puntos de poder. Por tanto, en la práctica necesitas ganar tres niveles para poder incrementar un par de habilidades. No muy lejos del clásico esquema asiático.
En fin, como pueden ver me gusta tener la posibilidad de elegir, incluso a costa de equivocarme y también la posibilidad de incrementar progresivamente las habilidades que escojo, sin necesidad de esperar dos o tres niveles.
Y ya que volvemos a hablar de este juego, había un detalle acerca de su diseño que quería comentarles. En el post anterior mencionaba que su diseño es bastante rico, y me refería en especial a su árbol de habilidades. Al igual que World of Warcraft (del que no puedo hablar mucho, pues mi experiencia es limitada), Anarchy Online ofrece muchas habilidades para cada profesión, y un sistema muy parecido para mejorarlas, salvando ciertas diferencias, claro. En esto, se alejan mucho del estilo del típico MMORPG gratis asiático, que se convierte en algo aburrido: obtienes una habilidad en el nivel X, la próxima en el Y, y así sucesivamente. Una de las cosas que aprecio en un MMORPG (aparte de que sea gratis) es que me dejen escoger entre varias habilidades. Aunque me equivoque. Y también la posibilidad de mejorar esas habilidades con el tiempo.
Esa es la única crítica que puedo hacerle al diseño de Regnum Online, que en ese apartado es un poco engañoso. En RO por cada nivel obtenemos una cantidad de puntos que podemos usar para subir disciplinas y cada X niveles (3 o algo así) recibimos puntos de poder. Ojo con esto, subir el nivel de las disciplinas no incrementa la potencia de las habilidades, para eso necesitas los susodichos puntos de poder. Por tanto, en la práctica necesitas ganar tres niveles para poder incrementar un par de habilidades. No muy lejos del clásico esquema asiático.
En fin, como pueden ver me gusta tener la posibilidad de elegir, incluso a costa de equivocarme y también la posibilidad de incrementar progresivamente las habilidades que escojo, sin necesidad de esperar dos o tres niveles.
Anarchy Online
Uno de los MMORPG que más me han gustado ha sido el siempre olvidado y vilipendiado Anarchy Online. Hace varios años introdujeron la modalidad de cuentas free, que dan la posibilidades de jugar gratis, aunque sin acceso a las expansiones (ahora la cuenta free también permite acceder al contenido de Notum Wars, la primera expansión). Para muchos, un MMORPG gratis es sinónimo de un juego pobre, incluso, como ya dije, Anarchy Online nunca fue un título muy estimado, por razones que desconozco.
AO tiene un diseño rico y variado, sin caer en lo complejo, de ahí que uno se meta en el juego muy rápido, a pesar de sus múltiples profesiones, cada una con un amplio conjunto de habilidades. El contenido es enorme, como muchos lugares que explorar, a pesar de llevar un personaje a nivel 60 no visité ni siquiera la mitad del contenido al que tenía acceso con mi cuenta free. La interfaz de usuarios es una de las más avanzadas que he visto, por ejemplo, para publicar las especificaciones de un objeto solo tienes que arrastrarlo hasta el chat y automáticamente se inserta un enlace a la ayuda interna con la descripción de dicho ítem.
Si además agregamos que soy fan de la ciencia ficción, pues está más que justificado que me guste el juego. Lamentablemente llegó un momento que dejó de conectarse y no insistí más ni contacté al servicio técnico (a pesar de usar una cuenta free, en una ocasión atendieron mi solicitud de ayuda). Ahora estoy intentando volver a jugarlo, desde Wine, pero sin resultado todavía.
Así que más adelante les comentaré si lo logro o no.
AO tiene un diseño rico y variado, sin caer en lo complejo, de ahí que uno se meta en el juego muy rápido, a pesar de sus múltiples profesiones, cada una con un amplio conjunto de habilidades. El contenido es enorme, como muchos lugares que explorar, a pesar de llevar un personaje a nivel 60 no visité ni siquiera la mitad del contenido al que tenía acceso con mi cuenta free. La interfaz de usuarios es una de las más avanzadas que he visto, por ejemplo, para publicar las especificaciones de un objeto solo tienes que arrastrarlo hasta el chat y automáticamente se inserta un enlace a la ayuda interna con la descripción de dicho ítem.
Si además agregamos que soy fan de la ciencia ficción, pues está más que justificado que me guste el juego. Lamentablemente llegó un momento que dejó de conectarse y no insistí más ni contacté al servicio técnico (a pesar de usar una cuenta free, en una ocasión atendieron mi solicitud de ayuda). Ahora estoy intentando volver a jugarlo, desde Wine, pero sin resultado todavía.
Así que más adelante les comentaré si lo logro o no.
Arriba, coge tu juego en Lisp aquí
Se acabó el abuso señores. Tu juego en Lisp aquí.
Me he encontrado esta noticia en Barrapunto, nada menos que una exposición de juegos hechos en Lisp. Sobran los comentarios...
Me he encontrado esta noticia en Barrapunto, nada menos que una exposición de juegos hechos en Lisp. Sobran los comentarios...
Juego de estrategia basado en Unigine
En el blog de desarrollo de Unigine han publicado un par de imágenes de un de estrategia juego que están haciendo, para PC y PS3. Echenle un vistazo, por lo menos yo me he quedado maravillado de la calidad gráfica. Lo que necesita este motor es algún proyecto de renombre que lo ponga a la altura de Unreal Engine o Gamebryo y quizás también algún esquema de licenciamiento más atractivo para desarrolladores indie, porque lo primero no llegará muy fácil si el motor no se hace con una base de usuarios amplia. Y ahí es donde entran a jugar iniciativas como la de Epic, que cobra después que has vendido el juego, la Crytek, que lo da gratis a estudiantes o la de Unity3D, que tiene una licencia gratis también para desarrolladores independientes.
Nueva plantilla
Hay días en que el lado gay resalta más, y parece que hoy fue uno de esos días para mí. Por casualidad fui a parar al nuevo editor de plantillas de Blogger y me llamó la atención una de ellas, con la posibilidad de poner tres columnas. Aunque al final la división de la columna de la derecha no funciona como yo esperaba, logré un aspecto aceptable, al menos en mi opinión.
El nuevo editor permite hacer muchas cosas, que no tuve tiempo ni interés en probar. También, al fin, logré los botones para compartir las anotaciones en las redes sociales más populares, cosa que anteriormente hacía con un código tomado de Feedburner, que no era tan cómodo y compacto visualmente. Ahora ya vienen en la plantilla. De paso limpié cosas viejas, como los anuncios de Wointz en el pie de página, a fin de cuentas no me reportaban visitas. Una pena, porque la idea es buena, pero probada hasta la saciedad y no funciona, porque simplemente los lectores ignoran los anuncios a menos que sean cosas que en verdad necesiten.
El nuevo editor permite hacer muchas cosas, que no tuve tiempo ni interés en probar. También, al fin, logré los botones para compartir las anotaciones en las redes sociales más populares, cosa que anteriormente hacía con un código tomado de Feedburner, que no era tan cómodo y compacto visualmente. Ahora ya vienen en la plantilla. De paso limpié cosas viejas, como los anuncios de Wointz en el pie de página, a fin de cuentas no me reportaban visitas. Una pena, porque la idea es buena, pero probada hasta la saciedad y no funciona, porque simplemente los lectores ignoran los anuncios a menos que sean cosas que en verdad necesiten.
Jugando con glade3 y pygtk
Hoy he hecho un alto para echar una rápida mirada a algo que tenía pendiente desde hace un buen tiempo: desarrollo con python, usando pygtk y glade para construir interfaces. Me sorprendió lo sencillo, una vez que hube logrado atar todos los cabos sueltos. El problema es que hay abundancia de ejemplos, pero casi todos fallan en indicar detalles tan importantes como que hay dos formatos: gtkbuilder y libglade (este último obsoleto o algo así) que se cargan de diferentes formas. Por tanto, hay que tomar de diferentes fuentes, algunas de ellas bastante desactualizadas, para obtener un resultado que funcione.
Por lo demás, Glade me parece bastante maduro, aunque para cosas complejas se dice que se vuelve un poco complicado. Bueno, eso es lo malo de las cosas complejas. De Gtk, me resulta molesto tener que usar contendeores para todo, hay que pensar muy en detalle la disposición que queremos dar a cada widget, si se nos queda algo fuera y no tienes una buena experiencia armando interfaces, te puedes hacer un lío decidiendo qué contenedor usar para ubicar el objeto donde quieres.
Python... bueno, es algo nuevo para mí y que tengo que estudiar, por muchas razones. En especial porque es el lenguaje para escribir scripts en Blender.
Por lo demás, Glade me parece bastante maduro, aunque para cosas complejas se dice que se vuelve un poco complicado. Bueno, eso es lo malo de las cosas complejas. De Gtk, me resulta molesto tener que usar contendeores para todo, hay que pensar muy en detalle la disposición que queremos dar a cada widget, si se nos queda algo fuera y no tienes una buena experiencia armando interfaces, te puedes hacer un lío decidiendo qué contenedor usar para ubicar el objeto donde quieres.
Python... bueno, es algo nuevo para mí y que tengo que estudiar, por muchas razones. En especial porque es el lenguaje para escribir scripts en Blender.
Cuba en Mundiales de fútbol
Estamos en pleno Mundial, y obviamente yo quisiera estar en casa disfrutando de los partidos de octavos, pero desgraciadamente un olvido ayer me ha obligado a tener que volver a la oficina hoy sábado por la mañana.
Pero ya que hablamos de mundiales de fútbol, les haré un poco de historia acerca de Cuba y los mundiales. Nuestro país está entre los primeros en béisbol, voleibol, boxeo y judo (sí, eso de pegarle a los demás se le da bien a los cubanos), pero en fútbol somos bastante mediocres.
Nuestra selección nacional solo ha logrado llegar hasta un campeonato, el de 1938, en Francia. Según la Wikipedia, Cuba derrotó en repetición a Rumania (al parecer el sistema era diferente entonces) y fue eliminada por Suecia. Nunca más Cuba logró estar cerca ni siquiera de clasificar, excepto en el Mundial anterior (2006), cuando empataron dos veces con Costa Rica. Un par de juegos en los que el equipo cubano fue muy superior, a tal punto llegaron a estar los costarricenses contra la pared que en una ocasión, al lastimarse un jugador de Costa Rica, los cubanos botaron el balón para detener el partido. Al reanudarse el encuentro, olvidando la más elemental cortesía de juego, Costa Rica sacó de banda y se quedó con la pelota.
Sin embargo, como dice una frase que vi en twitter: el fútbol es como el sexo, no vale estar arriba, también hay que meterla. Cuba necesitaba ganar y los múltiples errores ofensivos y algunos defensivos le costaron la clasificación. Por eso, cuando alguien me pregunta acerca del equipo de fútbol, le respondo: sí, son buenos, es solo que necesitan una portería más grande para poder anotar.
Pero ya que hablamos de mundiales de fútbol, les haré un poco de historia acerca de Cuba y los mundiales. Nuestro país está entre los primeros en béisbol, voleibol, boxeo y judo (sí, eso de pegarle a los demás se le da bien a los cubanos), pero en fútbol somos bastante mediocres.
Nuestra selección nacional solo ha logrado llegar hasta un campeonato, el de 1938, en Francia. Según la Wikipedia, Cuba derrotó en repetición a Rumania (al parecer el sistema era diferente entonces) y fue eliminada por Suecia. Nunca más Cuba logró estar cerca ni siquiera de clasificar, excepto en el Mundial anterior (2006), cuando empataron dos veces con Costa Rica. Un par de juegos en los que el equipo cubano fue muy superior, a tal punto llegaron a estar los costarricenses contra la pared que en una ocasión, al lastimarse un jugador de Costa Rica, los cubanos botaron el balón para detener el partido. Al reanudarse el encuentro, olvidando la más elemental cortesía de juego, Costa Rica sacó de banda y se quedó con la pelota.
Sin embargo, como dice una frase que vi en twitter: el fútbol es como el sexo, no vale estar arriba, también hay que meterla. Cuba necesitaba ganar y los múltiples errores ofensivos y algunos defensivos le costaron la clasificación. Por eso, cuando alguien me pregunta acerca del equipo de fútbol, le respondo: sí, son buenos, es solo que necesitan una portería más grande para poder anotar.
Perfil de usuario y directorio para el juego
La mayoría de las aplicaciones (no solo juegos) necesita un lugar donde guardar al configuración personalizada y datos para cada usuario. La solución óptima es hacerlo en el directorio home o perfil, para los amigos Windows. Gracias a Engel, ya tenemos eso funcionando en Win y hoy logré completar la parte Linux.
Para Windows, el código para obtener el camino al perfil del usuario quedaría de la siguiente forma:
std::string dir;
char AppDir[MAX_PATH+1] = {'\0'};
ITEMIDLIST* pidl;
HRESULT hRes = SHGetSpecialFolderLocation( NULL, CSIDL_APPDATA|CSIDL_FLAG_CREATE , &pidl );
if (hRes==NOERROR)
{
SHGetPathFromIDList( pidl, AppDir );
}
dir = std::string(AppDir) + "/TheArk/";
if(_mkdir(dir.c_str()) != 0){
// "already exists" error is fine, else we failed.
errno_t err;
_get_errno(&err);
if( err != EEXIST)
throw std::exception(("Could not create directory "+dir).c_str());
}
return dir;
En Linux, así:
std::string dir;
char *homeDir=(char*)malloc(64);
int err;
homeDir = getenv("HOME");
dir = std::string(homeDir) + "/.ark/";
if(mkdir(dir.c_str(),S_IRUSR | S_IWUSR | S_IXUSR) != 0){
// "already exists" error is fine, else we failed.
if( errno != EEXIST)
throw std::exception();
}
return dir;
Un detalle, el método getenv también funciona en Windows, y devuelve el camino al perfil del usuario. Se aceptan sugerencias!
Para Windows, el código para obtener el camino al perfil del usuario quedaría de la siguiente forma:
std::string dir;
char AppDir[MAX_PATH+1] = {'\0'};
ITEMIDLIST* pidl;
HRESULT hRes = SHGetSpecialFolderLocation( NULL, CSIDL_APPDATA|CSIDL_FLAG_CREATE , &pidl );
if (hRes==NOERROR)
{
SHGetPathFromIDList( pidl, AppDir );
}
dir = std::string(AppDir) + "/TheArk/";
if(_mkdir(dir.c_str()) != 0){
// "already exists" error is fine, else we failed.
errno_t err;
_get_errno(&err);
if( err != EEXIST)
throw std::exception(("Could not create directory "+dir).c_str());
}
return dir;
En Linux, así:
std::string dir;
char *homeDir=(char*)malloc(64);
int err;
homeDir = getenv("HOME");
dir = std::string(homeDir) + "/.ark/";
if(mkdir(dir.c_str(),S_IRUSR | S_IWUSR | S_IXUSR) != 0){
// "already exists" error is fine, else we failed.
if( errno != EEXIST)
throw std::exception();
}
return dir;
Un detalle, el método getenv también funciona en Windows, y devuelve el camino al perfil del usuario. Se aceptan sugerencias!
MSI y nuevo sistema de propiedades
Gracias a la ayuda invaluable de Engel, ya tenemos un sistema para crear instaladores MSI. Solo falta integrarle el paquete de redistribución de VS 2010 y ya estaríamos listos para liberar versiones para Windows. Otro detalle importante es que ya casi el juego está listo para evitar el uso de una cuenta administrativa, ahora la configuración y los juegos salvados se guardarán en el perfil del usuario, como debe ser, tanto en Windows como en Linux. Ahora solo hay dos temas que nos separan de un alpha preview: la física y tener nuestros propios modelos.
También implementé el nuevo sistema de propiedades para las entidades, aún muy básico, que sirve para guardar todo un conjunto de información propia de cada entidad como los nombres de las animaciones, los scripts, etc. Una propiedad es un par nombre/valor, que por el momento solo admite valores de tipo string. La clase Entity dispone de dos accesores: setProperty() y getProperty() que establecen y obtienen los valores. Por ejemplo, si quisieras obtener el nombre de la animación Caminar de una entidad, sería así:
anim_name = entidad->getProperty("animWalk");
Anteriormente necesitaba unas funciones auxiliares para iniciar animaciones, porque no tenía una forma sencilla de obtener los nombres.
Este sistema me lo inspiró el exporter de CrystalSpace para Blender.
También implementé el nuevo sistema de propiedades para las entidades, aún muy básico, que sirve para guardar todo un conjunto de información propia de cada entidad como los nombres de las animaciones, los scripts, etc. Una propiedad es un par nombre/valor, que por el momento solo admite valores de tipo string. La clase Entity dispone de dos accesores: setProperty() y getProperty() que establecen y obtienen los valores. Por ejemplo, si quisieras obtener el nombre de la animación Caminar de una entidad, sería así:
anim_name = entidad->getProperty("animWalk");
Anteriormente necesitaba unas funciones auxiliares para iniciar animaciones, porque no tenía una forma sencilla de obtener los nombres.
Este sistema me lo inspiró el exporter de CrystalSpace para Blender.
Nueva versión de Planeshift
Ya tenemos otra versión del MMORPG open source Planeshift, con algunas cosas nuevas, pero que desgraciadamente aún no arregla el problema que me impide conectarme. Resulta interesante también leer una entrevista al líde del proyecto que se publicó en OnRPG.
Para los que no lo saben, Planeshift es un MMORPG 3d, de fantasía, completamente gratis: no hay contenido premium, ni items de pago, nada. Probablemente el proyecto más conocido basado en el motor CrystalSpace, del cual he hablado mucho últimamente.
Para los que no lo saben, Planeshift es un MMORPG 3d, de fantasía, completamente gratis: no hay contenido premium, ni items de pago, nada. Probablemente el proyecto más conocido basado en el motor CrystalSpace, del cual he hablado mucho últimamente.
Suscribirse a:
Entradas (Atom)

