Original author(s) | Mario Zechner |
---|---|
Initial release | 20 April 2014 [1] |
Stable release | 1.12.0 / 2 July 2023 |
Repository | |
Written in | Java, C, C++ |
Operating system | Windows, Linux, Mac OS X , Android, BlackBerry OS , iOS, Java Applet , JavaScript/WebGL [2] |
Platform | Java platform |
License | Apache License 2.0 [2] |
Website | https://libgdx.com |
libGDX is a free and open-source [3] game-development application framework [2] written in the Java programming language with some C and C++ components for performance dependent code. [4] It allows for the development of desktop and mobile games by using the same code base. [5] It is cross-platform, supporting Windows, Linux, Mac OS X, Android, iOS, BlackBerry and web browsers with WebGL support. [2] [6]
In the middle of 2009 Mario Zechner, the creator of libGDX, wanted to write Android games and started developing a framework called AFX (Android Effects) for this. When he found that deploying the changes from Desktop to Android device was cumbersome, he modified AFX to work on the Desktop as well, making it easier to test programs. This was the first step toward the game framework later known as libGDX. [1]
In March 2010 Zechner decided to open-source AFX, hosting it on Google Code under the GNU Lesser General Public License (LGPL). However, at the time he stated that "It's not the intention of the framework to be used for creating desktop games anyway", intending the framework to primarily target Android. In April, it got its first contributor. [1] [7]
When Zechner created a Box2D JNI wrapper, this attracted more users and contributors because physics games were popular at the time.[ better source needed ] Many of the issues with Android were resolved because of this. [1]
Because many users suggested switching to a different license due to LGPL not being suitable for Android, libGDX changed its license to the Apache License 2.0 in July 2010, making it possible to use the framework in closed-source commercial games. [1] [8] The same month its phpBB forum was launched. [1] [9]
Due to issues with Java Sound the audio desktop implementation switched to OpenAL in January 2011. [1] [10] Development of a small image manipulation library called Gdx2D was finished as well, which depends on the open source STB library. [1] [11]
The rest of 2011 was spent adding a UI library [12] and working on the basics of a 3D API. [1]
At the start of 2012 Zechner created a small helper library called gdx-jnigen for easing the development of JNI bindings. [1] [13] This made it possible for the gdx-audio [14] and gdx-freetype [15] extensions to be developed over the following months. [1]
Inspired by Google's PlayN cross-platform game development framework that used Google Web Toolkit (GWT) to compile Java to JavaScript code, Zechner wrote an HTML/JavaScript backend over the course of several weeks, which allowed libGDX applications to be run in any browser with WebGL support. [1] After Google abandoned PlayN, it was maintained by Michael Bayne, who added iOS support to it. libGDX used parts of this work for its own MonoTouch-based backend. [1] [16] [17]
In August 2012 the project switched its version control system from Subversion to Git, moving from Google Code to GitHub. However, the issue tracker and wiki remained on Google Code for another year. The main build system was also changed to Maven, making it easier for developers with different IDEs to work together. [1] [18] [19]
Because of issues with the MonoTouch iOS backend Niklas Thernig wrote a RoboVM backend for libGDX in March 2013, which was integrated into the project in September. [1] [20] [21] From March to May 2013 a new 3D API was developed as well and integrated into the library. [1] [22] [23]
In June 2013 the project's website was redone, now featuring a gallery where users can submit their games created with libGDX. [1] [24] As of January 2016 [update] more than 3000 games have been submitted. [25]
After the source code migration to GitHub the year before, in September 2013 the issue tracker and wiki were also moved there from Google Code. [1] [26] The same month the build and dependency management system was switched from Maven to Gradle. [1] [27]
After a cleanup phase in the first months of 2014 libGDX version 1.0 was released on 20 April, more than four years after the start of the project. [1]
In 2014 libGDX was one of the annual Duke's Choice Award winners, being chosen for its focus on platform-independence. [28] [29]
From a diverse team of open source enthusiasts comes libGDX, a cross-platform game development framework that allows programmers to write, test, and debug Java games on a desktop PC running Windows, Linux, or Mac OS X and deploy that same code to Android, iOS and WebGL-enabled browsers—something not widely available right now. The goal of libGDX, says creator Mario Zechner, "is to fulfill the 'write once, run anywhere' promise of the Java platform specifically for game development."
— Java Magazine September/October 2014 [30]
In April 2016 it was announced that libGDX would switch to Intel's Multi-OS Engine on the iOS backend after the discontinuation of RoboVM. [31] [32] With the release of libGDX 1.9.3 on 16 May 2016 Multi-OS is provided as an alternative, while by default the library uses its own fork of the open source version of RoboVM. [33] [34]
From 18 December 2015 to 18 January 2016 a libGDX game jam was organized together with RoboVM, itch.io and Robotality. From initially 180 theme suggestions "Life in space" was chosen as the jam's main theme, and 83 games were created over the course of the competition. [35] [36]
Version | Release date |
---|---|
1.0 | 20 April 2014 [1] |
1.1 | 23 May 2014 [37] |
1.2 | 22 June 2014 [38] |
1.3 | 9 August 2014 [39] |
1.4 | 10 October 2014 [40] |
1.5 | 8 December 2014 [41] |
1.6 | 6 May 2015 [42] |
1.7 | 21 September 2015 [43] |
1.8 | 5 January 2016 [44] |
1.9 | 24 January 2016 [45] |
1.10 | 18 April 2021 [46] |
1.11 | 11 May 2022 [47] |
1.12 | 2 July 2023 [48] |
Legend: | Old version, not maintained | Current stable version |
---|
libGDX allows the developer to write, test, and debug their application on their own desktop PC and use the same code on Android. It abstracts away the differences between a common Windows/Linux application and an Android application. The usual development cycle consists of staying on the desktop PC as much as possible while periodically verifying that the project still works on Android. Its main goal is to provide total compatibility between desktop and mobile devices, the main difference being speed and processing power. [5]
The library transparently uses platform-specific code through various backends to access the capabilities of the host platform. Most of the time the developer does not have to write platform-specific code, except for starter classes (also called launchers) that require different setup depending on the backend. [49]
While libGDX is written primarily in Java, the compiled bytecode is language-independent, allowing many other JVM languages to directly use the library. The documentation specifically states the interoperability with Ceylon, Clojure, Kotlin, Jython, JRuby and Scala. [54]
Several official and third-party extensions exist that add additional functionality to the library.
An artificial intelligence (AI) framework that was split from the main library with version 1.4.1 in October 2014 and moved into its own repository. While it was initially made for libGDX, it can be used with other frameworks as well. The project focuses on AI useful for games, among them pathfinding, decision making and movement. [55] [56]
Can be used to render FreeType fonts at run time instead of using static bitmap images, which do not scale as well. [57]
A wrapper for the Box2D physics library was introduced in 2010 and moved to an extension with the 1.0 release. [1] [58]
A helper tool that bundles a custom JRE with the application so end users do not have to have their own one installed. [59] [60]
In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.
The Lightweight Java Game Library (LWJGL) is an open-source software library that provides bindings to a variety of C libraries for video game developers to Java. It exposes cross-platform libraries commonly used in developing video games and multimedia titles, such as Vulkan, OpenGL, OpenAL and OpenCL.
Adobe AIR is a cross-platform runtime system currently developed by Harman International, in collaboration with Adobe Inc., for building desktop applications and mobile applications, programmed using Adobe Animate, ActionScript, and optionally Apache Flex. It was originally released in 2008. The runtime supports installable applications on Windows, macOS, and mobile operating systems, including Android, iOS, and BlackBerry Tablet OS.
JUCE is an open-source cross-platform C++ application framework, used for the development of desktop and mobile applications. JUCE is used in particular for its GUI and plug-ins libraries. It is dual licensed under the GPLv3 and a commercial license.
Box2D is a free open source 2-dimensional physics simulator engine written in C++ by Erin Catto and published under the MIT license. It has been used in Crayon Physics Deluxe, Limbo, Rolando, Incredibots, Angry Birds, Tiny Wings, Shovel Knight, Transformice, Happy Wheels, and many online Flash games, as well as iPhone, iPad and Android games using the Cocos2d or Moscrif game engine and Corona framework.
This is a comparison of web frameworks for front-end web development that are heavily reliant on JavaScript code for their behavior.
Google App Engine is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications—as the number of requests increases for an application, App Engine automatically allocates more resources for the web application to handle the additional demand.
WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins. WebGL is fully integrated with other web standards, allowing GPU-accelerated usage of physics, image processing, and effects in the HTML canvas. WebGL elements can be mixed with other HTML elements and composited with other parts of the page or page background.
Titanium SDK is an open-source framework that allows the creation of native mobile applications on platforms iOS and Android from a single JavaScript codebase. It is presently developed by non-profit software foundation TiDev, Inc.
RemObjects Software is an American software company founded in 2002 by Alessandro Federici and Marc Hoffman. It develops and offers tools and libraries for software developers on a variety of development platforms, including Embarcadero Delphi, Microsoft .NET, Mono, and Apple's Xcode.
Xamarin is a Microsoft-owned San Francisco-based software company founded in May 2011 by the engineers that created Mono, Xamarin.Android and Xamarin.iOS, which are cross-platform implementations of the Common Language Infrastructure (CLI) and Common Language Specifications.
Dart is a programming language designed by Lars Bak and Kasper Lund and developed by Google. It can be used to develop web and mobile apps as well as server and desktop applications.
Mono is a free and open-source .NET Framework-compatible software framework. Originally by Ximian, it was later acquired by Novell, and is now being led by Xamarin, a subsidiary of Microsoft and the .NET Foundation. Mono can be run on many software systems.
Kivy is a free and open source Python framework for developing mobile apps and other multitouch application software with a natural user interface (NUI). It is distributed under the terms of the MIT License, and can run on Android, iOS, Linux, macOS, and Windows.
PlayN is an open source Java software framework and set of libraries intended to create multi-platform games and distributed under the Apache License 2.0. It was started on January 19, 2011 as a game abstraction library built over GWT and was previously named Forplay. As of January 2024, its current version is 2.0.8.
GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead of time. This allows for faster initialization, greater runtime performance, and decreased resource consumption, but the resulting executable can only run on the platform it was compiled for. It provides additional programming languages and execution modes. The first production-ready release, GraalVM 19.0, was distributed in May 2019. The most recent release is GraalVM for JDK 22, made available in March 2024.
OpenFL is a free and open-source software framework and platform for the creation of multi-platform applications and video games. OpenFL applications can be written in Haxe, JavaScript, or TypeScript, and may be published as standalone applications for several targets including iOS, Android, HTML5, Windows, macOS, Linux, WebAssembly, Flash, AIR, PlayStation 4, PlayStation 3, PlayStation Vita, Xbox One, Wii U, TiVo, Raspberry Pi, and Node.js.
NativeScript is an open-source framework to develop mobile apps on the iOS and Android platforms. It was originally conceived and developed by Progress. At the end of 2019 responsibility for the NativeScript project was taken over by long-time Progress partner, nStudio. In December 2020 nStudio also oversaw the induction of NativeScript into OpenJS Foundation as an Incubating Project. NativeScript apps are built using JavaScript, or by using any programming language that transpiles to JavaScript, such as TypeScript. NativeScript supports the Angular and Vue JavaScript frameworks. Mobile applications built with NativeScript result in fully native apps, which use the same APIs as if they were developed in Xcode or Android Studio. Additionally, software developers can re-purpose third-party libraries from CocoaPods, Maven, and npm.js in their mobile applications without the need for wrappers.
Raylib is a cross-platform open-source software development library. The library was made to create graphical applications and games.
Programmers can use this cross-platform game development framework to write, test, and debug Java games.