Gaming on Android
Gaming has historically been a strong driver of technology, whether we're talking hardware or software performance, the variety of input methods, or graphics support. Mobile, and specifically the Android platform, are no different - games and gamers drive the market forward more than any other app category or genre, and will continue to spawn device upgrades for the foreseeable future.
Android is a mature, yet still growing, platform that many game developers have embraced. Not only is Android a well-established and widely-distributed platform, but the capabilities of modern Android devices are beginning to surpass the capabilities of even those of recent generation console systems. What's exciting, though, is that any game, from the simplest, most casual of games to the most complex, multiplayer games imaginable still has the opportunity to be a break-out success story (two words: Flappy Bird). The diversity of users, in terms of age, gender, and taste, makes Android a great platform for game development companies, both large and small.
There was a time when most successful games came from only a few big publishers. These gaming giants had a lot of great developer talent and brand licenses. They also had the resources to build gaming platform services and technologies that could be leveraged over and over to create solid, high performance games. On desktop and console systems, it was virtually impossible for a small or independent developer to enter these spaces on their own; the barrier to entry was simply too high.
Mobile has proved to be a very democratic game development marketplace. This is partly because the user-base is so large and diverse that there are many opportunities to find your niche. But there's another reason: mobile developers have more game development tools and services at their disposal than ever before. Without them, mobile game development would not be achievable in the fast-paced industry.
Android is perhaps the most mature of all the mobile gaming platforms, in terms of the tools and services available. The Android development team, Google and partners like Intel, have put tremendous effort into ensuring the platform's success by providing tools and APIs and services to help bootstrap Android projects and ensure their success, many of which are specially designed to help game developers specifically. For example:
- Developers: The barrier to entry has never been this low before. Anyone can write an Android app and publish it. Android apps are normally written in Java, which is an extremely popular programming language in its own right and the most popular OOP language in university computer science classes around the world.
- Development Tools: The Android development tools are free. There are no expensive compilers or license fees. Eclipse is a familiar IDE, the up-and-coming Android Design Studio is highly anticipated, and the standard Android tools are fully featured and constantly improving. Open Handset Alliance partners like Intel have also released tools to make development even more streamlined on x86 development environments as well as x86-compliant Android devices.
- Android SDK: The Android SDK is a robust and full-featured set of APIs that Java developers will find familiar and easy to use. OpenGL ES support enables developers to write graphics-intensive applications, while Android's built-in basic graphics and animation libraries enable simpler games to look awesome without a lot of work.
- Native Development: Have a lot of game libraries to port? Game developers who want to leverage their existing C/C++ game libraries can choose to leverage the Android NDK for this purpose instead of rewriting everything.
- Third Party Game Engines: There are many popular game engines that can enable you to develop your Android game rapidly without reinventing the wheel. Game engines can help with game portability, provide a framework that supports most common game design patterns and tools to help generate game assets, such as textures and levels.
- Third Party Libraries for Game Developers: Developers can leverage third party libraries to perform common tasks in their games. Some libraries come optimized for specific device processors, saving work on algorithm development but also providing optimizations beyond what optimizing compilers can do.
- Gaming Services: Google (Google Play Game Services) and Amazon (Amazon GameCircle) have developed a suite of game development services that allow developers to focus on their core game features and painlessly incorporate common social gaming features.
- Publication: Developers have a variety of highly accessible distribution mechanisms.
As you can see, game developers have a lot of tools at their disposal. This allows them to focus on their core game code and making it the best it can be, without having to devote significant time developing other aspects of the game that users have come to expect. This setup allows any developer — from a single person up to a large game studio with a Hollywood blockbuster sized budget — to have a real shot at success. Now let's look at some of the above resources in more detail.
Developers, Intel Development Tools and the Android SDK
Many articles, books and university courses have been devoted to learning the Android platform, so we will breeze through these topics quickly. If you're just getting started, you'll want to head over to the Android Development website at https://developer.android.com. Here you can learn about Android, download the Android SDK and tools, and get started developing.
You should also head over to Intel Developer Zone for Android and grab Intel's tools for Android development and debugging as well. The Intel Graphics Performance Analyzers (Intel® GPA) for Android is especially handy for gathering performance analytics for graphics-intensive games. The Hardware Accelerated Execution Manager is a great time-saver; it dramatically speeds up Android emulation on Intel-based development machines, whether you're developing games or other types of apps.
The Android NDK
If you've spent a lot of time developing your game code on another platform, you may be able to leverage that existing code with your Android app by using the Android native development kit (NDK). The NDK supports linking your application (still in Java) with your existing C and C++ libraries. Using the NDK is a design choice, and it does have some limitations and performance ramifications, so you'll only want to use this technique if you've got extensive code you don't want to port. You can download the NDK and find out more information here: https://developer.android.com/tools/sdk/ndk/index.html. You can get the instructions on how to install the NDK on Intel architecture and how to use the NDK to build applications by visiting http://software.intel.com/en-us/android/articles/android-ndk-for-intel-architecture.
Third Party Game Engines
Game engines are at the heart of most game development, so let's focus on what's available for today's Android game developer. Building even the simplest game from scratch can leave the developer expending enormous time and energy on development of features that really have little to do with what makes their game unique or, shall we say, awesome? There are a lot of application features and development tasks that games share, and there are a lot of game design patterns that can be applied across games. Third party developers have seen the need to develop shared libraries and engines specifically for Android game developers so there is no need to reinvent the wheel, so-to-speak.
Game engines can ease much of the technical burden of game development and let the developer focus on perfecting the specifics of their game mechanics. Leveraging a game engine can save significant time and energy. Many game developers become specialists using specific game engines and it's not uncommon to see game engines listed on a game developer's résumé. Using a well-known engine can reduce testing effort and provide other advantages, such as optimizations for specific target platforms. For instance, several game engines provide Intel-specific device-target optimizations.
Game engines vary widely in terms of what they offer the game developer; some offer the complete game package, others provide low-level library support. Some are 2D, others are 3D. Game engines run the gamut in terms of what they offer. Often they provide tools for creating entire games and applications, from format converters, level design and mapping tools to physics engines and animation control. You might also find normal game mechanics and tasks like avatar creation are provided through engines.
Some game engines are specific to the Android platform while others are cross-platform and support console game development in addition to mobile. There are many game engines available for Android -so many, in fact, that we will just list a few of the most popular ones. Here is a sampling of game engines that all have support for Android. Please see the respective web sites for pricing details, other platform support, and features as they tend to change frequently.
- Unreal Engine 4,
- Unity 3D,
- Project Anarchy (Havok/Intel),
- GameMaker: Studio,
- Corona Game Edition,
Determining which engine is most suitable for your game project is a significant design choice, so you'll want to do your homework. Engines with more features are generally bigger and more complex to use than smaller, lightweight engines. On the flip side, the more fully-featured engines have established developer communities, so hiring developers or asking for help will be more feasible. Some game engines focus on cross platform support with a single code base. In this case, the developer usually writes their games in some sort of scripting language. Other game engines will require native coding on each platform. Finally, the choice of game engine may come down to licensing costs.
If your project involves developing a game that is going to ask a lot from the user's hardware, then you're going to want to factor in which game engines that have optimizations for specific processor platforms, such as Intel x86. Processor-tuned game engines have an advantage in that games developed with these engines are likely to perform best on each platform, instead of just well enough across all supported platforms. This can help the game developer leverage bleeding-edge hardware capabilities only in the most premium new Android devices, or processor-tuned engines can help the game developer broaden their game's reach by making the game playable on even the cheapest and slowest legacy Android devices.
Some examples of different types of game engines may be helpful here. Let's look at libgdx and Project Anarchy. These cover two different styles of game engine.
Libgdx is a 2D and 3D game engine that, in addition to Android, also supports Windows, Linux, Mac OS, BlackBerry, iOS, and even web browser targets. Unlike many cross-platform environments, apps are written in Java, which is convenient. The graphics offerings include APIs for 2D and 3D interfaces, and low level helpers on top of OpenGL as well as math and physics libraries. Music and sound effects are supported. Various helpers APIs are included, such as APIs for files, preferences, and file format parsing. Finally, there are some tools available for project configuration, font generation, and particle editing. The libgdx game engine is open source and well-maintained by its community. The project is very active, has lots of documentation, and an extensive gallery of apps and games that have used it. If you are comfortable with Eclipse and a typical open-source community environment, libgdx may be a good choice for your game.
Project Anarchy is a fully-featured game engine developed by Havok, an Intel company. Project Anarchy has everything from physics engines to 3D-positional audio, code profiling to terrain editing. Unlike libgdx, Project Anarchy is licensed. While the Project Anarchy license provides a lot of functionality for mobile for no monetary cost, the full features of the Havok engine require a difference license. Project Anarchy supports Android ARM and x86 targets as well as iOS. To target Windows, desktop, or console platforms as requires a different license, but they are also supported. Project Anarchy has an extensive set of tools for every member of the game development team, including designers, graphic artists, animators, and developers. As a more professional solution, Project Anarchy may not be what some independent mobile developers expect. Project Anarchy developers use more traditional commercial development tools like Visual Studio and Perforce source control. If your game development team is well-versed in traditional game studio methodologies and tools, Project Anarchy may be the best engine for your project.
These are just two of the many engines out there, but they help illustrate the field of opportunities to leverage game engines that you have as an Android game developer.
Third Party Libraries for Gaming and Processor Optimizations
There are libraries available for Android above and beyond those provided as part of the Android SDK and Google's offerings. For example, Intel has provided a number of tools and libraries that Android game developers will want to be aware of, especially if device performance is going to be a deal breaker for your game.
Although Android devices powered by Intel x86 processors are the exception these days, that hasn't stopped Intel from putting in significant effort to provide highly optimized libraries that can help developers, including game developers. These are all optimized for specific Intel technologies and outperform optimizing compilers. However, as x86-only NDK pieces, any developer wanting to use them will either have to provide their own implementations in the NDK portion of their app on other processors, or have a Java implementation ready.
The Intel®Integrated Performance Primitives (Intel® IPP) library provides media and data algorithms for use with filters, transformations, color space conversions, statistics, and even functions to aid in computer vision. To get started, check out Intel® IPP for Android at http://software.intel.com/en-us/articles/using-intel-ipp-with-android-os.
Modern game development necessitates the games be high performance and parallel in execution, whether it's to keep the rendering pipeline full, prepare realistic animations, process artificial intelligence, create realistic audio, or handle networking. Intel's Threading Building Blocks (Intel® TBB) library provides a framework for creating high performance, parallel applications. Android may provide reasonable tools for parallel applications on top of the SDK, but it's not portable to other platforms. With Intel® TBB, your solution can be portable as well as contain extra optimizations for Intel hardware. To get started, check out Intel TBB at http://software.intel.com/intel-tbb
Mobile and Game Services
Above and beyond the Android SDK, third party game engines and libraries, there are also many services available to the Android game developer. It's important to review what's available before you even start designing your game, as many of these services can integrate deeply into your game.
Third parties, most notably Google, have provided an extensive suite of services to help Android developers in a variety of ways. Your best place to start is the Google Play Game Services, where you'll find lots of support for social gaming aspects like leaderboards and achievements as well as support for cloud-saving, turn-based and real-time gaming models and more. Other services are not so game-specific. For example, the Google Play In-App Billing and Google Mobile Ads services can help you monetize your game. Google provides services for integrating social networking into your games with Google+ services. Need cloud services? Try Google Cloud. Platform (powered by Google's popular App Engine) and Google Cloud Messaging. Use Google Analytics to gather important metrics about your application and its users. Developers looking to publish with Amazon will find similar offerings within Amazon GameCircle.
Game Publication Opportunities
You've put in your time, your weekends, your blood, sweat, and tears. You've completed development of your game and now you just need to get it in front of users. With Android, you've got several of ways you can publish it. Most developers list their games through markets like the Google Play store and the Amazon Appstore. Both markets require the developer to create an account (low cost incurred) and then the publisher (e.g. Google or Amazon) will add your game to their application catalog, handle all distribution to end-users, collect all revenue, take a percentage of that revenue, and then pay you the rest. It's that simple. There are also alternative distribution methods of publication. Find out everything you need to know at http://d.android.com/tools/publishing/publishing_overview.html, and when you're looking to publish x86-targeted apps, check out Intel's publishing tips on the Intel Developer Zone here: http://software.intel.com/en-us/blogs/2012/11/12/how-to-publish-your-apps-on-google-play-for-x86-based-android-devices-using.
Keep in mind that the method with which you distribute your game may be limited by the game engine or libraries you choose. A free and open source game engine is unlikely to limit what you can do. However, at least one commercial game engine we mentioned requires developers to publish only to the well known app stores (e.g. Google Play and Amazon Appstore) rather than smaller, lesser known marketplaces. Furthermore, some game engine licensing terms requires revenue sharing, which may affect how you price your game, as well as how you deal with in-app purchases and other monetization methods. Make sure you review the fine print before deciding to use the game engine of your choice.
Game development has never been easier to break into and the Android platform comes with many tools and services to help developers get their fully-featured games to market fast. As the most popular mobile platform on the market today, Android is bound to have users who want to play your game. Whether you've got a casual game or a fully-immersive role playing epic in mind, seriously consider Android to bring your idea to reality.
To learn more about Intel's Android tools and resources, visit Intel® Developer Zone for Android.
Interested in learning more about Game Engines for Android? Check out the "Game Engines for Android" on-demand webinar here.