OUYA Performance Issues

SueseSuese Posts: 120Member
I was one of the first to receive an OUYA and I've been trying various development environments and graphics techniques to find what performs the best and I'm still stumped.

Adobe AIR + Stage 3D - Crashes OUYA
Adobe AIR w/o Stage 3D - Goes Slow even in GPU mode.
Java + Canvas = Goes really slow (100 circles < 30fps)
Java + Open GL ES = Rotating triangle going slower than 60fps

I'm starting to think there is something wrong with my OUYA. Perhaps there is just some key piece of information I am just missing.

How is everyone else achieving such performance?


TheSuese.com - Elite Developer Backer

Comments

  • DreamwriterDreamwriter Posts: 768Member
    edited January 2013
    I use Unity (which uses Open GL ES and adds interpreted scripts to the mix so my code is in C#), and my 3D project doesn't currently hit 60fps on OUYA but when rendering at 720p I can get it to hit around 45fps.
    Post edited by Dreamwriter on
  • jtn0514jtn0514 Loganville,DCPosts: 142Member
    edited January 2013
    You guys arent alone on this one... Im actually having to rewrite a TON of code to optimize it as im experiencing the same exact issues. Glad im not alone on this one.

    Im using open gl es as well and calling functions to draw walls/floors in 3d world with camera on a 1024x1024 grid and only getting about 45-48 fps as well. I also had a 2d sprite test program with two for loops to create sprites/objects  and i was only able to throw around about 250 moving animated 32x32 sprites at 1080p and 250 non moving non animated sprites (500 sprites total) and still only got about 50 fps... im not sure what the deal is and this is only a BASIC bare bones 2d test program with nothing fancy...
    Im actually kind of dissapointed...  I REALLY dont want to have to lock in a game at 30 fps when i know it can run alot better on the same hardware most likely later on...

    Im hoping that when the system goes live they'll release and update that overclocks the dev units hopefully to the 2ghz range and maybe opens us up to using a bit more of the system ram maybe?

    Im not even currently sure how much of the system ram we can use at the moment. i THOUGHT i heard we were capped at 512 right now...  I could just be crazy though...
    Post edited by jtn0514 on

  • SpoonThumbSpoonThumb Posts: 426Member
    I'm not really a graphics expert and maybe I'm missing off a zero somewhere, but I'm getting around 80 to 110 fps at 1080p with around 4300 poly's using 18 different 512x512 textures plus another 6 textures at 1024x0124 (for the skybox), plus 1 light, no blending, no materials.

    For comparison with other android devices, it does a little worse on the Kindle Fire (about 75 - 100 fps) and about 20-35fps on my ZTE Blade.

    This is all using OpenGL ES 1.1 and Java
  • DelpeeDelpee Posts: 120Member
    I'm not really a graphics expert and maybe I'm missing off a zero somewhere, but I'm getting around 80 to 110 fps at 1080p with around 4300 poly's using 18 different 512x512 textures plus another 6 textures at 1024x0124 (for the skybox), plus 1 light, no blending, no materials.

    For comparison with other android devices, it does a little worse on the Kindle Fire (about 75 - 100 fps) and about 20-35fps on my ZTE Blade.

    This is all using OpenGL ES 1.1 and Java
    Seems about right, especially in comparison to the Kindle and ZTE Blade. 80 to 110 FPS is a lot, but will drop fast when applying additional pixel-shaders etc. I'm curious what a gaussian blur for example does (just to name a shading effect). 
    ~ Yuri van Geffen (Portfolio)
  • PuzzlPuzzl Posts: 98Member
    edited January 2013
    We currently can move around 2000 32*32 animated+alpha+rotation+antialiased+variably scaled sprites at 60fps in 1080p without any problem using OpenGL ES. We use the Nexus 7 as baseline, then put on Ouya, knowing it goes a bit faster.

    [Edit: with same base code in our test, Nexus 7 in 1280*720 hits around 1800 sprites - when OUYA hits around 2300 sprites in 1920*1080 (and fan starts) - so roughly a 25% performance difference].
    Post edited by Puzzl on
  • VicariousEntVicariousEnt Posts: 63Member
    Well that's the real test, if its at least as fast as the same hardware in a phone or tablet then there's no problem with the hardware. Has anyone else ported from equivalent android hardware to OUYA and noticed a performance drop?
  • SueseSuese Posts: 120Member
    I've managed to start pushing the polygons with some Adobe frameworks,  

      Away3D . - Is doing 1000 textured quads @ 60fps @ 1080p
      Starling for 2D.  - Is doing 1000 textured quads @ 60fps @ 1080p 

    No clue what I was doing wrong previously but these 2 frameworks seem to fix my problems.

    TheSuese.com - Elite Developer Backer
  • TristTrist Posts: 71Member
    wow.. I don't even have a dev kit and I can tell that I am going to have to do some major overhaul to get my game to run if what you guys are saying is true
  • SueseSuese Posts: 120Member
    @Trist  I think a big issue here is just because OUYA CAN do 1080p doesn't necessarily mean you want to render your game at that resolution.

    I've found that there are a few minor little tweaks that if not set just right will destroy performance.  The tegra 3 seems to otherwise be going really fast.  Faster than my PC anyway.
    TheSuese.com - Elite Developer Backer
  • TristTrist Posts: 71Member
    @Suese: I wasn't thinking of running my game build on Ouya at 1080 native res. Its quite polygon heavy but low on draw calls, if you consider 200-250 low :(. back to the coffe pot for me ~O)
  • Miniboss1232Miniboss1232 Posts: 45Member
    edited January 2013
    Just remember that the vast majority of Xbox 360 games don't even render at 1080p (only upscaled), and that's a console that's *not* based off of a mobile chipset. Halo 3 renders at 1152x640, for example. Nearly all others render at 720p.
    Post edited by Miniboss1232 on

  • SueseSuese Posts: 120Member
    @trist why is 1080p resolution so important to you?   If you want to make that crisp 1080p impression then you could perhaps make the title screens and menus 1080 and the actual game much lower resolution.   

    As miniboss said,  the Xbox 360 doesn't even render polygon-heavy games in 1080p.  The Xbox 360 is far more powerful than the OUYA,  so if Xbox 360 can't do it don't bet on the OUYA being able to do it.  


    Update: 

    I've finally got some real performance out of the OUYA with Away 3D

    Most of the polygons in my game aren't using textures, so I'm getting a huge performance boost from that choice.  

    Getting my bearings has already lead me to burn-out on project #1,  so I'm going to start a new project somewhere in-between GTA 2 and Stunts (aka. 4D Sports Racing).  It came to me in a dream many years ago (~2001ish),  working title 'Mr Sqube".  Split-screen death-match of coarse.




    TheSuese.com - Elite Developer Backer
  • BalbiBalbi Posts: 198Member
    edited January 2013
    For those of you not paying attention to Draw Calls, now's the time :) Polycount is irrelevant if your draw calls are through the roof and are bottlenecking your GPU. At 1080 I get 180fps with 32 draw calls in my game.
    Post edited by Balbi on
    Lead Developer of Leroux
  • AyrikAyrik Posts: 429Member
    My game is between 20-50 Drawcalls and using Unity's terrain system and I get around 20-30 FPS. Once I use Terrain4Mobile and convert the terrain I'm betting my framerate will boost up to 40-50 FPS.

    Oh, and my polycounts are pretty high for a mobile game, but not extreme (definitely low-poly for PC).

    Really, your biggest concern is not drawcalls or poly counts, but how many animated meshes you have animating on the screen at once, and also how many vertices per mesh need to be transformed each frame.

    I'm about to test my game running at 720p, but I'm pretty sure that resolution doesn't matter a great deal with 3D unless you're using post-processing effects and per-pixel lighting. I'll let you know my findings with my game (no effects or per-pixel goodness).
    Saga Heroes - Adventure RPG
    image image
  • DreamwriterDreamwriter Posts: 768Member
    edited January 2013
    From my experience, 720p vs 1080i makes a big difference, presumably because of pushing all those pixels.  And drawcalls definitely make a big difference.  My game had around 300 draw calls, and at 720p it tended to run between 25 and 30fps (it was far worse at 1080p, but I didn't have my frame-counter hooked up before I dropped to 720p).  I optimized my game down to 50-60 draw calls, and now my game runs at 50-60fps at 720p, 30-35 fps at 1080p.
    Post edited by Dreamwriter on
  • Jack_McslayJack_Mcslay Posts: 100Member
    One thing to keep in mind is that the Tegra T33 is a quad-core processor. Any game that isn't multi-threaded will never utilize the full potential of the ouya.
  • Killa_MaakiKilla_Maaki Posts: 504Member
    edited January 2013
    It's actually funny, the reason Xbox games don't render at full 1080 is not necessarily because of performance, but for a reason that sounds pretty silly in comparison XD
    There's an area of the Xbox graphics unit designed specifically for holding render textures in memory. The issue is that it's actually pretty small in size, and it's actually really quite easy to exceed this size with more than one render target (for example, using a deferred rendering pipeline as most games do these days at the full 1080 resolution is guaranteed to exceed this limit).
    So the entire reason they render at lower than 1080 is just so they can fit their render targets in memory. In fact I believe Call of Duty renders at just 1024x600

    However, I think it does serve to highlight that games running at say 720p aren't going to get bad reviews (especially if it means you can squeeze more out of the graphics, you'll make players happier)
    Post edited by Killa_Maaki on
    You didn't remember the plot of the Doctor Who movie because there was none; Just a bunch of plot holes strung together.
  • AyrikAyrik Posts: 429Member
    Yeah, virtually no consumer will even notice. And the ones that do won't really care that much, I think.

    And btw, switching to 720p seemed to have smoothed out the framerate for my game, so I think I'm going to keep it that way. It will also lower the memory footprint of the UI significantly, which will be nice.
    Saga Heroes - Adventure RPG
    image image
  • VAMflaxVAMflax Posts: 44Member
    My game is killed by constant garbage collection. Pretty much every frame. Doesn't happen when I run on Nexus 7 or Galaxy S2. I'm building my game using Unity 4.

    It's not my game as such. If I build the example ODK scenes it happens on those too.

    Requires more investigation, but too busy writing the game for existing platforms at the moment.
  • mjoynermjoyner Posts: 168Member
    I read somewhere that it maybe related to the way Unity is receiving input events by the use of boxed primitives and json objects. Scan the Unity forums for the topic.
Sign In or Register to comment.