junkdog / artemis-odb

A continuation of the popular Artemis ECS framework
BSD 2-Clause "Simplified" License
779 stars 112 forks source link

[iOS] Validate all features work on robovm #235

Closed DaanVanYperen closed 9 years ago

DaanVanYperen commented 9 years ago

Lack a mac, so..

RoboVM Requirements A Mac with Mac OS X 10.9 or 10.10. Get Java SE JDK 7 from Oracle. Xcode 6.x from the Mac App Store

Alternatives: http://www.macincloud.com/pricing/compare

junkdog commented 9 years ago

:cookie:

DaanVanYperen commented 9 years ago

basic gdx project works, got quickstart to compile, but debugging is absolute :hankey:

DaanVanYperen commented 9 years ago

Might be room for a invocation strategy that helps debugging on ios ;)

junkdog commented 9 years ago

Not sure this helps, but maybe: https://twitter.com/badlogicgames/status/566704851779080192

Or how does debugging work - do you still get a java-esque view of the world?

DaanVanYperen commented 9 years ago

Tested with:

  1. Mac OS X 10.10 via macincloud.com
  2. IntellIJ IDEA 14
  3. xCode 6.x (for simulator)
  4. Java 8 (couldn't run 7 since shared environment and installed 7 is too old).

gdx-setup.jar + default robovm project -> works fine. So basics are set up correctly.

artemis-gdx-quickstart -> broken. Thing is, quickstart has too many things going on and the debug is non existent. Haven't been able to try robovm eclipse debugger yet.

Good to know:

  1. Console is called terminal.
  2. cd/usr/libexec/ && ./java_home -v 1.8 (set java version).
  3. ./gradlew ios:launchIPhoneSimulator -> should pop up simulator. Might need to chmod +x gradlew
  4. IOS compile is a bit flaky, run again if anything breaks before debugging the issue ;)
  5. Before redeploying, with simulator active, in the top menu bar click IOS Simulator and Reset Content and Settings.. This will prevent a redeployment issue.
  6. Crash logs can be checked in tail -f ~/Library/Logs/CoreSimulator/<ANNOYINGLYLONGSIMDEVICEUUID/system.log. They suck balls.

I think I'll rebuild quickstart from scratch, based on a fresh libgdx-setup, and turn it into a simple artemis-odb feature checklist / benchmarking tool.

Nb. @Junkdog gimme a poke if you want access to the vm.

DaanVanYperen commented 9 years ago

@junkdog this is what the logging looks like.

Feb 14 22:17:35 5-159-229-145 assertiond[16274]: assertion failed: 14C109 12B411: assertiond + 13690 [F3233EFE-D6AB-32E3-BB3E-2CC6D0333C88]: 0x1
Feb 14 22:17:36 5-159-229-145 com.apple.CoreSimulator.SimDevice.6EE273BC-EDCD-4320-94D5-9690CD848282.launchd_sim[16259] (com.apple.imfoundation.IMRemoteURLConnectionAgent): The _DirtyJetsamMemoryLimit key is not available on this platform.
Feb 14 22:17:38 5-159-229-145 IOSLauncher[16448]: assertion failed: 14C109 12B411: libxpc.dylib + 69090 [A854576A-3D30-3BF9-B2EC-B36C4B9E393C]: 0x7d
Feb 14 22:17:38 5-159-229-145 assertiond[16274]: assertion failed: 14C109 12B411: assertiond + 13690 [F3233EFE-D6AB-32E3-BB3E-2CC6D0333C88]: 0x1
Feb 14 22:17:38 5-159-229-145.rdns.melbourne.co.uk SpringBoard[16270]: [MPUSystemMediaControls] Updating supported commands for now playing application.
Feb 14 22:17:38 5-159-229-145.rdns.melbourne.co.uk IOSLauncher[16448]: [debug] IOSApplication: iOS version: 8.1
Feb 14 22:17:38 5-159-229-145.rdns.melbourne.co.uk IOSLauncher[16448]: [debug] IOSApplication: Running in 32-bit mode
Feb 14 22:17:38 5-159-229-145.rdns.melbourne.co.uk IOSLauncher[16448]: [debug] IOSApplication: Unscaled View: Portrait 768x1024
Feb 14 22:17:38 5-159-229-145.rdns.melbourne.co.uk IOSLauncher[16448]: [debug] IOSApplication: View: Portrait 768x1024
Feb 14 22:17:38 5-159-229-145.rdns.melbourne.co.uk IOSLauncher[16448]: [debug] IOSGraphics: 768.0x1024.0, 1.0
Feb 14 22:17:39 5-159-229-145.rdns.melbourne.co.uk IOSLauncher[16448]: [debug] IOSGraphics: Display: ppi=264, density=1.65
Feb 14 22:17:40 5-159-229-145.rdns.melbourne.co.uk IOSLauncher[16448]: [debug] IOSApplication: created
Feb 14 22:17:40 5-159-229-145.rdns.melbourne.co.uk SpringBoard[16270]: BSXPCMessage received error for message: Connection invalid
Feb 14 22:17:40 5-159-229-145 com.apple.CoreSimulator.SimDevice.6EE273BC-EDCD-4320-94D5-9690CD848282.launchd_sim[16259] (UIKitApplication:net.mostlyoriginal.game.IOSLauncher[0x3030][16448]): Service exited with abnormal code: 1
Feb 14 22:17:40 5-159-229-145.rdns.melbourne.co.uk SpringBoard[16270]: Application 'UIKitApplication:net.mostlyoriginal.game.IOSLauncher[0x3030]' exited voluntarily.
Feb 14 22:17:40 5-159-229-145 assertiond[16274]: assertion failed: 14C109 12B411: assertiond + 13690 [F3233EFE-D6AB-32E3-BB3E-2CC6D0333C88]: 0x1
Feb 14 22:17:40 5-159-229-145.rdns.melbourne.co.uk SpringBoard[16270]: Unable to deliver -[UIRemoteApplication showTopMostMiniAlertWithSynchronizationPort:] message to port 0: (ipc/send) invalid destination port
DaanVanYperen commented 9 years ago

iOS picks up on the weaving for pooling, packaging and hotspot optimization. :D Now just need to actually use the features in a demo application. Also need to test factory :p

junkdog commented 9 years ago

:cookie: :tada:

junkdog commented 9 years ago

DId iOS require any special configuration with regards to artemis?

junkdog commented 9 years ago

Another Q: does the pay-as-you-go plan save state indefinitely? Would be interesting to use as a build slave for not so continuous CI.

DaanVanYperen commented 9 years ago

DId iOS require any special configuration with regards to artemis?

Not really. LibGDX Gradle setup uses two tier build process, one is compilation of core classes, which is used by desktop/android/ios builds. weaving and AP:s are part of core stage, robovm precompiles the resulting bytecode into native.

Another Q: does the pay-as-you-go plan save state indefinitely? Would be interesting to use as a build slave for not so continuous CI.

State persists. It comes with everything we need pre-installed. 30 hour credits, lost if you don't use the system for 60 days. It's definitely time shared though. I wouldn't use it for more than the final compile step.

Question is, how can we benchmark Artemis on IOS without actual hardware. We could publish an app with a web submit option? :p

junkdog commented 9 years ago

Question is, how can we benchmark Artemis on IOS without actual hardware. We could publish an app with a web submit option? :p

@zeraien - want to subject your devices to some divine löve?

I'll try to wrap up hallucinolog, add some params for different entity counts + option to run headless (for pure benchmark, to get around vsync or whatever they call it).

edit: pay close attention to our profile pics.

zeraien commented 9 years ago

Of course i'll help out, i got a few ios devices.

He's no jedi. onedaybeard.com

DaanVanYperen commented 9 years ago

mind blown

@junkdog Artemis worked fine, I did have some issues porting my libgdx stuff though ;) Plus still need to test some small things.

junkdog commented 9 years ago

Of course i'll help out, i got a few ios devices.

Cool, we ought to get RE working on iOS too (and commit the final touches). We can dwell on it during lunch tomorrow.

@junkdog Artemis worked fine, I did have some issues porting my libgdx stuff though ;) Plus still need to test some small things.

Anything specfic that one should keep in mind? Did you try running NS2d - or any other game for that matter - in the simulator?

DaanVanYperen commented 9 years ago

Could just have been my old gradle config. As far as I can tell it was asset loading related. the debugging features have been useless. Hence the fresh start with libgdx-quickstart.

DaanVanYperen commented 9 years ago

Nothing to keep in mind specifically. My cheat sheet of comments above should get you started/

You can get a free robovm with 'debugging enabled' while it's in beta. Installed it on the timesharing box but no clue how to actually get anything useful out of it.

DaanVanYperen commented 9 years ago

https://github.com/junkdog/artemis-odb/wiki/iOS All works so far.

junkdog commented 9 years ago

Yay! :cookie: :+1: