Free to


I was a bit anti-Ouya in the run up its release – what I saw as its stance of championing “Free to Play” made me uncomfortable. Then, at some point before its release, they stopped using the term “Free to Play” and started using the term “Free to Try” – a concept I’m entirely cool with. That was enough to turn me from anti-Ouya to Ouya-neutral – it took getting my hands on one for 10 minutes to make me pro-Ouya. This thing is awesome.

For fun, I ported a bunch of my old flash games to it! Here’s the complete list:

Memrrtiks, Suashem
Don’t Look Back
Oiche Mhaith
American Dream
Hero’s Adventure
Bullet Time

I’m pretty sure I’ll be porting VVVVVV and Super Hexagon to it too, when I have time to get around to them. Probably soon! Ish!

(p.s. If you’re a flash developer looking to port stuff of your own, you might find this joypad class I made useful (with modifications by Hulk Handsome). It requires the AIR 3.8 beta, and the SWC from this adobe tutorial.)


30 Comments so far

  1. aA on July 2nd, 2013

    Oh Excellent! Im an Actionscript dev and I was looking to do some OUYA Tinkering this weekend. That Joypad class will come in handy! Thanks.

  2. sean hogan on July 2nd, 2013

    oh my god thank you terry. i spent today and yesterday hacking together getting the ouya thing to work (it seems it doesn’t play nice with air 3.7, or I messed something up)

  3. Varun Ramesh on July 3rd, 2013

    Have you noticed any input lag on the controllers? I’ve heard such mixed reports about this. That’s probably the last reservation I have for buying an Ouya.

  4. SD on July 3rd, 2013

    Oh yes, please, Terry!

    I’d love to have those two amazing titles on my OUYA, although I already own them several times over because of Humble Bundles.


  5. Frode Bang on July 3rd, 2013

    American Dream made me feel like Patrick Bateman.

  6. brandorf on July 3rd, 2013

    This is exactly what I was hoping for when I started seeing your other games show up on the ouya store.

    I’m super excited for it.

  7. A on July 5th, 2013

    Nice selection of games, but where is ‘Win Rules’?

  8. A on July 5th, 2013

    ‘Win Conditions’, rather. Would have looked more effective if I’d got the bloody name right.

  9. st33d on July 5th, 2013

    Excellent job on the joypad research. Just saved a load of devs hours of fannying around with event codes.

  10. djxr on July 6th, 2013

    Just came to say thanks after I noticed that many of my favorite games on the OUYA were created by you.

    PS. So far all the games of yours that I’ve tried work with an xbox360 wired joypad, which is essential as my OUYA joypad won’t pair, so a million thanks for that.

  11. Jakers on July 6th, 2013

    Just want to add my voice to the other thank-yous. We had a party yesterday and the two biggest crowd-pleasers (aside from the booze and the BBQ) were “American Dream” and “Organ Trail”. I can’t wait for your next game.

    -Jakers in LA

  12. Jay on July 6th, 2013

    If my Kickstarter Ouya ever arrives, I’d love to play VVVVVV on it!

  13. Antal on July 7th, 2013

    I’ve just played OΓ­che mhaith…
    Go raibh maith agat!

  14. Ivan on July 9th, 2013

    Terry – you are the master of gaming’ arthouse!

  15. navarro on July 10th, 2013

    Looking forward to play Super Hexagon on a 40″ screen! I bought the game already on Play store, Humble Bundle but would gladly pay again to see it in the OUYA, this game is so awesome! (hope I got the nerves to ever complete it…)

  16. Leebo on July 19th, 2013

    I’m getting an error when I try to use the joypad class.

    C:\Users\Leebo\Desktop\Flash\Platformer\src\ col: 68 Error: Access of possibly undefined property id through a reference with static type flash.ui:GameInputControl.

    This is the same for everything that references the “id” property of the “control” variable.

    I’m a relative newb with AS3 so maybe I’m just doing something stupid?

  17. Terry on July 19th, 2013

    Yeah, that’s just the SWC from the adobe tutorial thing. Download the example from that page, then include the SWC with the project in flashdevelop. GameInputControl is part of that.

  18. Leebo on July 19th, 2013

    Thanks for the super quick response.

    I thought I had done that, but I’ll double check.

  19. Leebo on July 20th, 2013

    Hmm… yeah, it’s included

    I went through to make sure I had the newest flash player and Air 3.8 beta as well.

    It’s not the end of the world if I can’t get it to work.

  20. Terry on July 20th, 2013

    Oh, weird :/ Sorry!

  21. Leebo on July 20th, 2013

    When I type “control.” to see the list of properties, it lists “device” but none of the other properties listed here

    Is that really something the GameInputControlName swc is handling?

  22. Terry on July 20th, 2013


    Try manually setting the swf-version – add the following to the compiler options, see if it fixes it?

    Project –> Properties –> Compiler Options –> Additional Compiler Options –> -swf-version=20

  23. Leebo on July 20th, 2013

    It’s working now!

    I did so many things that I’m not sure exactly which one was the one that worked.

    Thanks so much =)

  24. Robbert Prins on September 16th, 2013

    Thanks for this great example class. I was experimenting with the GameInput API but could not yet get it to work. I read somewhere one of the tricks is to create the gameinput object at the very start (first frame) of the program, which you also suggest. It worked straight away! Now it’s just a simple matter of building a game around the controls. πŸ˜‰

  25. George on October 10th, 2013

    Hi Terry, I know you’re a very busy man, but I was just wondering if you could quickly take a look at what I’ve done here as I can’t seem to get the controller to work!

    1. I added the specified SWC
    2. I added the joypad class
    3. I added joypad.init(stage); to my init function in my
    4. I’ve been using the class like this in my code (this is in a level class):

    oneLeft = joypad.DPAD_LEFT || joypad.STICK_LEFT;

    …ETC. for other directions and players
    if (oneLeft && player1.xVelocity >= -player1.maxSpeed)
    player1.xVelocity -= FP.elapsed * player1.accelerationSpeed;

    …ETC. for other directions and players.

    Nothing registers at all now, while previously the controller HALF worked when I still had arrow key movement left in.

    If you have no idea or are too busy to help, that’s fine!

  26. George on October 10th, 2013

    Never mind! I found the problem. I moved joypad.init(stage); from the init function to the main function. Now everything is dandy. Thanks!

  27. Terry on October 10th, 2013

    No worries, glad you figured it out!

    (Just FYI, the joypad class already has functions to check both the dpad and the analogue stick together – joypad.pressup() should work (ditto for the other directions).)

  28. Hulk Handsome on October 29th, 2013

    Here’s a modification of the joypad class which adds support for the right joystick:

  29. Terry on October 30th, 2013

    Cheers, updated the link! πŸ™‚

  30. Niavlys on April 28th, 2014

    I’m a bit late, but I’m glad that you changed your mind, and that I may have influenced this decision πŸ™‚ I may look into buying an Ouya, especially if VVVVVV and Super Hexagon run on it.

Leave a reply