domingo, 21 de julio de 2013

How to Learn Ouya Gamedev

The next generation of game consoles is here. This time around, nipping at the heels of the giants (Sony, Microsoft and Nintendo) are the microconsoles: less powerful, cheaper, and more welcoming to indie game developers. The superstar of this new family of game consoles is the Ouya.

In this How to Learn guide, we'll introduce you to the Ouya platform and its capabilities, share links to resources, and present a few suggestions to get you started developing games with it.


OUYA

What is an Ouya?

The Ouya is a tiny (Rubik's cube sized) game console that is the result of a record-breaking successful Kickstarter campaign. Although it runs on Android, it is designed to be played on your TV, as you sit on the couch with a controller in your hand.

It boasts a proper 3D hardware-accelerated graphics processor and HD video suitable for your big-screen TV, but isn't nearly as powerful as this year's next-gen game consoles. It is about as powerful as a high end tablet. It costs about $100, and every unit comes with an SDK (Software Development Kit). This machine begs to be played with – not just by gamers, but by game developers. Ouya Console and Controller

Instead of trying to compete on raw horsepower and photorealistic 3D graphics, the appeal of the Ouya is its low price, simplicity of design, and modern consumer culture: it embraces freeware and freemium games, allowing a shareware-like demo experience or free games that include modern IAP (in-app-payments). This means that every single game on the Ouya will be playable for free.


What Makes Ouya So Awesome?

Promising an open app store that allows self-published indies to make games without needing a publisher, expensive debug hardware or extensive certification review process, the Ouya has huge appeal to programmers and entrepreneurs. There's opportunity there, and few barriers to entry. Ouya_Menu_600px

Easy to Develop For

From a gamedev's perspective, the Ouya is attractive for several reasons. Many devs are already familiar with Android game development, which means that the engines, codebases and knowledge they've accumulated over the last couple years will let them hit the ground running. You won't need to start at square one or climb up an unfamiliar learning curve. Porting existing mobile and web games to the Ouya will be easier. You can probably continue to use the tools you're familiar with. Development will be fast and cheap.

Easy Publishing

From a business perspective, the appeal is less certain. On one hand, the formerly "blue ocean" store ecosystems of iOS and Android have become "red ocean" (meaning: highly competitive with only a small percentage of developers generating a huge percentage of the total profits). Conversely, the Ouya represents a "big fish in a small pond" opportunity where there is very little competition.

For example, as of launch day, fewer than 1000 games have been released. This means that any gamedev who publishes a game now will get to reap the rewards of being an early adopter during the "goldrush" phase. It will be easier to get in the spotlight because gamers will have fewer games to choose from. High discoverability coupled with little competition is a huge advantage.

Pros and Cons

On the other hand, the demand for games by consumers has not yet been proven. Will people buy enough units for there to be a healthy economy? Though the Kickstarter was a resounding success and thousands have pre-ordered units, are they all just gamedevs? It remains to be seen whether or not Ouya game sales numbers will be high enough to make targeting it for your next game a sure thing.

That said, nothing's a sure thing, and for many small-time, one-person, garage indie gamedevs, the Ouya may be the only living room game console they are able to compile games for. Ouya Developer Console

At the very least, the Ouya represents a paradigm shift in the console game business. The opening of the walled garden. The democratization of gamedev. It embraces the indie movement and allows for self publishing. It might be the perfect venue for indie game developers looking to expand their reach beyond a shrinking or well-established market such as game portals and mobile app stores.


What's Under the Hood?

The Ouya has enough horsepower to render complex 3D worlds filled with next-gen shaders and high-poly characters, but it isn't able to pump out mega-textures, billion poly scenes, or use massively parallel processing of physics and animation as seen on the next-gen PS4 and Xbox One.

For pure processing power, the Ouya isn't any nearly as fast as a top of the line desktop PC. It boasts the elegantly designed quad-core nVidia Tegra 3 T33-P-A3 CPU. Each of the four ARM Cortex-A9 MPCore (ARMv7-A architecture) CPU cores runs at 1.6GHz, which is roughly the same speed as a high end tablet. It can hardware decode video and audio streams in most common formats such as H.264, MPEG-2 and 4, DivX 4/5, XviD HT, H.263, Theora, VP8, WMV, Sorenson Spark, Real Video, and VP6.

In terms of graphics power, the 12 cores of the nVidia GeForce ULP run at 520 MHz and are capable of calculating 12.48 GFLOPS. It is up to the task of delivering good graphics but won't be anything to write home about. It supports 1080p and 720p over HDMI.

This is great news for Android gamedevs tired of supporting a dozen different pixel densities and screen sizes. Make your game support the two major HD resolutions and you're good to go.

Internally, there is a mere 1GB if DDR3-1600 SDRAM, which means you'll have to be careful not to require too much memory when your game is running. There's also only 8GB of flash storage space, though you can plug in an external USB drive. The console also includes an ethernet port for connecting to a wired internet, 802.11 b/g/n Wi-Fi for wireless connectivity, Bluetooth, an HDMI port, a full USB port, and a Micro-USB connection, and support for 5.1 sound. Ouya Buttons

The controller, which has undergone several redesigns, is a typical gamepad with dual analogue sticks, a directional pad, and four face buttons. Just for fun, they are labeled O, U, Y and A. There are also the expected pairs of back bumpers and triggers. The most interesting part about the controller is that it also includes a touchpad in the center of the controller (which can only accept a single finger's input). This will make for all sorts of interesting new interactions.

One of the most fun aspects of the Ouya hardware is that you are welcome to tinker with the internals. Both the console and controller are sealed with standard phillips screws and the entire system is designed to be easy to take apart. The firmware and OS are also open to hacking – you can freely root your device, install a custom Android ROM, or even go so far as to use it for your own DIY projects like robotics.

What About Rendering Performance?

The $99 Ouya, which costs a fraction of what modern Android tablets cost, performs roughly as well as the best devices from 2012. This means that although there is enough GPU horsepower to drive some very impressive graphics, you can't expect to call this a beast of a gaming rig able push infinite polies in 1080p.

To put it explicitly, you can compare 3DMark benchmark performance numbers: the Ouya scores 4077, which puts it ahead of Google's Nexus 7, which scored a 3551, and slightly behind Samsung's Galaxy S III, which scored a 5,076. Some high end thousand-dollar tablets of today are scoring above 10,000.

It is interesting to note, however, that the Ouya team plan to develop a yearly version of the Ouya with newer hardware in each iteration to keep pace with current technology.


Getting Your Game on Ouya

Game submissions are a relatively painless process. The most important rule you'll need to follow is that every game must have a free component. This could mean pure freeware, shareware-style games with free demos, or freemium games with IAP.

The Ouya does not include Google Play or the Amazon Appstore; although it's running Android 4.1, all games will be true Ouya games (with support for the controller). You can't run other Android apps made for tablets or phones – and for good reason: these games would typically require a touchscreen device. Though the Ouya's controller will allow touch input in the small space between the directional pad and the face buttons, it won't have the same precision as a large touch-enabled tablet.

To port an existing Android game to Ouya, or to create one from scratch in the hopes of making it into the Ouya store, all you'll need to do is incorporate Ouya's payment API, support the Ouya controller, and send it to Ouya for review. All game purchases are done via in-app purchasing. Devs get 70%, Ouya gets 30%. All players need a debit or credit card hooked up to their account, even to download free games.

The size of the initial game's download (the .apk file) should be 750MB or less. If a game requires additional files or assets, they should be delivered via your own servers.

You need three or more JPG screenshots, 1280×720 or better, for submission. Apps have to be signed before submitting. There is a signing key (key.der) that the OUYA developer console gives you to sign in-app purchases.

The review process is extremely simple and streamlined. Most games are approved by staff within hours, not days. The only thing they are looking out for is copyright infringement, non-games or adult materials. This isn't an Apple-style walled garden with curated content: almost anything goes. Good or bad, if your game "works" and isn't illegal in some way you will most likely be approved.

There are a few common-sense rules that dictate what you can and cannot publish on the store. Things that are not allowed include:

  • Hate speech
  • Real-world violence
  • Sexually explicit content
  • Misrepresentation (of your game or yourself)
  • Intellectual property infringement
  • Dangerous products: malware, etc.
  • Illegal activities
  • Misuse of the OUYA trademark
  • Real-money gambling

Because this open approach will allow lower quality titles into the ecosystem, all new games will go into what is called "the Sandbox". Once gamers give your title enough "thumbs up", or it has had enough game plays or total time played, it will move up the ranks and will be given the spotlight it deserves.


Developing for Ouya

The great news is that the ouya is running Android. This means that hundreds of game engines, IDEs and SDKs will work unmodified. You are free to choose your tool of choice. If it can compile to an APK (and provided you're able to use the JNI interface to incorporate the Ouya payment and controller APIs) then you can most likely use it.

This means that you should be able to use Corona, Game Maker, MonoGame, Unity, and many others. Plugins for many other popular tools (such as Phonegap and CocoonJS for HTML5 gamedev) are in the works and support for Ouya has been announced for dozens of game engines to date.

The Ouya dev team has prepared code, examples and documentation for the most popular tools:

Many other game engines support Ouya but aren't part of the ODK. For example:

  • LibGDX – a wonderful open source cross-platfrom (Desktop, Android, iOS, WebGL) Java 2D/3D game development framework
  • CocoonJS – a native code (openGL ES) wrapper for HTML5 canvas/webGL – faster than a standard webview

If you don't know what engine to use, start with Unity. It is going to be the most supported, most up-to-date, and most popular tool with the biggest community. That said, whether you port your home-brew game engine, use something open source, or write it from scratch using Sublime Text, Eclipse, or Notepad++, if you can get it working on other Android devices you should be able to get your game running on the Ouya.

What About HTML5?

Because you can turn HTML5 (javascript/canvas) games into an Android .APK using such tools as Phonegap, Appcelerator, or cocoonJS, a plethora of HTML5 game engines will soon be running on the console as well, such as ImpactJS, Construct2, createJS, as well as bigger (Turbulenz) and smaller (JAWSJS) engines aplenty.

Some of these HTML5 engines have not yet been tested extensively on the Ouya – expect growing pains and poor performance for the next few months until the tech matures.

Potential Gotchas

Though you can develop in any language you like, most of the ODK source code is in Java, and even in the case of engines that generate the code for you, the Ouya development kit will be interfacing using JNI (Java Native Interface) and will make use of the Android SDK. You will probably have to write some Java "glue code" even if you code the majority of the game in C++ or C#.

At launch there will be no built-in Achievements, Friend List, or Leaderboard support, but this is expected to be implemented in the near future.

Remember to allow for controller "dead zones" for the analogue sticks. You need to ignore values near 0 so that your game's protagonist doesn't slowly drift in any direction when the joysticks are released (because they may still register a small directional value). Here's a great tutorial on doing thumbstick dead zones right.

Make it really obvious which menu item is selected – some launch games don't highlight buttons obviously enough, perhaps because tablet and phone versions are held only a few inches away from your eyes. Couch gaming on TV requires much bigger font sizes and high contrast by comparison. Font sizes suitable for reading from ten feet away on a TV will look insanely big on your PC's monitor.

Remember to allow selection with the directional pad and left-analog stick, not just the touchpad. Along those lines, it is also important to use Ouya-specific button names and images rather than those that come on stock Android devices. You can download a zip file containing button images for use in your games. ouya-button-icons

Making a game that is suited for TV presents additional challenges, some of which are not often a factor in regular Android tablet or phone development. For instance, you should avoid putting any text or GUI against the screen edges, which will feel totally strange for PC and tablet devs, where it is natural to dock scores and health bars all the way on the top and dialog choices or captions all the way at the bottom of the screen.

This is important because it is common for televisions to cut off the edges of the display. This is sometimes called "overscan". This means that when designing your user interfaces you should allow for a 10% to 20% buffer around the edges of the screen. This buffer is often called the "safe zone" and it has already caused trouble for some beginner Ouya devs.


Developer Resources

There are many fan sites and consumer-facing blogs and Twitter accounts worth checking out from time to time, but the primary focus of this article is making games. The most useful of the links below will require you to sign up for a dev account at Ouya, where you will gain access to the SDK, documentation, and developer forums.

These links are where you'll find the most thorough and up-to-date information.

Ouya on Github

The Ouya team has open-sourced the majority of the console's software, including the many SDK example projects, the Linux kernel, image and downloading library, the Unity plugin, and much more. Be sure to check back from time to time to see what other source code goodies become available.

Ouya on the Web

Though some of these links are consumer (gamer) facing, devs can also benefit from keeping track of the latest Ouya news, updates, and game releases on all the social networks. in particular, the ouya Developer Forums are an essential weapon in your arsenal.

Unofficial Forums and Content

There is at least one big player in the Ouya community well worth checking out – the Ouya (Fan) Forums. It was created before the Ouya team had set up their own discussion forums and has a wider range of topics that go beyond gamedev.


Dive In and Start Learning!

The opportunities for indie gamedevs who wish to target the Ouya platform are promising. The cost makes it a small risk, and because it runs on Android you may already be familiar with the tools required to get your game running. The store is wide open. The tools are free. The early adopter goldrush phase is set to begin. What do you have to lose? Give Ouya gamedev a try. You just might love it.

This article merely scratches the surface. It is meant to give you a head start in your Ouya gamedev experiments by pointing you to some of the resources available. As a living article published on the day it launched, we plan to add new links and information in the future.

If you know of any Ouya tutorials, devblogs, podcasts, videos or documentation that might be of use specifically to game developers, please let me know in the comments so I can add them to the article.

No hay comentarios:

Publicar un comentario