libGDX es un marco de aplicación de desarrollo de juegos [2] gratuito y de código abierto [3] escrito en el lenguaje de programación Java con algunos componentes C y C++ para código dependiente del rendimiento. [4] Permite el desarrollo de juegos de escritorio y móviles utilizando la misma base de código. [5] Es multiplataforma y admite Windows , Linux , Mac OS X , Android , iOS , BlackBerry y navegadores web con soporte WebGL . [2] [6]
A mediados de 2009, Mario Zechner, el creador de libGDX, quería escribir juegos para Android y comenzó a desarrollar un marco llamado AFX (Android Effects) para ello. Cuando descubrió que implementar los cambios desde el escritorio al dispositivo Android era engorroso, modificó AFX para que también funcionara en el escritorio, lo que facilitó la prueba de programas. Este fue el primer paso hacia el marco del juego conocido más tarde como libGDX. [1]
En marzo de 2010, Zechner decidió abrir AFX de código abierto y alojarlo en Google Code bajo la Licencia pública general reducida (LGPL) de GNU. Sin embargo, en ese momento afirmó que "de todos modos, no es la intención del marco usarse para crear juegos de escritorio", con la intención de que el marco esté dirigido principalmente a Android. En abril consiguió su primer colaborador. [1] [7]
Cuando Zechner creó un contenedor Box2D JNI , esto atrajo a más usuarios y contribuyentes porque los juegos de física eran populares en ese momento. [ se necesita una mejor fuente ] Muchos de los problemas con Android se resolvieron gracias a esto. [1]
Debido a que muchos usuarios sugirieron cambiar a una licencia diferente debido a que LGPL no era adecuado para Android, libGDX cambió su licencia a la Licencia Apache 2.0 en julio de 2010, lo que hizo posible utilizar el marco en juegos comerciales de código cerrado. [1] [8] El mismo mes se lanzó su foro phpBB . [1] [9]
Debido a problemas con Java Sound, la implementación de escritorio de audio cambió a OpenAL en enero de 2011. [1] [10] También se completó el desarrollo de una pequeña biblioteca de manipulación de imágenes llamada Gdx2D, que depende de la biblioteca STB de código abierto. [1] [11]
El resto de 2011 lo dedicamos a agregar una biblioteca de interfaz de usuario [12] y a trabajar en los conceptos básicos de una API 3D. [1]
A principios de 2012, Zechner creó una pequeña biblioteca auxiliar llamada gdx-jnigen para facilitar el desarrollo de enlaces JNI. [1] [13] Esto hizo posible que las extensiones gdx-audio [14] y gdx-freetype [15] se desarrollaran durante los siguientes meses. [1]
Inspirándose en el marco de desarrollo de juegos multiplataforma PlayN de Google que utilizaba Google Web Toolkit (GWT) para compilar código Java a JavaScript , Zechner escribió un backend HTML /JavaScript en el transcurso de varias semanas, lo que permitió ejecutar aplicaciones libGDX en cualquier Navegador con soporte WebGL . [1] Después de que Google abandonó PlayN, Michael Bayne lo mantuvo y le agregó soporte para iOS . libGDX utilizó partes de este trabajo para su propio backend basado en MonoTouch . [1] [16] [17]
En agosto de 2012, el proyecto cambió su sistema de control de versiones de Subversion a Git , pasando de Google Code a GitHub . Sin embargo, el rastreador de problemas y la wiki permanecieron en Google Code durante un año más. El sistema de compilación principal también se cambió a Maven , lo que facilita el trabajo conjunto para los desarrolladores con diferentes IDE . [1] [18] [19]
Debido a problemas con el backend de MonoTouch iOS, Niklas Thernig escribió un backend de RoboVM para libGDX en marzo de 2013, que se integró en el proyecto en septiembre. [1] [20] [21] De marzo a mayo de 2013 también se desarrolló una nueva API 3D que se integró en la biblioteca. [1] [22] [23]
En junio de 2013, se rehizo el sitio web del proyecto y ahora presenta una galería donde los usuarios pueden enviar sus juegos creados con libGDX. [1] [24] Hasta enero de 2016 [actualizar]se han enviado más de 3000 juegos. [25]
Después de la migración del código fuente a GitHub el año anterior, en septiembre de 2013, el rastreador de problemas y la wiki también se trasladaron allí desde Google Code. [1] [26] El mismo mes, el sistema de gestión de dependencias y compilación se cambió de Maven a Gradle . [1] [27]
Después de una fase de limpieza en los primeros meses de 2014, la versión 1.0 de libGDX fue lanzada el 20 de abril, más de cuatro años después del inicio del proyecto. [1]
En 2014, libGDX fue uno de los ganadores anuales del premio Duke's Choice Award, siendo elegido por su enfoque en la independencia de la plataforma. [28] [29]
De un equipo diverso de entusiastas del código abierto surge libGDX, un marco de desarrollo de juegos multiplataforma que permite a los programadores escribir, probar y depurar juegos Java en una PC de escritorio con Windows, Linux o Mac OS X e implementar ese mismo código en Android. , iOS y navegadores compatibles con WebGL, algo que no está ampliamente disponible en este momento. El objetivo de libGDX, dice el creador Mario Zechner, "es cumplir la promesa de 'escribir una vez, ejecutar en cualquier lugar' de la plataforma Java específicamente para el desarrollo de juegos".
— Revista Java septiembre/octubre de 2014 [30]
En abril de 2016 se anunció que libGDX cambiaría al motor Multi-OS de Intel en el backend de iOS después de la discontinuación de RoboVM. [31] [32] Con el lanzamiento de libGDX 1.9.3 el 16 de mayo de 2016, se proporciona Multi-OS como alternativa, mientras que, de forma predeterminada, la biblioteca utiliza su propia bifurcación de la versión de código abierto de RoboVM. [33] [34]
Del 18 de diciembre de 2015 al 18 de enero de 2016 se organizó un game jam de libGDX junto con RoboVM , itch.io y Robotality. De las 180 propuestas iniciales, se eligió "La vida en el espacio" como tema principal del Jam y durante el concurso se crearon 83 juegos. [35] [36]
libGDX permite al desarrollador escribir, probar y depurar su aplicación en su propia PC de escritorio y usar el mismo código en Android. Resume las diferencias entre una aplicación común de Windows/Linux y una aplicación de Android. El ciclo de desarrollo habitual consiste en permanecer en el PC de escritorio el mayor tiempo posible mientras se verifica periódicamente que el proyecto aún funciona en Android. Su principal objetivo es brindar compatibilidad total entre dispositivos de escritorio y móviles, siendo la principal diferencia la velocidad y la potencia de procesamiento. [5]
La biblioteca utiliza de forma transparente código específico de la plataforma a través de varios backends para acceder a las capacidades de la plataforma anfitriona. La mayoría de las veces, el desarrollador no tiene que escribir código específico de la plataforma, excepto las clases iniciales (también llamadas lanzadores) que requieren una configuración diferente según el backend. [49]
Si bien libGDX está escrito principalmente en Java , el código de bytes compilado es independiente del idioma, lo que permite que muchos otros lenguajes JVM utilicen directamente la biblioteca. La documentación establece específicamente la interoperabilidad con Ceylon , Clojure , Kotlin , Jython , JRuby y Scala . [54]
Existen varias extensiones oficiales y de terceros que agregan funcionalidad adicional a la biblioteca.
Un marco de inteligencia artificial (IA) que se separó de la biblioteca principal con la versión 1.4.1 en octubre de 2014 y se trasladó a su propio repositorio. Si bien inicialmente se creó para libGDX, también se puede usar con otros marcos. El proyecto se centra en la IA útil para juegos, entre ellos la búsqueda de caminos , la toma de decisiones y el movimiento. [55] [56]
Se puede utilizar para representar fuentes FreeType en tiempo de ejecución en lugar de utilizar imágenes de mapa de bits estáticas , que no se escalan tan bien. [57]
En 2010 se introdujo un contenedor para la biblioteca de física Box2D y se trasladó a una extensión con la versión 1.0. [1] [58]
Una herramienta auxiliar que incluye un JRE personalizado con la aplicación para que los usuarios finales no tengan que tener uno propio instalado. [59] [60]
Los programadores pueden utilizar este marco de desarrollo de juegos multiplataforma para escribir, probar y depurar juegos Java.