Ashley's Forum Posts

  • If you run in to a problem please file an issue following all the guidelines, as we need all that information to be able to help (including a sample project file demonstrating the issue). Things only mentioned elsewhere such as forum posts, comments etc. are easily lost and forgotten - the issue tracker is our place to track all such reports in a single location.

  • The feature should be working correctly - the problem with your project is you've set up the collision filter incorrectly. You've set up two kinds of objects to use exclusive collision filter with tags "wall", meaning they will collide with everything except things tagged "wall". But nothing has any tags at all - all the 'Tags' fields of all the objects are empty. So the collision filter will do nothing. It looks like you confused giving objects tags via the 'Tags' field with specifying the tags to filter by in the collision filter.

  • In the latest release, in order to better support 3D features, these expressions are now just Z and Depth. They work identically to the old ZElevation and ZHeight expressions.

    If an official tutorial refers to these old expressions, let us know which one and we will update it.

  • I would caution against leaning too much on AI for learning. It has its uses such as asking for advice and ideas and so on, but it does get things wrong. Having been coding for 20 years I find even the advice it gives on things like JavaScript and WebGL is frequently incorrect, missing key information, or just slightly misleading or sub-optimal in some way, and that's with huge amounts of training data. A particularly serious issue is it never seems to say "I don't know" or "I'm not sure" - instead it just confidently proceeds with guesswork or even straight up fabrication. I would suggest checking things it tells you against official sources like the manual.

  • We use SetHasAnimations(true) and load atlas PNGs into the plugin's animation frames at import time (editor-side). At runtime we need to enumerate those frames (legacy equivalent: GetObjectClass().GetAnimations()[0].GetFrames()), but we can't find a documented SDK v2 runtime API for this.

    I don't believe animated plugins were ever officially documented and supported even in SDKv1. It's something I am very reluctant to expose, because animated plugins have a potentially very large API surface, and really it all only exists specifically for the Sprite object at the moment. We cannot implement it just for one plugin specifically, since if it's documented and accessible, then other plugins will start to depend on it, and then we end up dealing with all the potentially painful and limiting long-term maintenance implications of having external addons depending on Construct's animation subsystem.

    I can't recall the full history but I think it might be that Construct 3 only supported this to the same extent Construct 2 did solely for the benefit of the Spriter addon, as I think that is the only addon ever published that used the undocumented animation APIs. The intent of SDKv2 was to eliminate the possibility of accessing undocumented APIs precisely to avoid ending up with these kinds of accidental compatibility problems. I don't think there are any easy options here - to me the best thing to do is remove the use of animations from the Spriter plugin if you can, and find some other way to do what you need.

    • Set origin/hotspot (SetOriginX/setOriginX, SetOriginY/setOriginY)

    • Enable/disable collision (SetCollisionEnabled/setCollisionEnabled)

    All these are available on IWorldInstance.

    • Instance UID (GetUID(), getUID(), getUid(), .uid)

    • Container siblings (GetSiblings(), getSiblings())

    Available on IInstance. (Note the methods have changed to refer to "other container instances" rather than the term "siblings".)

    • Invalidate bbox (SetBboxChanged/setBboxChanged)

    This API is no longer needed with SDKv2.

    • Enumerate instances (instances(), getAllInstances(), GetInstances())

    • Object type name (GetName(), .name)

    • Picked/paired instance (getPickedInstances(), getFirstPickedInstance(), getPairedInstance())

    All available on IObjectClass.

    • Sprite frame index (read) (_currentFrameIndex, currentFrameIndex, animationFrame)

    • Sprite frame index (write) (_DoChangeAnimFrame(), _changeAnimFrameIndex, animationFrame)

    Available on ISpriteInstance via animationFrame property

    • No-premultiply blend (renderer.SetNoPremultiplyAlphaBlend/setNoPremultiplyAlphaBlend)

    Not sure why you need this as Construct always uses premultiplied alpha blending, which is necessary for correct rendering. These methods have actually been completely removed from the underlying engine as nothing ever needed them.

  • I tested this recently and it was working correctly for me. As ever if you think you've run in to a problem with Construct, please file an issue following all the guidelines so it can be properly investigated.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I'd add that if nothing on-screen changes, Construct does not redraw the screen (as to do so is a waste of resources). This is why the frames per second (FPS) can drop to 0 when nothing much is happening. However the ticks per second (TPS) should still be running at the display refresh rate (typically 60). Some example measurements might be:

    • FPS 60, TPS 60: normal rendering with visual changes every frame
    • FPS 0, TPS 60: engine is still running but no visual changes
    • FPS 0, TPS 0: engine has stopped running entirely (usually due to being suspended)
  • I don't personally see the harm in it or any reason to turn it off, so I don't think it warrants being in Construct's user interface.

  • You need to click the pin icon in the top-right corner of the Asset Browser to put it in to auto-hide mode.

  • I'm not sure what you mean exactly - I just tried out the Asset Browser in the latest release, and it pretty much looks and works the same as it always has.

  • This is a common misconception - Construct doesn't actually generate code for event sheets. It does something more along the lines of running an interpreter on data representing the event blocks. Further, as the paradigm of event sheets is significantly different to traditional programming languages, even if there was code automatically generated, it probably wouldn't be very readable or useful to modify and would look quite unlike anything you'd normally write.

  • As per the Forum & Community guidelines, please only post in English on this forum. I used Google Translate to translate your post.

  • Take a look at our suggestions platform where you can submit such ideas and have others vote on them.

  • I wouldn't use the canvas size like that, it's not meant to be used as a scaling feature. You can set the scale of individual layers, so perhaps you can just set different scales for the main game layers and the UI layers.

  • The latest release changed a lot of the code around sampling modes for the new dynamic sampling feature. It's possible something was overlooked - if you file an issue then we can look in to it.