A binding is the runtime manifestation of a variable

08-07-2008 2:09 PM

Ayer me levanté a las 3 am, huyendo de los zancudos. Claro que no perdí el tiempo, y continué mi aprendizaje de Lisp. Antes he hablado del tema (1, 2 y 3), me ha parecido interesante comenzar este aprendizaje por razones de trabajo, mis ideas para utilizarlo para un juego que diseñé hace un par de años, y, finalmente, porque es realmente divertido aprenderlo. Y hoy mis ánimos están como nunca ansioso de continuar. El aprendizaje de un lenguaje nuevo es fascinante. Es como visitar un nuevo país. Pero Lisp suele ser desalentador. Es raro. Muy raro. Casi complicado. Dicho inclusive por programadores expertos en assembler (programar en assembler es como resolver integrales). En realidad, ya he intentado aprender este lenguaje varias veces (incluyendo en la universidad hace 26 años) abandonando la aventura abrumado por las rarezas del lenguaje. Es como la manía de ciertos orientales de comer perro: no es solamente lo cuestionable que es comerse a un animal tan amigable y que sería capaz de hacer lo que estuviera a su alcance por nosotros, sino que al cocinarlo huele al infierno. Caminando por el mercado de Singapur (visité este país hace unos años cuando era feliz y no lo sabía) pasé cerca de un restaurante y tuve que correr para escapar del más espantoso olor que he olido en toda mi vida. Pues bien, Lisp es así: es raro y provoca salir corriendo.
Por ejemplo: en lenguaje C/C++ y en la mayoría de los lenguajes que descienden de Algol ‘==’ es igual. Dos expresiones iguales pueden ser comparadas con el operador ‘==’ y no hay mayor discusión sobre el tema. En Lisp hay 4 operadores para esto: eq, eql, equal, equalp. Y la diferencia entre ellas es la misma que hay entre “lo mismo” e “idéntico”: producen el mismo resultado pero se representan de forma distinta. ¿Otro ejemplo? Las convenciones. No sé si esto es algo así como obligado, pero en el libro Practical Common Lisp, podemos leer las normas para colocar comentarios: ;;;; es un comentario al principio del archivo, ;;; un comentario para un larga sección de código, ;; es un comentario para las siguientes líneas y ; aplica a la línea actual. ¿Raro? Sí, y también es raro la forma vehemente con que todos los autores prometen que nos olvidaremos y nos acostumbraremos rápidamente a la profusión de paréntesis. Porque en Lisp, vamos a utilizar paréntesis todo el tiempo.

Al parecer hay un resurgimiento del interés en Lisp, y en los blogs más conocidos aparece de vez en cuando algún comentario sobre el tema. Incluside una de las implementaciones de Lisp (SBCL, Steel Bank Common Lisp) es apenas 0.9 más lento que C++ y 0.2 más rápido que Java. Así que al menos en velocidad, ya Lisp no es tortuga que solía ser. Por lo demás, ya los argumentos a favor de lisp son tantos y con tal nivel de sofisticación que he perdido la capacidad de asombro. En el mencionado artículo podemos leer lo siguiente: “Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.” [”Cualquier programa en C o Fortran suficientemente complicado contiene una implementación parcial de Common Lisp ad hoc, informalmente especificada, repleta de bugs, y lenta”]. Ver Greenspun’s Tenth and only rule. Esto se traduce que en realidad, cuando programamos sistemas complejos con lenguajes de programación tales como C o C++, terminamos simulando e implementando las características que vienen en forma automática en Lisp. O, dicho en otra forma, Lisp es el lenguaje de programación más productivo para sistemas complejos.

Piensa

01-07-2008 6:42 PM

¿Ningún post en junio? Lo siento, estaba ocupado trabajando, programando mi juego, escribiendo, y, como un divertimiento medieval, dándole un vuelco a mi vida (otra vez). He prometido escribir sobre esto último y todavía no he decidido si lo voy a hacer. Creo que hay que pensar. Pensar. Detente por un momento, querido y desocupado lector. ¿Cuando fue la última vez que pensaste? ¿Recuerdas? ¿Recuerdas la última vez que te preguntaste qué voy a hacer con mi vida? ¿Fue a los 15 años? En mi caso fue hace unos minutos. Es una aventura interesante. Inténtalo alguna vez. Te sorprenderás de los resultados. Te quedarás viendo al vacío. Tu mirada será como la de El lobo estepario (la novela de Herman Hesse). Será una mirada que traspasará los milenios. Será una mirada que irá directamente a aquél momento en el que uno de nuestros antepasados se preguntó por qué hay que salir a buscar comida todos los días y arriesgarse a que un tigre nos convierta en su comida. Será una mirada como la de Lady Lindon, la viuda de Charles Lyndon, en la película Barry Lindon (español) la mirada al final de la película, la mirada que ella tiene cuando va a firmar el cheque para la pensión de Redmond Barry, esa mirada, una mirada que se construyó a lo largo de todos los años de su vida. Sí, esa mirada. Es, quizás, la mirada de mi padre. Luego de 30 años trabajando en el departamento de acueductos de la nación, ha dedicado los siguientes 30 años a preguntarse cuánto valen 30 años. O, ¿para qué sirven 30 años? O, ¿qué hacer durante 30 años?. Esa mirada.
¿Qué es, entonces, lo que voy a escribir? Un cuento. Ficción, y como tal debe ser considerado. Es un simple cuento. Una historia. Alguna vez escribí (y leí también) que hay palabras que no deben ser pronunciadas, versos que no deben ser compuestos, prosa que no debe ser escrita. Y parece que este cuento, este terrible cuento jamás será escrito. Baste decir que el cuento se titula “Volví al sofá” y tiene como introducción algo así como lo siguiente:

Volví al Sofá
Ficción

Siempre he sentido poco respeto por los lectores que abren una novela nueva, y comienzan a leer el último capítulo. Si les gusta, entonces comienzan a leerla desde el comienzo. No es para mí chistoso, y tampoco puedo ser indulgente con la paciencia (o la falta de ella) que tienen algunos. Sin embargo, y tratando de satisfacer a todos, voy a contar el final de esta historia. Es simple y se puede decir en pocas palabras. Esta es la presentación de ascensor de la historia (una presentación de ascensor es una técnica de ventas que consiste en explicar un negocio en el tiempo que le tarda el ascensor en llegar al piso de la compañía) :

Después de dos décadas del más ufano de los matrimonios y de un tortuoso y no tan ufano divorcio, nuestro personaje deambula de un lado para otro durante tres años hasta que termina viviendo nuevamente en su casa. Como la casa no tenía cuarto adicional, no le quedó más remedio que volver a dormir en el sofá.

Afortunadamente, el sofá era estilo modular, con la mejor imitación de una cama en el diseño de un sofá. Tenía casi 90 cmts. de ancho, y su módulo preferido era de metro y tanto de largo. Era todo confort, placer y comodidad como ningún otro sofá podía ofrecer. Luego de tres años durmiendo en pensiones, castillos en la campiña francesa, el cuarto acolchado de un manicomio, una buhardilla en la peor zona de Calcuta, el más exclusivo pent house con vista al central park en Manhattan, mazmorras medievales, y hospitales en zona de guerra, esto era como dormir en el salón del harén de un pachá.

§

Enlaces

  • ¿Crees que Mugabe es el peor dictador de africa? Piensa de nuevo. Les presento a Teodoro Obiang, quien reune todas las condiciones para ser nominado para el salón de la fama de los dictadores [1]:
    • Años de aprendizaje en un régimen genocida liderizado por un tío?Sí.
    • Conquista del poder a través de un golpe de estado en contra de un tío asesino? Sí!
    • Ejecución del tío en un pelotón de fusilamiento? Por supuesto!
    • Proclamación como “el liberador” de la nación? Claro! No faltaba más.
    • Gobernando por décadas en una maneras que los grupos de derechos humanos lo acusan de asesinato, tortura y corrupción? Sí y sí!
  • Hablando de Java, leí lo siguiente en un proyecto publicado en Getafreelance:

    If you prefer to use Java or .NET then you definitely should not apply for this job. We do not like those languages at all. We feel strongly that those languages are like diseases. However, we do not mind if you currently develop in one of those languages and, like a refugee from a war zone, are seeking to escape.

    [Si Ud. prefiere utilizar Java o .NET entonces definitivamente Ud. no debe optar a este trabajo. A nosotros no nos gustan esos lenguajes en lo absoluto. Nosotros creemos firmemente que esos lenguajes son enfermedades. Sin embargo, nosotros no tenemos problema si actualmente Ud. desarrolla en esos lenguajes y, como un refugiado de una zona de guerra, desea escapar.]

    Ouch!

Un lector de un solo autor

31-05-2008 2:17 PM

Como si fuera un delito, a algunos autores se les pregunta (luego de preguntas como qué autores te influenciaron), “pero tu principal libro es X, ¿no te da miedo ser escritor de un solo libro?”, o, “¿cómo afrontas el riesgo de que la gente te reconozca solamente por tu novela X?”. Y yo pregunto ¿Y qué? ¿Y sí X era el libro que él/ella estaba destinado a escribir, y los libros previos eran la preparación y los que vinieron después solo divertimentos para pasar la vejez? El mero objetivo de ser escritor fue, en estos casos, escribir la novela X, el resto es el relleno, es, como en el circo, donde los trapecistas son el verdadero espectáculo, y los payasos, el hombre tragafuego y la mujer manquera son simples actos para que nos dé tiempo de terminarnos el algodón de azucar y prepararnos para la verdadera diversión.

Igualmente, ¿cuál es el problema de ser lector de un solo autor? ¿cuál es el alboroto si a mi solamente me gustan sólo ciertos tipos de libros, un grupo reducido de autores, e igualmente un grupo minúsculo de juegos? Al fin y al cabo, hay quienes tienen por hobbie jugar solamente ajedrez. Este tipo de jugadores no juegan a las damas, backgammon ni otros juegos. Solamente ajedrez. Pues, de igual forma, yo prefiero jugar ficción interactiva o roguelikes. Y hago la reflexión porque, a pesar de uno que otro esfuerzo, en realidad he descubierto que no me gustan otros juegos, de la misma forma que el conjunto de escritores que me gustan es reducido. Yo he leído con bastante detenimiento a Nietzsche, Hesse, Joyce y Kafka. Creo que he leído todos los libros de esos autores. Pero me niego a leer a Goethe, Proust, o Stendhal, por ejemplo, que podrían ser autores afines. De igual forma, ya no siento remordimiento de jugar ficción interactiva o roguelikes. ¿Me quedé en el pasado? No lo creo. Creo que, quizás, tuve la oportunidad (debido a que estoy jugando juegos de computadora desde 1980), de entrar en contacto con este tipo de juegos, a los que yo llamaría juegos puros. Esto es, aquéllos en los que lo importante es la inmersividad no solamente en el juego, sino en el protagonista y la historia.

No me refiero a pasiones como la de algunos cinéfilos a Ingmar Bergman, o de algunos lectores a los libros de Dostoievski, perturbaciones que podríamos llamar más bien obsesiones, o sado masoquismo cinematográfico o literario. Me refiero a un entendimiento. Algo que se acerca más a un conocimiento arcano. El equivalente a conocer la verdad detrás de la sonrisa de la Monalisa: los que jugamos roguelike y ficción interactiva hemos descubierto un arcano, la llave que abre todas las puertas, la piedra filosofal que transforma en oro todos los metales. Y como sucede con este tipo de sabiduría hermética,somos muy pocos lo que sabemos. Nosotros lo sabemos.

Igual conocimiento ignoto tienen los que programan lisp. Ellos están convencidos que tienen la mejor herramienta de programación, el lenguaje con el que está codificado el universo, el lenguaje que usaría Dios, ni más ni menos. Sin embargo podemos contar con los dedos de la mano el número de programadores de lisp en el mundo. Inclusive hay argumentaciones bien elaboradas de por qué la gente no usa ese lenguaje (lo que pasa es que es difícil bajar el compilador).

Así que, perseguimos la calidad, la pureza usando el impulso vital. Destruimos los falsos ídolos con la fuerza de nuestro conocimiento arcano. Lo que Nietzsche llamaría hablar con el martillo en la mano. Escarbar detrás del barro, revisar hasta el tuétano nuestras creencias y regresar a lo primigenio, poner en duda, en fin, cualquier cosa distinta a la lanza, el fuego y la cueva. ¿Sigo hablando de los roguelikes y la ficción interactiva? Sí. Todo el tiempo…
Enlaces

Mudanza

16-05-2008 7:49 AM

Estoy comenzando a mudar mi site de proveedor así que es posible que en los próximos días salga del aire por un día o algo así. El proceso es complicado y lleva varios pasos que hay que hacer en orden (backup de bases de datos, instalación de la nueva versión de Wordpress en el nuevo servidor, pruebas de las plantillas con los 20+ cambios que le he hecho en forma no documentada en los últimos 3 años, etc., etc..) No voy a utilizar ninguna herramienta para hacerle seguimiento a estos pasos aunque debería, porque la probabilidad de que haga un paso en el orden incorrecto es bien alto. Yo, como buen programador, me gusta hacer las cosas fluyendo al mismo ritmo de mis ondas cerebrales. Porque no nos gustan las cosas demasiado organizadas.

En otras noticias, continúo haciendo adiciones y correcciones a los tutoriales del site incluyendo el Programar Juegos en C++. Sigue bastante incompleto, pero el plan es que sea el tutorial más completo sobre el tema en internet (sic (sic)).

Enlaces

  • Estos efectos son realizados con solamente 20 líneas de código en javascript (unas líneas bien largas, por cierto).
  • Hablando de lo mismo, aquí está un editor vi hecho completamente en javascript. Excitante! Enlace.
  • Suicidios. Muy gracioso y original.
  • Otra reacción en cadena. Tengo ya una colección dispersa de este tipo de videos.
  • Un sitio dedicado a juegos desarrollados independientes. Se pueden conseguir una o dos perlas ahí. De verdad.
  • Conseguí ahí, por ejemplo, la noticia sobre una competencia para proveer a los juegos de ficción interactiva de cover arts (carátulas). Esto puede ayudar a promocionar los juegos para personas que no conocen del tema. La colección es realmente fascinante. Es un evento organizado por Emily Short, mi autora de ficción interactiva favorita. Enlace.

indie games, marketing y mi 20%

26-04-2008 11:24 AM

Los desarrolladores, artistas, creadores y productores independientes “dependen” de un sector del mercado bien reducido. De hecho, hay una teoría que permite calcular el tamaño de este mercado, algo que se ha dado por llamar la teoría de la larga cola (1, o pareto, o la regla del 80/20). Para los que no la conocen, básicamente establece que ciertos negocios (quizás todos) tienen una distribución 80/20: el 80% del mercado prefiere el 20% de los productos, o dicho de otra forma, el 20% de los proveedores dominan el 80% del mercado. Más alucinante aún, el 20% de tus productos representan el 80% de tus ingresos. ¿Qué podemos sacar de esto? Podemos verlo negativamente como una mala noticia, el 80% del mercado está secuestrado por los peces gordos… o, el 20% del mercado está a la espera de alguien lo suficientemente astuto que lo seduzca. Pues bien, hay una teoría que dice que un desarrollador de juegos, un músico , productor de cine, un escritor, o cualquier artista que escoja el camino del desarrollo independiente (esos locos que presentan sus películas en el Sundance Film Festival, por ejemplo), lo que necesitan es una base de fans, verdaderos y confiables fans (extraídos de la larga cola), con los que pueden generar suficiente dinero para producir independiente sus productos, tener la libertad que el desarrollo “independiente” genera y vivir de ello.

Pero la teoría no se queda ahí, sino, en un acto que yo llamaría temerario, se aventura a lanzar al ruedo un número estimado que debe tener esa base de fans. Una masa crítica, por así decirlo. 1000 fans. Y ahí comienza mi disconformidad. Yo no creo que un escritor , programador o productor puede sostener su hábito independentista con esa “masa”. Aquí aparece un resumen de buenas razones de por qué no, con las que estoy 100% de acuerdo.TrueFans-long-tail

En resumen, el negocio es difícil para un indie como somos conocidos los independientes. Hay miles de desarrolladores, la calidad de los juegos producidos por las casa establecidas (los peces gordos) requiere inversiones millonarias para ser emuladas. En pocas palabras, la competencia es atroz. Finalmente, sacando la cuenta, esos 1000 fans, verdaderos fans, los que van a comprar cualquier cosas que tú produzcas, (el juego, el libro, la camiseta, el gorro, lo que sea) tienen que comprar al menos $100 al año para que el modelo sea viable. Los juegos (con otros productos la cuenta es mucho más mezquina) en el mercado indie están valorados (cuestan) alrededor de $10, $20 si exageramos y somos optimistas. ¿Tu fan va a comprarte 5 juegos al año? ¿Puedes producir 5 juegos al año? (5x$20=$100). Tal como dice el artículo suena difícil. De hecho, yo he dedicado los últimos 10 años a esa idea. Y si bien es cierto que de alguna forma desde hace un par de años estoy trabajando “independientemente” todavía estoy muy lejos de tener una base de fans, y mucho menos de generar suficiente como para vivir de ello. Pero mis cuentas me indican que el número es más cercano a 5000. Pero, si conseguir 1000 fans es difícil, mucho más lo es conseguir 5000.

En realidad, todo se reduce nuevamente al producto. No importa cuántos fanáticos vas a tener o necesitas, tu producto lo va a determinar todo. Si es bueno, realmente bueno, no te digo 1000, puedes llegar a miles. Lo importante es entender al jugador (o al lector en caso de libros, o al espectador en el caso de películas). El fan es, en definitiva, lo más importante en toda esta ecuación.

Como una observación final, el tamaño de la larga cola que aparece en el gráfico de arriba en amarillo es de 6-7 millones de compradores en el caso de los video juegos. Nada despreciable. Yo puedo vivir con el 20% de ese mercado. Inclusive con el 20% del 20% del 20% del 20%.

Enlaces

  • C++ es el 5to lenguaje más popular. Java (ouch) está en el primer lugar de las preferencias.
  • Al parecer Micronosis no es el único sitio dedicado a programación de juegos (y juegos en general) que ha mencionado el tema del simpático de Mugabe. Aqui se meniona sobre un juego llamado Play The News, donde Robert Mugabe puede decidir si aceptar el resultado de las elecciones, pedir reconteo de votos, o tumbar la mesa y desconocer que existe algo llamado elecciones. Enlaces.
  • Ya antes mencioné a samorost. Un juego altamente adictivo, innovador y divertido. Pues recientemente descubrí la secuela, samorost2. Aqui está la solución, porque es un poco más complicado.

    No pierdas el foco

    22-04-2008 1:31 PM

    En medio de un trabajo que estoy realizando en Liveperson (antiguamente Kasamba), tuve que desarrollar un engine similar al de Wolfenstein 3D (de Id Software). Lo curioso es que quedó lista en 8 horas de trabajo!. Desde 1998 hasta 2000 yo estuve trabajando una engine similar, logrando la mitad de los resultados. Esta vez la hice 100% DirectX 9, sin ningún otro API. Ahora que la veo en funcionamiento se me ocurre adaptarla a mi viejo juego de aventuras (el que estuve desarrollando desde 1998 hasta 2004), y entonces… bah!. Olvídalo. Estoy trabajando en un Roguelike - MMO - MMORPG - Post - apocalíptico. No debo perder el foco! Eso forma parte de las Leyes de Diseño de MMOs, y si no forma parte, debería! No debo perder el foco! No debo perder el foco!

    Hablando de no perder el foco, estoy trabajando, desde las 3:40 (am). y ahora me pregunto, ¿Trabajando? ¿realmente? ¿Cuánto tiempo transcurre desde el momento en que me siento a “trabajar” y el momento en que efectivamente comienzo a trabajar? Una hora, en el caso de hoy. Comienzo leyendo las noticias, los blogs (que aparecen en su mayoría a la izquierda) y entonces, cuando, ya no consigo más nada que leer, ¿comienzo a trabajar? ¿de verdad? No. El romanticismo brota en mí, y sin pensar paro esto:

    Déjame tocarte las yemas de los dedos,

    Déjame disfrutar tu olor,

    Déjame reflejarme en tus ojos,

    Déjame sentir tu sabor.

    Quiero complacer tus antojos,

    Quiero saber de ti, conocer de ti,

    Vivir por ti, ser parte de ti.

    Me muero por hablar contigo,

    Tenerte siempre cerca de mí,

    Tender mi mano y encontrar la tuya,

    Ser tu amigo, ser tu amado,

    Despertarme y ver tu placidez,

    Quedarme dormido a tu lado.

    Mi día es distinto al ver tu sonrisa,

    Tu mirada me llena de calidez.

    Quiero correr muy de prisa,

    Rápido!, Rápido!, porque te vas,

    Y precipitarme en tus brazos,

    Entregarme a tu rostro de ensueño,

    Perderme en tu tranquilidad,

    Ahogarme en tu amor.

    Ser tu corazón

    La semana pasada oí en la radio que los que nos la pasamos escribiendo y recitando cursilerías como poemas deberíamos ir a uno de esos concursos de poesía para que nos demos cuenta lo ridículo que es todo el asunto. Yo creo que hay envidia e intolerancia involucrada en todo el comentario. Te parece cursi lo que te es extraño, o inalcanzable. Inclusive la palabra cursi es una especie de insulto torpe, de algo que no tiene estilo siquiera para insultar. Es como el espadachín que trató de mofarse de la nariz de Cyrano de Bergerat, a lo que éste le replicó con 37 formas distintas y ocurrentes de cómo hacerlo. Yo siempre digo lo mismo, si no tienes nada positivo que decir, cállate la boca. O, en este caso, reconoce tu incapacidad para distinguir la diferencia entre una gota de rocío y una gota de sudor, o entre una lágrima y un grito, o entre un verso y un comentario escatológico.

    El almuerzo desnudo

    16-04-2008 4:52 PM

    Esto debería estar en el tractac, pero lo voy a colocar aquí por ahora, parece que hay una competencia entre mi editorial y mis otros escritos. Como yo no tengo ninguna preferencia particular, lo coloco aquí… sin mayor análisis. Esto es ‘*’, es decir, aplica a todo, incluyendo desarrollo de juegos, amores no correspondidos, novias(os) del pasado, amistades mal entendidas, un sí, un no, un sol arrogante en las montañas, una luna mustia entre las nubes del crepúsculo. O sea, todo.

    El almuerzo desnudo

    Ese terrible, desconsolador momento en que descubrimos no solamente lo que tenemos en la punta del tenedor [1], sino, peor aún, lo que hay en la punta del tenedor de los otros comensales en la mesa. Ese gélido instante en la medianoche, o quizás, cuando faltan dos o tres horas para el amanecer, cuando un frío te paraliza el ánimo, intentas calentar tus entumecidas manos, te frotas los ojos, tratas de mirar en la oscuridad, y entonces recuerdas… El triste momento en que debes reconocer la realidad. Tus pensamientos recorren todos tus esfuerzos para escapar de ella. Las veces que volteaste la mirada. Todas las veces que cambiaste de conversación. Cuando sacudías el periódico con displicencia como si el mundo fuese un mundo perfecto. Cuando carraspeabas como si los problemas fuesen una simple molestia en la garganta que con un carraspeo, o un vaso de agua desaparece. Cuando hablabas del futuro o del pasado, como si el presente, el presente, el hoy, fuese algo transitorio, como si en realidad todo lo que sucede mientras hablas muy ufano no tuviera importancia, como si todo lo que sucede en tu devenir es irrelevante, es el futuro, es el pasado lo importante, ahí están, dices, casi como si creyeras la patraña, ahí están, repites, el acervo de una vida, la irreverencia del éxito logrado a través del esfuerzo que nadie más, ni siquiera tú puedes emular, y ahí están los palacios conquistados y por conquistar, ahí están y queda el desfile triunfal, el cuchicheo entre el público que te observa con admiración y satisfacción por verte caminar la nave central de tu palacio. Triunfante, radiante, un puñado de doncellas rocían pétalos anaranjados y violeta a tu paso. Una guirnalda adorna tu frente, y nadie se atreve a murmurar en tu oído: “recuerda que sólo eres un mortal”. Todo, todo, las doncellas, el palacio, las guirnaldas y los pétalos, todo desaparece ante tus ojos en el estertor repentino de un gas intestinal. Y entonces contemplas una vez más lo que tienes en la punta de tu tenedor. Y te preguntas, perplejo, ¿como he podido pasar tanto tiempo comiendo este estiércol? Es el momento cuando una gota de sudor helada te recorre la espalda: con una resolución implacable debes asumir la tarea de desperezarte, olvidar los pensamientos de grandezas pasadas y futuras y ponerte a trabajar el día. Para que la próxima vez puedas meterte el tenedor en la boca no solamente con tranquilidad, sino con fruición.

    Mi Roguelike update:

    Esta semana trabajé unas 6 horas. Incluyendo 3 horas esta mañana en el turno 3am 6am. ¿Resultados? Implementé dos comandos: pick a object (recoger un objeto) y drop (tirar un objeto). También eliminé 3 bugs. Me faltan por implementar Quaff a potion (beber una poción), Eat (comer), Read a scroll (leer un pergamino), Wear/Wield an item (ponerse armadura y empuñar un arma). Exchange weapon (intercambiar arma), Take off an item (quitarse una armadura, casco, etc) y Score (Puntaje). Falta implementar dos misiones y un recorrido por un bosque. No salgo de mi asombro por la complejidad de un simple juego como este.
    Enlaces

    • ¿Siempre has sospechado que eres un genio pero nadie quiere reconocerlo? Aquí tienes un juego para que afrontes la realidad y te desengañes de una vez y por todas. Trata de identificar más de 4 patrones por minuto. Decepción garantizada. Enlace.
    • Este es un juego bien divertido para practicar nuestros conocimientos de geografía. Llegué al nivel 7 sin problemas, pero entonces, se pone difícil. ¿Dónde queda Fairbanks?. ¿California? ¿Utah? Nope. Alaska. Enlace.
    • Una de las cosas que más me da risa de internet (la mayoría del tiempo encuentro cosas en internet que son risibles, o patéticas) son los comentarios que la gente coloca en los blogs. En esta página (donde se habla de 6 cultos regularmente desconocidos que podrían ser en realidad bien divertidos) dos idiotas comienzan a ofenderse de una forma tan ridícula que al final lo que ocasiona es hilaridad.
    • El más malvado mecanismo de todo ambiente gráfico para los programadores es copy and paste (copiar y pegar). Errores como Analize (src, src) cuando debería decir Analize (src, dst) son tan comunes que tengo una nota en mi monitor que dice “Revisa el copy-paste que acabas de hacer”. Digo que son malvado porque son errores invisibles. En esa lista está for (j = i… en vez de for (j = 1 y el nefasto j= men en vez de j=mem;
    • Todos los años se venden 75 millones de juegos en USA. De ellos, 28 millones son juegos nuevos, el resto son juegos usados. No importa cómo analizamos estos números, el mercado de los juegos es grande. Gamasutra.
    • Una hermosa respuesta a la pregunta: cuál lenguaje debo aprender, Schema o Lisp.
    • La inflación en Zimbabue llegó a 100.000% (lo que significa que 1 dólar USA cuesta 30.000.000 dólares zimbabuenses) así que desde el momento en que agarras un objeto en un supermercado (si es que eso existe allá) hasta el momento en que lo vas a pagar probablemente ya ha duplicado su precio. Mientras tanto su “presidente” no reconoce los resultados de las elecciones (o mejor dicho sólo él sabe los resultados) y se prepara para declararle la guerra a su propio pueblo. Enlace.
    • Gartner dice que Windows está colapsando, y que la situación es insostenible. Qué sorpresa. (Gartner es una consultora que emite regularmente análisis de mercado, de productos y tendencias, similar a Forrester Research)
    • Por qué usamos C++ para desarrollar juegos. No tiene sustituto (y sustituirlo es costoso y doloroso), es flexible, rápido, puede hacer lo que cualquier otro lenguaje puede hacer, puede comportarse como un lenguaje de alto o bajo nivel. Es sin embargo, un arma peligrosisima en manos de una desarrollador inexperto. C++ es un lenguaje solamente para programadores expertos.

    ¿Cuáles juegos estoy jugando en este momento?

    07-04-2008 5:17 AM
    • Aces High II, un simulador de vuelo ambientado en la segunda guerra mundial. No soy un experto en la materia pero creo que tiene casi todos los modelos de aviones utilizados por los aliados en esa guerra (no tiene los Mitsubishi que usaban los kamikase japoneses). Es bastante fidedigno, le faltan las ayudas de MSFS por lo que es bien dificil de dominar.
    • BatMUD, es un MUD como otros que he jugado en el pasado (Towers of Jadri, aardwolf). Tiene una excelente interfase gráfica que facilita bastante el juego. Lamentablemente está implementada en java y tarda 3 tasas de café en cargar. Casi tanto como Windows. Apenas estoy comenzando así que todavía no puedo dar una opinión. Este tipo de juegos requieren al menos unas 20-30 horas más o menos para formarse una idea de si es bueno o malo. Es como aquéllos libros de James Michener (Chesapeake), que luego de la página 100 es que comenzaban a ponerse interesantes. Según Wikipedia (volviendo al tema) BatMUD tiene 30mil suscripciones, y es, quizás, el MUD más antiguo que continúa vivo, porque anda suelto desde 1990. En este momento, segun el manual “getting started”, tiene 12885 rooms.
    • Dejé de jugar Tribal Wars. No creo que el juego esté desbalanceado, sino que para poder avanzar y llegar a más de 50mil puntos tienes que ser un jugador muy experimentado en los intrilinguis del juego. Es decir, está balanceado para jugadores con mucha experiencia de juego. Un novato eventualmente será conquistado por los jugadores más avanzados. Requiere también bastante dedicación. No es un juego para el jugador casual. requiere mucho más tiempo del que yo le puedo dedicar. Es como World of Warcraft. Es un juego que requiere no menos de 3 horas diarias o 20 horas semanales para jugarlo correctamente.

    Enlaces

    • Estamos viviendo es un extraño mundo, donde el Rupee, la moneda de curso legal en Hirule, la tierra de La Leyenda de Zelda, es más sólida que el dólar americano. Los oficiales de la Reserva Federal de US podrían aprender una cosa, o dos, sobre cómo llevar una economía estable, jugando este y otros juegos (Sim City por ejemplo, donde la equivalencia es 1US$=$0.001 Sim City).

      Hoy un roguelike… mañana el mundo

      01-04-2008 5:55 AM

      Mi primer roguelike continúa su avance. La historia está lista, y solo me falta implementar la fase final de la misión. Los elementos básicos del juego, están listos. Esta es la fase más peligrosa del desarrollo de un juego por mí. Cuando veo que está casi listo, normalmente pierdo interés por él y lo abandono.  Es algo así como un síndrome patológico de acumular juegos casi terminados. Mi baúl de zombies, como lo llamo yo, está lleno de todo tipo de engendros.

      Esta vez, sin embargo, tengo un estrategia para superar mi síndrome. En realidad este roguelike es parte de un desarrollo posterior. Así que, en realidad, no he terminado. Apenas estoy al 40% del desarrollo (¿40%? eso sí es interesante). Todo este desarrollo me va a permitir la generación de niveles y la lógica de npcs, misiones y combate de mi MMORPG. Porque de hecho es lo mismo. Lo que cambiá es la plataforma gráfica y la interfase para el usuario. Todo el motor interno, es el mismo. El sistema de inventario, el módulo de inteligencia artificial, el manejo de misiones. Todo igual. De esta forma la programación se hace paso a paso, logrando lo que en teoría de ventas se llaman victorias tempranas. Este procedimiento de desarrollo oculto e inconsciente me permitirá hacer un desarrollo modular, que es, al fin y al cabo, la forma como se desarrollan sistemas de alta complejidad.

      Este es un buen dato. Si quieres programar un juego de ajedrez, comienza programando tic-tac-toe. Si quieres programar un juego de tennis, programa primero un juego de pong. Parecen diferentes, pero desde el punto de vista de programación es lo mismo. Solo que utilizando esta estrategia tienes garantizado el éxito.

      Así que aunque mi roguelike está casi listo,  no he terminado. No he terminado. No he terminado. No he terminado. No he terminado. No he terminado.
      Enlaces

      • Robots… falta poco.
      • El pasado 19 de marzo, mientras organizaba un viaje al centro del país falleció Arthur C. Clarke. Leí todas sus obras de la primera etapa, siendo Cita con Rama la que más me influyó. Notable también es Fuentes del Paraíso donde desarrolla la idea del ascensor espacial.
      • Como mencioné en mi post anterior, he estado trabajando con Flex-ActionScript 3 durante un tiempo para hacer algunos componentes para páginas guep (web en oriental, un dialecto del oriente de venezuela). La experiencia fue aterradora (algo así como que te extraigan una prótesis dental de las que se suponen son para toda la vida). Curiosamente no estoy solo. John Romero (wikipedia) experimentó algo similar al tratar de programar un simple programa en AS. Lamentablemente para él, no leyó en el manual que el nombre del archivo debe ser igual al nombre del clase que contiene, por lo que pasó una hora googleando inútilmente. Yo sí leí eso en el manual a tiempo, así que lo resolví rápidamente. El mensaje de error es inútil, porque dice algo así como “llamada a un objeto posiblemente indefinido”, lo cual puede ser cualquier cosa. Lo mismo hubiese sido “tienes un error en tu programa”. Por mi parte no sé en esto momento si voy a continuar con Flex-AS. Me preocuparé de eso mañana.

      Algo de historia, sánscrito y Adobe Flex

      14-03-2008 8:04 PM

      Mi primera computadora fue una Commodore Amiga: la mejor computadora que he tenido en mis manos. Un sistema de ventanas más avanzado que el de WinXP, y estamos hablando de 1988. Multiprocesador. Sí, 1988. Sonido stereo, procesador gráfico dedicado, multitasking real, etc, etc, etc. Era mejor en su momento que la Macintosh, y, por su puesto, que aquél elefante rosado bailando tap llamado IBM PC XT. Sin embargo, nunca llegó a tener más del 1% del mercado, por lo que en cierta forma fuí un paria de la computación durante 9 años. Me convertí en un hacker de su sistema operativo, programaba en assembler 68000, y conocía a fondo su arquitectura. En cierta forma era un experto en sánscrito: realmente admirable, pero inútil.
      Esta experiencia con la Amiga me llevó a adoptar una conducta recelosa con las nuevas tecnologías. Normalmente trato de seguir a un mentor. Es decir, no importa cuál es mi decisión respecto a una nueva herramienta, aplicación, equipo: si alguien reconocido y a quien yo considero acertado usa esa tecnología, entonces yo estudio la posibilidad de usarla también. El que Niko (el programador detrás de Irllicht) esté usando Flex, es un buen indicador para mi de que es una tecnología que puedo considerar en utilizar. Además, Sap, Google y HP la están usando para mejorar sus interfases (fuente), lo que es un indicador adicional de que no es solamente propaganda lo que hay detrás de esta tecnología.

      Yo me he tomado mi tiempo para comenzar a trabajar con flash. Como programador web flash es mandatory. Sin embargo, yo he estado retrasando su adopción por múltiples motivos. Pero flex resulta tentador. Un SDK. Una consistente plataforma. Y una extensa documentación.

      Para alguien que no conoce, o conoce poco la combinación Flex-Flash-ActionScript, tratar de hacer un programa Hello World es como escribir un soneto en sánscrito. Es mollejudamente jodido (es una expresión de la región occidental de venezuela que traducida al español significa que es algo muy difícil. Curiosamente el diccionario de google la acepta como válida). Este tipo de experiencias me recuerdan una presentación a la que asistí donde hablaban de Motif, un ambiente de ventanas. El primer programador que hizo un programa para ese ambiente de ventanas fue el último: el resto lo que hizo fue copiarse. Hay ciertos ambientes que resultan como APL: un lenguaje de programación write only: es imposible entenderlo. Yo todavía no he desistido pero mis experiencias han sido desalentadoras hasta ahora.