header('X-Frame-Options:Allow-From http://www.freelancer.com'); Programacion de Juegos
@ agnasg

Y todo lo demás son banalidades…

11-04-2014 8:30 AM

Con mucha sorpresa leo en mi diario personal lo siguiente:

(1513)

… Un dia agitado. Pero bien, lleno de ánimo, agradecido porque ahora, reflexionando sobre el tema de los muchachos que se hacen millonarios vendiendo juegos en el Apple store (me refiero a este artículo en newyorker.com), llego a la conclusión que no hay nada como mi humilde vida y que alguna belleza hay en ser un simple programador sin ningún rebullicio que soportar. Nadie sabe que existo, y hasta en eso hay algo extraordinario.

(1514)


A veces me sorprendo de lo hermosa y maravillosa que es la vida… no tengo ojos ni comprensión para asimilar su belleza…

Me refiero a esta noticia en el Newyorker. Claro, eso lo escribí el 4 de abril, el día en que mi vida se llenó de alegría hace 27 años con el nacimiento de mi hija. Pero, cómo asocio dos hechos tan dispares entre sí, es algo que ni una convención de psicólogos podrían explicar.  Muy en mis adentros, en las profundidades instintivas de mi especie, basta con traer vida a este planeta para que la alegría y la belleza renazcan, toda de una vez. Y todo lo demás son banalidades, y todo lo demás no tiene ninguna importancia. ¿Qué se puede comparar al amor maternal? ¿A la sonrisa de un hijo?

 

De Flappy Bird

12-03-2014 4:39 PM
After you, Honorable Sir
                                   - Kwai Chang Caine

 

 

Todo este insólito episodio de Flappy Bird me dejó sin palabras durante casi dos meses. En caso de que usted no está al tanto (seguramente porque está escondido debajo de una piedra, la misma que usa todo el gobierno de Venezuela para evadir la realidad)  Flappy Bird es un tonto juego (como todos los tontos juegos de pájaros) desarrollado por el vietnamita Dong Nguyen durante un fin de semana. 8 meses después de su lanzamiento el juego se transformó en un fenómeno viral, con casi 50 millones de descargas. Dong estaba ganando $50k  diarios. Luego, cuando parecía que no había forma de que sucediera algo más sorprendente, y luego de una aplastante campaña de descrédito generada en los laboratorios de las grandes corporaciones que indicaba que Nguyen se estaba ganando una fortuna con un juego pirateado, y diseñado con arte robado, el 9 de febrero a las 2:02 am, Nguyen anunció al mundo via twitter que “I am sorry ‘Flappy Bird’ users, 22 hours from now, I will take ‘Flappy Bird’ down. I cannot take this anymore.” (Lo siento usuarios de Flappy Bird pero dentro de 22 horas voy a cancelar el juego. No puedo soportar esto más”). Había pasado de un desconocido desarrollador a una celebridad, que incluyó reuniones con el primer ministro de Vietnam.

Desde entonces cientos de proyectos aparecieron en los sitios de freelancing donde oportunistas querían sus $50k diarios solicitando “quiero que alguien me haga un juego tipo Flappy Bird“,  ”estoy dispuesto a pagar $250, completicos, o menos, mejor“.

Surgieron bigotudos análisis sobre la pereza del periodismo actual que había cubierto la noticia de la forma más irresponsable, arbitraria, o en el mejor caso tomando a la ligera la importancia o la falta de ella de todo el incidente, reduciendo todo a un simple copiado y pegado de lo que escribió el primero que se tomó la molestia de decir algo  (Eurogamer,IGN,Gamespot, Destructoid, Kotaku, Forbes, The BBC, Huffington post, The Independent, The Telegraph, Daily Mail, Techspot, Cnet, MSN, etc. etc.)

Otros análisis describen en forma más técnica como  es que se puede explicar la popularidad de Flappy Bird, desde un punto de vista de ciencia cognoscitiva y factores de ingeniería humana (sic).

flappy-bird
Dije que el juego era tonto, no que era fácil. Consiste en mover el pajarito a través de la pantalla. Mientras más rápido hacemos click el pájaro vuela más alto. Lo cual es necesario para evadir los obstáculos. Ahora, aquí va mi teoría: el éxito de este juego no tiene nada que ver con el juego, con los pajaritos, con los obstáculos, con Nguyen  o con el primer ministro de Vietnam. La popularidad de este juego tiene que ver con esa persona que vemos todos los días en el espejo. Nuestro supremo saboteador. Nuestro adulador personal. Nuestro enemigo, amigo, odioso compañero que duerme en nuestra cama. Que maneja el control de nuestro  televisor. El que se acuesta con nuestra esposa o esposo. En fin, nuestra peor pesadilla. Pero voy a regresar a esto en un rato.

dark-castle

Quiero hablar de Dark Castle y de una misión en World of Warcraft. Dark Castle es un juego de video publicado en 1986. Yo lo jugué durante unos dos años en mi Amiga 500, aunque su fama proviene de la versión en la apple Mac (de hecho supe de él a través de alguien que lo jugaba en Mac). Si estás interesado lo puedes jugar siguiendo las instrucciones en esta página. La idea es atravezar los niveles, eliminando los enemigos (ratas, vampiros, robots asesinos) lanzándoles piedras. Pero aquí está el problema: los enemigos se regeneran, justo cuando estamos pasando en el punto de la regeneración. Surge, entonces, un conflicto, queremos llegar a la meta lo antes posible, pero si nos acercamos a alguno de los enemigos nos mata instantáneamente. Cómo resolvemos el problema es el problema. El fulanito ese que vemos todos los días en el espejo comienza a hacer de las suyas, y nos hace perder continuamente.

wration

La forja del Trueno (The Thunder Forge) es una misión en World of Warcraft que forma parte de la larga cadena del Principe Negro, Wration, parte de la expansión de Pandaria. En esta ocasión, debemos enfrentarnos al temible Sha of Algamation, mientras el Principe forja un arma con el cual podemos destruir a este Sha. Al fin y al cabo, a estas alturas ya nos hemos enfrentado en múltiples oportunidades a los Sha y podemos con facilidad “Arreglar este desorden” como dice el principe desdeñosamente. Tenemos la ayuda de un tanque Celestial que mantiene al Sha ocupado y nos permite atacarlo, pero este Celestial fallece continuamente y se regenera luego de unos 15-20 segundos, tiempo durante el cual debemos huir lo más lejos que podamos, o intentarlo, porque estamos en un salom circular, lleno de obstáculos, además nos cae continuamente una lluvia ácida que debemos esquivar y otros pequeños enemigos que debemos eliminar, todo al mismo tiempo. El Sha tiene una habilidad, Insanity, que nos puede matar casi instántanemente, pero la podemos detener golpenado unos yunques, hay como 6, distribuidos uniformemente alrededor del salom.

Entonces, básicamente, debemos estar atentos de lo siguiente:

  • El tanque Celestial está vivo. Si no, debemos huir.
  • Evadir la lluvia ácida. Esto requiere el 100% de nuestra atención.
  • Evadir los mini sha que aparecen por todas partes, y que casi no se ven.
  • Estar pendiente de Insanity, porque cuando comience debemos golpear el yunque. Ah, perdón, olvidé decir que cada yunque se puede golpear una sola vez, por lo que no solamente debemos golpear el yunque, sino que debemos estar cerca de un yunque activo. Tenemos como 2-3 segundos para esto.
  • Estar pendiente de Shadow nova, es otra habilidad pero que podemos esquivar. Bueno, algo así.

Esta misión ha sido calificada generalmente como una tragedia de diseño, una frustración. Alguien ha tratado de hacerla durante meses, le ha prestado el juego a varias personas sin éxito. En fin, hay quien ha dejado de jugar Wow solamente debido a esta misión.

A mí en cambio, me parece la mejor misión del juego, y ojalá la pudiera jugar de nuevo. Por la simple razón que, al igual que Dark Castle, y que Flappy Bird, una vez que aprendes el truco, una vez que sabes cómo jugarla, se convierte en la experiencia más maravillosa que puede haber. Pero, si somos un jugador avezado, si ya hemos matado al Sha múltiples veces, y somos, en fin, expertos en juegos de plataforma, ¿por qué puede ser tan difícil?.  Nuestro saboteador interno, como he dicho. En la mencionada misión, la forja del trueno, lo importante no es matar al Sha, lo importante, como es “fácil” de deducir, es mantenerse vivo. En el juego Dark Castle, descrito arriba, lo importante no es llegar al otro lado del nivel, sino mantenerse vivo, y llegar al otro lado será una consecuencia lógica de esto. Algo similar sucede con Flappy Bird, hay un truco, que una vez descubrimos, dominamos y controlamos, nos trasforma, nos hace volar. El detalle es llejar a ese momento, cuando decimos el triunfal “aja, lo descubrí”. Flappy Bird nos da la oportunidad una y otra vez de lograr ese éxtasis. Yo no sé si Mr. Nguyen  sabía lo que estaba haciendo cuando diseñó el juego, pero lo que el logró es algo que no se ve todos los días

Cómo comenzar con QT o mis primeros pasos con QT

29-01-2014 11:15 AM

Desde hace años (6-7 años no recuerdo) he estado usando el gui de irrlicht para diseñar interfases de usuarios. En este momento estoy implementando una aplicación más complicada así que tuve que escoger algo mejor.  Leí en alguna parte que Ultimate++ era fácil, potente y con una curva de aprendizaje bien suave. Al revisar su sitio web todo parecía aceptable. La verdad estuve unas semanas probando pero no me gustó, así que mi siguiente intento fue buscar lo mejor de lo mejor, que resultaron ser wxWidgets y Qt. Pero luego de leer varias páginas (como esta) resultó claro que QT era el ganador. Su único problema era su tamaño (el paquete tiene 290 mb comprimido). En un post anterior describo mis peripecias instalándolo y ahora quiero comentar mi experiencia al hacer el primer programa “Hello world”.

La recomendación es tratar de compilar un ejemplo para garantizar que todo esté bien instalado. Para ello necesitamos Qt creator, que para mi sorpresa no viene en el mismo paquete, es decir, qt creator no está en los fuentes de qt, es un paquete aparte que se encuentra en el sitio (en esta página). El segundo problema es que todos los tutoriales, ejemplos y explicaciones omiten el primer paso. El ambiente, cómo indicarle a Qt creator dónde está QT, dónde está el compilador (MS VS 2010 en mi caso), etc..

Estuve 15 minutos revisando variables de ambiente, porque al parecer Qt creator sabía que mi compilador es MS VS 2010, pero no sabía cómo encontrar  el compilador (cl) , ni dónde estaban los dll (lo cual es bien confuso). Esto genera Error 1 o Error 2 cuando jom o nmake terminan. La solución es simplemente invocar Qt creator desde una ventana que tenga las variables de ambiente asignadas correctamente. Esto se puede lograr abriendo una consola de comando y ejecutando el archivo vcvars32.bat (que se encuentra en C:\Archivos de programa\Microsoft Visual Studio 10.0\VC\bin o donde quiera que tenga instalado MS VS 2010), o también se puede lograr abriendo la consola de comando que viene en el menú donde está MS VS (en inglés esa opción se llama Visual Studio Command prompt) En este último caso no hay que ejecutar vcvars32.bat  por razones obvias (eso es lo que hace ese comando antes de abrir la consola). Luego en esta cósola nos movemos a donde esté instalado Qt Creator (en mi caso en C:\qt\qtcreator-3.0.0\bin) y ejecutamos qtcreator.exe. Y todos nuestros problemas pasados y futuros se resuelven.

Mors in vallem descensum

24-01-2014 10:27 AM

Estoy compilando qt… desde hace una semana.  qt es una herramienta para desarrollar aplicaciones con interfaz gráfica de usuario. Quiero sustituir a irrlicht gui de una de mis herramientas para manipulación de datos (tipo etl pero sin tanta parafernalia).

¿Errores? Una miríada. Al principio traté de compilarlo utilizando MSVS  Express 2005 aún cuando la documentación dice que solamente MSVS 2010+ está soportado. Problemas. Muchos problemas. Mi conclusión es que es imposible porque hay un archivo que no es compatible en lo absoluto. Inclusive dice que es un archivo que va a ser eliminado. Su función parece ser garantizar que nadie intente compilar con MSVS  Express 2005.

Ergo, MSVS2010. Errores. Muchos. Cada error en MSVS 2010 tiene su explicación. Este error:

YarrInterpreter.obj : error LNK2019: unresolved external symbol ”struct JSC::Yarr::CharacterClass * __cdecl JSC::Yarr::newlineCreate(void)”

se debe a que se requiere python instalado. python se utiliza para customizar “algo” en el interprete Yarr (un intérprete js de webkit). La documentación indica que se requiere perl, pero yo no leí por ningún lado “se requiere python”. Inclusive hay páginas como esta que indican que la distribución (el famoso archivo qt-everywhere-opensource-src-5.2.0.zip), incluye todo lo necesario. Incluye todo lo necesario my ass.

Este otro error:

C2061: syntax error : identifier ‘__RPC__out_xcount_part’

que aparece en los archivos relacionados a DirectX (por ejemplo /qtmultimedia/src/plugins/directshow) se debe a un conflicto entre la definición de la plataforma (en mi caso win32-msvc2010) y los archivos de DirectX (yo uso febrero de 2007). Por ahí se dice que la solución es garantizar que el include de DirectX esté después del include win32-msvc2010, pero eso a mí no me funcionó. Lo que hice fue hacer algo ridículo, eliminar completamente el include de DirectX en el makefile. Funcionó. Es decir, para compilar directshow no se requiere realmente DirectX. Weird.

Otra fuente de errores es utilizar el comando configure incorrectamente. Este comando tiene 30 opciones diferentes así que se requiere experiencia para usarlo. Será dentro de dos meses, quizás. Entre mis primeros intentos este me parecía el correcto:

configure -debug -nomake examples -opensource -platform win32-msvc2010 -opengl desktop

Finalmente me quedé con este:

configure -debug -nomake examples -opensource -platform win32-msvc2010 -opengl desktop

Pero se me olvidó que requiero de las librerías estáticas. Ups. Así que debe ser este:

configure -debug -nomake examples -opensource -platform win32-msvc2010 -opengl desktop -static

Tengo que empezar de nuevo.

 

Las coincidencias no existen, al igual que no existe tal cosa llamada almuerzo gratis

23-01-2014 4:54 PM

Simplemente dos noticias:

No te prometo nada pero lo te lo garantizo

15-01-2014 9:18 AM

Los enamorados son la gente más inteligente del mundo. Porque entienden un lenguaje ininteligible:

  • Te amo pero es mejor que estemos separados.
  • Estoy de acuerdo contigo pero es mejor que abandones esas ideas.
  • Me gustaría verte cuando se pueda.
  • ¿Quieres venir mañana? Si no quieres no importa.
  • Vamos a vernos lo antes posible, cuando regrese de mi viaje a Europa.
  • Debes hablar con ella cuanto antes y sé honesto ante todo. ¿Cuándo nos vemos?
  • Lo que más quiero es estar contigo, pero la vida nos ha separado.
  • Yo te entiendo pero nunca sé qué quieres decir cuando dices eso.
  • Te acepto tal como eres pero no soporto tus incoherencias.
  • Vamos a hablar.
  • Búscate a otra.
  • Mi mamá me dijo que yo no tengo que ayudarte.
  • Mi familia y amigos no lo van a ver bien, pero no importa. Es normal.
  • No te prometo nada pero te lo garantizo.

Estar enamorado es la condición normal de esta locura que es la vida. Lo contrario es una enfermedad mental.

Bitcoins some buenos según paypal

14-01-2014 10:37 AM

Aquí y aquí se reporta la noticia. Los bitcoins están tomando vuelo. Llegaron a $1000+ la unidad, los chinos prohibieron ciertas transacciones y bajó a $500, ahora está otra vez rondando los $800. Cuando el dueño de una compañía como paypal habla sobre el tema es porque un poderoso y avanzado equipo de monos estudió profundamente el tema y su veredicto fue “Me gusta”.

Uno de los días más productivos de mi vida… o quizás no

06-01-2014 5:16 PM

uno-de-los-dias-mas-productivos-de-mi-vida

Enlace: https://news.ycombinator.com/

Comentarios en reddit (furia desencadenada)

Tenemos un glitch en el dominio público

20-11-2013 10:07 AM

Tal como leemos en slashdot, Glitch y todos sus assets (gráficos, musicas, backgrounds, etc) han sido pasados al dominio público. Hay unos cuantos megas de imágenes que pueden ser interesantes para ser usados en demos, juegos gratuitos, desarrollos indie. Ya había mencionado previamente a Glitch, cuando fue anunciada su muerte prematura, o muerte en la cuna. Outch!

La suerte se disfraza de oportunidad

06-11-2013 8:11 PM

Todos hemos oído alguna vez la frase “la suerte no existe, lo que llamamos suerte es cuando la oportunidad nos encuentra preparados”. Es decir, éxito es igual a oportunidad + preparación. Entiendo lo que es estar preparado, y todo el tiempo estoy listo, entrenado y en forma para caer siempre de pie como si fuera un gato. Pero, ¿qué es la oportunidad? ¿Cómo hacemos para que la oportunidad se presente? Aquí la explicación se extiende y la frase con la que comenzamos (éxito = oportunidad + preparación) pierde su elegancia original. Más de esto dentro de un rato.

Jeff Vogel escribió recientemente sobre las malas nuevas para los desarrolladores independientes de juegos, el mercadeo debe estar orientado al tipo de juego y no existe una solución que funcione siempre y para cualquier tipo de juego (Steam por ejemplo), y, además, se me olvidaba mencionar, debe haber suerte. ¿Suerte? ¿Cómo es eso? Resulta ser que puede ser que tu juego sea excelente, que le prestes la debida atención al correcto mercadeo orientado / segmentado / arquitectado a la medida, pero, si no tienes suerte, no hay forma que puedas sobresalir entre los 100′s de juegos que se publican diariamente. Los comentaristas de Reddit inmediatamente gritaron “bullshit”, para luego condescender en que el juego debe estar pulido, debe ser bueno, y que debe haber suerte. Si falta un ingrediente (pulido, suerte) entonces fracaso.

Voy a utilizar mis profundos conocimientos matemáticos: (pulido, suerte) = éxito, pero la creencia popular dice que (preparación, oportunidad) = éxito, por lo tanto (pulido, suerte) = (preparación, oportunidad) , es fácil ver que pulido es una forma de preparación, pero lo impactante es que resultó ser que suerte = oportunidad. Esto es deprimente. Me han estado engañando toda mi vida. La oportunidad no es más que la suerte disfrazada. Quien lo iba a creer. Lo que nadie me va a creer, es que otra forma de verlo es al revés, la oportunidad se disfraza de suerte. Ese es el peor de los optimismos, hablando de disfraces, es cinismo disfrazado de optimismo.