Ceibal Jam/DesarrolloJuegos

From OLPC
< Ceibal Jam
Revision as of 15:28, 2 November 2010 by 190.134.47.150 (talk) (→‎Desarrollo de juegos)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Desarrollo de juegos

Experiencia en el primer Ceibal Jam

Uno de los temas que despertó el interés en varios de los participantes fue la creación de juegos. Estos pueden brindar un camino para acercar más las computadoras a los niños, y a través de actividades divertidas trasmitirles conocimientos que los ayuden a formarse y educarse.

Dentro de los asistentes al Jam se observó la preocupación en algunos profesores y padres de que los niños puedan instalar juegos con violencia dentro de las XO, sin embargo, no necesariamente todos los juegos son malos, y tampoco la educación tiene porque ser aburrida. Así que siendo un poco creativos tal vez podamos encontrar motivos para que los niños se diviertan y al mismo tiempo aprendan algo nuevo. En definitiva, a quien no le gustaba jugar cuando era niño!

Dentro del Jam, se tocaron distintos temas relacionados con juegos:

  • Se instaló GBrainy en una XO (un juego que ayuda a desarrollar el pensamiento lógico). El mismo se pudo instalar y ejecutar sin ninguna dificultad. Quedó pendiente traducirlo de inglés a español.
  • Uno de los grupos se dedicó a aprender PyGame (una librería para hacer juegos con Python) y desarrollar un prototipo de un juego, el cual consistió en desplegar varias imágenes y seleccionar cuál es no es de la misma categoría. Al final del domingo el grupo mostró en una de las XO un prototipo funcionando desarrollado enteramente en el Jam.
  • El grupo en que estábamos nosotros se ocupó de trasladar a las XO un prototipo que desarrollamos con PyGame en una computadora convencional y explorar cómo se comportaba (abajo se comenta la experiencia).
  • También hubo otros grupos que trabajaron en escribir código y trasladar juegos ya construidos en PyGame a las XO.

Desarrollando juegos en las XO

Construir un juego no es una tarea fácil, requiere de equipos multidisciplinarios que combinen artistas, músicos, programadores y también diseñadores que logren hacer juegos divertidos. En esta sección se describirá únicamente el aspecto técnico narrando nuestra experiencia al correr en las XO un prototipo de juego hecho en PyGame.

Al desarrollar un juego hay varios aspectos técnicos que tener en cuenta, como la velocidad con que va a correr el juego, cuánto espacio ocupará, cuando tiempo se necesitará para descargarlo, etc. Las computadora de hoy día han avanzado mucho, y si hacemos juegos sencillos no es tan difícil resolver estas dificultades. Sin embargo, la XO nos impone niveles de exigencia mayores, ya que el juego debe correr en una computadora con un procesador más lento, además es deseable que se pueda bajar por Internet y no requiera mucho espacio para que entre junto con otras aplicaciones en la memoria Flash de 1GB de la XO.

A muchos de nosotros que no somos niños, el Ceibal Jam nos brindó la oportunidad de tener en nuestras manos una XO y jugar con ella. Así que a la mañana del sábado llegamos con un notebook, un pequeño prototipo desarrollado en PyGame y varias preguntas: ¿tendremos que hacer cambios para que ande en las XO?, ¿funcionará rápido?, ¿se tendrán que instalar paquetes adicionales para correr PyGame?

Imagen del prototipo

La primera experiencia fue muy grata. Básicamente, copiamos el prototipo a un PenDrive, lo enchufamos en uno de los puertos USB de la XO, abrimos una línea de comando en la ruta del PenDrive, ejecutamos "python main.py" y el juego estaba andando!. Las librerías de PyGame ya vienen instaladas en las XO, y no fue necesario hacer ningún cambio para correr el mismo código que corre en Linux y Windows dentro de las XO. Si bien el juego funcionaba más lento que en nuestro notebook, corría a una velocidad muy buena (180 frames por segundo)

Aunque hubo un aspecto que saltó a primera vista. El juego se veía chico, utilizaba sólo 1/4 de la superficie de la pantalla. Al desarrollar el prototipo asumimos que la resolución de las XO a color es de 600x450, sin embargo el juego corría a 1200x900. Así que en el resto del Jam nos dedicamos a intentar solucionar este problema.

Luego de observar más detalladamente la documentación cómo es soportado PyGame para las XO descubrimos que sólo se soporta el modo 1200x900 y no se puede utilizar otro modo. Así que si queremos trabajar en esta plataforma tendremos que hacer juegos a esta resolución. Esto puede parecer bueno, ya que al menos en mi notebook no puedo correr un juego a esa resolución en pantalla completa, sin embargo, introduce un problema de almacenamiento y eficiencia. Hacer un juego a 1200x900 implica que si vamos a utilizar imágenes (.jpg, .png, .gif) vamos a tener que almacenarlas con resoluciones altas y esto puede requerir mucho espacio. Otra alternativa es escalar las imágenes con PyGame a través de programación, esta última fue la alternativa que seguimos y los resultados fueron muy satisfactorios. Es decir, tomamos las imágenes para 600x450 y duplicamos su resolución en tiempo de ejecución. Ahora el juego pasó a aprovechar toda la pantalla, sin aumentar el tamaño de las imágenes almacenadas y sin defectos visuales notorios. El único deterioro fue en la velocidad, pasó a funcionar a 60 frames por segundo, sin embargo, sigue siendo una velocidad buena para el prototipo que se probó.

Conclusiones de la experiencia de correr PyGame en las XO

Python brinda un lenguaje sencillo y adecuado para hacer juegos. Con poco código se puede tener rápidamente un juego funcionando. Uno de los cuestionamientos que se le hace a Python como plataforma para desarrollar juegos es que pueda introducir problemas de eficiencia por ser un lenguaje dinámico. Sin embargo, el mayor uso de tiempo de procesamiento generalmente está en las librerías gráficas, y PyGame brinda una alternativa eficiente al estar basada en la librería SDL implementada en C/C++. En síntesis, la combinación Python + PyGame brinda una plataforma potente y eficiente para desarrollar juegos en las XO (además se puede contar con un entorno de desarrollo moderno utilizando Eclipse + PyDev).

Las XO tienen una resolución alta (1200x900), lo cual implica que se debe tener cuidado en cómo es manejan los gráficos, ya que las computadoras tienen un espacio de almacenamiento limitado (menos de 1GB) e idealmente las aplicaciones deberían poderse descargar de Internet. En la experiencia se probó expandir las imágenes utilizando las librerías de PyGame y se obtuvieron buenos resultados tanto visuales como de almacenamiento y eficiencia.

Aquí se deja el código completo del prototipo que se desarrolló: Código

Si quieren hacer consultas adicionales o compartir experiencias pueden comunicarse conmigo en: nico@trojanchicken.com