Could anyone give an objective report on the effectiveness of the construct 2 iphone exporters like cocoon and phone gap? I'm getting a laggy 20-30fps sometimes stuttering on a dropbox test and want to know if i should go ahead with this project. Does cocoonJS really "publish games to native-like performance"? Also my project is very simple at the moment, I have very few objects. How well would a moderately complicated twin-stick shooter perform? Thanks.

You may check this youtube video of my game exported on an android device with cocoonjs.It's still in development and there's room for more optimization but even without it I'm really satisfied with the performance results.The device is a samsung galaxy S advance, a middle range phone not even close to performance monsters like galaxy II, galaxy III, the nexus series and, talking about iOS, iPhone4s, iPhone5 and the new iPad.

I'm aiming for release on both PC and Android for my current project (with iOS shortly behind), so I've been keeping an eye on mobile performance as I go along. Not religiously optimising yet, but just making sure that performance stays good. At the moment my game is visually quite simple but is already over 100 events, and I've got a pretty steady frame-rate of 62 on my GS3. I'll obviously test on a wide range of devices when I get into alpha and beta.

Two things that I've noticed that cause significant performance drops: 1) a very short but noticeable FPS drop occurs when loading large-ish images during gameplay (i.e.: spawning sprites that I've had "parked" in other layouts), and 2) using any particle effects with sprites that use varying opacity or spawning at a rate of more than 10-20 instances per second.

So all I've really had to deal with is the creation of replacement visuals for those particle effects. Sure, looking at current high-end 3D mobile games you'd think a few particles wouldn't be a big deal, but this is still early days for me learning how to optimise for the platform and I plan to get the most out of it while keeping the FPS at least above 30.

[QUOTE=GeometriX] At the moment my game is visually quite simple but is already over 100 events, and I've got a pretty steady frame-rate of 62 on my GS3. I'll obviously test on a wide range of devices when I get into alpha and beta. [/QUOTE]

I noticed that cocoonjs is very "linear" about performance. There's a benchmark for mobile devices called passmark and here's a list of devices and their score. Previously i had a Galaxy ACE (overall score: 569) and i was getting around 18 FPS with cocoonjs. Now I have a Samsung galaxy S advance (this is the commercial name for the i9070 here in italy, overall score 1286) and i'm getting 38 FPS. It's only an empirical way to guess how the game will react on all those different devices, but if you make sure that your game works good on a "1000 point" device you'll be sure that your game will support every future android device. (Even low end phones in the next year will reach this level)

[QUOTE=GeometriX] Two things that I've noticed that cause significant performance drops: 1) a very short but noticeable FPS drop occurs when loading large-ish images during gameplay (i.e.: spawning sprites that I've had "parked" in other layouts), and 2) using any particle effects with sprites that use varying opacity or spawning at a rate of more than 10-20 instances per second.[/QUOTE]

1) True. But this seems to be related to a render problem because it happens also with elements not created at runtime. I have a similar problem with large tiledbackgrounds composed by little tiles outside the visible area. In games with scrolling when you're approaching a large sprite or tiledbackground there's a noticeable drop just before the element is drawed on the screen.

[QUOTE=GeometriX]So all I've really had to deal with is the creation of replacement visuals for those particle effects. Sure, looking at current high-end 3D mobile games you'd think a few particles wouldn't be a big deal, but this is still early days for me learning how to optimise for the platform and I plan to get the most out of it while keeping the FPS at least above 30.[/QUOTE]

I suggest you to include in your game a detail level option and every eyecandy in a family ready to be destroyed at the start of layout when the option is set to low. If you have some visual effects with objects created at runtime (and you'll likely have them in your game) put all the events in groups ready to be disabled.This could be a good approach to make a visual appealing game on desktops without sacrificing smoothness on mobile.Knifegrinder2012-12-29 13:31:34

[QUOTE=Knifegrinder]I suggest you to include in your game a detail level option and every eyecandy in a family ready to be destroyed at the start of layout when the option is set to low. If you have some visual effects with objects created at runtime (and you'll likely have them in your game) put all the events in groups ready to be disabled.This could be a good approach to make a visual appealing game on desktops without sacrificing smoothness on mobile.[/QUOTE]Thanks, that's a good idea. I'm currently killing all particles if mobile is detected, but as I push for that balance between visual fidelity and playability later in development, that'll be an easy way to accommodate for low-spec mobile devices. If I have enough devices for testing then I might even be able to set three levels of visual effects that the user can toggle between.

[QUOTE=GeometriX]Two things that I've noticed that cause significant performance drops: 1) a very short but noticeable FPS drop occurs when loading large-ish images during gameplay (i.e.: spawning sprites that I've had "parked" in other layouts)[/QUOTE]

This is probably cocoonjs's method of memory management automatically loading and unloading textures that are not currently on screen.

[QUOTE=Knifegrinder] You may check this youtube video of my game exported on an android device with cocoonjs.It's still in development and there's room for more optimization but even without it I'm really satisfied with the performance results.The device is a samsung galaxy S advance, a middle range phone not even close to performance monsters like galaxy II, galaxy III, the nexus series and, talking about iOS, iPhone4s, iPhone5 and the new iPad.[/QUOTE]

Seem's to run fairly well, and my game which isn't close to completion is running 20fps on any ios device that wasn't mentioned above yet getting 60fps on an iphone5. So I don't think I will have issues with users of newer devices, but I don't want to just exclude older devices, which really aren't that old. Did your game utilize sound effects or music? I feel those are necesserary to a complete game, but from what I've learned so far you are unable to use more than one, yes one, audio clip unless you are on the newer ios devices. Is there a workaround or something to this?

[QUOTE=GeometriX] I'm aiming for release on both PC and Android for my current project (with iOS shortly behind), so I've been keeping an eye on mobile performance as I go along. Not religiously optimising yet, but just making sure that performance stays good. At the moment my game is visually quite simple but is already over 100 events, and I've got a pretty steady frame-rate of 62 on my GS3. I'll obviously test on a wide range of devices when I get into alpha and beta.[/QUOTE]

I've built about 42 events and I've only accomplished about a quarter of the controls. I could probably cut it down by 15 once I remove the mouse/keyboard controls but still... I feel it would only be related to the constant events or ones in action than all of them...

[QUOTE=Draspur] Seem's to run fairly well, and my game which isn't close to completion is running 20fps on any ios device that wasn't mentioned above yet getting 60fps on an iphone5. So I don't think I will have issues with users of newer devices, but I don't want to just exclude older devices, which really aren't that old. Did your game utilize sound effects or music? I feel those are necesserary to a complete game, but from what I've learned so far you are unable to use more than one, yes one, audio clip unless you are on the newer ios devices. Is there a workaround or something to this?[/QUOTE]

If you use CocoonJS you can have multichannel sound without workarounds or tricks.

[QUOTE=Draspur] I've built about 42 events and I've only accomplished about a quarter of the controls. I could probably cut it down by 15 once I remove the mouse/keyboard controls but still... I feel it would only be related to the constant events or ones in action than all of them...[/QUOTE]

The game you've seen has currently 800+ events... so don't worry about events number. Performance is not related to the number of events you use in your game. It's more related to how do you use those events. Avoid unnecessary collision checkings and loops running every tick and your game should run fine.