[Dec 2, 2012] OUYA discussion / SDK review (IRC)

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
The OUYA SDK (or ODK) is being released this Saturday December 1st, ahead some of when the first developer edition consoles are going out (of which I should be getting one) sometime in December.

We've been sort of stepping around the topic of providing an Android-wrapped version of Terasology with a couple interested parties in the past showing an interest in helping out but not quite making it to the code level. I've got two RL contacts that are also interested and have tried to tag them both in the same weekend sometime and it looks like this upcoming weekend works, which is fine timing considering the SDK release.

The OUYA dev portal is also going live, whatever that is meant to be :)

We'll review and talk for an hour or two on IRC and try to put a plan together for what we'd need to have for Terasology to work first on Android (for smartphones / tablets, so different user input) then also with the added features on the OUYA itself (mainly the game controller so again different user input). Hopefully we'll also wind up with a committed developer or two :D

This will be 4 pm EST Sunday, which should be 10 pm in Germany for anybody interested
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Cervator ... do you have a copy of this IRC ... I would love to read through it if you have one :coffee:
Well, it hasn't happened yet, but when it does then yes, we'll keep a log and post it here :D
 

metouto

Active Member
Contributor
Art
Sorry Cervator, I read that "we've" and you put "we'll" :rolleyes: I really do have to get back to the eye doc :geek: but I would still like to see a copy after it is over :coffee: thanks
 

Immortius

Lead Software Architect
Contributor
Architecture
GUI
Cursory examination would suggest that it is a huge bit of work to port Terasology to Android. Android supports neither reflection nor bytecode manip, nor jars in general, lwjgl doesn't work on Android from what I can tell, and so forth. So besides rendering and sound not working, the core package/mod system and the event system won't work either.

This isn't unsolvable. Replacing the rendering system with an alternative one that uses Android's built in OpenGL, writing some tools to generate code for what we're doing with reflection at compile time, hardcoding in mods, there are solutions to these problems. But it is a lot of work.

I won't be available for that meeting, but happy to discuss stuff after that.
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Thanks for the info, Immortius, even if it isn't the happiest news - feared something like that
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Hunted down some related links I wanted to drop in here:

  • libgdx - a framework around LWJGL that supports Android. Not sure how different it is from LWJGL itself or how much work it would be to "upgrade" or if we'd lose anything. Before I thought it was a complete alternative, here's for hoping it being built on top of LWJGL means they're quite similar :)
  • Reflection - found this in a Java/Android tutorial, seems like that would mean reflection support on Android, but maybe not the exact magic we use - Immortius ?
  • ASM & ASMDEX - for bytecode manipulation. Going to guess this is one of those "lot of work" alternatives rather than a magic solution ;) I'm also guessing this relates to our use of annotations, and thus the event system?
  • Android UI guide - be interesting to see how we'd deal with the UI differences. Abstract a layer above desktop vs Android implementations and keep the layout closely the same (might work on the OUYA since it goes on a big TV screen, but not so much on smaller phones) or design a completely different and likely less flexible version specific for the Android version?
  • IntelliJ + Android + libgdx - a tutorial for setting up IntelliJ to work with Android and specifically libgdx. Might be an idea to try this during the meeting for those interested in playing with it
  • I would've put a link here to the OUYA SDK / portal info I thought was launching Dec 1st (but I only linked to their blog not a specific reference, doh) - instead there's just confirmation that the actual dev consoles will ship at the end of December. Maybe I misunderstood the early release of the SDK/portal to happen before the early release of the console (for previewing), alas :)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
So I was rather short on key people for today, although I did finally get a hold of one coworker via IM - so not much of an IRC log to report ;)

I got him started on setting up for development, but expect getting from there to having an idea of what we need to do to Androidize Terasology will take a little bit.

In the meantime I went through the IntelliJ + Android + libgdx tutorial above (use the screenshot version! Quick reference makes lots of assumptions and misses an item or two). I like it. Call me an optimist (YARLY) but I think the setup it uses looks pretty good and I got it working pretty easily. Helps point out a thing or two about IntelliJ project setup too if you're not super familiar with it.

It appropriately reminds me of the suggestion that Immortius just made to make our mods compile more properly by making everything a dependency of a central starter project/module/run config. They've got a Main module like that plus Desktop + Android modules for the specific stuff with appropriate module dependencies.

Each lives in its own subdir under the project root. Could then probably also have an Applet starter; if OUYA has some minor differences (probably) then it could have its own as well, etc. They even have iOS support in the works (O RLY?) using Mono, but as expected that is so hacky and limited you might be better off just porting the whole dang thing ;)

I'm sure we'd hit some snags with some of our fanciness but you can see LWJGL all over the place on the desktop side so maybe it really isn't that much of a stretch, even if still likely a fair amount of work. I'm excited about it and would love nothing more than to just go nuts on it myself - if I didn't have about a hundred other things like that already :p

I'll badger my co-workers some more, but suspect neither of them have a lot of 3D wizardry background. Still, anybody like that with an interest in Android could certainly set up a limited prototype to play with libgdx on an actual Android device, comparing it with our project or even trying a refactor to see how intense it is likely to be. Any takers? :D

My hope is as audacious as ever - that we'll be able to be a launch title for the OUYA release in March (or later maybe? They're mostly on track so far, but still) even with a highly limited feature set (probably still pre-alpha, or alpha/beta for a limited single player game mode?). And the Oculus Rift sometime too, that begla is getting (apparently about three months late). Yes, I am a nut :derp:

I suspect we're on the verge of a content explosion - especially with crafting, combat, terrain gen, and creature spawning hovering so very close to integration / enhancing. We might just be able to pull it off ;)
 

Cervator

Org Co-Founder & Project Lead
Contributor
Design
Logistics
SpecOps
Short addendum: If we want to maximize the potential target audience on Android we may want to support Gingerbread at API level 10, which still appears to be on half the Android devices out there as per the linked research. That's a two year old 2.3.x release. Alternatively it might be that users are finally beginning to upgrade after two year plans come out of contract, in which case Ice Cream Sandwich might be the next big target that'll last a while.

I'm tempted to try seeing how the codebase would look in a libgdx style setup plus mods in separate GitHub repos (for mod release management/packaging) all tied together in one IntelliJ project. Will sketch that out in a throwaway repo at some point if I can find the time :)
 
Top