Shipping Tappy Chicken

Tappy Chicken is out now, shipped simultaneously on iOS, Android, and HTML5. Available as a free, lightweight download, it’s the first UE4 game released on any of those platforms, and one of the first overall.

The entire game was built by a single artist (Shane Caudle) with no traditional programming skills. It is a content-only game (contains no C++ code), with all of the gameplay created entirely using Blueprints. Shane built the core gameplay loop in an evening and spent perhaps a week working on building out the menus, fixing bugs, etc... for the 4.0 release.

Since 4.1 shipped, Shane has optimized the artwork to reduce overdraw (tight bounds on the sprites and splitting transparent and opaque objects), which improves the framerate on lower-end devices like the iPhone 4. He also made use of the new Blueprint-exposed achievements API and added support for them, joining the existing (previously-experimental) leaderboard support. All of these changes will be available in the 4.2 release.

Easy cross-platform development

UE4 makes it easy to create a cross-platform game, abstracting away platform-specific details and letting you focus on making a game. Tappy Chicken handles touch, mouse, and controller input, and can run on any supported platforms, even the consoles. The only platform-specific logic in Tappy Chicken decides whether to show the leaderboard and achievement buttons or not; everything in the game runs the same in the editor preview as it does on device or in the browser, making testing a lot easier.

HTML5: Browsers that support WebGL (Latest Firefox, Chrome, Safari, or Opera, with compatibility increasing as time goes on)

Small download size

The final shipping sizes for the various platforms are listed below:

HTML5: 9.4 MB

Android: 26.8 MB (OBB + APK combined)

iOS: 28.9 MB

The actual Tappy Chicken game content is under 2MB, the rest is basically a fixed overhead for the engine that won’t increase as you add more content to your game. We’re still optimizing this overhead; expect to see further size reductions in future releases. Even so, you can ship a much larger game with dozens of times more content than Tappy Chicken and still fit into the OTA download size for the various stores (typically 100 MB).

Online features

Tappy Chicken also demonstrates how to use leaderboards, achievements, and banner advertisements on iOS and Android. We shipped with support for iAd Network on iOS and AdMob on Android, although there is a new IAdvertisingProvider API in 4.2 that can be used to add new advertising services without modifying the engine.

Leaderboards and achievements are implemented via the online subsystem interface, going to Game Center on iOS and Google Play on Android. The leaderboard and achievement portions of the OSS are exposed to Blueprints right now, and we intend to expose the entire system eventually. I’ll go into more depth on how to add achievements and leaderboards to your games in a future blog post, or you can look at the 4.2 version of the main Blueprint in Tappy Chicken once it is released.

What’s next?

Due to the difference in timeframes, we ended up shipping this release on a branch off of Master instead of 4.2 (all changes have been merged back to Master as of today); most of the changes made it in for 4.2, but a few Android and HTML5 fixes won’t be in the Launcher version until 4.3.

We’ve done testing for this release across a decent range of different devices, but nothing can substitute for having a live game in the wild due to the nature of the diverse hardware and drivers used in Android devices. We plan on addressing compatibility problems, pushing the fixes to GitHub, and releasing updated versions as issues are reported, improving the engine for everyone.

Going forward, we’re going to treat Tappy Chicken as a living product, making updates as necessary to keep it in a ‘ship ready’ state with every release of UE4, eating our own dog food, if you will. If you have any questions or comments, head over to the Unreal Engine forums or join me on Twitter at @joatski.