Hernán Valdez, participante del Caracas Game Jam 2011 con el juego biobot, está ahora en Panamá, pero me escribe para hablarme del juego que publicaron recientemente al Kongregate, llamado Space Trash. En este juego hay que sobrevivir la mayor cantidad de tiempo posible al agujero negro que está atrayéndolo todo, incluyendo la basura espacial. Vale la pena alejar la basura del agujero negro para evitar que éste crezca y su poder aumente. El juego fue hecho con Unity, y prototipado en el Global Game Jam 2012 en Panamá.
Proponiendo tu idea a un desarrollador: pruebas y tribulaciones
Varias son las veces en las que algún estudiante o gamer entusiasta se acerca a ofrecerme su idea para un videojuego, ya sea porque quiere que se la desarrolle o porque va a representar el negoción que nos va a cambiar la vida a todos. Aunque yo suelo ser muy receptivo ante las ideas que me ofrecen, algunas veces tengo que pararme a explicar que su idea no es interesante. Veamos por qué.
No es un problema de que su idea sea mala ni mucho menos. El problema es que sus fundamentos no han sido siquiera probados y se toman una gran cantidad de suposiciones que no han sido corroboradas. Aunque es cierto que un proyecto de desarrollo de videojuegos debe tener una visión clara de a dónde quiere llegar, al principio es sólo eso, una visión. Entre el inicio y la llegada a esa visión se deben tomar una serie de pasos que finalmente conforman el diseño del juego.
El diseño de un juego no es un documento que uno escribe y se queda inmutable hasta que se distribuye el juego. El diseño es un proceso vivo, altamente dinámico, lleno de pequeños y grandes problemas, en los que las soluciones finales a las que se llegan son producto de un compromiso de todos esos problemas. Quizás ese pequeño detalle que le viste a un juego no fue algo que se le pasó por alto a los diseñadores, sino más bien la mejor solución a la que pudieron llegar. Quizás si hubiesen aumentado o disminuido ese detalle hubiesen alterado fuertemente el resultado del juego.
Los juegos que nos suelen gustar son así porque están completamente orientados a hacernos sentir las estrellas del momento. El ambiente, los controles, hasta la inteligencia artificial, todos están hechos para que nosotros progresemos desde no saber nada sobre el juego hasta ser los reyes que controlan todos y cada uno de los aspectos del juego. Y eso no es casualidad. Como el mago que prepara 700 veces su presentación antes de asombrarnos de principio a fin, el desarrollador de videojuegos tiene que probar y reprobar todo el show que al final el jugador experimentará. Muchas veces durante esa etapa de pruebas los desarrolladores pueden dejar de ver el bosque para concentrarse en los matorrales, lo que puede ser muy bueno si todos esos detalles se suman a emocionar al jugador, o contraproducente si esas cosas al final el jugador no las encuentra.
Así que la próxima vez que te encuentres con un desarrollador, no le vengas de un solo golpe con la próxima idea que va a ser el hit del siglo. Toma una actitud de principiante (la mayoría de los desarrolladores tienen, y deben tener, esta actitud), y haz preguntas. Pregunta qué opina del género que tienes idea, y plantéale tu idea. Muy probablemente comience desde el inicio, un inicio del que tú como jugador no estés consciente: ¿qué motiva al jugador a jugar tu juego?. Pista: no son los cutscenes hermosamente elaborados, ni que se le vean los vellos a los personajes, ni la mejor tecnología 3D que exista en el mercado. Es la conexión emocional que existe entre el jugador, y las acciones que tiene a mano en un momento determinado.
Keynote del Ludum Dare 23 #goodstuff
Les recomiendo que vean el keynote del Ludum Dare 23, en esta dirección http://www.ludumdare.com/compo/ludum-dare-23-keynote/, o haciendo click en la imagen.
El keynote habla de cómo es el proceso de diseño y de iteraciones que se hacen sobre los juegos. Remarca, con segmentos interactivos, la diferencia que existe en los juegos cuando se le agrega pulimento al resultado, a diferencia de simplemente publicar lo primero que lograste implementar.
Mañana 13 de junio: webcast «Aplicando trucos de desempeño de juegos viejos a juegos web modernos»
Mañana 13 de junio, a las 12:30PM hora de Venezuela, habrá un webcast en la página de la Comunidad de O’Reilly. En este webcast Mario Andrés Pagella estará conversando acerca del rendimiento del Canvas de HTML5, que al ser lento, requiere de algunas ténicas que empleaban los desarrolladores de antaño para mejorar el desempeño. Apropiado para todas las edades que deseen tener un buen desempeño con sus juegos sin pasar por la ruta del GPU. El idioma del webcast será en inglés. Inscríbanse en el webcast siguiendo el enlace anterior.
Láminas de la charla «Un modelo de negocios para videojuegos en Venezuela»
Las láminas de mi charla «Un modelo de negocios para videojuegos en Venezuela» ya se encuentran publicadas (PDF, 8.2MB). Mi charla en el evento de apertura del Reto BlackBerry consistió en una versión resumida, por lo que van a encontrar un poco más de información.
Entrevista en El Ucabista
La revista El Ucabista, que edita la Dirección de Prensa de la Universidad Católica Andrés Bello, tuvo a bien hacerme este bimestre una entrevista, en la que hablamos de los juegos que he hecho, de mis inicios, y del mercado venezolano de los videojuegos.
Sírvanse de pasar por http://issuu.com/lacatolica/docs/eum_121/29 para la edición en digital (pueden descargar el PDF de allí también). Agradezco a Ligia la buena conversación que tuvimos durante la entrevista 🙂 .
Evento de apertura del Reto BlackBerry para el 9 de junio
El 9 de junio en la Quinta La Castellana a las 9:30am se hará la apertura oficial del Reto BlackBerry en Venezuela, organizado por MobileMedia. En el evento se explicará la modalidad del concurso, habrán conferencistas explicando las tecnologías sobre las que se puede desarrollar para la tableta de RIM, la BlackBerry PlayBook, y se entregarán pen drives USB con el software necesario para comenzar a desarrollar sobre ellas.
Recordemos que el Reto BlackBerry es un concurso organizado por RIM para fomentar el desarrollo de juegos y aplicaciones de entretenimiento sobre su nueva plataforma. Las tecnologías que se pueden usar son: C/C++ con el Kit de Desarrollo Nativo, Flash con Adobe AIR, y HTML5 (Chequeen el Github de la empresa). El objetivo es subir una aplicación al BlackBerry AppWorld para antes del 20 de agosto. El primer premio son 10 mil dólares y la oportunidad de participar en el circuito regional del reto, donde hay más premios.
La cita es el 9 de junio, de 9:30am a 1:30pm, en la Quinta la Castellana, Av. Eugenio Mendoza, (Av. Principal de La Castellana) Torre La Castellana, Piso PB Loca 4-5, Urbanización La Castellana , Caracas. (Dirección en Google Maps)
ACTUALIZACIÓN: Estaré en el evento de ponente, hablando sobre modelos de negocios para videojuegos en Venezuela. Agradezco a los organizadores por incluirme en la parrilla de ponentes 🙂 .
Armando un juego con fisica en Python, Pygame y Pymunk (y II)
En un artículo anterior hablamos de cómo comenzar a utilizar la librería Pymunk y Pygame para hacer simulaciones de movimiento de cuerpos rígidos, utilizando gráficos de líneas sencillos. Nos quedó pendiente hablar sobre los casos en los que necesitamos un poco más de complejidad, cuando queremos utilizar sprites dentro del juego. Luego de hablar sobre lo que tenemos que saber para utilizarlos, hablaremos sobre cómo montar un juego de plataformas utilizando Pymunk.

¿Cómo integro Pymunk con los sprites de PyGame?
En PyGame tenemos el concepto de Sprites: elementos que se dibujan en pantalla, que tienen una posición, y una rotación. En Pymunk tenemos dos conceptos: el de Body, que es el centro de gravedad del objeto, y el de Shape, que es la figura que acompaña al centro de gravedad. Para integrar los Sprites con Pymunk, tenemos que echar un poco de cabeza para pensar en las traslaciones y rotaciones de los sprites para que coincidan con los cuerpos.
¿Por qué?, porque tanto Pymunk como Pygame representan dos sistemas de coordenadas, que hay que igualar para que el movimiento se vea correctamente. Por ejemplo, si colocamos una gravedad negativa, digamos -10, y las coordenadas en Pymunk las representamos tal cual como Pygame las utiliza, veremos que los objetos caerán «hacia arriba». Recordemos que el sistema de coordenadas de Pygame tiene su origen en la esquina superior izquierda de la ventana, con el eje x aumentando hacia su derecha, y el eje y hacia abajo, como lo veremos a continuación.


Los Sprites de PyGame le dan al jugador la idea de la forma que tiene el cuerpo visualmente, mientras que los Shapes (las formas) en Pymunk son la representación dentro de la simulación física. Por razones de simplicidad, y esto es lo que suele predominar, se suele ajustar una figura muy simple a un sprite, como un rectángulo. En la figura a continuación se muestra cómo se puede adaptar un Shape de Pymunk (dibujado en negro) a un sprite (dibujado completamente en rojo).

Por otro lado, en Pymunk tenemos que declarar las coordenadas de un Shape con respecto a su centro de gravedad (ver Figura 3), y el origen de un sprite está en su esquina superior izquierda. Luego, si rotamos con pygame.sprite.rotate vamos a rotar en base a la esquina y no al centro de gravedad. Luego tenemos que mover el centro de rotación hacia el centro de gravedad del sprite.
¿Cómo elaboro un juego de plataformas con Pymunk?
Un juego de plataformas con física 2D realista necesita que sus componentes se comporten como tal. Tendríamos una parte gráfica hecha con Pygame, y el comportamiento del objeto mismo con Pymunk. Damos como ejemplo el juego cuyo screenshot está al inicio de este artículo, Jedi Chicken Hell, el cual tiene algunos elementos físicos incorporados al juego de plataformas, y se puede descargar por este enlace.
En este caso todos los elementos del juego tienen una información gráfica, como el sprite que utilizan y qué transformaciones gráficas emplea, y una información física, que es la que hemos explicado en estos artículos.
Otro ejemplo concreto: un defensor de asteroides Esto es un prototipo de juego de defensa de asteroides. En este juego, los asteroides caen por gravedad y golpean las esquinas, para luego caer por el hueco que está dispuesto debajo. La nave gira hacia la derecha o la izquierda, y está fija en ese punto. De esta manera, cuando los asteroides le golpean, la nave comienza a girar rápidamente, aunque no se sale de su lugar. Puedes descargar el código en Python de este juego aquí. (rar, 7.22MB)
La mayoría del código lo he dejado en los paquetes, para que puedan ser estudiados por los lectores. Espero que les sea de utilidad.
(BBB) para el Blackberry Games Hackathon publicado
Durante el 21 y el 22 de mayo tuve la oportunidad de participar en el BlackBerry Games Hackathon, invitado por la cordial gente de RIM. Fueron dos días intensos de aprendizaje y desarrollo, en donde aprendí a desarrollar en las tabletas PlayBook con C++ y Cocos2d-x, junto a Jorge Padua, Manuel Herrera y Miguel Obando.
El resultado de este evento es este mini-juego llamado (BBB), originalmente por BlackBerry Ball, pero al final llamado Bueno, Bonito y Barato. Utiliza la antes mencionada librería, junto a Box2D para tener una buena simulación de física. La idea es que la pelota cae sobre este espacio, y uno con el dedo puede crear paredes de donde la pelota rebota o resbala.
Como no está publicado en el BlackBerry AppWorld, se requiere descargar el ambiente de desarrollo nativo para el PlayBook, el QNX Momentics IDE, Cocos2d-x porteado para el PlayBook, y desplegar nuestro archivo comprimido sobre el directorio que crea cocos2d-x. Si no disponen de un PlayBook para probar, se puede utilizar un simulador de PlayBook. Ese software se puede ubicar aquí – https://developer.blackberry.com/native/.
Pueden descargar el juego tal cual lo terminamos para el Hackathon en este enlace. (RAR, 8MB) También pueden revisar el github que montamos en el siguiente enlace – https://github.com/chiguire/BBB.
El Juego de las JOINCIC publicado
A continuación les paso el enlace para que se puedan descargar el juego que hicimos en (aproximadamente) 6 horas durante el sábado 26 de mayo en las V JOINCIC – http://github.com/obandox/ElJuegoDeLasJOINCIC. Requiere de Python 2.7 y PyGame 1.9.1.
El juego consiste en un ponente de las jornadas que debe mantener la atención del público que se duerme lanzándole taquitos. El ponente pasa de nivel si pasa el tiempo de su charla y mantiene el nivel de atención. Pierde si el nivel de atención baja demasiado o le pega taquitos a personas no dormidas demasiadas veces.
Les cuento de donde salió todo esto: para las Quintas Jornadas Interuniversitarias de Ciencias de la Computación, o JOINCIC, de la cual he sido colaborador como ponente desde hace algún tiempo, decidimos hacer algo novedoso. Viviana Trujillo, habiendo colaborado con la organización del Caracas Game Jam 2012, sugirió hacer un evento de naturaleza similar durante las Jornadas. Como no iba a ser cómodo para los participantes estar en un jam y en unas jornadas a la vez, decidimos armar un equipo y hacer un juego durante un día de las jornadas y presentarlo al final del día.
Al final eso fue lo que hicimos. El equipo consistió en Yole Quintero en el diseño y el arte visual, Viviana Trujillo en la barra animándonos, Miguel Obando en la programación y mi persona en el diseño de juegos y parte de la programación. Una vez más, si están interesados, pasen por http://github.com/obandox/ElJuegoDeLasJOINCIC y descarguen el juego.