performance issue solved yet?

Discussion and feedback on Construct 2

Post » Fri May 29, 2015 5:34 pm

B
6
S
1
Posts: 33
Reputation: 476

Post » Sun May 31, 2015 3:55 am

Welcome to HTML5. If you absolutely want flawless performance on Mobile Devices, no questions asked. Then you should probably learn how to code.

Construct 2 is a impressive program for non-coders and the performance I get with on Mobile devices is actually impressive to me.
Risk Rocket now available on Google Play
Image
B
36
S
15
G
6
Posts: 337
Reputation: 6,300

Post » Sun May 31, 2015 7:07 am

2DGames wrote:http://parthdalal.com/c2performance/


try ejecta with the same example .... ;)
B
46
S
16
G
8
Posts: 794
Reputation: 8,335

Post » Sun May 31, 2015 12:12 pm

I think this is to do with the browser frame scheduling and v-sync. This is already perfect in IE11, which proves HTML5 can be equally good as a native app for that. I think Chrome is working on improving their frame scheduling at the moment and it should be a lot better when the current Canary gets down to stable. This disproportionately affects C2 games since we rely on Chromium as the engine for Chrome, NW.js and Crosswalk, which covers a lot of platforms.
Scirra Founder
B
399
S
236
G
89
Posts: 24,546
Reputation: 195,436

Post » Sun May 31, 2015 4:55 pm

it was a very great problem not so long ago on chrome, but it seems to be fixed "mostly"

vsync will improve in browsers, its also getting more awareness by sites like these

http://www.vsynctester.com/
http://www.testufo.com/browser.html

kudos to them

some thing i also found there is that vsync doesn't work well on second screen or is not reliable
so testing on second screen can also give janky results sometime
ImageImage
B
70
S
21
G
7
Posts: 827
Reputation: 10,052

Post » Tue Jun 02, 2015 12:44 pm

i may just move to unity and learn c# or programming languages needed to build mobile games
B
6
S
1
Posts: 33
Reputation: 476

Post » Tue Jun 02, 2015 2:04 pm

Message: Mabaet can only post plain text URLS until they have 500 rep. 1 URLS modified. Why?
Usman Haq wrote:Welcome to HTML5. If you absolutely want flawless performance on Mobile Devices, no questions asked. Then you should probably learn how to code.

Construct 2 is a impressive program for non-coders and the performance I get with on Mobile devices is actually impressive to me.


I gave C2 a try before, the performance wasn't my issue because I was just trying to make a simple test game.

The thing that I didn't like is how it handles events; the Event System was a big turn off for me, it isn't a DRY solution but a WET one, a real WET mess that's much messier than a WET programming code. That's maybe another reason, why the performance is slow.

I once tried to work my way around this:
scirra . com /forum/how-do-i-create-an-array-for-sprites_p890045?#p890045

Reference of DRY & WET principle: http://en.wikipedia.org/wiki/Don't_repeat_yourself

There's also some important things that C2 is NOT covering in their manuals and I feel like they intend to hide this crucial element.
See this: scirra . com /forum/what-are-all-the-event-conditions-that-uses-fake-triggers_t124875

I have an off-topic question, can someone answer.
Does having the C2 License will force you to have the badge at the side of your avatar that says, "[user] owns a Construct 2 License! Hats off!", or is it something just optional to have when you got your C2 License?

Edit: Fixed URL cuz' of fancy forum rules.
B
7
Posts: 23
Reputation: 321

Post » Tue Jun 02, 2015 8:55 pm

@Mabaet

Yours is a very salient insight; I hadn't heard of WET/DRY before, but I understand the concept perfectly.

IMO, the tendency of most C2 users is to adopt a WET approach by merely copy/pasting events to replicate logic in different contexts. It's a lot faster than modularizing into a function, and it's acceptable for a prototype, but breaks down for projects exceeding a few hundred events.

However, you can often fend off this kind of design with a good use of families and functions. My rule is this: never copy/paste logic if you are using it it more than one place; it will always come back and bite you later on. Turns out this has been codified into a rule of thumb as well:

http://en.wikipedia.org/wiki/Rule_of_th ... ramming%29

One of the places where I still run into trouble, though, is in cases where I want to pick objects of different types in one go. For example: we can't go "pick all objects where X > foo" if some of those objects are sprites, some are spritefonts, some are TiledBG, etc. Even if we just want to pick all sprites where X > foo, we still have to add every sprite in the game to a family, then refer to that.

It would be great to be able to have a pick function that could cross object type lines and pick thru every object that shared the same kind of parameter (X, Y, Opacity, etc).

BTW, that example you link to: what, exactly, is the advantage of such an approach to multiple objects added to a family? The problem I see, in a real world scenario, is that every animation frame for every troop would be loaded with that object, which would take up a lot of unnecessary memory on layouts where you would only be spawning certain types. And...what if you had multiple animations for a given troop?

Here's a version implemented with families; if anything, I think this approach is more elegant, as adding new enemy types only requires adding a couple new actions, and all stats can be set in one go thru the enemies family:

https://www.dropbox.com/s/jychw2ppib7en ... .capx?dl=0
Don't lose your work. Backup your game with Dropbox.
B
44
S
10
G
10
Posts: 1,106
Reputation: 9,202

Post » Wed Jun 03, 2015 12:22 am

Mobiles still stutter, its not resolved due to reliance on Chromium which Google messed up and haven't fully fixed yet.

On PC, it's still the same, we have to use a very old version of NodeWebkit with an old Chromium without this problem. But at least there's that option.

Steam API integration is wonky and that should be the priority to fix.
B
70
S
24
G
19
Posts: 1,757
Reputation: 17,616

Post » Wed Jun 03, 2015 12:55 am

TiAm wrote:IMO, the tendency of most C2 users is to adopt a WET approach by merely copy/pasting events to replicate logic in different contexts. It's a lot faster than modularizing into a function, and it's acceptable for a prototype, but breaks down for projects exceeding a few hundred events.

However, you can often fend off this kind of design with a good use of families and functions. My rule is this: never copy/paste logic if you are using it it more than one place; it will always come back and bite you later on. Turns out this has been codified into a rule of thumb as well:

http://en.wikipedia.org/wiki/Rule_of_th ... ramming%29

One of the places where I still run into trouble, though, is in cases where I want to pick objects of different types in one go. For example: we can't go "pick all objects where X > foo" if some of those objects are sprites, some are spritefonts, some are TiledBG, etc. Even if we just want to pick all sprites where X > foo, we still have to add every sprite in the game to a family, then refer to that.

It would be great to be able to have a pick function that could cross object type lines and pick thru every object that shared the same kind of parameter (X, Y, Opacity, etc).

BTW, that example you link to: what, exactly, is the advantage of such an approach to multiple objects added to a family? The problem I see, in a real world scenario, is that every animation frame for every troop would be loaded with that object, which would take up a lot of unnecessary memory on layouts where you would only be spawning certain types. And...what if you had multiple animations for a given troop?

Here's a version implemented with families; if anything, I think this approach is more elegant, as adding new enemy types only requires adding a couple new actions, and all stats can be set in one go thru the enemies family:

https://www.dropbox.com/s/jychw2ppib7en ... .capx?dl=0


Completely agree with this! However, there are many cases I've run into where copying and pasting events was the only bug-free way to make things happen (else statements, or statements, and for loops all seem to get buggy in sub-events and sub-groups, etc).

So, it's a lose-lose situation where relying on things that *should* work but *don't* is bad, and you also do still get bit by the copy paste method later on. It's hard to isolate individual examples of this though, as our game was already a huge number of events (many types of enemies, different playable characters with different movement types, etc). The general experience is that anything deeper than one layer of subevents breaks.
Construct Classic - Examples Kit Dropbox is a pile of trash and if you need my old files PM me! :)
B
125
S
42
G
17
Posts: 2,230
Reputation: 19,922

Next

Return to Construct 2 General

Who is online

Users browsing this forum: Google [Bot] and 11 guests