Despedida del blog

Ya hace tiempo que no escribo mucho por aquí. De hecho, desde que creé la empresa Plunge Interactive dejé de hacerlo, por lo menos en lo que a artículos técnicos se refiere.

Crear una empresa, y encargarse de hacerla funcionar es complicado, y además, la dedicación a Plunge cada vez me guía por caminos más lejanos a XNA. A pesar de ello, quiero seguir escribiendo, y voy a hacerlo, aunque no en Geeks. Crearé un nuevo blog de desarrollo de videojuegos, pero no se centrará en XNA, sino en otras tecnologías, y en especial Cocos2D-X. Tampoco me parece lógico hablar en geeks.ms de una tecnología no microsoftiana, y más cuando voy a hacerlo en inglés a partir de ahora, y esta es una comunidad en castellano, muy especializada en tecnologías Microsoft.

Cocos2D-X es un completo framework de desarrollo de videojuegos open source multiplataforma con lenguaje C++. Se basa en su hermano mayor Cocos2D de iPhone, que en mi opinión es en parte el responsable del éxito de muchos de los juegos de esa plataforma -de hecho Zynga pareció darse cuenta y fichó al equipo que lo creó-. Apuestan por él Google y Nokia, entre otras grandes empresas. De hecho, hay incluso un port a C# compatible con Windows Phone… (no lo he usado, imagino que tirará de XNA). En Plunge esta tecnología se esta convirtiendo en algo muy importante. Podéis encontrar más información al respecto en mi nuevo blog.

En cuanto a XNA, ahora mismo estoy trabajando en un proyecto relativamente importante para un cliente en Plunge Interactive, que saldrá publicado más adelante en algún momento de este año, seguramente en verano. Provablemente sea mi último proyecto en esta tecnología, ya que parece que Microsoft va a restarle mucha importancia en el nuevo Windows 8, y por otro lado en Plunge Interactive nos estamos especializando en tecnologías más multiplataforma.

 

Ha sido un placer formar parte de esta comunidad (ostias, es que mi primer post aquí fue en 2009!), además de «ser el raro» (porque cómo sabéis la mayor parte de blogs en geeks hablan de gestión y no de apps con gráficos en tiempo real cómo los juegos), y quien sabe… quizá en unos años el destino vuelva a traerme. De momento, os dejo la URL del nuevo blog: http://www.jesusbosch.com, y sabéis que estoy en twitter para lo que haga falta @jboschaiguade

Hasta pronto!

Curso de Videojuegos 2012

En Plunge Interactive volvemos a realizar el Curso de Videojuegos que venimos organizando cada cierto tiempo. El objetivo principal del curso es formar a la vez que identificamos desarrolladores con talento con la posibilidad de incorporarlos a nuestra empresa. En esta ocasión ofrecemos varias novedades en el curso, destacando:

  • Precio más bajo.
  • Teléfono Android libre de regalo a los asistentes (ver condiciones específicas).
  • Concentración del curso en una semana del 9 al 14 de Júlio.
  • Programa que da una visión más ámplia de los paradigmas de desarrollo de videojuegos, cubriendo un gran número de plataformas.
  • Se requiere tener conocimientos mínimos de programación orientada a objetos y C++ para seguir el curso con garantías.

Entre los profesores hay alguna personalidad ampliamente reconocida en el sector como Rubén Lopez (Spear en XNA Community), director de I+D en Novarama. El programa del curso es el siguiente:

  1. Conceptos básicos de programación de videojuegos
    1. Cicle de vida, bucle principal
    2. Movimiento por frames
    3. Detección de colisiones
    4. Gestión de pantallas
    5. Máquinas de estados
  2. Programación 2D con HTML5
    1. Introducción a HTML5 y JavaScript
    2. Programación sobre el canvas
    3. Impact JS Game Engine
    4. Ejemplo práctico: space invaders
    5. Ejemplo práctico: carrera de obstáculos
    6. Otros ejemplos:
      1. Objetos del juego
      2. Animación de personajes
      3. Mapa de durezas
      4. Test de profundidad
  3. Programación 2D con XNA y MONO
    1. Implementación del ciclo de vida del juego
    2. Estructura de clases del framework
    3. Ejemplo práctico: asteroids
    4. Deploy sobre Android / iPhone / Windows Phone
  4. Programación 3D con OpenGL
    1. Introducción a OpenGL
    2. Carga de texturas
    3. Renderizado de mallas
    4. Input
    5. Demo juego de naves
    6. Ejemplos de shaders

 

Recordad que el curso se realiza de forma presencial en Lleida. Para más información, podéis dirijiros a info@plungeinteractive.com

[XNA-WP7] Un juego que no os dejará indiferentes…

Hemos visto muchas formas de matar un zombie… con motosierras, a martillazos, a base de plomo, hachazos… de todo. Lo que nunca habíamos visto en WP7 es matar Zombies a base de… pedos! Así es xD En Plunge Interactive hemos estado trabajando últimamente en un juego cargadísimo de humor, que además ya ha tenido bastante éxito en su versión para iPhone. En este juego podrás luchar contra la versión zombie de personajes como Alfred Hitchcock, el Papa, Michael Jackson y Hitler entre otros… La fecha de lanzamiento está estimada para mitades de febrero!

Podéis ver el estado de desarrollo del juego aquí:

[View:http://www.youtube.com/watch?v=f6Yct0z93MU:550:0]

Algunos facts curiosos:

  • El código actualmente alcanza las 4.786 líneas de código.
  • Sólo el content, sin compilar, alcanza los 23mb, compilado… no váis a querer saberlo: 193mb!
  • El XAP ocupa actualmente 39mb!
  • El juego contiene 770 sprites y animaciones!
  • La banda sonora se compone de 8 canciones originales
  • Hay que matar un unicornio zombie

Ah, y feliz año a tod@s!

PhoneGap para WP7 con Visual Studio 2010

Cómo muchos de vosotros ya sabéis, PhoneGap es una fantástica herramienta que permite que nuestras apps/juegos basados en HTML5 puedan correr indistintamente en distintas plataformas móviles de forma nativa. Las plataformas soportadas son varias, pero las que tienen un soporte completo son Android, iOS, y recientemente Windows Phone (hasta hace poco sólo ofrecía un soporte parcial).

Esto pues, es una gran noticia para los desarrolladores, ya que haciendo el esfuerzo de desarrollo una vez, podemos publicar nuestra app en distintos markets y hacer que funcione en varios móviles. La experiencia me dice que esta tecnología no es útil para cualquier tipo de proyecto, pero sí que nos puede resultar de interés en muchas ocasiones. Es importante mencionar que PhoneGap se basa en HTML5, Javascript y CSS3, por lo que no es necesario conocer ningún lenguaje de programación específico de una plataforma concreta.

Empezar a trabajar con PhoneGap para Windows Phone es sencillo. No obstante, por algun motivo a mí el getting started de la página oficial no me ha funcionado -no he podido instalar el template de la forma en la que se indica en dicha web-. Por si álguien tiene el mismo problema, he encontrado unas instrucciones válidas de instalación en este enlace: http://windowsphonerocks.com/Developer/DeveloperArticles/tabid/64/Article/305/windows-phone-and-phonegap-article-2-installing-phonegap-and-getting-started.aspx

 

 

Nueva edición de los cursos de Diseño y Programación de Videojuegos en Lleida

Tras el éxito de la primera edición de los cursos de diseño y programación de videojuegos, en que se vió básicamente la creación de juegos 2D, llega la continuación de los cursos, en que el aprendizaje se basa en el desarrollo de videojuegos 3D multijugador.

Como siempre, destaca en el curso la elevada calidad docente. En esta ocasión tendremos como profesores a Rubén López (cofundador de Novarama) y a Arturo Galbete (trabajó también en Novarama y actualmente freelance). Por otro lado el objetivo final del curso (aunque opcional), es la realización de un videojuego 3D multijugador completamente funcional, con la colaboración de otros alumnos ya sea del curso de diseño o de programación.

La formación se realizará de forma presencial en el Parque Científico y Tecnológico de Lleida, mediante la organización de Plunge Interactive, y los cursos comenzarán el próximo 17 de octubre.

Toda la información puede ser consultada en este apartado de la web de Plunge Interactive: www.plungeinteractive.com/videojocs

Nuevo juego XNA para Windows Phone 7: Kubik Adventures

Por fin! tras 400 horas de trabajo hemos lanzado el Kubik Adventures! Un adictivo juego de puzzles que te permite jugar con uno de los 3 personajes disponibles, en una aventura que te trasladará a 5 mundos distintos a lo largo de 25 niveles! El juego no sólo permite mover piezas con la pantalla táctil, además puedes alterar la gravedad mediante el acelerómetro, realizando múltiples combos que llenarán tu pantalla de espectaculares explosiones. Otro de los aspectos curiosos del juego es que los niveles proponen retos distintos, por ejemplo: conseguir un determinado número de puntos, eliminar una cantidad de mónstruos o recoger distintos tipos de tesoros, o lo más difícil… sobrevivir durante un tiempo determinado en una vertiginosa cuenta atrás!

El juego ha sido publicado esta misma madrugada en la plataforma Windows Phone 7, e increiblemente al cabo de unos pocos minutos ya podíamos encontrar los primeros reviews en internet! Por ejemplo en mobilitydigest resaltan el elevado nivel de cuidado en todos los detalles, y se aventuran a prever que el juego será un HIT!

Ah, el juego puede ser descargado aquí (trial gratis con varios niveles jugables): http://wp7applist.com/en-US/app/30611/kubik-adventures

Lo mejor será que os deje con algunos vídeos del juego…

[View:http://www.youtube.com/watch?v=XqyH50hufHs:550:0]

[View:http://www.youtube.com/watch?v=hFtk8Zes-mk:550:0]

[View:http://www.youtube.com/watch?v=FVbP9-qlVgI:550:0]

Presentación de juegos XNA en la Universitat de Lleida

Algunos ya sabréis que hace unos meses lanzamos la primera edición del Curso básico de Programación de Videojuegos y el Curso básico de Diseño de Videojuegos en Plunge Interactive, de 40 horas de duración. Pues bien, los cursos han finalizado, y es hora de mostrar el trabajo de los alumnos! En concreto han unido sus esfuerzos los alumnos del curso de diseño y los del curso de programación, para producir un buen número de proyectos. Estos proyectos serán presentados en la Universitat de Lleida, más concretamente en la facultad politécnica, en la «Sala de Graus» (3.02) a las 19:30 del próximo viernes 16 de septiembre (la asistencia es libre).

El caso es que puedo decir que me siento orgulloso del trabajo realizado por los alumnos. En un curso de sólo 40 horas, de los cuales algunos no habían programado en su vida, y otros están justamente en el primer curso de informática de la universidad, los alumnos han sido capazes de organizarse y crear juegos que no están nada mal, para distintas plataformas: XBOX 360, Windows PC y Windows Phone 7.

Lo cierto es que los trabajos son muy creativos y variados. Algunos equipos han hecho desde un RPG con un motor própio, pasando por juegos de disparos, o un juego de lucha en el que puedes lanzar a tu adversario todo tipo de objetos (por ejemplo un gato o una vaca…). También hay un juego en el que un campesino debe limpiar sus tierras de los sucios aliens, y para ello contará con increibles armas, destacando un espectacular y doloroso lanzallamas. Otro de los juegos destacados es Jordi Gordi, en el que el protagonista es un niño que debe comer fruta sana, para mantener controlado su nivel de calorías (que para rebajarlo puede usar una bicicleta y hacer ejercicio!). En resumen, un montón de juegos y para mi un resultado espectacular!

Si queréis más información de los cursos, o apuntaros a la próxima edición (en breve comenzarán los cursos avanzados de programación y diseño 3D), podéis seguirnos en www.plungeinteractive.com y/o www.facebook.com/plungeinteractive y @plungeint

[WP7] Aplicación publicada: Metro Madrid

Este fin de semana hemos publicado la app «Metro Madrid». Como su nombre indica es una guía de metro de la capital española. Me sorprendió que no hubiera ninguna app en condiciones de este estilo en el marketplace/apphub, así que nos pusimos manos a la obra. La app tiene dos sistemas de mapas, uno offline, para poder consultar el plano del metro sin necesidad de conexión a Internet, y otro online, basado en un mapa de Bing, sobre el que se «pintan» las estaciones y las conexiones entre cada una de ella, así como la posición del usuario del teléfono respecto estas, de forma que es muy fácil encontrar una ruta a la estación más cercana. Además de eso tiene un sistema de optimización de caminos basado en una modificación del algoritmo A*, que te permite encontrar la ruta más rápida optimizada, teniendo en cuenta tanto la cantidad de paradas entre origen y destino, como la penaliación que suponen los transbordos.

Para verlo más claro, os dejo con algunos screenshots y un vídeo de la app:

[View:http://www.youtube.com/watch?v=PxtNO4g5hKU:550:0] 

  

  

Realizadas conferencias de Videojuegos con Novarama y BeautiFun Games

El pasado jueves 28 de julio se celebraron en el auditorio Joan Oró del Parque Científico y Tecnológico de Lleida varias conferencias en el marco del Curso de Diseño y Programación de Videojuegos organizado por Plunge Interactive.

Miembros de la Universitat de Lleida (Escuela Politécnica Superior), colaboradores del curso, presentaron las conferencias ante más de 70 personas.

Posteriormente inició su “masterclass” Rubén López, de la empresa Novarama Technologies -una de las empresas españolas líderes en desarrollo de videojuegos, y de primer nivel mundial-, explicando cómo desarrollan los videojuegos en su empresa, con un buen número de detalles de los juegos que han desarrollado, y principalmente InvizImals. También mostró un vídeo en primícia del próximo juego en el que están trabajando.

Posteriormente, Pol Urós, de BeautiFun Games introdujo las plataformas de desarrollo de videojuegos Unity y UDK. Comparó ambos frameworks y tras ver una breve introducción a cada uno de ellos vimos para qué situaciones es más útil cada una de las plataformas.

Parte de algunas de las ponencias pueden ser visualizadas en YouTube.

En breve organizaremos más eventos parecidos, puedes seguirnos en Facebook o Twitter:

 

 

[XNA] SpriteSheets

La importancia de los sprites recobra importancia con el «renacimiento» que están viviendo los juegos 2D en las plataformas móviles. Algo muy importante en el desarrollo de videojuegos, independientemente de la plataforma, es el uso de spritesheets para almacenarlos. Un spritesheet no es más que una textura que contiene muchas imágenes, que a pesar de estar concentradas en un solo fichero, se usarán de forma separada en el juego. A veces tendemos a pensar que sólo se deben usar para animaciones de sprites 2D, pero eso es un error. En general, el uso de un sprite sheet está recomendado por varios motivos:

 

  • Es mucho más rápido cargar 1 textura que contenga varias imágenes, que todas las imágenes por separado, aunque la imagen resultante sea la misma.
  • Es mucho más eficiente a la hora de hacer el render con la tarjeta gráfica, ya que no tenemos que estar enviándole a esta N texturas, sino que sólo tenemos que decirle qué partes queremos que renderice en cada momento.
  • Permiten controlar más facilmente que las dimensiones de la textura final (ancho y alto) sean una potencia de 2. Eso permite mantener a raya el tamaño de nuestras texturas (más info aquí). Esto siempre es importante, pero empieza a serlo mucho más en los juegos para móviles, donde los recursos de memoria son mucho más limitados que en otros sistemas.

 

Aquí tenemos un ejemplo típico de spritesheet:

¿Cómo se puede generar un spritesheet? Con photoshop, con paint… o bien, con Zwoptex, una herramienta que bien podemos comprar por sólo 15$, o bien usar online -versión flash- totalmente gratis. Esta app se encarga de organizar los sprites en un canva de dimensiones predeterminadas.  Otra ventaja de esta herramienta es que genera un fichero de coordenadas que nos indica cómo se localiza cada imagen, el cual después podríamos parsear desde nuestro juego de forma más o menos automatizada -no he encontrado ya hecho ningún content processor para XNA-.

También tenemos un empaquetador de Sprite Sheets en codeplex llamado «Sprite Sheet Packer«, desarrollado por Nick Gravelyn del XNA team (lo que por sí solo ya es una garantía). Este hace una tarea similar, y tiene opciones como forzar a que la textura resultante tenga unas dimensiones que sean potencia de 2.

Para el caso concreto de XNA, tenemos una solución genial, en el App Hub tenemos un content processor que leerá una lista de texturas independientes, a partir de un XML especificado, y en tiempo de compilación las unificará en una sola, organizándolas él solito para que ocupen el mínimo espacio posible. Para ello se utiliza un content processor que puede ser descargado aquí. El procesador además incluye una clase que nos permite acceder de forma extremadamente fácil a cualquiera de los sprites de la hoja de sprites, ya sea por índice o haciendo referencia al nombre de la textura.