By: Clay Montgomery
In the conclusion of this two-part series, I detail the best 3D game engine and middleware solutions for Android* tablets, including free, open source, and proprietary options. I also note which have native support for x86 Intel® processors.
Part 1 of this series introduced the essential concepts and categories of game engines, authoring tools, and middleware for software development kit (SDK) and Android Native Development Kit development and listed the best solutions for 2D game development.
3D Game Engines
3D game engines run on the Android device, parse the content from your authoring tool, and render the graphics through OpenGL ES*. They also provide essential services beyond the scope of OpenGL ES, such as rendering text fonts, detecting touch input, and providing audio and video integration. Most game engines originated on the Windows* platform and have been ported to Android fairly recently. Some are more comprehensive and mature (such as Unity* 3D) but also larger and more costly, while others are completely open source and free (such as the Lightweight Java* Game Library [LWJGL] and jMonkeyEngine).
The most complete solutions even provide portability for your game through OpenGL ES to game consoles, Apple iOS* devices, Linux*, and Windows, which can help get your app to a wider market more quickly—but at a cost. The pricing is usually tiered based on the functions you require, how many different platforms you’re targeting, the size of your development team, and the amount of revenue from your game’s sales. Of course, you can expect better support when paying licensing or subscription fees, whereas your only support for free software may be online user forums.
Some game engines are tightly integrated with proprietary authoring tools, and you may have to pay licensing fees to use the tools or the engine when the game is published. But open source game engines generally import content from a range of authoring tools, free or otherwise, in several industry-standard file formats for 3D asset exchange, such as Autodesk 3ds Max* object files or Collada.
Finally, some middleware solutions are not complete game engines but provide many of the pieces required to build custom game engines, such as the Imagination Technologies PowerVR* SDK and LWJGL, at little or no cost. These are good options if your app is limited in scope and doesn’t require all of the services of a typical 3D game or you need the source code for customization.
Physics Engines
Your game may need a physics engine to give your animations natural-looking movement that simulates the forces of gravity, friction, inertia, and restitution on constrained, rigid-body geometry in motion and to detect collisions. The most popular physics engines used for games are Bullet, NVIDIA PhysX*, and Box2D. Bullet and Box2D are free, open source projects. Box2D is limited to 2D, but Bullet and PhysX offer 3D collision detection as well as support for deformable soft bodies, like cloth and rope. Many of the 2D game engines on Android, including Corona, LibGDX, GameMaker:Studio*, Gideros Studio, and LWJGL, use Box2D; many of the 3D engines use Bullet. PhysX is proprietary to NVIDIA; for the Android platform, it is provided free only for educational and noncommercial use. Unity 3D and DX Studio* use PhysX.
Havok Project Anarchy*
Havok Project Anarchy* is a game engine and comprehensive toolkit for mobile game development that has just recently been released. Its licensing allows you to publish your game on Android, Tizen*, and iOS platforms at no cost. It features an extendable C++ plug‑in architecture that includes Havok’s vision and physics engines, animation, and artificial intelligence (AI) tools; a flexible asset-management system; and Lua* scripting and debugging. In addition, complete game samples and extensive courseware are included with the SDK. Havok asks developers to be co-marketing partners and compile with x86 tools to take advantage of the growing market of Android tablets with Intel processors. This is a free but professional new option for mobile game developers.
Unity 3D*
Unity 3D is currently the 3D game engine with the largest market share for Android. It supports a wide range of target platforms, including iOS, Windows, and game consoles. Unity 3D features a built-in integrated development environment; PhysX physics engine; C#, JavaScript*, and Boo scripting languages; multiplayer and network support; and streaming assets. It also supports art assets imported from a range of authoring tools. Developers can get started for free, but a license is required to publish for Android, and the license cost is among the highest. Unity 3D lacks support for Android devices that have Intel x86 processors, which limits the market for Android games built with Unity 3D.
jPCT-AE
The jPCT‑AE engine is an easy-to-learn, all-Java 3D application programming interface (API) that has essential features for building custom game engines for Android. It is free for personal and commercial use. It supports the Autodesk 3ds Max authoring tools, skeletal animations, shaders, texture compression, collision detection, various lighting modes, transparency, fog, and native x86 support for better performance on Android tablets that have Intel processors. It is built on the LWJGL.
Gameplay
Gameplay is a free, open source, cross-platform, C++ 3D framework aimed at indie game development for desktop and mobile games, including Android. It has a full-featured, node-based scene graph rendering system with particles, Bullet physics engine, audio and user interface (UI) systems, and more. It also includes solutions and workspaces for Microsoft Visual Studio*, Xcode*, Eclipse* C/C++ Development Tools, and CMake.
Esenthel Engine
This modern 2D and 3D, C++–based game engine for Windows, Linux, Mac* OS X*, iOS, and Android supports scripting, multiple renderers, an animation system, PhysX and Bullet physics engines, and streaming. It also includes a world editor, model editor, data browser, and code editor and features native x86 support for Android, with one-click, cross-platform publishing. Esenthel Engine is available for an unlimited free trial if used noncommercially.
Linderdaum Engine
The Linderdaum Engine is a free, open source, object-oriented 3D game engine for Windows, Android, and RIM BlackBerry* OS 10 written in C++. It is an integrated solution for the development of interactive 3D applications, including games and industrial and scientific visualization. It also features native x86 support for better performance on Android tablets with Intel processors.
ShadingZen
ShadingZen is a free, open source, 2D and 3D game engine written in Java. It is designed specifically for mobile Android devices that have OpenGL ES 2.0 accelerators and varying screen sizes and uses concepts from the popular Cocos2d framework to exploit modern multicore mobile CPUs to process parallel tasks behind the scenes.
Marmalade*
The Marmalade* SDK is a popular, cross-platform C++ SDK some large game publishers are using for new 2D and 3D Android titles. It supports a wide range of mobile platforms using either Visual Studio on Windows or Xcode on Mac OS X. The Marmalade SDK provides access to OpenGL ES, but it’s relatively new to building 3D games. The company also offers Marmalade Quick, which uses Cocos2d‑x to support building 2D games with the Lua scripting language, and Marmalade Juice, which allows you to recompile Objective‑C* projects on iOS natively for Android. You can evaluate these tools at no cost for 30 days, but a license is required to publish. The Marmalade SDK also features native x86 support for better performance on Android tablets with Intel processors.
ShiVa3D
ShiVa3D is a 3D game engine, editor, authoring tool, compiler, and massively multiplayer online server that has a wide range of supported target platforms, including Android. It includes advanced shading systems, physics, heads-up display rendering, Lua scripting, sound library, and more. ShiVa3D has a single-license, royalty-free pricing structure that covers all mobile platforms that the Marmalade SDK supports.
DX Studio*
DX Studio is a free 2D and 3D game engine that has its own editor for Windows as well as (recently added) support for Android. It uses the PhysX library for physics and can import content from several popular authoring tools.
SIO2 Engine
SIO2 is a cross-platform, 2D and 3D game engine targeting Windows, Bada, webOS, iOS, and Android. It features Lua scripting support, Bullet physics, path finding, sound APIs, a shader, animation, and networking support. SIO2 allows a choice of authoring tools, with several export plug‑in options. A free evaluation kit is available, but a license is required to publish.
Unigine*
Unigine* is a cross-platform, 3D game engine targeting Windows, Linux, Sony PlayStation* 3, Mac OS X, iOS, and Android. Two editions of the SDK are available: one for games and another for simulation, training, real-time visualization, and virtual reality applications. A free evaluation kit is available to develop commercial projects, but a license is required to publish.
LibGDX
One of the best free, open source 3D solutions is LibGDX. It is mostly Java, with some C++ for better performance. LibGDX abstracts away the differences between the Windows, Linux, and Android platforms so that you can develop on a desktop Windows or Linux* PC as much as possible and periodically test your code on an Android device. LibGDX also supports Mac OS X-, iOS-, and Web Graphics Library-enabled browsers. LibGDX is built on the LWJGL, OpenGL ES, FreeType, MPG123, Xiph, the SoundTouch Audio Processing Library, Box2D, OpenAL, and Kiss FFT.
Lightweight Java* Game Library
The LWJGL is a free, open source library for developing commercial-quality games in Java. It provides access to several high-performance, cross-platform libraries, such as OpenGL ES, OpenCL™, and OpenAL, some of which are otherwise unavailable or poorly implemented on Java platforms. LWJGL allows Android game development with 3D sound and access to controllers such as gamepads, steering wheels, and joysticks. Many of the 2D and 3D game engines targeting Android use this library, including jPCT‑AE and LibGDX.
jMonkeyEngine SDK
jMonkeyEngine is a free, open source, 3D game engine for adventurous Java developers who want to create 3D games using cutting-edge technology. It features tools for terrain sculpting, cinematics, networking, input, custom controls, and audio and video. Windows, Linux, Mac OS X, and Android targets are supported. For physics simulation, jMonkeyEngine uses jBullet, a Java port of the Bullet physics library. jMonkeyEngine is unusual in that it’s tightly coupled with the Blender authoring tool, which forms a completely open source and free 3D game development solution.
PowerVR* SDK
The PowerVR SDK includes tools and libraries that you can use to build custom game engines in C++ for many platforms, including Android. Particularly important is the PVRTexTool, which is required to compress 2D images into the proprietary PVRTC texture formats for the PowerVR GPU for Intel® Atom™ processors. This SDK also includes the PVRGeoPOD tools for importing content from several popular authoring tools, including Collada, and a comprehensive collection of tutorial OpenGL ES example programs. This SDK is proprietary but distributed at no cost with a permissive license. It is available through the Android SDK Manager as an Eclipse add-on. Follow the steps at the PowerVR Downloads site to install the SDK.
Table 1 shows the popular 3D game engines and available SDKs.
Table 1. 3D Game Engines and SDKs
Name | Languages | Source Code | Cost | Intel® x86 Support | Examples |
---|---|---|---|---|---|
Havok Project Anarchy* | C++ | Yes | Free | Native | Tutorials |
Unity* 3D | C#, JavaScript*, Boo | No | Tiered | No | AirAttack HD Lite |
LibGDX | C++ and Java* | Yes | Free | Portable | – |
jPCT-AE | Java | Yes | Free | Native | Max the flyer 3D |
Gameplay | C++ | Yes | Free | Portable | Examples |
Esenthel Engine | C++ | Yes | Tiered | Native | Examples |
Linderdaum Engine | C++ | Yes | Free | Native | Examples |
ShadingZen | Java | Yes | Free | Portable | Games for Kids: 3D Cube |
Marmalade* SDK | C++ and Lua* | No | Tiered | Native | Golf Battle 3D |
ShiVa3D | C++ and Lua | No | Tiered | Portable | Showcase |
DX Studio* | C++ | Yes | Free | Portable | Gallery |
SIO2 Engine | C/C++ and Lua | Yes | Tiered | Portable | Tutorials |
Unigine | C++ | No | Tiered | Portable | Oil Rush |
Lightweight Java Game Library | Java | Yes | Free | Portable | Space Invaders |
jMonkeyEngine | Java | Yes | Free | Portable | Showcase |
Imagination Technologies PowerVR* software development kit | C++ | Yes | Free | Portable | – |
Conclusion
An incredible wealth of 2D and 3D game engine, authoring tool, and middleware solutions have recently become available to help accelerate the development of new apps that exploit the larger, high-resolution displays and accelerated OpenGL ES 2.0 features of new-generation Android tablets. You can tap into these software solutions and choose from the many language, licensing, and cost options to simplify much of the complexity of the Android platform and provide more visually compelling user experiences that will make your apps stand out from the crowd.
For More Information
- Displaying Graphics with OpenGL ES, Google tutorial.
- Check out Game Engines for Android by Nathan Totura.
- See Intel® Demonstrates New Advancements in Mobile Graphics by Jerry Makare.
- See Intel for Android* Developers Learning Series #11: OpenGL ES* Support, Performance, and Features for Android on the Intel® Atom™ Processor by Clay D. Montgomery
About the Author
Clay D. Montgomery is a leading developer of drivers and apps for OpenGL on embedded systems. His experience includes the design of graphics accelerator hardware, graphics drivers, APIs, and OpenGL applications across many platforms at STB Systems, VLSI Technology, Philips Semiconductors, Nokia, Texas Instruments, AMX, and as an independent consultant. He was instrumental in the development of some of the first OpenGL ES, OpenVG*, and SVG drivers and applications for the Freescale i.MX and TI OMAP* platforms and the Vivante, AMD, and PowerVR graphics cores. He has developed and taught workshops on OpenGL ES development on embedded Linux and represented several companies in the Khronos Group.