Nuevo lenguaje de programación Swift

Swift es el nombre del nuevo lenguaje de programación creado por Apple para desarrollar aplicaciones para iOS y OS X.

Según dicen en la web de desarrolladores de Apple ha sido construido con lo mejor de C y Objective-C, aunque sin las restricciones de compatibilidad con C. Swift es un lenguaje diseñado para facilitar la vida al programador: sintaxis más sencilla, curva de aprendiza más reducida que Objective-C, amigable desde un principio para nuevos desarrolladores.

Mi primera impresión es que es un lenguaje compilado inspirado en la sintaxis de Lua y Python, pero manteniendo el tipado estático de datos y el rendimiento nativo de las aplicaciones para iPhone, iPad o Mac. El tipado estático de datos permite la depuración de errores en tiempo de compilación, esto es antes ejecutar una sola linea de código. La compilación del código escrito en Swift garantiza un rendimiento al menos equivalente con Objetive-C aunque Apple asegura que es superior.

Aunque todavía está en una fase inicial, es de agradecer que comiencen la sustitución del arcaico y complicado Objective-C por un lenguaje más moderno y más simple para el programador menos experimentado. Apple ha publicado un ibook gratuito para todo el que disponga de un iPad, iPhone o Mac.

Más rápido Cocos2d-x

Según comente en un anterior post, Cocos2d-x es un proyecto libre de código abierto que permite el desarrollo de juegos para distintos dispositivo móviles y entornos de escritorio tradicionales, usando el mismo API del proyecto original Cocos2d (Objective-C), pero usando C++, Lua o Javascript como lenguaje de programación.

Basandose en Cocos2d-x se ha dado forma al proyecto Quick Cocos2d-x. Se trata de un motor de juegos multiplataforma centrado en facilitar los pasos iniciales y el desarrollo de juegos móviles para diversas plataformas: iOS, Android, Blackberry, Bada, Windows, Linux, …

El lema de este proyecto es «Code less, Play more», lo que significa que su objetivo principal es el simplificar aún más el desarrollo y creación de proyectos para centrarse más en la jugabilidad y verificación de las funcionalidades del juego. Usando el lenguaje de programación Lua, este motor proporciona las siguientes características para conseguir este objetivo:

  • Creación y configuración rápida de un proyecto en Windows y Mac.
  • Creación de la escena del juego y añadir imagenes
  • Gestión de eventos de toque
  • Movimiento de imagenes
  • Reproducir música y efectos de sonido
  • Guardar el estado del juego

Otra posibilidad más en el mundo de desarrollo de juegos y aplicaciones garantizando la portabilidad de un mismo código fuente.

El código fuente del proyecto está disponible en el repositorio Git: https://github.com/dualface/quick-cocos2d-x

La documentación de Quick Cocos2d-x está disponible en inglés en la propia página del proyecto. Sin embargo, al tratarse de un proyecto de origen chino parece ser que todavía está muy verde y con mucho por hacer.

Pygame para Android

Pygame for Android

Hace poco he descubierto el proyecto Pygame Subset for Android (PGS4A), el cual permite migrar a Android, de un modo relativamente rápido, juegos que han sido desarrollados en Python y Pygame para Windows, Linux o Mac OX.

De este modo es posible publicar un juego para Android, Linux, Mac OX,… con un mismo código fuente o mínimas modificaciones en el código fuente para adaptarlo a las distintas plataformas, por ejemplo las distintas resoluciones en cada dispositivo u ordenador.

La documentación del proyecto disponible en http://pygame.renpy.org/#documentation está bastante bien organizado y completa. A modo de resumen, los pasos a realizar para migrar código existente escrito en Python + Pygame son los siguientes:

  • Descargar e instalar Java Development Kit (JDK) de la página oficial de Oracle. Recomiendo la versión JDK 6 para mejor compatibilidad con Android SDK
  • Descargar e Instalar el interprete de Python 2.7
  • Descargar e instalar el propio proyecto PGS4A

A partir de aqui PGS4A proporciona el script android.py se encarga de descargar una versión reducida pero funcional del Android SDK y también permite la compilación, empaquetado e instalación de la aplicación en el dispositivo Android.

La sencillez y versatilidad del lenguaje de programación Python, asi como la madurez de la platforma Pygame para el desarrollo de juegos basados en la librería SDL hace que sea una opción bastante recomendable.

Animo a quien este interesado en programar juegos para la plataforma Android que le eche un vistazo al proyecto Pygame Subset for Android (PGS4A).

Esperemos también que en un futuro exista la posibilidad de usar Python + Pygame para el desarrollo sobre la platforma iOS, algo que tecnicamente es posible debido a que las librerías SDL y Python ya funcionan sobre iOS.

Kivy y portabilidad con Python

La mayoría de la gente sabe que Google decidio usar Java como lenguaje para su Android, mientras que por su parte Apple considero que Objective-C sería el lenguaje de programación para desarrollar aplicaciones para iOS. Sin embargo es posible usar Python para escribir apps tanto para Android como iOS.

El proyecto de código abierto Kivy permite usar el mismo código fuente para escribir una aplicación en Python y que funcione en ambas plataformas móviles. Según cuentan en la página web oficial del proyecto, es un framework que ha sido desarrollado desde cero para adaptarlo a las necesidades específicas de aplicaciones táctiles, y que facilita el desarrollo rápido de prototipos.

Las características más interesantes del proyecto Kivy son las siguientes:

  • Portabilidad del mismo código fuente en Python a Linux, Windows, MacOSX, Android and IOS.
  • Soporte nativo para diversos protocolos y dispositivos de entrada (
  • El uso de Kivy es 100% libre incluso para fines comerciales.
  • Se distribuye con licencia MIT para las versiones 1.8 y 1.7.2, mientras que las versiones anteriores han sido liberadas con licencia LGPL 3.
  • Entorno de desarrollo estable y documentado.
  • Existe una guía del programador para iniciarse en el uso de Kivy.
  • El motor gráfico de Kivy ha sido desarrollado sobre OpenGL ES 2
  • Más de 20 componentes visuales (widgets) extensibles.

Desarrollo con Cocos2d-x

icon

Uno de los motores 2d más usados para el desarrollo de juegos en dispósitivos móviles es Cocos2d-x. Este proyecto gratuito y de código abierto ha sido desarrollado en C++, y su idea se fundamenta en extender el popular framework Cocos2d usado para crear juegos 2D en iPhone o iPad.

Cocos2d-x es un framework que permite programar un juego usando un mismo código fuente escrito en C++, Lua o Javascript, y al mismo tiempo publicar este juego en diferentes plataformas, simplificando de este modo la portabilidad del mismo.

Está soportado por un equipo de desarrollo chino y tiene bastantes carencias en cuanto a documentación y soporte incluso en inglés. Mi opinión es que Cocos2d-x es un framework orientado al programador algo experimento a lidiar con distintos entornos, lenguajes de programación y herramientas.

La ventaja principal que veo es que permite el recicle de aquellos programadores de Cocos2d de iOS a otras plataformas como Android o Windows Phone, al mismo tiempo que permite la portabilidad de un juego de manera rápida y sencilla, usando el lenguaje de programación que más te pueda convenir de entre los 3 soportados. Si eres un programador con algo de experiencia deberías darle una oportunidad a este proyecto.

AndroLua

Hace poco he descubierto AndroLua, un proyecto de demostración desarrollado por Michal Kottman. Este proyecto incluye una aplicación que proporciona acceso a la mayor parte del API Android desde el lenguaje de programación Lua.

La aplicación proporcionada en el proyecto debe ser instalada en un dispositivo Android, y además dispone de un servidor que permite abrir una sesión interactiva desde un dispositivo remoto (un PC por ejemplo) y ejecutar código Lua directamente en el dispositivo Android. La ventaja principal es que evita la necesidad del proceso repetitivo de compilar y desplegar la aplicación durante el desarrollo.

AndroLua hace uso de la reflexión que proporciona el lenguaje de programación Java para permitir dicho acceso. La ventaja que tiene este proyecto es que permite aumentar la productividad y sencillez de programación de aplicaciones Android debido al mayor dinamismo de Lua sobre Java.

Librerias SDL

El conjunto de librerías Simple DirectMedia Layer (SDL) proporciona un API de programación que permiten usar el mismo código fuente base para aplicaciones que necesiten principalmente el uso de gráficos y sonidos con OpenGL. También incluyen librerías para manejo de fuentes TTF y acceso en red.

Estas librerías han sido escritas en C de modo que las aplicaciones que hagan uso de SDL deberáin escribirse en los lenguages de programación C / C++. Afortunadamente existen adaptaciones de estas librerías a lenguajes de programación interpretados tipo Python y Lua, lo que hace posible usar lenguajes distintos a C manteniendo el rendimiento original y la portabilidad a los distintos sistemas operativos con un mismo código base.

La actual versión SDL 2 soporta OpenGL 2 y la programación de aplicaciones para iOS y Android, aunque es una versión que todavía se encuentra en activo desarrollo, por lo que su uso debería ser considerado de momento experimental o de soporte limitado hasta que se libere una versión más estable de la misma.

Algunos conocidos juegos (incluido Angry Birds) han sido desarrollados usando las librerías SDL, de modo que su adaptación de un entorno de escritorio a una tableta o móvil requiere mucho menos esfuerzo que escribir de nuevo todo el código. Evidentemente sería necesario algunas modificaciones tanto en el código original para migrar código escrito en SDL 1 a la nueva versión SDL 2, la interacción con el usuario para soportar las eventos de toque de las pantallas táctiles y sus distintas resoluciones.

Conviene seguir de cerca la evolución y las posibilidades que puede ofrecer SDL 2, ya que puede proporciona una alternativa para la portabilidad rápida y sencilla de juegos o aplicaciones que ya han sido desarrollados previamente para entornos escritorio (Windows, Linux, Mac)

Juego para móviles: Arkamania

Icon

Mi primer juego para dispositivos móviles Android / iOS titulado Arkamania y desarrollado con Gideros Studio ya está disponible para Android en los repositorios de apps más importantes: iTunes y Google Play.

Mi idea inicial fue desarrollar una aplicación que fuera en cierto modo un remake del clásico Arkanoid para dispositivos móviles teniendo en mente «escribe una vez, ejecuta en varios dispositivos», es decir, desarrollar una aplicación que fuese fácilmente portable.

La flexibilidad y facilidad de la combinación Gideros Studio como herramienta de desarrollo y Lua como lenguaje de programación han conseguido que el desarrollo de la aplicación, en el plano meramente técnico, haya sido en cierta medida relativamente sencillo.

La verdad es que al final estoy bastante satisfecho de este juego para móviles y tablets, que creo que hará las delicias de los amantes de juegos retro de los años 80, espero que lo probeis y disfruteis (no hay excusas, está disponible para Android / iOS). También espero que me deis una opinión favorable o en su defecto, alguna idea de mejora.

Gideros Mobile

gideros_mobile

El mundo de los videojuegos es también un aspecto interesante y lucrativo en el ambito de desarrollo de aplicaciones para iPhone y Android. Existen distintas herramientas y entornos de programación que proporcionan distintas aproximaciones para programar videojuegos teniendo en mente la portabilidad.

Uno de ellos es la plataforma Gideros Mobile que permite el uso del lenguaje de programación Lua para desarrollar juegos 2D. Esta plataforma está formada por las siguientes herramientas:

  • Gideros Studio es el IDE o entorno de desarrollo
  • Gideros Player que es un emulador que permite ejecutar el juego desde Mac, Linux o Windows, al mismo tiempo que comprobar el funcionamiento del juego en distintas resoluciones de pantalla.
  • API de programación que permite manipulación de sprites, texturas, texto, geometría 2d, giroscopio, eventos de usuario, …

Gideros proporciona una mejora en el tiempo de desarrollo de un 60 o 70% respecto a desarrollar en Java, Objective-C, gracias a la menor curva de aprendizaje necesario para el lenguaje de programación Lua y poder probar el juego desde Gideros Player.

El API proporciona un conjunto de clases relativamente sencillo de empezar a usar pero a la vez bastante potente. También existen diversas utilidades para soportar publicidad (Admob, iAd, Chartboost), in-app purchases, tiles, transición entre pantallas, reconocimiento de gestos …

Gideros puede extenderse mediante el desarrollo de plugins C++, Java, Objective-C dependiendo de la plataforma donde deban usarse.

Plataforma web

En el último año han estado floreciendo distintas propuestas y soluciones considerando el desarrollo de aplicaciones móviles sobre la consistente plataforma web. Es decir, el uso de HTML 5, CSS y Javascript para escribir aplicaciones que corren sobre un dispositivo Android, iPhone o iPad.

La idea es que la aplicación construida se pueda ejecutar de modo nativo sobre cualquier dispositivo que integre un navegador en el sistema operativo: el navegador se encarga de dibujar el interface de usuario definido en HTML 5, mientras que el código Javascript se traduce por llamadas nativas al sistema operativo para permitir el acceso al hardware.

Evidentemente el uso de tecnologías puramente webs como HTML y Javascript hace que el código base de la aplicación sea el mismo y se garantiza la portabilidad entre plataformas. El precio que hay que pagar por conseguir esta portabilidad es la reducción en el rendimiento y una experiencia de usuario algo diferente a la que espera un usuario Android o iPhone de una aplicación desarrollada con las herramientas nativas.

Phonegap es una de las soluciones basadas en desarrollar aplicaciones para distintas plataformas de manera sencilla, con ninguna o mínimas modificaciones del código fuente. Como puede leerse en su página web, es un proyecto libre de código abierto que permite escribir aplicaciones con un API Javascript estandar.