Compilar programas para Windows desde Linux – Parte 1

¿Eres un usuario de Linux y disfrutas haciendo tus programitas en C o C++ pero quieres compartirlos con el resto del mundo que seguramente usa Windows?. Compartirles el código es una posibilidad pero el usuario promedio no sabría qué hacer con él así que tus opciones se reducen a entregarles un ejecutable listo para usar en Windows. Por suerte, compilar tus programas para Windows es relativamente fácil en Linux, sobre todo si alguna vez usaste MinGW en Windows. MinGW es, por así decirlo, el gcc para Windows. MinGW ofrece compiladores para C y C++ (entre otros) que generan archivos ejecutables .exe para Windows así que, como te imaginarás, solamente tenemos que instalar MinGW para poder usarlo para generar ejecutables para Windows desde nuestra distro de Linux. Para instalar MinGW en Debian Stretch, basta con instalar el paquete mingw-w64 desde el gestor de paquetes.

Read More

Juegos indie mexicanos en Kickstarter – Parte 8

Han aparecido varios nuevos proyectos de videojuegos indie mexicanos en Kickstarter desde el último post de esta serie.

El primero es Raining Crystals Chronicles, un juego de plataformas en “2.5D” hecho por el estudio Loboslandia. El término 2.5D es típicamente utilizado, como en este caso, para referirse a un clásico juego en 2D con gráficos en 3D. A pesar de que el juego promete un sistema de combos, en los videos no se puede apreciar nada parecido a un combo aunque debo reconocer que se puede apreciar que tiene programados al menos un par de ataques y movimientos complejos como el gancho para colgarse de los techos y plataformas al más puro estilo de Bionic Commando. El juego promete un demo próximamente que estoy interesado en probar. En comparación con otras campañas promedio de juegos mexicanos en Kickstarter, este juego al menos tiene algo que mostrar, lo que me hace tomarlo como un proyecto más serio. Su meta de $90,000 pesos no es descabellada. Su página de internet aún no funciona y eso le resta puntos.

Divenia debería sonar conocido ya que la campaña para este juego ha sido lanzada con anterioridad. Primero fue Divenia One, después Divenia Zero y ahora es simplemente Divenia (aunque no estoy seguro si el nombre del juego es sólo Divenia o Divenia Comic Style Graphics SciFi Sidescroller Videogame). Esta nueva campaña parece ser simplemente un relanzamiento de Divenia Zero aunque puedo estar equivocado. Lo que me molesta sobre esta versión 2D de Divenia es la detección de colisiones; no he tenido tiempo de probar el demo o ver siquiera si corre en Linux pero al menos por lo que se aprecia en los videos, los enemigos no tienen animaciones claras cuando son golpeados o, lo que sería peor, las colisiones parecerían estar basadas en el modelo 3D de los personajes. Si algo nos enseñó Street Fighter IV es que si vas a hacer un juego en 2D, no importa si tus gráficos son 3D, tus colisiones deben usar el clásico sistema de colisiones 2D. La meta de $3,990 pesos parece una broma a estas alturas considerando que es lo que puedes ganar en un mes de trabajo. Espero poder probar el demo pronto (y que funcione en Linux) para poder dar una opinión más critica.

ChernoMeat es “un juego de supervivencia donde el jugador controla un pedazo de carne”. Si la premisa suena como una broma, el hecho de que la campaña no tenga más que una imagen para mostrar lo hace aún más ridículo. La meta de $3,000 pesos puede parecer aceptable pero incluso con una meta como esta me parece difícil que la alcancen cuando lo mejor que puedes mostrar son links a los juegos sencillos que haz hecho antes. Esta campaña tal vez no sea estrictamente una broma  o estafa pero tampoco puedo tomarla con seriedad.

La campaña para crear el Salón Arcade más grande de Latinoamérica ha sido relanzada. A diferencia de la campaña original, al menos esta vez tienen algunas fotos para mostrar pero ¿es su imagen de presentación una captura de pantalla de un frontend 3D de MAME o una foto de Luna City?. En cualquier caso, considerando que el boom de las arcades o maquinitas en México quedó atrás hace al menos una década, la meta de $850,000 pesos parece inalcanzable.

Por último, Project Vape, un videojuego de CalvaCorp. programado por un maestro de matemáticas del IPN. ¿Qué mo molesta más de esta campaña? Para empezar, viniendo de un maestro del IPN, una de las universidades más importantes de México, uno esperaría más contenido y no el típico “tenemos una idea y nada que mostrar, queremos 2 millones de pesos”. El hecho de que el video de presentación y toda la campaña en general estén en inglés, sin subtítulos ni opción para leerla en español es una de mis principales quejas para todo proyecto mexicano. Luego está todo el “tenemos una gran idea para un juego que hemos estado desarrollando por 6 meses pero no les vamos a mostrar nada más que un par de dibujos”. Bueno, al menos ver al personaje secundario en el video leyendo su script en inglés en la pantalla de la computadora y la clásica recompensa de pagar $10,000 para tener una cena con los desarrolladores me hicieron reir un rato, eso le da puntos por comicidad involuntaria. Y luego, publicaron su “primer intro”, un video que aparte del logo de Unreal y el logo del estudio, no tiene nada que ver con algo que parezca remotamente un videojuego. Los clips obviamente no fueron grabados con la misma cámara, por lo que su “intro” parece simplemente un collage de clips aleatorios que sacaron de internet, espero que al menos los clips estuvieran bajo licencias Creative Commons para que los puedan usar. El “intro” termina con un tercer diseño distinto del personaje principal con un estilo que no tiene nada que ver con lo que presentan en su “intro”. Creo que seguir el desarrollo de este proyecto generará al menos un poco de diversión.

 

 

Previsualizar archivos de Markdown para github

Si estás escribiendo un archivo de Markdown para tu repositorio de github, por ejemplo, README.md, puedes usar el editor en línea de github, pero si estás trabajando offline es muy probable que quieras previsualizar el resultado antes de subirlo a github. Por suerte existe grip para esa tarea. grip es un paquete de python que puedes instalar usando pip pero que en Linux también lo puedes instalar desde el gestor de paquetes instalando el paquete grip.

Una vez instalado basta con que te dirijas al directorio en el que tienes tu archivo de Markdown y ejecutes el comando grip. Al ejecutarlo, grip montará un localhost que te permitirá previsualizar tu archivo en el navegador. Si tu archivo de Markdown tiene un nombre distinto a README.md, puedes especificar el nombre en la línea de comandos:

monstruosoft@debian:~/mi-proyecto$ grip LEEME.md 
* Running on http://localhost:6419/ (Press CTRL+C to quit)

Ahora puedes abrir la dirección indicada en tu navegador para previsualizar tu archivo de Markdown. Así de fácil.

Postear código en tu blog de wordpress.com

Postear código es algo que hago con frecuencia en el blog pero desafortunadamente también es una tarea que siempre me ha causado muchos problemas. wordpress.com cuanta con la opción de postear código usando el shortcode [ code ], o al menos eso es lo que dice la ayuda/soporte del sitio pero, en mi experiencia, este shortcode rara vez funciona como debería y cada vez que lo pruebo parece tener más y más problemas.

Normalmente, cuando quiero postear código, tengo que hacer malabares para poder formatear el código correcto. El tipo de malabares que tengo que hacer incluyen cambiar entre el editor visual y el HTML, guardar el post mientras estoy en el editor HTML porque de lo contrario el código no se muestra de la forma esperada. Postear código era molesto y por lo general me tomaba mucho tiempo postear aún el más minimo ejemplo. La gota que derramó el vaso llegó hace unos cuantos días cuando intenté editar uno de mis posts antiguos y no hubo forma posible de postear el código usando el shorcode.

En general, usar el shortcode [ code ] genera miles de problemas ya sea que postee código de Java, C, XML o HTML. Por ejemplo, el siguiente código HTML:

<html xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:fox="http://xmlgraphics.apache.org/fop/extensions" xmlns:cfdi="http://www.sat.gob.mx/cfd/3" xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital">
  <body>
    <h1>Hola mundo!</h1>
  </body>
</html>

Luce así usando el shortcode [ code ]:




<h1>Hola mundo!</h1>



 

Como pueden ver, ¡parte del código simplemente ha desaparecido!. Eso no es lo que quiero cuando posteo código. Lo mismo puede pasar con Java o C aunque es más notorio con XML y HTML, lo que irónicamente hace que en Java y C sea peor ya que cuando solamente desaparecen algunas líneas puede parecer que tu código se posteó bien cuando en realidad está mal 😦 . Intentar postear código puede ser una experiencia aún más frustrante cuando, al usar el shortcode [ code ], ¡a veces tu código desaparece incluso en el editor después de usar la opción de previsualizar!.

Cansado de batallar por horas y tener que hacer mágia con el editor cada que quiero postear código, decidí buscar alternativas. No me tomó mucho tiempo encontrar que wordpress.com soporta postear gists de github.

El soporte para gists es limitado, no puedes postear solamente un fragmento de código, no puedes resaltar líneas, no puedes postear solamente un archivo de un gist de varios archivos, pero aún así es mucho mejor que batallar con el shortcode nativo de wordpress.

Para postear código desde un gist de github, primero debes crear un gist con tu código en tu página de github. Una vez que tienes tu gist, postear el código en tu blog es fácil, solamente debes pegar un link con la dirección de tu gist en el editor de wordpress para que el código aparezca incrustado automáticamente en tu post. Por ejemplo, el código HTML anterior luce así usando un gist de github:

 

 

Juegos indie mexicanos en Kickstarter – Parte 7

Este año ha comenzado a paso lento en lo que se refiere a proyectos de videojuegos indie en Kickstarter. Desde el post anterior solamente han aparecido un par de nuevas campañas de videojuegos.

El primero es Paradise Lost, un juego del que ya he hablado en posts anteriores porque el creador de la campaña lleva prometiendolo desde hace años y, al parecer, ha encontrado una forma exitosa de continuar con esta estafa… digo… campaña. Cierto, el juego ya cuenta con una versión pre-alpha en Steam pero llevo años viendo las mismas capturas de pantalla y los mismos escenarios y, considerando que increíblemente la camapaña de Kickstarter del juego ha alcanzado su meta no una sino ya varias veces, resulta muy poco el avance que ha demostrado.

El proyecto de videojuego más reciente que ha aparecido en Kickstarter es ITOS, un juego de plataformas minimalista del que puedes descargar un demo jugable. En mi opinión personal, por lo que se puede apreciar en el video de presentación, “minimalista” es solamente la típica excusa cuando no puedes hacer nada mejor porque literalmente parece que no pusieron el menor esfuerzo para el apartado gráfico. El gameplay parece del tipo “es tan difícil que es frustrante” y ¿noto cierto toque de Undertale en la presentación de los diálogos?. No tengo muchas expectativas para este juego pero intentaré probar el demo en los próximos días para ver si me hace cambiar de opinión.

[EDIT:] Desafortunadamente no tuve éxito al intentar correr el demo de ITOS usando Wine.

Como dije antes, este año ha comenzado lento en lo que se refiere a juegos indie mexicanos, espero que pronto veamos aparecer más proyectos.

El poder del amor

logoelpoderdelamorok-2288586

No, este no es un post sobre el día del amor y la amistad, este es un post sobre el más reciente reality de TV Azteca llamado “El poder del amor“, conducido por Penelope Menchaca, que empezó a transmitirse el día lunes 4 de febrero y tuvo su última emisión el día 8 de febrero, convirtíendose probablemente en el programa que sustenta el récord de haber sido retirado del aire más rápidamente, tan solo después de una semana de emisión… y eso es algo bueno.

Tuve la mala fortuna de ver ese programa y el simple hecho de verlo te hacía sentir cómo perdías neuronas con cada segundo que pasaba. El concepto de reality show era terrible. Uno esperaría que cualquier que trabaje en la TV sabría que los reality shows de ese tipo no han sido exitosos en México por los últimos 20 años, desde pasó la novedad del Big Brother. Tal vez los productores pensaron que después de 20 años el público mexicano estaría listo para otro reality, esa es la única explicación lógica para que invirtieran en un proyecto de ese tipo que, además, fue grabado en Turquía por cualquiera que fuera la razón para eso.

Por fortuna el programa fue un rotundo fracaso con el público y fue retirado en tiempo record de la programación y eso, eso me hace recuperar un poco la fé en la humanidad.

 

Tarea de programación C – Números primos

En un post anterior escribí el código para encontrar números primos en Java. A diferencia del código en aquel post, aquí he usado una representación digital de la criba o coladera de Eratóstenes. Usar una representación en memoria tiene la ventaja de que nos permite ahorrarnos muchos cálculos innecesarios que el anterior código hacía para comprobar si un número era primo. Además, gracias a que cualquier compilador moderno nos permite declarar arreglos o reservar bloques de memoria de tamaño arbitrario, es posible usar este código para encontrar fácilmente los números primos por debajo de 1,000,000,000 (o cualquier número en el rango del tipo de datos int).

#include 
#include 
#include 
#include 

#define LIMITE 100000000

uint8_t *criba;
int contador = 0;

int main() {
    criba = calloc(LIMITE, 1);
    assert(criba);
    for (int i = 2; i < LIMITE; i++) {
        if (criba[i] == 0) {
            contador++;
            printf("%d\n", i);
            uint64_t mul = i * 2;
            while (mul < LIMITE) {
                criba[mul] = 1;
                mul += i;
            }
        }
    }
    printf("Se encontraron %d números primos menores a %d.\n", contador, LIMITE);
}

El código anterior define LIMITE con un valor de 100,000,000 y en mi PC toma aproximadamente 4 segundos al programa para encontrar los números primos por debajo de ese valor. Si incremento el valor de LIMITE a 1,000,000,000 toma aproximadamente 40 segundos en mi PC, que sigue siendo más rápido que el tiempo que tomaba la versión anterior del código para un valor de 100,000,000. Nota que puede llegar a millones la cantidad de números primos para estos valores de LIMITE, por lo que recomiendo enviar la salida del programa a un archivo y no directamente a la terminal. Es decir, ejecuta el programa de la siguiente manera:

monstruosoft@debian:~/code$ ./primos > /dev/shm/primos.txt

En el archivo primos.txt se guardará la salida del programa, por ejemplo:

2
3
5
7
11
13
17
19
23
29
31
37
...
999999667
999999677
999999733
999999739
999999751
999999757
999999761
999999797
999999883
999999893
999999929
999999937
Se encontraron 50847534 números primos menores a 1000000000.

Nota también que aunque este código puede fácilmente reservar un bloque de memoria de 1 GB en C, el mismo código en Java siempre me daba errores de OutOfMemoryException. Incluso después de aumentar el tamaño de la memoria usada por la máquina virtual de Java, usar System.out.println() era extremadamente lento para intentar escribir varios millones de líneas de texto a un archivo, y un ArrayList con varios millones de números primos también causaba problemas al intentar usar el método toString() así que si conoces la forma de usar este código en Java deja un comentario.

 

Juegos indie mexicanos en Kickstarter – Parte 6

Este año empezó lentamente en lo que a proyectos de videojuegos mexicanos en Kickstarter se refiere pero poco a poco han empezado a aparecer. Ya en el post anterior hablé de Zaphiro’s Project, un proyecto que parece más una broma pero que, aunque resulte defícil de creer, ha alcanzado ya el 10% de su meta, eso es aproximadamente 2,500 pesos pero aún así no me explico cómo ha alcanzado esa cantidad.

El siguiente en la lista es Divenia Zero, un spinoff en 2D de Divenia, otro proyecto en Kickstarter. Aunque personalmente creo que la versión 2D de este juego luce mejor y ofrece más posibilidades que la versión en 3D, aún tiene muchos detalles que pulir antes de poder ser lanzada oficialmente; en particular, las animaciones y colisiones es obvio que necesitan todavía mucho trabajo. Hay un demo disponible del juego que espero poder probar próximamente, si es que corre en Linux.

Quest for Enlightenment es otro de esos típicos proyectos que prometen mucho pero no tienen nada que mostrar. Con una meta de un millón de pesos y sin nada que mostrar, es casi seguro que no alcanzará su meta pero hay un par de cosas que creo que vale la pena resaltar. Aunque el proyecto aparece en la categoría de México, basta hacer click en el nombre del creador de la campaña para ver que es de Costa Rica, esto puede marcar una preocupante tendencia de gente que hace pasar sus proyectos como si fueran mexicanos aunque no lo sean. No es como si México ofreciera más garantías de alcanzar las metas con éxito pero ciertamente México es visto como una economía más importante que la de otros países de latinoamérica. De verdad me preocupa la posibilidad de ver más y más proyectos haciendose pasar como proyectos mexicanos y si creen que estoy exagerando, sigan leyendo 😦 . Como si lo anterior no fuera suficiente, el creador de la campaña pretende haber contactado con estudios en “todo el mundo” para apoyarlo con su proyecto para finalmente encontrar un estudio, curiosamente, en Costa Rica. Todo esto suena bastante sospechoso y resulta ofensivo para los que pretenden apoyar su proyecto ya que parece estar basado en mentiras.

Aunque no es un videojuego, Pokenoticias es una campaña que pretender recaudar 100,000 pesos para una página de internet relacionada con noticias de videojuegos que luce abandonada desde hace más de un año. No hay mucho más que decir sobre esta campaña.

The Vale es un juego de survival-horror desarrollado por Fairyland, un estudio conformado por gente de México, Argentina y Reino Unido; una vez más, este proyecto no se siente muy mexicano que digamos y basta ver el video de presentación (que parece usar la fórmula de los videos del canal de YouTube Numberphile) de su anterior proyecto (que fue misteriosamente cancelado), The Lawless Online, para ver qué tan mexicano luce este estudio. Como mencioné antes, resulta preocupante ver proyectos que no lucen para nada mexicanos aparecer en los listados de proyectos de México. The Lawless online prometía ser un MMO y, honestamente, no creo que exista ningún estudio indie en México con la capacidad de crear un juego MMO; además, si revisas la campaña notarás que no tiene en realidad nada qué mostrar más que unos cuantos diseños 3D pero nada parecido a gameplay pero, en fin, ese proyecto fue cancelado. De vuelta a The Vale, el proyecto que sigue activo, parece ser un juego de survival-horror en primera persona (o quizas para VR) que parece fuertemente inspirado por Resident Evil 7. Las texturas y diseños 3D lucen bien pero yo tomaría con cautela el considerarlo un juego indie “mexicano”.

Equilibrio es el más reciente proyecto que ha aparecido en Kickstarter. Como de costumbre, el proyecto espera recaudar casi un millón de pesos al mostrar solamente unos cuantos dibujos hechos a mano, de mala calidad considerando que cuantan con 2 “ilustradores y diseñadores gráficos”. También cuentan con 2 “programadores”, por lo que no se puede justificar la falta de un “Hello world”, por lo menos. Como siempre, el juego promete muchas cosas como una “historia sólida y gran talento artístico y tecnológico”. Este proyecto parece una idea bien intencionada pero nada más.

BONUS: No es un videojuego pero Space Art es un proyecto para lanzar una línea de ropa. Lo gracioso aquí es que, ironicamente, pudieron haber conseguido más dinero con su campaña original que tenía una meta de 10 pesos 😀 .