La gente del reto BlackBerry ha anunciado los próximos eventos que harán. Se dará a lugar un hackathon el próximo sábado 30 de junio, y se harán 3 webinars, mañana 26 de junio, y el 3 y 10 de julio.
Las temáticas de las webinars:
Accediendo a los secretos de la PlayBook con Adobe AIR.
La sala se abrirá a las 6:45PM hora de Venezuela, y el webinar será de 7PM a 9PM.
Por otra parte, les paso los datos del Hackathon:
Fecha: Sábado 30 de junio de 2012, de 9 a 1, hora de Venezuela. El registro se abre a las 8AM. Lugar: Caracas Palace, Plaza Altamira, Av. Luis Roche. (Lo que era antes el Four Seasons)
Durante el Hackathon se darán las siguientes charlas:
Uso de las librerías nativas de QNX en Adobe AIR para interfaz de usuario (UI), por Richardo Black y Edgardo Bermúdez.
Uso de jQuery Mobile para interfaces de usuario nativas usando HTML5 en Blackberry Playbook, por Carlos Marcano y Miguel Ángel Sucre.
Principios de UI utilizando Native Code / Ejemplos de Código, por Pedro Martínez.
Este miércoles 11 de julio de 2012 a las 9:00AM estaré conversando sobre videojuegos en la Facultad de Ingeniería de la Universidad Dr. José Gregorio Hernández, en Maracaibo. Estaré de ponente en una Muestra de Desarrolladores de Juegos de Video, y estaré conversando sobre cómo iniciarse en el desarrollo y posibles vías de emprendimiento con los videojuegos. La entrada al evento es libre.
La dirección de la Facultad es Calle 89B entre Av. 15 Delicias y Av. 14C. Pueden servirse también de ver el punto en Google Maps.
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á.
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.
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, 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.
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 🙂 .
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 🙂 .
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.
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 y hacia abajo, como lo veremos a continuación.
Fig. 2 - Sistema de coordenadas de PyGame, con respecto a la ventana que contiene al juegoFig. 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).
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.