libGDX es un marco de desarrollo de aplicaciones de juegos gratuito y de código abierto [3] [2] 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, compatible con Windows , Linux , macOS , Android , iOS , BlackBerry y navegadores web con soporte WebGL . [2] [6]
A mediados de 2009, Mario Zechner, el creador de libGDX, quiso escribir juegos para Android y comenzó a desarrollar un framework llamado AFX (Android Effects) para ello. Cuando descubrió que implementar los cambios desde el escritorio al dispositivo Android era complicado, modificó AFX para que funcionara también en el escritorio, lo que facilitó la prueba de programas. Este fue el primer paso hacia el framework de juegos que más tarde se conocería como libGDX. [1]
En marzo de 2010, Zechner decidió convertir AFX en código abierto y alojarlo en Google Code bajo la licencia pública general reducida de GNU (LGPL). Sin embargo, en ese momento declaró que "de todos modos, no es la intención del marco de trabajo que se utilice para crear juegos de escritorio", y que su objetivo era que el marco de trabajo se orientara principalmente a Android. En abril, consiguió su primer colaborador. [1] [7]
Cuando Zechner creó un contenedor JNI para Box2D , esto atrajo a más usuarios y colaboradores 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 adecuada para Android, libGDX cambió su licencia a la Licencia Apache 2.0 en julio de 2010, lo que hizo posible usar 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 del escritorio de audio cambió a OpenAL en enero de 2011. [1] [10] También se terminó 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 se dedicó a agregar una biblioteca de interfaz de usuario [12] y a trabajar en los aspectos 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 meses siguientes. [1]
Inspirado por el marco de desarrollo de juegos multiplataforma PlayN de Google que usaba Google Web Toolkit (GWT) para compilar código Java a JavaScript , Zechner escribió un backend HTML /JavaScript en el transcurso de varias semanas, que permitió que las aplicaciones libGDX se ejecutaran en cualquier navegador con soporte WebGL . [1] Después de que Google abandonara PlayN, fue mantenido por Michael Bayne, quien le agregó soporte para iOS . libGDX usó 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 otro año. El sistema de compilación principal también se cambió a Maven , lo que facilitó el trabajo conjunto de los desarrolladores con diferentes IDE . [1] [18] [19]
Debido a problemas con el backend MonoTouch iOS, Niklas Thernig escribió un backend RoboVM para libGDX en marzo de 2013, que se integró al proyecto en septiembre. [1] [20] [21] De marzo a mayo de 2013 también se desarrolló una nueva API 3D y se integró en la biblioteca. [1] [22] [23]
En junio de 2013 se rehizo el sitio web del proyecto, que ahora incluye 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 compilación y dependencias 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 se lanzó 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 del premio anual 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 navegadores Android, iOS y compatibles con WebGL, algo que no está ampliamente disponible en este momento. El objetivo de libGDX, dice el creador Mario Zechner, "es cumplir con 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 2014 [30]
En abril de 2016 se anunció que libGDX cambiaría al Multi-OS Engine 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, Multi-OS se proporciona como una alternativa, mientras que de forma predeterminada la biblioteca usa 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 concurso de juegos libGDX junto con RoboVM , itch.io y Robotality. De las 180 propuestas temáticas iniciales, se eligió "La vida en el espacio" como tema principal del concurso y se crearon 83 juegos a lo largo de la competición. [35] [36]
libGDX permite al desarrollador escribir, probar y depurar su aplicación en su propio PC de escritorio y utilizar el mismo código en Android. Elimina 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 tanto como sea posible mientras se verifica periódicamente que el proyecto aún funciona en Android. Su objetivo principal es proporcionar 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 para las clases de inicio (también llamadas lanzadores) que requieren una configuración diferente según el backend. [50]
Si bien libGDX está escrito principalmente en Java , el bytecode compilado es independiente del lenguaje, lo que permite que muchos otros lenguajes de JVM utilicen la biblioteca directamente. La documentación establece específicamente la interoperabilidad con Ceylon , Clojure , Kotlin , Jython , JRuby y Scala . [55]
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 los juegos, entre ellos la búsqueda de rutas , la toma de decisiones y el movimiento. [56] [57]
Se puede utilizar para renderizar 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. [58]
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] [59]
Una herramienta auxiliar que incluye un JRE personalizado con la aplicación para que los usuarios finales no tengan que tener el suyo propio instalado. [60] [61]
Los programadores pueden utilizar este marco de desarrollo de juegos multiplataforma para escribir, probar y depurar juegos Java.