Evento de apertura del Reto BlackBerry para el 9 de junio

Reto BlackBerryEl 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)

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.

Jedi Chicken Hell

Fig. 1 - Jedi Chicken Hell, por Javier Gutierrez, Jesús Vasquez y Juan Seijo.

¿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 hacia abajo, como lo veremos a continuación.

Diagrama de coordenadas de Pygame

Fig. 2 - Sistema de coordenadas de PyGame, con respecto a la ventana que contiene al juego

Coordenadas de Pymunk

Fig. 3 - Sistema de coordenadas de Pymunk. Las coordenadas que se le dan a los Shapes se hacen con respecto al centro de gravedad del cuerpo.

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).

Cómo acomodar un shape de Pymunk con un sprite

Fig. 4 - Se puede hacer un Shape rectangular para acomodar al Sprite (demostrado con la línea negra) o un Shape con una forma más realista. Esto tiene su costo en la simulación.

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.

Convocatoria al Reto BlackBerry en Venezuela

Haz click acá para ver más sobre el Reto BlackBerry

RIM se ha enfocado de manera muy seria a publicitar hacia los desarrolladores su más reciente plataforma, el sistema BlackBerry 10. El primer dispositivo con este sistema operativo, basado en QNX y compatible con POSIX, es BlackBerry Playbook.

Esta semana fui invitado por la empresa a un Hackathon de juegos. Fueron dos días intensos en los que estuve aprendiendo sobre las formas de desarrollar sobre la plataforma, y finalmente hicimos un juego.

Palabras más, palabras menos, para hacer aplicaciones en la plataforma puedes usar C/C++ (con el SDK nativo), Flash y HTML5 (estos dos últimos sobre la plataforma Adobe AIR).

El juego que hicimos mi compañero Jorge Padua y yo se llama (BBB) y prometemos poner el código fuente una vez que esté corriendo chévere. Utilizamos una librería de C++ porteada al Playbook que se llama cocos2d-x, que incluye un API que se encarga automáticamente del manejo de memoria y de rutinas de bajo nivel de audio y sonido, y dos librerías de simulación de cuerpos rígidos, Chipmunk y Box2d.

Probando directamente sobre el Playbook

El desempeño logrado con este ambiente de desarrollo es tal que se puede tener un juego de 60 frames por segundo. Con esto quiero decir que el Playbook es una buena plataforma para desarrollar. Ojalá que sea igual de efectivo poder distribuir los juegos a través del AppWorld. RIM está preparando nuevos modelos de celulares con este mismo sistema operativo que saldrán hacia el final del año, por lo que se le ven oportunidades en el horizonte.

Reto BlackBerry

El Hackathon en el que participé fue uno de los primeros pasos de la empresa para publicitar la plataforma. RIM está convocando a un gran concurso llamado Reto BlackBerry. Grande en el sentido de que no sólo se trata de una mera fecha de entrega para hacer una aplicación para Playbook. Se trata también de proveer la ayuda necesaria para instalar el ambiente de desarrollo, realizar clínicas de desarrollo, y de interesantes regalos para los desarolladores. El punto de partida es registrarse en http://www.retoblackberry.com

La fecha de entrega es el 20 de agosto de 2012. El reto es hacer una aplicación para el BlackBerry Playbook utilizando cualquiera de las 3 plataformas disponibles: C/C++ (con el NDK del dispositivo), Adobe AIR (con el software agregado para Flash Builder 4.6), y HTML5 (con Webworks). En C/C++ no tienes que comenzar de cero, existen librerías como cocos2d-x que tienen ya incorporadas muchas características para facilitar el desarrollo multiplataforma (código casi similar para portear a Android u otros).

El primer premio son 10.000 dólares en efectivo, y el segundo premio son 5.000. Aunque uno de los regalos más interesantes de todos es que los equipos que tengan su aplicación disponible en el BlackBerry AppWorld para el 20 de agosto van a recibir una tableta PlayBook. Así, sin más condiciones. Los ganadores del concurso en Venezuela además calificarán para la categoría correspondiente en el reto regional. Los ganadores del reto regional en la categoría Entretenimiento visitarán los estudios de MTV en Buenos Aires, Argentina, mientras que los ganadores de la categoría JUegos visitarán el estudio de Gamelof en Buenos Aires.

Sólo pueden participar mayores de 18 años, debido a que algunos premios son en metálico. La participación es individual o en grupos de hasta 3 personas, el período de inscripción es hasta el 16 de junio. La aplicación a desarrollar debe estar en la categoría “Entretenimiento” o “Juegos”.

El 9 de junio habrá un evento de apertura, donde habrán algunos ponentes, y se entregarán drives USB con todas las herramientas de desarrollo, para que no tengas que descargarlos. En cuanto tenga más información les diré por esta vía.

El evento en Venezuela está organizado por la gente de Mobile Media Networks, y cuenta con el patrocinio de Gameloft, MTV y Reaserch In Motion.

Si están interesados en participar, tienen que registrarse en la página del reto, en http://www.retoblackberry.com.