PyWeek5: 7 pythonescos días

Y fueron días muy activos. Programando a full en python. La competencia PyWeek – ya en su quinta edición – consiste en construir un juego completo en 7 días programando en python y nos esforzamos en hacerlo teniendo como objetivo sólo terminar un juego. El resultado fue mejor de lo esperado.

T-3 T-1 T-0 T+1 T+2 T+3 T+4 T+5 T+6 T+7

T – 3 días: Yo sin registrarme en la competencia. Juanjo nos manda un e-mail convocando el equipo. Diego lo contesta, el resto… silencio.

T – 1 días: Juanjo insiste y entonces me registro, casi que fue como pensando: “y veamos que pasa”. Ingresé en la web de la competencia y miramos los temas para votar: Twinkle (titilar), el que Juanjo sugirió votar porque tenía una idea muy buena, Turmoil (tumulto), Ticking (goteando), Twisted (retorcido) y Tiger (tigre). Cada miembro del equipo votó a conciencia, dándole prioridad a Twinkle y personalmente voté más o menos en el orden expuesto de los temas. Dejé a Twisted en el antepenúltimo lugar y a Tiger en el último porque sencillamente no se me ocurría nada como para hacer. A todo esto, el euqipo incrementa sus miembros con Sebastián Galiano, como diseñador gráfico, y Manuel Kaufmann en desarrollo.

T-0 días: ¡El día de inicio de la competencia! El sábado por la mañana Juanjo vino a casa y nos pusimos a desarmar su impresora para tratar de arreglarla, sin éxito (por lo menos, ahora imprime algo, aunque sea en blanco, negro y con algunas líneas en blanco). Hacia el mediodía cae Diego y Mariano por casa para comer. Mientras degustábamos un exquisito locro intercambiábamos ideas sobre los temas propuestos y pensábamos, entre otras cosas, en la música. El nombre de David Capello salta a la mesa y al rato Juanjo le manda un e-mail invitándolo. Sin su aporte musical, el juego hubiera sido sobre “los sonidos del silencio” 🙂
Con la mitad más uno del equipo reunidos en casa, levantados los platos, anotamos en el pizarrón las palabras inspiradoras y las ideas de temas para elaborar un juego. Se me ocurrió una muy linda para Tiger y esperaba que ganara. Pensamos en un par de temas para para cada palabra excepto para Twisted: no teníamos ni uno. Blanco. Sencillamente no se nos ocurría nada para esa palabra. Cada cual volvió a sus quehaceres y esperamos el resultado de la votación para la noche.
21:00 hora local. Da inicio a la competencia y la palabra seleccionada es: ¡Twisted!. Hacia las 21:20 Juanjo me manda un sms preguntando cuál fue la palabra ganadora y le doy la noticia (él viajaba a su pueblo para votar al día siguiente, aquí en Santa Fe fueron las elecciones por gobernador y otros cargos).

T + 1 día: fue casi de descanso para todos. Algunos nos documentábamos, otros pensaban. Cada vez que pasaba junto al pizarrón miraba la palabra “twisted” y mi mente seguía en blanco. Juanjo fue el único que preparó algo e implementó una pequeña presentación de su idea, que como nos anticipó por mail y sms, básicamente consitía en un tetris donde las personas caían y eran retorcidas para encajar. Una hermana de Mariano sugirió hacer “enredos en pareja” (?). Hubo otras ideas prontamente descartas… pero no teníamos nada concreto.

T + 2 días: como habíamos convenido, el lunes a las 14:00 nos reunimos otra vez en casa con la ausencia de Sebastián y Manuel (este último estaba viajando desde Córdoba y llegaría a la tardecita). Se sumó Pablito Hernando como observador y para darnos opiniones. Allí nos pusimos a debatir las ideas. Casi que la del tetris salió ganadora pero de algún modo, fue evolucionando (nadie quería un tetris) hasta convertirse en un zombi que debía retorcerse para encajar en ataúdes. Se pensó también en ataúdes que debían retorcerse para encajar en los zombis retorcidos, pero la idea de fondo era encajar algo con otra cosa. Sin una idea bien definida, pusimos manos a la obra, a programar y a investigar. ¿Era posible?
Creamos un proyecto en code.google (desde hacía días teníamos una lista de correo interna – preexistente – para comunicarnos)
Manuel cayó como a las 19 y Diego tenía otro compromiso hacia las 20 pero volvería para las 21 y Juanjo se iría a las 21, pero seguiría on-line más tarde. David también se retiró y Manuel, cansado por el viaje, también se fue antes de las 22. Después de esa hora, quedamos Mariano, Diego y yo en mi casa mientras el resto del equipo estaba online. Fue una larga jornada que terminaría a las 4 hs del día martes…. ¿locos nosotros? Nooooo…. ¡hasta nos olvidamos de cenar esa noche! (y Diego olvidó el cumple de una amiga…. auch)
Pero el motor del juego estaba casi listo, como también otros elementos. Nos faltaban muchos detalles, gráficos, sonidos y una sólida historia.

T + 3 días: el martes estábamos destruidos. La mayoría del equipo atendió a diferentes compromisos (la vida continúa) y alguien le pasó un link a Juanjo con una implementación de nuestra idea: http://bandadesacatada.blogspot.com/2007/08/juguemos-al-tetris.html je je. Se seguía avanzando a un ritmo menor y yo había investigado algo sobre los zombi y el vudú, porque pensé que alguna historia podría armarse a partir de allí. Por la noche estábamos otra vez todos reunidos online. Pero hacia las 0:30 la mayoría estábamos descansando.

T + 4 días: Pensábamos en una historia. Alguien tiró la idea de atrapar zombis, otro dijo algo de zombis atropellados que había que meter en el ataúd. Mi “investigación” me dio material para preparar la siguiente:

«Abélard Claude Bagett había nacido en una pequeña aldea cercana a Puerto Príncipe, en la caribeña isla de Haití. Creció fascinado por la religión de su comunidad y desde muy joven decidió participar más activamente en ella. Con su desgarbada y delgada apostura, haciendo honor a su apellido, Abélard armó sus valijas y viajó a Africa con el apoyo – y gran alivio – de los habitantes de su aldea natal. Fue en ese exótico continente donde se dedicó a estudiar con pasión, aceptando el llamado de su vocación. Hoy Abélard estudia Vudú y espera convertirse en su gran Bokor.
Su entusiasmo y determinación son su marca distintiva, pero pronto obtuvo gran fama por la torpeza con que ejecuta sus hechizos. Es un hecho que cuando Abélard se aproxima a una aldea, sus habitantes huyen despavoridos de ella. Como bokor, Abélard es un fracaso y no cuenta con el beneplácito de sus Loas.
¡Pobre Abélard! ¿Qué sucedió? ¿Qué pudo haber hecho este pobre aspirante a Gran Bokor? Y sucedió que al trabársele la lengua durante la liturgia de una potencialmente peligrosa ceremonia, provocó el mayor levantamiento de zombies de la historia africana.
Ayuda a Abélard a atrapar a tantos zombies como te sea posible en sus ataúdes.
Ayúdalo para que la sociedad pueda aceptarlo.
Ayúdalo para ayudar a Africa a regresarlo a Haití»

Pero alguien descubrió cómo meter un efecto de nieve y tanto el Caribe como Africa fueron. Tampoco gustó que la historia hablaba de varios zombis cuando sólo teníamos uno… en fin, la historia quedó en la historia (y en esta web 😉 ). Diego se apareció con otro juego de zombis que había encontrado y ya quería cambiar el personaje principal… pero lo sacamos a patadas, je je je. El zombi quedó y su juego no se parecía a nuestra idea.

Ese miércoles nos volvimos a juntar en casa a las 14:00. Estábamos todos. El equipo completo reunidos de cuerpo presente por primera vez. Seguimos agregando música, efectos, pantallas, mejorando el código…. aunque esta vez no nos quedamos como el lunes anterior. A la nochecita despejamos el lugar excepto Mariano quien se quedó a comer. Hasta la medianoche seguimos, presenciales algunos, por msn, jabber, google talk o irc otros (¡de locos tener tantas formas de comunicación! Tenía abiertas mil aplicaciones).

T + 5 días: Juanjo se despacha con un e-mail enumerando las tareas faltantes, cada vez menos. Yo me despacho con otro bastante extenso (qué raro en mí) detallando algunos puntos de Juanjo, agregando otros y principalmente añadiendo una nueva historia, más ajustada a lo que teníamos hecho:

«Tú eras un muerto feliz.
Descansabas tranquilo durmiendo el «sueño eterno» en tu cómodo y mullido ataúd de caoba, 6 pies bajo tierra.
Un oscuro hechicero tenía otros planes y decidido a tener obedientes sirvientes, te transformó en zombi.
Entonces aparece el novato Abélard Claude Bagette, un aspirante a «Gran Kobol», quien en su bondad decide devolverte a la tumba.
El malvado hechicero y el valiente novato Kobol inician una terrible pelea. Hechizos y pociones vuelan por doquier.
Debido a esto y momentáneamente liberado de la voluntad de tu malvado amo, aprovechas la oportunidad para liberarte.
Si te alimentas de los nebulosos hechizos, podrías volver a ser un muerto feliz. Si comes los suficientes, hasta podrías resucitar y volver a ser humano.
Pero cuidado! Las pociones rojas destruyen los hechizos de Abélard, mientras otras pueden beneficiarte… o no.»

Y así las pelotas se convirtieron en botellas, los ataúdes en hechizos nebulosos (nos simplificó gráficas) y esta historia quedó. Al jueves ya teníamos Historia Oficial. Quizás deberíamos haberla tenido desde antes, no sé. Pero a partir de aquí se quitaron algunas características extras, se cambiaron algunas reglas y la sangre explosiva se transformó en nubes que explotaban.

David se preparó una introducción muy buena a la que faltaba la música y desde el principio yo quería Tocatta y Fuga de Bach (y me salí con la mía, je je je, aunque más no sea algunos compases).

T + 6 días: ¡falta 1 día! Ese viernes – apenas ayer – nos juntamos en casa por última vez. Mariano cayó temprano hacia las 18 hs, David trabajaría en su teclado musical desde su casa y metiendo mano en el código, y Sebastián otro tanto con el diseño gráfico (después de haber estado casi desaparecido a último momento se puso a full terminando unas gráficas espectaculares). Fue otra maratón que cortamos hacia las 7 de la mañana del sábado (David se había desconectado algunas horas antes), el día T + 7. Con Juanjo nos quedamos hasta la 8:30 esperando los últimos dibujos de Sebastián.

Con los últimos dibujos integrados el juego quedó en un 99.9% listo. Y nos fuimos a descansar.

T + 7 días: Fin del plazo. La entrega. Llegamos al final, o casi. Al mediodía estaba despierto y examinando el código, buscando cosas y se me dio por “mejorar” algunas: desde el principio el consumo de cpu me preocupaba bastante y alcancé a tocar algunas pantallas para disminuirlo a… 0! Je.

David ya estaba online y él también estaba tocando código, mejorándolo y cambiando algunas cosas que no le gustaban. Al rato se suman Diego y Juanjo, todos online. Y Juanjo impaciente para empaquetar el juego, subirlo y entregarlo. Hasta casi último momento estuvimos discutiendo que era muy fácil jugarlo (Diego y yo queríamos subir la dificultad, otros miembros no… así que la dificultad no se tocó). ¡Jua, ya no queríamos ver ni una línea más!

Además, previendo que el servidor iba a estar poco menos que lentísimo esa noche – todos los equipos entregando sus juegos – quisimos anticiparnos a este hecho.

Y así resultó. Para más o menos las 16 horas, como 5 horas antes de la finalización del plazo, habíamos entregado al mundo un juego, nuestro primer juego. Y a pesar de que nuestro objetivo era terminarlo, no importa su calidad, creo que logramos algo muy bueno, un producto terminado y a pesar de no proponerlo, adictivo.

El juego puede bajarse desde la web oficial de PyWeek (ahí hay juegos de otros equipos, busquen el de 7 Zombies, pero no intenten bajarlo hoy sábado ni el domingo porque está casi inaccesible la web), o, si tienen instalado subversion en su PC, desde la página del proyecto en code.google. Además, necesitan tener pre-instalado en la computadora tanto Python como Pygame. Si tu sistema operativo es linux, quizás te falte pygame, si tienes windows, fácilmente se pueden bajar e instalarlos (también para linux y otros sistemas operativos, gracias a que Python es un lenguaje multiplataforma).

7 nombres se muestran en el High Scores, 7 somos los miembros del equipo (7 Zombies) y 7 son los días en los que desarrollamos el juego. Disfrútenlo.

  • Muchas gracias a Juanjo Conti, David Capello, Diego Levental, Mariano Galán, Manuel Kaufmann, Sebastián Galiano por formar este maravilloso equipo.
  • Muchas gracias a Pablo Hernando, Laura Casado, Cecilia Puccinelli y otros amigos como familiares, quienes obraron como betatester y sugirieron cambios a medida que desarrollábamos el juego.
  • Muchas gracias a PyAr por animarnos – ¿empujarnos? 😉 – a participar, y finalmente,
  • Muchas gracias a PyWeek por organizar la competencia.

Ahora viene el momento de la votación. Hasta fin de mes no sabremos cómo nos fue… ¿pero a quién le interesa el resultado….? 🙂

3 comentarios

Archivado bajo Informática

3 respuestas a PyWeek5: 7 pythonescos días

  1. Por alguna razón aparecí en este blog, y tuve el agrado de leer la historia del desarrollo de este juego. Todavía ni lo vi, porque el sitio de PyWeek está inaccessible (como bien advertiste) y como es tarde me da mucha flojera instalar subversion en esta máquina (es una instalación nueva) para poder probarlo. Mañana voy a tratar de bajarlo para poder probar el producto de sus últimos 7 días 🙂

    Más allá de todo eso, los felicito por haber llegado a tiempo con sus objetivos, y por la dedicación que veo que le pusieron al proyecto.

    Saludos, desde Buenos Aires.

  2. Gracias Pablo!
    Suerte en bajarlo y si no, instalate subversión 😉
    Disfruta el juego!

  3. Pingback: Rivendel / Cinco séptimos (5/7) zombies y un invitado

Responder a Cesar Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *