2048 para Apple Watch

¡Tenemos nuevo juego para Apple Watch disponible en Chupamobile! Esta vez es una réplica del adictivo juego 2048.

classic-2048-for-apple-watch

¡Descarga estas plantilla y haz tus propias versiones para subirlas a la App Store!

@insaneplatypusg

Simón Dice para Apple Watch

¡Ahora también desarrollamos juegos y aplicaciones para Apple Watch!

Nuestro primer trabajo es una replica de Simón Dice. Este juego nos lleva de vuelta a los 80s con este clásico juego de mesa para entrenar la memoria.

simon-hero

Intenta reproducir lo que la IA dice e intenta demostrar que eres más inteligente que ella.

¡Compra esta plantilla del juego y haz tus propias versiones para subirlas a la App Store!

@jjordanarenas

Curso de juegos 2d multiplataforma con Cocos2D-X

Dado el creciente interés en el desarrollo de juegos multiplataforma, OnCampus Training y yo nos hemos decidido a organizar un curso de desarrollo de juegos 2D multiplataforma con el framework open source Cocos2D-X.

Cocos2D-X posee las ventajas de ser código abierto y estar basado en C++, un potente lenguaje de programación orientada a objetos. Durante las diferentes sesiones del curso los alumnos aprenderán diferentes técnicas que podrán aplicar en varios proyectos.

Cocos2D-X

Entre los conocimientos que el alumno adquirirá a lo largo del curso se pueden destacar la creación de fondos y reproducción de sonidos, simular el movimiento gracias al efecto Parallax, animar sprites y envolverlos de espectaculares efectos gracias a los sistemas de partículas. Los alumnos también aprenderán a gestionar la creación de escenas y la transición entre ellas, el mantenimiento del estado del juego gracias a archivos externos y el control de movimientos mediante el acelerómetro. Este curso también les enseñará a exportar sus juegos de forma que puedan ser ejecutados en dispositivos tanto iOS como Android.

¿Pinta bien, verdad? ¡Pues corred insensatos, porque el plazo se acaba el día 26 de abril y las plazas son limitadas!

@jjordanarenas

Libro: Desarrollo de juegos Cocos2d

Hace unos días fue publicado mi libro sobre desarrollo de juegos Cocos2d por Packt Publishing: Cocos2d Game Development Blueprints.

Ha sido un proceso duro pero muy interesante, el cual he disfrutado mucho y el que me ha dado la oportunidad de contribuir con la comunidad de desarrolladores de juegos.

¿Qué vais a encontrar en este libro? Cocos2d Game Development Blueprints muestra cómo desarrollar 8 juegos basados en diferentes géneros de videojuegos como scrolling horizontal, plataformas, tower defense, beat ‘em up, shoot ‘em up, juego multiplayer de cartas, quiz, y deportes.

Los contenidos del libro están ordenados de una manera en que la dificultad aumenta gradualmente. De esta manera aprenderéis paso a paso desde la cosa más sencilla, como añadir un fondo a vuestros juegos, a conceptos avanzados como cuerpos kinemáticos.

Cocos2d_game_development_blueprints_cover

En el primer capítulo aprenderéis cómo crear un juego de scrolling horizontal en el cual añadiréis algunos sprites, fondos, sonidos y textos. En este juego tendréis que ayudar al personaje principal (nuestro gran amigo Joselu el yeti) a esquivar unas bolas de nieve que intentan hacerle daño. Para este propósito también aprenderéis a detectar y manejar colisiones.

El segundo capítulo os pone en la piel del Dr. Nicholas Fringe, un científico loco que pretende proteger la Tierra del ataque de unos peligrosos OVNIs con la ayuda de sus únicos dos inventos: una pistola de rayos láser y una mochila-reactor. En este capítulo aprenderéis cómo implementar el efecto parallax, a dibujar primitivas geométricas, cómo usar el acelerómetro y cómo cargar y configurar sistemas de partículas.

Con la intención de crear un juego de cartas similar a Magic ó Hearthstone: Heroes of Warcraft, en el capítulo tres aprenderéis cómo implementar un juego basado en turnos integrando Game Center, a implementar acciones y transformar sprites.

El capítulo número cuatro está basado en un argumento loco: el personaje principal es un zombi en medio de un apocalipsis humano y tenéis que acabar con todos los enemigos para sobrevivir. A lo largo de este capítulo aprenderéis a crear un pad virtual, a animar sprites usando múltiples archivos de imágenes y a optimizar este proceso usando sprite sheets.

Si continuáis leyendo, en el capítulo cinco crearéis un juego de preguntas y respuestas con su propio tutorial, y cómo crear transiciones entre escenas, las cuales cargaréis gracias a archivos externos de datos.

El siguiente capítulo, el capítulo número seis, es muy interesante. A lo largo de las páginas aprenderéis a crear las físicas de un juego con cuerpos, formas, colisiones, y gracias a eso desarrollaréis un juego de snooker.

En el capítulo siete tendréis que ayudar a Joselu otra vez. En este caso está en un mundo de plataformas que has construido gracias a una variedad de imágenes de terreno y una lógica personalizada de colisiones. También aprenderéis cómo añadir un menú a vuestro juego.

El último capítulo es un clásico juego de defensa de la torre. Éste es el género perfecto para introducir algunos conceptos de IA como algoritmos de pathfinding para los enemigos o algún comportamiento inteligente para las defensas. En este capítulo también aprenderéis cómo predefinir posiciones para las defensas, a cargar olas de enemigos y a compartir información entre nodos.

Ok, he dicho muchas cosas, voy a parar de escribir. ¿Habéis visto cómo mola la portada? Hay más de esos increíbles diseños en el interior ;).

@jjordanarenas

Curso de desarrollo de juegos iOS con Cocos2D

Durante el proceso de escritura de mi primer libro, Cocos2d Game Development Blueprints he descubierto que me gusta compartir mis conocimientos con el resto del mundo.

De esta manera tengo la oportunidad de devolver a la comunidad de desarrolladores todo lo que he recibido, ya sea por la cantidad de tutoriales de los que he aprendido, por las soluciones a esos bugs que te quitan el sueño o por una simple cadena de comentarios en un foro.

Por eso me he decidido a impartir un curso de desarrollo de juegos iOS con Cocos2D a través de la plataforma online OnCampus.

Cocos2D1

En este curso quiero enseñar de una manera progresiva cómo desarrollar juegos para dispositivos iOS usando Cocos2D, un popular framework open source. De tal manera, los alumnos aprenderán desde lo más básico como qué es un nodo o una escena, pasando por cómo crear sprites y ejecutar acciones, cómo añadir fondos, sonidos o textos, hasta llegar a aspectos más avanzados como detectar colisiones o crear animaciones, sistemas de partículas y físicas.

Las clases serán online en directo a través de una plataforma que permitirá a los alumnos ver y oír mis explicaciones e interactuar conmigo para preguntar dudas, como en una clase presencial cualquiera. La clave de esta modalidad es que las clases serán grabadas, de modo que los alumnos pueden descargarse los videos para verlos en diferido en caso de no poder asistir o querer repasar conceptos.

Espero teneros a muchos de vosotros entre los asistentes así que ¡no dudéis en inscribiros ya porque las clases empiezan en abril!

@jjordanarenas

¡MobOS Conference 2015 nos espera!

Este año nos trasladamos al MobOS Conference en Cluj Napoca, Rumanía. Transilvania nos espera para disfrutar de esta conferencia internacional que ya va por su segunda edición.

mobos

El MobOS es un ciclo de conferencias que recoge las tendencias y los datos más importantes en el marco de las tecnologías en el sector móvil. Se trata de unas conferencias realizadas por especialistas nacionales e internacionales donde se hablará abiertamente sobre los aspectos más importantes de la tecnología actual y de cómo inciden en el mundo de los aparatos móviles.

El evento consta de 2 jornadas que se celebrarán los próximos días 19 y 20 de febrero. Durante estos días se realizarán ponencias y presentaciones de especialistas en el ámbito mobile, y además se llevarán a cabo varios talleres de desarrollo para los que se inicien en este sector y para aquellos que ya tengan nociones avanzadas en la materia. El objetivo es que los asistentes al MobOS 2014 tengan la posibilidad de aprender cómo se utilizan y desarrollan los sistemas operativos iOS y Android en casi todas sus vertientes.

¿Y cómo participaremos nosotros? Mandaremos de una patada a Transilvania a Jorge, quien representando al equipo de Ray Wenderlich y a nosotros mismos, se encargará de poner al día a los asistentes de todas las novedades de SpriteKit y SceneKit y dará a conocer las ventajas y desventajas de esta programación con respecto a Unity. Además también participará en un workshop que se celebrará el 20 de febrero en el que enseñará cómo trasladar una app o un juego desde Objective-C y Swift.

¡Más le vale a hacerlo bien, o si no lo abandonaremos en Rumanía!

Os iremos contando más novedades sobre el evento durante los próximos días. Mientras tanto, ¿Quién ha probado ya SpriteKit y ScenKit? ¿Os habéis encontrado algún problema trasladando vuestros juegos desde Objective-C a Swift. ¡Contadnos, queremos saber!

Watch Kit apps a fondo

580x326xapple-watch-digital
En el anterior artículo sobre WatchKit vimos que una aplicación desarrollada para el Apple Watch necesitaEn el anterior artículo sobre WatchKit vimos que una aplicación desarrollada para el Apple Watch necesita dos componentes:

  • WatchKit app es el ejecutable que correrá en el Apple Watch y que contendrá los storyboards y los archivos necesarios para renderizar las distintas pantallas.
  • WatchKit extension es el ejecutable que correrá en el iPhone. Dicho ejecutable contiene el código fuente y los recursos para controlar las pantallas de la aplicación y, además, es el encargado de manejar las interacciones del usuario.

Ambos componentes necesitan trabajar conjuntamente para configurar la interfaz mostrada al usuario. Los pasos dados por una aplicación cuando un usuario interactúa con ella son, típicamente, los siguientes:

  1. El usuario interactúa con la WatchKit app.
  2. La WatchKit app analiza la interacción y selecciona el storyboard que manejará dicha interacción.
  3. WatchKit se comunica con el iPhone para ejecutar la WatchKit extension.
  4. La WatchKit extension inicializa y crea los objetos necesarios para proveer con dichos recursos al storyboard de la WatchKit app.
  5. El storyboard genera la escena a partir de los objetos creados por la WatchKit extension y se muestra en el Apple Watch.
  6. La WatchKit app y Eatchkit compartirán información hasta que el usuario deje de interactuar con la aplicación. En ese momento iOS suspenderá la WatchKit extension hasta que haya una nueva interacción.

El siguiente diagrama ilustra el proceso:

WatchKit app architecture

Un concepto importante del anterior proceso es la manera en que lo storyboards responden a la interacción del usuario y configura la escena. Esto es gracias a los interface controller (instancias de WKInterfaceController), que son equivalentes s los view controllers de las aplicaciones iOS.

La diferencia con los view controllers es que los interface controllers no manejan las actuales vistas en pantalla, ya que WatchKit realiza esa tarea de manera transparente. Normalmente, una WatchKit app contiene varios interface controllers que visualizaran diferentes tipos de datos pero solo uno de ellos será mostrado cada vez.

Ciclo de vida de una WatchKit app

Una WatchKit app puede ser lanzada de tres diferentes maneras:

  • El usuario toca el icono de la pantalla de inicio del Apple Watch.
  • El usuario interactúa con el glance de la aplicación.
  • El usuario interactúa con las notificaciones.

Cada una de las anteriores opciones inicia la WatchKit app y su WatchKit extension. Dependiendo de cuál de los casos ocurre, WatchKit configura la escena usando el storyboard correspondiente y pide a la WatchKit extension que inicie el correspondiente interface controller.

El siguiente diagrama ilustra dicho proceso:

Launching WatchKit App

Como se puede ver, las instancias de interface controller manejan las interacciones en la interfaz de usuario.

La WatchKit extension está activa mientras el usuario interactúa con la aplicación en el Apple Watch. Una vez el usuario para de interactuar o sale de la aplicación, iOS desactiva el actual interface controller y suspende la extension. Como dichas interacciones entre el usuario y el Apple Watch son típicamente breve, el interface controller debe contener poca lógica de negocio y realizar tareas rápidas.

El siguiente diagrama ilustra dicho proceso:

Interface controller lifecycle

Este artículo fue originalmente publicado por Jorge Jordán en Chupamobile.com.

@jjordanarenas

Watch Kit: Las aplicaciones se mudan a tu muñeca

WatchKit

¿Estáis cansados de sacar vuestro iPhone del bolsillo para revisar los mensajes? Queréis ser como Michael Knight y hablar con vuestra inteligencia artificial amiga a través de vuestra muñeca? Apple lo ha hecho posible gracias a su nuevo Apple Watch y su increíble framework, Watch Kit.

Lo primero que necesitáis saber al desarrollar aplicaciones para Apple Watch (también conocidas como Watch apps), es que esas aplicaciones requieren de un iPhone para ser ejecutadas. Además necesitaréis dos ejecutables:

  • La Watch app, que correrá en el Apple Watch y contiene los storyboards y los archivos necesarios para visualizar la interfaz de usuario de la aplicación.
  • Una extensión de Watch Kit, que correrá en el iPhone y contiene el código de negocio para controlar la interfaz de usuario de la aplicación y que manejará las interacciones del usuario.

Cuando desarrolléis una aplicación para Apple Watch necesitaréis crear un WKInterfaceController para cada escena en vuestro storyboard. Esta clase tiene dos métodos importantes: initWithContext y willActivate, que son responsables de recuperar los datos para ser visualizados e inicializan y configuran los componentes visuales, como por ejemplo botones y textos.

En el caso en que queráis crear una vista para mostrar UIUserNotificationSettings recibidos (por ejemplo una notificación iMessage preguntándote si quieres quedar a comer con botones para aceptar o rechazar dicha invitación) necesitaréis instancia un WKUserNotificationInterfaceController, que hereda de WKInterfaceController.

Otros métodos interesantes de las clases anteriormente expuestas son:

  • presentTextInputControllerWithSuggestions:completion: El propósito de este método es mostrar una pantalla modal para que el usuario introduzca algún texto, con la peculiaridad de que este método sugiere frases para ser seleccionadas por el usuario.
  • updateUserActivity:userInfo: Coge actividad actual de la aplicación (por ejemplo un usuario toca la pantalla) y la manda al iPhone del usuario para tratar con ella.

Un concepto importante en las Watch apps son los glances. Básicamente, un glance es una pantalla en vuestra aplicación que muestra una información específica al usuario, con la peculiaridad de que no puede hacerse scroll en ella y son de sólo lectura. Esta es la razón por la que un glance no contiene componentes como botones o campos para introducir textos.

En Watch Kit también encontramos WKInterfaceDevice, una clase usada para contener información sobre la configuración del Apple Watch del usuario. The esta manera podemos tenerla en cuenta al mostrar contenido en la aplicación.

Otro propósito importante de esta clase es cachear imágenes creadas previamente en el Apple Watch de manera que puedan ser usadas posteriormente sin problemas de performance al crearlas cada vez.

Algunos de sus métodos son:

  • preferredContentSizeCategory: Recupera el tamaño de fuente personalizado por el usuario. Este método es muy importante para las aplicaciones orientadas a accesibilidad.
  • addCachedImage:name: Usado para añadir la imagen especificada como argumento de entrada en la caché del dispositivo.
  • removeCacheImageWithName: Nos permite scar una imagen previamente cacheada especificando su nombre.

Finalmente, Watch Kit viene con varios objectos de interfaz para crear vuestras vistas, los cuales son una versión personalizada de objetos de UIKit. De esta manera podemos encontrar WKInterfaceButton, WKInterfaceDate, WKInterfaceImage, WKInterfaceLabel, WKInterfaceMap, WKInterfaceSlider, o WKInterfaceSwitch por ejemplo.

Para ser honesto, aún no he llevado un Apple Watch pero estoy seguro de que va a ser una revolución en la manera en que usamos la tecnología. ¿Y vosotros, créis que Apple Watch va a cambiar el futuro de los smartphones?

Este artículo fue originalmente publicado por Jorge Jordán en Chupamobile.com.

@jjordanarenas

Sprite Kit: novedades en iOS8

SpriteKitImagen tomada de cartoonsmart.net

El motor de juegos de Apple, Sprite Kit, ha sido actualizado en iOS8 con la inclusión de cinco nuevas características:

  • Shaders
  • Iluminación y sombras
  • Nuevas físicas
  • Integración con SceneKit
  • Nuevas herramientas

Shaders

Esta característica permite a los desarrolladores añadir nuevos efectos a los nodos como por ejemplo desenfoques personalizados.

Shaders permite tener control completo sobre cómo se dibuja cada nodo en la escena y hace más fácil añadir nuevos efectos a juegos existentes ya que sólo hay que añadir una simple línea de código. Además, da acceso total a las propiedades de los sprites en la escena.

SKShaders es la nueva clase que da soporte a dichos efectos y tiene dos propiedades:

  • source: Es el archivo o cadena de texto desde donde el shader ha sido creado.
  • uniform (SKUniform): Una lista de atributos.

Iluminación y sombras

Los nodos de luz (SKLightNode) permite a los desarrolladores añadir y colocar luces en la escena e incluso iluminar un existente sprite con hasta ocho luces independientes. También se puede controlar el color de dichas luces, las sombras que proyecta y su atenuación (falloff) para conseguir el efecto deseado.

SKLightNode deriva de SKNode lo cual significa que podemos tratar cada luz como un nodo en si mismo (ejecutar acciones, movimientos, seguir caminos) y sus atributos son:

  • lightColor
  • shadowColor
  • ambientColor
  • falloff

Una importante característica de las luces es que pueden intentare con normalTexture, el nuevo atributo de SKSpriteNode para crear sombras personalizadas.

Nuevas físicas

Sprite Kit incluye las siguientes nuevas físicas:

  • Per-pixel physics: Nos permite especificar el comportamiento físico a nivel de pixel dando más precisión para tareas como control de colisiones.
  • Constraints: SKConstraint ayuda a simplificar la lógica del juego por ejemplo al orientar un nodo en función de la posición de otro nodo: Nos permite constreñir posiciones, orientación y distancia sin necesidad de añadir grandes bloques de código.
  • Inverse kinematics: Facilita el trabajo con joints (uniones) al permitir definir una jerarquía padre-hijo entre dichas uniones.
  • Physics fields: Nos permite definir fuerzas físicas como la gravedad o velocidad a nodos que hará muy sencillo desarrollar juegos de tipo espacial.

Integración con SceneKit

Ahora podemos incluir objetos 3D en  juegos de Sprite Kit y tratarlos como nodos comunes con la nueva clase SK3DNode. Además podemos enlazar texturas y sonidos con objetos de SceneKit.

Tools

Hay un nuevo editor para Sprite Kit integrado en Xcode donde podemos manipular y dar valores a los atributos de nuestros nodos, configurar cuerpos de físicas, nodos 3D, crear luces, sombras e inverse kinematics sin necesidad de escribir una línea de código. Incluye también un editor de shaders y una variedad de plantillas de proyectos de juegos. Sólo puedo decir que este editor es asombroso.

Estas nuevas características dan a Sprite Kit un gran potencial cercano a editores de efectos de nivel profesional permitiéndonos añadir más y más efectos realistas que harán que nuestros juegos parezca casi súper producciones.

Apple parece muy interesada en crear un framework que pueda competir con Cocos2d y Unity3d, facilitándonos cualquier cosa que necesitemos para crear juegos increíbles. Aquellos que habéis trabajado con Sprite Kit, Cocos2d o Unity3d: ¿Creéis que Sprite Kit va a superar el potencial de Unity3D o Cocos2d o creéis que aún está demasiado lejos?

Este artículo fue originalmente publicado por Jorge Jordán en Chupamobile.com.

@jjordanarenas

TestFlight: beta testing de aplicaciones para desarrolladores

TestFlight

WWDC 2014 trajo consigo una gran novedad para los desarrolladores de aplicaciones iOS: la integración de la popular plataforma de beta testing TestFlight en su ciclo de vida.

Antes, testar nuestras aplicaciones no era una tarea trivial. Si disponías de un equipo de test tenías que conocer el identificador UDID de cada dispositivo de test para configurar un provisioning profile y poder compilar el binario, enviar dicho binario a tu tester y él/ella tenía que conectar su dispositivo para instalarlo.

Por otro lado teníamos disponible TestFlight como una herramienta independiente de test, donde podías registrar a tu equipo para llevar a cabo el test de las betas de las diferentes versiones de la aplicación que estuvieras desarrollando.

Sin embargo, tampoco era una tarea sencilla ya que también necesitabas conocer los identificadores UDID de los dispositivos de los testers, configurar el “provisioning profile” para incluir dichos identificadores de modo que la aplicación pudiera ser instalada en los correspondientes iPhones o iPads y entonces enviarles una invitación para instalarse la nueva versión.

Gracias al beta testing podemos obtener feedback de varios testers que nos ayudará a desarrollar una aplicación exitosa, ya que ellos son una representación del usuario final. Por eso es tan importante que haya una relación fluida entre desarrolladores y testers para que el proceso de desarrollo y test no se convierta en una pérdida de tiempo y esfuerzo para ambas partes.

Con la incorporación de TestFlight en el ciclo de vida de las aplicaciones, los pasos necesarios para testarlas son menos y más fáciles. Ya no necesitas conocer los identificadores UDID de los dispositivos de tus testers así como tampoco necesitas conectar los distintos dispositivos. Sólo tienes que enviar un email a tus testers con una invitación para que se instalen tu aplicación.

Antes de distribuir los binarios al equipo de test puedes definir qué características de la aplicación deben ser testadas en esa versión de forma que puedan centrarse en lo que necesitas.

Los beta testers sólo necesitarán descargar la aplicación de TestFlight donde pueden controlar las diferentes versiones a las que han sido invitadas a testar y además pueden enviar sus comentarios a través de ese mismo canal.

El número máximo de beta testers ha crecido (con esta nueva relación entre Apple y TestFlight) hasta 1000 cuentas de test por cada aplicación y además cada una de esas cuentas puede testar tu aplicación en diferentes dispositivos. Además, puedes designar hasta 25 testers internos que normalmente va a ser gente del equipo de desarrollo con una cuenta de iTunes Connect.

Un punto negativo que encuentro es que esta relación entre el desarrollador y el tester no es tan directa como cuando TestFlight era una herramienta independiente ya que ahora necesitamos subir los binarios a Apple antes de compartirlos con el equipo de test. Por otro lado, podemos ver esta característica como una ventaja ya que nos asegura que los binarios recibidos por los testers cumplirá un mínimo de requerimientos de calidad.

Otro punto negativo es que TestFlight estará disponible sólo para iOS8 pero sin embargo podrá ser empleado en los 155 países en los que la App Store está presente.

En mi opinión éste es un paso muy exitoso, parece que Apple está pensando en sus desarrolladores otra vez y yo estoy muy agradecido de tener una manera más fácil de distribuir las versiones a los testers.

Este artículo fue originalmente publicado por Jorge Jordán en Chupamobile.com.

@jjordanarenas

« Older posts
A %d blogueros les gusta esto: