Opinion

Temas: Opinion
Juan Mellado, 7 Mayo, 2008 - 19:30

yEns me ha mandado hoy un correo pidiendo algo de promoción para plusdeporte, su nuevo proyecto web. Una página de promoción de noticias deportivas que sigue el estilo marcado por el conocido digg, popularizado al castellano por menéame, y que ha servido de referencia para muchos portales especializados como puede ser el caso de pixélame. Webs colaborativas 2.0.

El aspecto de la página es muy claro, directo, y con una combinación de colores que a mi particularmente me gusta bastante. Cada tipo de elemento (título, texto, enlace, ...) es facilmente distinguible y sigue la tónica habitual de este tipo de webs, por lo que es muy fácil manejarse rápidamente por ella. No aporta nada nuevo al género, pero su finalidad la cumple con creces, aunque me gustaría algo más de feedback por parte de la página al votar una noticia.

Técnicamente, mirando el código HTML de la página, e invocando el validador, veo que canta una etiqueta que no está cerrada, pero no supone mayor problema. Todo está montado a base de CSS, incluyendo un bonito recordatorio de que "IE is out there". Para el JavaScript veo que han utilizado jQuery con esa forma suya tan particular de encadenar comandos.

En su divertido FAQ, donde entre cosas nos cuentan que en realidad lo que pretendían con la web era dominar el mundo pero que Google se les ha adelantado, he encontrado una url a un mini-blog de seguimiento del desarrollo de la propia página. Después me he dado cuenta de que existe un enlace directo en el menú principal, ¿pero quién se fija en esas cosas hoy en día?

Adrián me comenta en su correo que ha hecho la web partiendo de cero, con ayuda de Iván Guardado, utilizando PHP y MySQL. Teniendo en cuenta lo cuidado del aspecto y la fluidez con la que se mueve el conjunto sólo resta felicitarlos por el trabajo realizado.

¡Buena suerte chicos!

Juan Mellado, 31 Octubre, 2007 - 19:59

PacManUna de las cosas que no me gustan de los portales de juegos online son las facilidades que dan algunos de ellos para hacer trampas a los jugadores. Sobre todo cuando se trata de videojuegos de "habilidad". Cuando son juegos de "azar" entonces la cosa cambia y es la casa la que tiene más oportunidades de hacerlas, aunque en mi opinión ningún portal medianamente serio las hace.

La semana pasada estuve visitando algunos portales para ver que tipo de juegos ofrecían. Y no me refiero a webs que se dedican a recopilar miles de juegos hechos en flash, sino sitios que ofrecen unos pocos juegos escogidos, normalmente con la idea de poder jugarlos con otros usuarios conectados a la red. Pocos eran de acceso público, la mayoría pedían registro, y en algunos incluso se podía apostar con dinero de verdad.

Los casinos online los descarté enseguida, pues a excepción de algunos juegos de cartas, las posibilidades de ganar se basan en la suerte y no en la habilidad de quienes juegan. Ningún tipo de truco de los que puede encontrarse por Internet es válido, en los casinos todo depende de la suerte. Apostar el doble de la jugada anterior con la intención de recuperarse de las pérdidas, o contar cartas por ejemplo, no tiene sentido, porque las mesas tienen un límite máximo de apuesta, y las cartas se barajan en cada mano.

Los portales de videojuegos por su parte ofrecen la posibilidad de jugar a juegos en los que sí prima la habilidad del usuario por encima de la suerte, aunque este sea también un factor importante. Después de un rato me estuve fijando en algunas tablas de puntuación y llegué a la conclusión de que no podian ser reales. Siempre cabe la posibilidad de que lo sean, pero la verdad es que algunas me parecieron absolutamente irreales. Partiendo de esta premisa estuve analizando un par de días un juego a ver si podía llegar a alguna conclusión. Concretamente utilice como referencia uno de tipo Bejeweled (el intercambiador).

En este tipo de juego lo único que hay que hacer es juntar tres o más fichas de un mismo tipo a base de intercambiarlas. Uno de los factores clave es "ver" las combinaciones a la mayor velocidad posible. E identificar patrones es algo que un ordenador puede hacer facilmente, basta con que compare pixel a pixel los gráficos de unas posiciones con otras. Sin embargo, un análisis más detallado me permitió ver que eso era algo que ya se había tenido en cuenta. Ocurrió que me dí cuenta de que cada gráfico de forma individual no se dibujaba siempre igual, a pesar de representar el mismo tipo de pieza. A veces se desplazaban unos pocos píxeles hacia arriba, otras veces hacia un lado, ... Un cambio lo suficientemente leve como para que el jugador no notase la diferencia. Y la cosa no acababa ahí, sino que los colores también cambiaban ligeramente entre pieza y pieza, aunque fueran de un mismo tipo. Los tonos eran un poco más apagados o fuertes de pieza en pieza, e incluso el antialiasing se había hecho de una forma distinta. Es decir, se habían tomado precauciones para evitar que un simple análisis pixel a pixel fuera efectivo.

Sin embargo, aunque loable, es fácil pensar que ese sistema no puede resistirse a un análisis más serio. Los sistemas de reconocimiento de imágenes y OCRs hoy en día son lo suficientemente potentes como para reconocer figuras en diversas posiciones e incluso con ligeras variaciones. De hecho, mi primera idea fue que un detector de bordes podría ser suficiente como para identificar los patrones de cada tipo de ficha. Pero ni siquiera sería necesario llegar a eso, una simple descomposición por componentes de los colores (RGB) bastaría para identificarlas de forma fiable 100%. Se sumarían por separado las componentes de una batería de píxeles distribuidos regularmente sobre cada pieza, y los tres resultados identificarían a cada pieza individualmente. Comparar una pieza con otra sería tan fácil como comparar los tres resultados de una pieza con los tres resultados de otra dentro de un margen de error.

Como resulta fácil de suponer, absolutamente todos los portales prohiben en su página de condiciones de uso la utilización de cualquier tipo de software (o hardware como pantallas táctiles) que proporcionen ventaja a un jugador frente al resto. E incluso en algunos juegos online, a otra escala, como el popular World of Warcraft, incluyen dentro de sus condiciones de uso la posibilidad de instalar software que inspeccione los programas de nuestro ordenador a la busca de cualquier tipo de software que ofrezca algún tipo de ventaja.

Juan Mellado, 30 Octubre, 2007 - 20:11

Si siempre he odiado la hornada de programadores para los que la forma de generar código consiste en hacer uso intensivo y continuado del "copy paste", ahora resulta que descubro otra generación que me provoca más espanto todavía. La generación del "autocomplete".

Lo vi claro hace unos días, mientras examinaba un trozo de código con un compañero de trabajo. Su forma de trabajar hizo que se me abrieran los ojos como platos. Básicamente consistía en activar la opción de autocompletar a cada momento, y quiero decir "a cada momento". No fue capaz ni de escribir un "if", sólo dos letras, ojo al dato, sin utilizar la opción de autocompletado automático.

Pero, ¿por qué es malo usar una opción que a todas luces resulta tan útil?, ¿quién no la ha usado alguna vez, o incluso continuamente, para escribir código más rapidamente o examinar el detalle de atributos o métodos de una clase, por ejemplo?, ¿donde está el problema? Pues el problema está en la forma en que vi como se usaba la opción. No era para "autocompletar" la idea (sentencia) que estaba desarrollando, sino que realmente se usaba para "buscar" la solución al problema. Se esperaba "encontrar" cada sentencia, a cada paso, sin tener un guión preestablecido de lo que se quería escribir. Un estilo de programación basado en la continua selección de una opción dentro de las ofrecidas en un desplegable.

La experiencia fue tan ridícula, y llegó a un extremo tal, que me permitió entender varias cosas que había visto anteriormente en el código y que no acaba de entender porqué estaban así. Ocurrió que se escribió incorrectamente el nombre de un método ("contabilidzar"), en una de esas pocas oportunidades en las que realmente se tiene que escribir algo sin que la opción de autocompletar sea de utilidad [de momento]. Y así se quedó, arrastrándose por toda la clase, e incluso por otras clases que hacían uso de ese método. Una vez escrito ya no se volvió a pensar en él, simplemente se "autocompletó" cuando hizo falta, independientemente de que el nombre de método estuviera mal escrito.

WTF?

Juan Mellado, 11 Septiembre, 2007 - 19:31

Monkey IslandDespués de mi reciente experiencia con la segunda parte de Runaway, he estado mirando a ver que herramientas hay disponibles actualmente por Internet para la elaboración de aventuras gráficas. Este es un género de juegos que parece animar mucho a la gente a desarrollar editores propios. Posiblemente porque es un tipo de programa que causan una falsa sensación de "sencillez". Al fin y al cabo, vistos asi por encima, parecen constar tan sólo de un escenario 2D con objetos dibujados dentro del mismo, con un personaje que se mueve a golpe de ratón por un camino predefinido, una línea de textos, un inventario, y unas poquitas cosas más. Ni siquiera parece que haga falta que todo el conjunto se mueva a gran velocidad. Y razón no les falta a quienes dicen eso, pero del dicho al hecho hay un trecho.

Es el legado que dejó Scumm (Script Creation Utility for Maniac Mansion), la famosa herramienta de desarrollo de aventuras gráficas de Lucas. Desde su popularización, siempre ha parecido lógico pensar en que hacer una herramienta de "point&click" era el método ideal para crear este tipo de programas sin conocimientos técnicos previos. Aventuras gráficas para las masas. Y la verdad es que como programador he de confesar que no deja de tener su encanto pensar en ello. Aunque leer acerca de los problemas y soluciones que se plantean en la práctica durante la elaboración de una aventura gráfica sirve para ponerle a uno los pies en la tierra. Aunque eso nunca será impedimento para que unos y otros lo intenten, aunque sea sólo por el placer de intentarlo.

He encontrado bastantes programas por la red, aunque muchos de ellos proyectos personales que han quedado obsoletos y abandonados poco a poco con el paso del tiempo. Guiándome un poco por el aspecto de la web (hay que saber venderse) y las fechas de las últimas versiones publicadas (hay que actualizar con frecuencia) he estado ojeando las siguientes herramientas:

- Wintermute (WME): Según reza en la portada de la web, el "Wintermute Engine Development Kit" es una herramienta para el desarrollo de aventuras en 2D y 2.5D (personajes 3D sobre fondos 2D). Así a bote pronto parece un programa que ha sabido adaptarse a los cambios tecnológicos y que ofrece algo bastante más allá del clásico 320x200 donde se anclaron otros. El editor de escenarios y el organizador de proyectos parecen tener la estructura lógica que uno espera que tengan este tipo de software hoy en dia: árbol de entidades, pestañas de propiedades, editores WYSIWYG, soporte para varios idiomas, ... Se puede usar gratuitamente en proyectos comerciales, aunque se agradece una donación para continuar con el desarrollo.

- Adventure Game Studio (AGS): En comparación con el anterior creo que lleva peor lo de la edad, aunque tiene una comunidad muy grande con un buen número de proyectos finalizados. La limitación a 800x600 llama bastante la atención cuando eliges la opción de crear un nuevo proyecto, así como la edición de paleta. Leyendo entre líneas se puede sobreenteder que están en contra del alarde técnico en favor de la calidad de la aventura. El editor parece bastante complejo de abarcar de una sola vez por el gran número de opciones que ofrece, aunque tiene detalles curiosos, como mostrarte el script equivalente al resultado de elegir determinadas opciones en los cuadros de diálogo. Pero lo mejor de todo es sin duda la opción "Make my game.."

- Lassie Adventure Studio (LAS): Este producto está más orientado a obtener beneficios por parte del autor que el resto y tiene la peculiaridad de tener soporte para la distribución via web. Se presenta en dos versiones, una hecha en Flash que genera un fichero SWF que puede reproducirse desde la web o distribuirse como una aplicación independiente, y otra en la que sólo se puede trabajar desde dentro del propio entorno de Director (Adobe) y sólo tiene la opción de generar un fichero para su distribución independiente. Tiene una página de recursos bastante completa.

- Adventure Game Authoring System (AGAST): Este realmente es un lenguaje de script, ya que el autor parecía estar más interesado en crear un compilador que un juego de editores. Quizás un proyecto demasiado personal.

Y por el camino me dejo muchas más: Visionaire, Adventure Maker, 3D Adventure Studio, ... la lista es interminable.

Lo que parece una constante en los que merecen la pena es el soporte de algún tipo de lenguaje propio para la elaboración de scripts. Aunque curiosamente un verdadero producto "point&click" debería poder prescindir de ese tipo de aditamentos. Este tipo de "features" debería verse siempre como un valor añadido, orientado sólo hacia los desarrolladores avanzados que quieran poder hacer algo más que lo básico. Contemplar todos los posibles escenarios que puedan plantearse por adelantado es imposible.

De todas formas, como ya he dicho alguna que otra vez, el mayor problema de este tipo de programas para mi sigue siendo la elaboración del "contenido": elaborar un guión que resulte interesante, crear unos personajes que estén coherentemente definidos, diseñar unos puzzles que resulten lógicos a la par que retadores, construir un universo visualmente atractivo, y además conseguir ponerlo todo junto para que se perciba como una única entidad: un juego.

Temas: Opinion
Juan Mellado, 13 Febrero, 2007 - 20:01

Hace un tiempo parecía que todos los productos deberían ser "multimedia", o que la "realidad virtual" sería el medio natural a través del que accederiamos a toda clase de contenidos. Palabras de moda, que como tales, han pasado a un segundo plano devoradas por otras nuevas. Algunas por haber sido asimiladas dentro de nuestra concepción natural de las cosas, de forma que hoy en día, por ejemplo, nos parece redundante decir que nuestro ordenador es "multimedia", se supone que por el mero hecho de serlo ya lo es. Y otras por representar conceptos que finalmente no se han impuesto entre el gran público, como los guantes y cascos de "realidad virtual", aunque el mando de Wii es un buen sucedáneo que ha calado entre las masas. Dadme una buena campaña de publicidad y moveré el mundo (Nota: dicen que si además el producto es bueno ayuda bastante).

Actualmente parece que se ha impuesto utilizar el nombre de una tecnología concreta, y no el concepto que representa. MP3 es un claro ejemplo. Es corto, directo, atractivo, diferenciador, como en su día lo era VHS, aunque en el fondo no tengamos ni idea de lo que significa esas siglas. MP3 es música, pero es más "guay" llamarlo MP3. El continente por encima del contenido. ¿Qué escuchas? Un MP3.

Sin embargo la palabra de moda es "Internet", ¿o debería decir "Google"?, el nombre de una corporación, amigo Orwell. Quizá no sea tan famosa como la Coca-Cola, pero al tiempo. Es el "Buscador", aunque para muchas personas es "Internet". De hecho, es la página de inicio de muchos internautas. No son pocas las veces que he visto que para acceder a una cuenta de correo web se busque primero en Google el nombre de la página ("hotmail.com" por ejemplo) y luego se acceda pinchando sobre el primer enlace que aparece en la lista de resultados en vez de escribir directamente el nombre de la web en la barra de direcciones. Visto esto no resulta dificil entender porque se suceden tantos casos de "pishing", los pobres internautas aficionados no tienen ni idea la mayoría de las veces de donde se encuentran. Si sobrevivirá o no el concepto de "Internet" como palabra de moda no lo sé. Lo que si sé es que representa un concepto bastante etéreo: es una "infraestructura". Podrá variar su calidad o alcance, de igual forma que las antiguas sendas de paso han sido sustituidas por carreteras, rutas marítimas, líneas aéreas, y en un futuro, vuelos espaciales, pero lo que representa seguirá estando ahí: la necesidad innata de comunicación que tenemos los seres humanos, de contar y preservar nuestra historia, de evolucionar.