Replies: 8 comments
-
|
I didn't really had the time to check the forum since yesterday since I was travelling, but this seems to be a good idea ! Not sure though however about the automatic feature, as both putting them to sleep or awake automatically would effectively could be quite CPU consuming . |
Beta Was this translation helpful? Give feedback.
-
|
@parasyte though it's not really related, I also wanted to look at replacing the current object array by a hash table (using the object GUID for key), as it should improve performances as well when parsing and accessing the object pool/list |
Beta Was this translation helpful? Give feedback.
-
|
Improvements when doing lookup : http://jsperf.com/indexof-vs-array-hash |
Beta Was this translation helpful? Give feedback.
-
|
I had the same idea. See also a similar test in #192 that shows how faking a remove operation is faster than both |
Beta Was this translation helpful? Give feedback.
-
|
@obiot: auto-sleep is easy. Just plug it in right here: https://github.com/melonjs/melonJS/blob/master/src/core.js#L1422 But auto-wakeup is really hard. |
Beta Was this translation helpful? Give feedback.
-
|
Yes I was actually more concerned about the auto-wake up :) |
Beta Was this translation helpful? Give feedback.
-
|
Reminder: Implementing auto-sleep through callbacks is the right way to do this. A "viewport leave" callback is very easy, as we know. With the new collision detection in #103, we will have a spatial grid that already contains objects... Seems like this can be reused for auto-wakeup, too! When a new spatial grid cell enters the viewport, fire the "wakeup" callback on all objects in that cell. Wow ... that seems almost too easy to be true! |
Beta Was this translation helpful? Give feedback.
-
|
something interesting i just spotted in the chipmunk API : it's also possible to disable object collision check for idle object, and specify a |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Following discussion on the forum, it sounds like a good idea to implement an object sleep mechanism to save CPU cycles for objects that have nothing to do.
The way I imagine it is having two pools for game objects; the
gameObjectsarray in core.js, and a new array forsleepingObjects. Callingme.game.sleep(obj)will removeobjfromgameObjects, and push it intosleepingObjects. Andme.game.wakeup(obj)will do the opposite.A sleeping object will never be iterated in the update or draw loops, saving precious CPU time.
Further, we can enable a flag like
me.sys.enableAutoSleepto put objects to sleep when they leave the viewport. Deciding on a good method of waking up a sleeping object without polling will be crucial for this flag to be useful. I suppose worst-case, polling infrequently (once per second?) could work.Beta Was this translation helpful? Give feedback.
All reactions