@ agnasg

agnasg


Ejecutable de un Programa Lisp

30-09-2009 9:12 PM

Esta es más una digresión que algo relacionado al desarrollo de un MMO pero quiero comentarlo para que quede como documentación para alguien que esté interesado en el tema (incluyéndome a mi en un futuro)

Para hacer unas pruebas del módulo de inteligencia artificial del juego he estado probando algunos prototipos, algunos desarrollados en C++ y otros en lisp.

El problema de desarrollar en Lisp (al menos para mi) no es tanto el lenguaje al que ya me he acostumbrado bastante bien, sino su ambiente, el IDE. Al cual todavía no me he acostumbrado en lo absoluto. Lo ideal sería poder desarrollar todo en un solo ambiente. Pero para ello necesitamos generar un ejecutable con Lisp. Dando vueltas por ahi y por allá descubrí uno maravilloso y software libre llamado ECL . Se puede bajar de aqui.

Hay también formas de generar un ejecutable desde lisp utilizando SBCL, mi implementación favorita de Common Lisp (y la recomendación generalizada es el programa final llame a mis librerías en C y no al revés. Aqui hay una discusión al respecto)

Para bajarlo necesitas un programa de control de versiones llamado git (muy popular dado que los manejadores de versiones cvs son algo engorrosos y problemáticos). La mayoría funcionabien solamente para Unix y Linux, pero hay una versión limitada para Windows que se puede bajar de aqui. Esta versión sirve a nuestro propósito.

Lisp no es un lenguaje tan impopular como podría pensarse. Hay varios sitios donde se puede leer noticias actualizadas sobre el tema (por ejemplo Planet List, Hacker news, etc). Pero no es C, no C++. Y no me refiero a que uno es un lenguaje funcional (casi, o más o menos) y el otro es imperativo, sino que al decir Lisp estamos hablando de una familia de lenguajes. Lo que yo estoy usando es Common Lisp, que está basado aproximadamente a una estandarización del original. Pero también otras versiones similares, y está Scheme y otros sabores. Y cada uno es estricto en ciertas peculiaridades y otros no tanto. Por ejemplo, Clojure es un lenguaje que produce código JVM (la máquina virtual de Java) y es un dialecto de Lisp. Así que es otra alternativa, interesante por cierto porque corre en el navegador. Ha tenido un gran auge los dos últimos años y mucha gente se ha visto motivada a utilizarlo como una aproximación a Lisp. Pero genera código para JVM y como el futuro de Java es tan incierto, esta solución tiene sus problemas. Scheme ya tiene su tiempo en la calle y ha sido acogido cariñosamente por la comunidad universitaría, pero algo que sé desde hace años es que es limitado y eventualmente el poder de Lisp es necesario. Así que para evitarme más rodeos (y tener que seguir pensando en el tema) me estoy quedando con Common Lisp.

La ley de Jante al revés

30-09-2009 3:59 PM

La ley de Jante forma parte de la cultura de los países nórdicos y es medianamente conocida en Europa. En este lado del atlántico apenas 4 gatos la conocen. Yo la leí por primera vez en este maravilloso post de Larisa donde ella (o él) trata de explicar ciertas conductas en Wow. La ley entre otras cosas establece una forma de conducta inducida en pequeños pueblos y que se resume en variaciones de lo siguiente:

  • No pienses que eres especial.
  • No pienses que eres mejor que nosotros.
  • No pienses que eres más listo que nosotros.

Y así continúa por el mismo estilo. La ley no es particularmente benigna o maligna, sino que es un método no escrito para eliminar cualquier individualidad sobresaliente y fortalecer el grupo. Eso es bueno y malo, y las razones tienen que ver con el enfoque que le demos a cómo debe superarse una sociedad, un pueblo o un grupo, o cómo debe quedarse en el atraso. ¿Es haciendo que los individuos se superen y de esa forma el grupo se supera, o por el contrario eliminando cualquier destello de superación se logra una cohesión y una fortaleza en el grupo que permitirá su superación colectiva? ¿O esta filosofía destruye las posibilidades individuales y colectivas? Es interesante porque en mi país parece que las cosas funcionan al revés, y los resultados son igualmente destructivos. Todo el mundo piensa que es especial, pero nosotros somos un desastre. Todo el mundo cree ser mejor, pero nosotros somos subdesarrollados. Todo el mundo es más inteligente que los demás, pero nosotros somos unos ignorantes. Tengo más amigos viviendo en el exterior que aquí y varios de los que todavía quedan quieren irse a vivir a un país mejor que esto. Es, en definitiva, la ley de Jante al revés.

Juego justo

21-09-2009 5:15 AM

En la lista anterior hay un elemento importante pero ausente. Se trata del juego justo.  Es uno de los componentes del balance del juego que permite que todos los caracteres tengan  similares capacidades y oportunidades sin importar su clase o raza. Juego justo. Por ejemplo, es lo contrario a lo que recientemente hicieron la gente de SOE en Freerealms.  Resulta ser que uno de esos items raros que todo el mundo quiere llamado Rudolfo’s Speedy Kicks (el cual permite correr más rápidamente)  fue modificado en un patch. Este item es importante porque freerealms contiene muchos mini juegos donde la rapidez es crucial. Seguramente esta modificación tuvo el objetivo de mejorar el balance del juego. Buenas intenciones, como siempre. Pero los dueños del item comenzaron a quejarse y las quejas se estaban convirtiendo en un motín. Como SOE no quiere la mala publicidad (como todo el mundo) volvió a modificar el item y restauró en parte los atributos originales PERO solamente a los que ya tienen el item. ¡No es justo! fue el clamor popular y ahora el motín se transformó en saqueos. Juego justo SOE!

Todos los juegos tienen miles de items y es imposible diseñarlos desde el comienzo de forma tal que mantengan el balance del juego. Así que las modificaciones posteriores son inevitables. Inclusive tomar decisiones justas para todo el mundo es una utopía. Así que las decisiones deben tratar de ser justas pero teniendo en cuenta lo siguiente: una vez que tomas una decisión, no te puedes echar para atrás. Yo creo que trabajando el diseño del juego con esta premisa básica se puede lograr un nivel de balance aceptable.

Eso y una hoja de cálculo bien diseñada. Se ha dicho que wizard101 es en realidad una hoja de cálculo en forma de juego, porque consiste de miles de items, 6 escuelas de magias, misiones a montón y un balance perfecto. Tan perfecto que es aburrido. La hoja de cálculo debe permitir saber con un conjunto de items que capacidad de combate tiene un caracter contra un enemigo.  Estas hojas de cálculo tienen tantas dimensiones que resulta imposible comprenderlas, y eventualmente se convierten en un monstruo marino con miles de cabezas. La de wizard101 debe ser un hidra gigante.  El trabajo de modelamiento es obviamente una epopeya pero puede lograrse. Pero más importante es cómo agregar nuevos items, clases y razas a la hoja. Quizás esta es la parte más importante de su diseño. ¿Cómo luce una de estas hojas? Pues imagina una hoja de cálculo donde las columnas son las estadísticas (fuerza, inteligencia, agilidad y fortaleza), y donde las filas son los items.  Pero tambien debes agregar los modificadores tales como talentos, habilidades especiales, items que modifican a otros items, los modificadores de raza y modificadores de clase. Es decir, las  fórmulas pueden llegar a tener 12 o 13 parámetros. Como decía John Lennon, puedes imaginarlo… si lo intentas. Y si lo logras quizás llegues al deseado juego justo.

Si no lo puedes hacer bien… no lo hagas!

17-09-2009 3:31 PM

Aceptarían los jugadores de un MMO un juego que hace una sola cosa, pero lo hace perfectamente, con la promesa que elementos adicionales serán agregados más adelante? Deben los desarrolladores dejar de tratar todo al mismo tiempo, porque aparte de Blizzard y Soe, probablemente no hay nadie más que pueda costear hacerlo todo bien?
(“Would MMO players accept a game that did one thing, but did it brilliantly well, with the promise of further elements of the game being added after the fact? Should MMO developers stop trying to do everything at once, because outside of Blizzard and SoE there probably isn’t one of them that can afford to do everything well?”)

Tales preguntas se formulan Killed in a Smiling Accident como una continuación de una discusión universal sobre qué es lo que define a un buen MMO, a qué llamamos un MMORPG, y si es Wow el único camino a seguir. Como estamos a punto de tener dos nuevos MMOs en la calle (Champions Online y AION) estas preguntas están nuevamente en la palestra. Tanto es así, que en este review de Champions Online la discusión comienza precisamente puntualizando las renovadas expectativas sobre qué debe contener un MMO y cómo debería jugarse (“now certain expectations about what an MMO should contain, and how it should play”).

¿Cuáles serían las respuestas en el campo del desarrollo independiente de juegos? Aquí está mi lista:

  • Incluya solamente aquellas características que puedas desarrollar apropiadamente. Si una característica importante implica una inversión muy alta simplemente déjela para la siguiente versión.
  • Revisa todos los días tu idea original. Al diseñar una nueva característica o estudiar si incluirla o no, formulate esta pregunta: ¿esto ayuda, apoya, tiene concordancia, mejora la jugabilidad del juego, en fin, favorece el diseño de tu idea original ? Si la respuesta es no, ya sabes qué hacer.
  • No incluya características antipáticas. En Wow los alquimistas pueden producir a través de un recipe una poción de invisibilidad. Efectivamente los enemigos no te pueden ver, ¡Pero! tú tampoco los puedes ver ellos!.  Sólo dura 15 o 18 segundos y los enemigos élites tienen altas posibilidades de detectarte. ¿Para qué tanto diseño si al final los jugadores no lo van a usar, dado que no vale la pena?
  • El juego tiene que ser divertido así que la nueva característica a ser incluída debe responder positivamente a la pregunta: ¿esto le agrega diversión al juego, o por el contrario contribuye a hacerlo tedioso, aburrido o en el peor caso insoportable? Los autores de Gaia online incluyen este como uno de los elementos para hacer que el juego tenga éxito: “make the game fun” (los otros dos elementos son haz que sea fácil comprarlo  y haz que los jugadores quieran comprarlo).
  • Un juego mínimo debe tener misiones, o combate, o aventuras de investigación o de exploración o un sólido proceso de desarrollo del personaje. Si carece de todo esto no es un MMO, es un crucigrama.
  • … y finalmente, si no lo puedes hacer bien… no lo hagas!