dop2000's Forum Posts

  • But, I have several sets of bases. All spawning in their own torso. Will I need to make several bodies to corilate to their own group?

    For containers - yes.

    For hierarchies - not necessary, you can combine any objects.

  • for each torso, base.count=torso.count

    What condition are you using? You need conditions which pick instances. For example "Base -> Compare Instance Variable".

    If you are using System conditions like "Compare two values" - they don't pick instances.

    Also, linking with Pin and instance variables is an old method. In C3 you can use hierarchy - it will be much easier. Add Body as a child to the Base sprite. You can select which properties will be synced automatically, for example the angle. And you can use "Base Pick Children" condition to pick the Body sprite.

    EDIT: Container is another option. Or use both the container+hierarchy for maximum automation.

  • Impressive in what sense - too many or too few?

    We use JS for things which are now possible with events and to speed up processing of some big arrays.

  • Are you certain that the parallax is causing poor performance? It's unlikely.

    Have you tried disabling the parallax or removing these backgrounds completely, with fullscreen quality set to High?

  • The game

  • I use Adjust HSL to make them light up if the player is in that room, would this be worth finding another way to do it?

    500 sprites with an effect may explain poor performance. Make sure you disable the effect on sprites that don't need it, not just set the default HSL values.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Where do you get the value from JSON and set the scale to the body? Is it in "On Start of layout" event? Then change the scale of baby arms/legs in the same event.

    You are either doing this before the hierarchy is created, or on every tick, it's not clear from your screenshots. There is no point in updating the scale on every tick.

    Also, like I said, use "Pick children" instead of picking by Member variable. It's possible that the variable is not yet set or set incorrectly, that's why it's not working.

    Try "Body pick children" and if this doesn't work, please post a screenshot of the event sheet showing all relevant events.

  • 500 instances isn't too bad, but if they are animated or have effects or behaviors on them, this may be the cause of poor performance.

    An obvious solution is to use a tilemap. Or perhaps you can paste the tiles on a single DrawingCanvas and then destroy them.

  • Your map is made of tiles and each tile is a sprite? How many instances of these tiles are there?

  • Looks like you are not using hierarchies properly. You can set "transform width/height" for all children in a hierarchy. Then when you change the scale of the parent object, all children will be scaled automatically with it.

    You also don't need to link parts of the hierarchy with instance variables. If collider_char is the parent object, to pick its head you simply use "collider_char Pick Children Head" condition.

    You can create a family called Limbs for all arms/legs sprites. Then the code may look like this:

    if Body Scale=0.5
    Body pick children Limbs : Limbs set scale to 0.7
    
    
  • Try to unpack it, maybe the archive is corrupted.

    Check error messages in console in the editor.

  • Without the steps to reproduce, there isn't anyone can do I suppose.

    Are you using hierarchies? Do you create/destroy them in runtime? Are there objects with Persist behavior in hierarchies? And do you use System Save/Load actions? From my experience, a combination of these things can sometimes cause similar errors..

  • You can use layout scale.

    If you don't want to scale the layout or layers, the only other option I can think of is to change the size and position of all objects.

  • I suggest saving your project as a folder. After the first time saving it will go much faster.

  • You can use a different expression when timescale=0 with a fixed value instead of dt, for example 0.016 (which corresponds to 60 FPS).

    Or calculate your own dt from fps value:

    If timescale=1 : lerp(width,xpbarwidth*(xp/maxxp),XPBar.dt*4) 
    Else: lerp(width,xpbarwidth*(xp/maxxp),(1/max(fps,30))*4)