Ashley's Forum Posts

  • Construct's savegame system is designed to be robust against changes in the project. It should just continue to work even after updates to your project.

  • Nice, cool to see Construct games working on new devices! If you could get GPU acceleration to work that should improve performance a great deal.

  • What if there was a hidden internal unique ID for layers? So it doesn't have to assume that a rename was a layer deletion, because it can see it still has the same ID.

    Layers already have an internal unique ID, but it doesn't help solve the problem. Each layout has unique layers; the only way a batch operation has to identify the "same" layer across layouts is its name. You could have a manually entered layer ID to help batch operations identify layers across layouts, but then you just have the same problem if you want to change the layer ID across layouts.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • OK, so it looks like it's not just achievements, the entire Steamworks plugin is failing to initialize. I'm afraid it's difficult to help though - whenever I test this it using the Steam Devkit client it works fine, and I don't know what you could have done differently that would mean it doesn't work. Are there any error messages in the Steam Devkit log? Are you sure you are not doing something that is causing a problem with file permissions?

  • I'm not sure it's possible to resolve this with current browser technology. The browser appears to present the canvas and rest of the HTML page at different times, and there doesn't seem to be a good way to guarantee that they line up. So that means there will always be a frame or two delay between them. The HTML-in-canvas proposal may allow this to be resolved, but that appears some way off broad browser support, and would probably require a significant rework of HTML support in Construct anyway.

    Out of curiosity, what are you using this for? I had imagined that HTML content would be used mostly for UI and HUD style uses where the scrolling issue isn't important, rather than gameplay content where HTML content tracks scrolling.

  • The "steamworks connected" event always says false

    The official Steamworks plugin doesn't have a "steamworks connected" condition, but it does have "Is available". Are you using the official plugin?

  • The plugin doesn't currently support that. It is however open source so you could add the feature yourself (or find someone who can, or try to get an AI coder to do it for you).

  • The Steamworks plugin basically just directly calls SetAchievement in the Steamworks SDK. If the plugin works but achievements aren't working, I'd guess it's most likely because the Steamworks configuration is wrong. For example perhaps you forgot to add the achievement on Steamworks so Steam doesn't think it exists, or perhaps you spelled it wrong.

  • Sorry about the delay on this - I did have it on my list, but as pretty much always happens, so many other things came up I haven't had time to work on it yet. I have thought further about it though and I'm still not convinced the batch update approach is the best one. With some kind of significant new "layer templates" style feature being off the cards for now, I can think of two viable options:

    1. Batch editing

    This involves basically repeating the core layer editing operations across layouts. To cover all kinds of edits it would probably need to cover the following:

    • Batch add layer before/after
    • Batch add sub-layer
    • Batch rename
    • Batch delete
    • Batch replicate layer properties
    • Batch move layer (before/after another layer, or to/from sub-layer)
    • Possibly also batch replicate layer content, although that overlaps with global layers so might not be needed?

    Each operation just matches layers across layouts by name. For example if you choose to batch-add layer "foo" after layer "bar", then it would find every layer named "bar" in the project and add a layer named "foo" after it.

    Pros: conceptually simple - these are all existing operations in the UI and the idea is just to repeat them across multiple layouts

    Cons: there are actually a lot of different operations which makes it more work and potentially a clunky workflow. It is also not obvious how to manage "batch move layer" - typically this is done with drag-and-drop, and it's not clear to me how to design the necessary UI to express the intent "move this layer to there across multiple layouts", especially when taking into account sub-layers. I don't think it's feasible to just skip that option as otherwise you still have the same problem when you want to rearrange layers.

    2. Replicate sub-layers

    With this approach, you would organize all the layers you want to "template" as sub-layers of a parent layer. Then you could right-click on the parent layer and choose to replicate all its sub-layers across layouts (again matching by name). For example suppose you have layer "parent" with sub-layers "foo" and "bar", and that arrangement is repeated in 100 layouts. Then you could go to any layout, add a new sub-layer "baz" under "parent", and then choose to replicate all the sub-layers of "parent". Then it goes through all 100 layouts, finds the layer named "parent", and makes sure all its sub-layers match - which involves adding the new layer "baz". This would be a single operation that covers adding, removing and moving layers (also going in to further sub-layers), and updating properties.

    Pros: simpler user interface and possibly better workflow.

    Cons: this involves quite a complicated tree-diffing algorithm to work out everything that's changed and how to update it. In particular handling renaming layers would be difficult with this approach. In the previous example if layer "parent" as sub-layers "foo" and "bar", and you rename "bar" to "baz", there doesn't seem to be any way to tell this apart from deleting "bar" and adding a new layer named "baz". The difference is important if you want to preserve the existing content of the layer, as a rename preserves the content, but a delete-and-add will clear the content. With this approach there doesn't seem to be enough information to know that a layer rename happened so these cases cannot be resolved.

    So I think there are probably three ways forward:

    Option A: use batch editing, and figure out how to handle moving layers.

    Option B: use sub-layer replication, and figure out a way to persistently identify layers to match them up for renames. For example perhaps you could manually enter a layer ID and renames work by looking up layers by ID. (But then what if you want to change a layer ID?)

    Option C: a hybrid approach - use sub-layer replication in a way that always assumes a rename was a removal and addition of a layer. Then have a separate "batch rename" option solely to handle the case of renaming a layer using the batch editing approach instead.

    I think this is a good case study in how a feature that might seem simple on the surface actually gets quite tricky when you start to dig into the detail of how precisely it works, what the UI looks like, and how to cover all the workflows and edge case that will come up.

    I'm leaning towards option C as the sweet spot for a reasonable workflow with a reasonably straightforward implementation. Any thoughts?

  • If you extract a project on Windows then transfer it to Linux, generally that means all the executable file permissions are lost, and then the project will fail to run at all on Linux. So if it runs at all, it's probably not that.

  • 3D shape rotation is already supported in the latest beta (along with 3D rotation for other objects like Sprite).

  • Use the Pick by highest/lowest system expression, and pick by lowest Family.BBoxTop. Then you can position an object at Family.X, Family.BBoxTop to position it at that point.

  • The project should always successfully open with any UI state files missing with no worse consequence than the UI reverting to default settings. If that's not the case please file an issue.

    • Post link icon

    Construct 2 was retired 5 years ago now, in July 2021. Much like after the retirement of Construct Classic, the Construct 2 forums will be placed in to read-only mode in a month's time, on August 3rd 2026. The content will remain available in read-only mode for archival reasons, but new posts will not be allowed. Posts concerning Construct 2 posted to other forums will be moved in to the Construct 2 forums where they will become read-only. For continued official support, please upgrade to Construct 3. Thanks for your support over the years, but 15 years after the original launch of Construct 2 and 5 years after its full official retirement, the time has come to move on and ensure the focus of official support and resources is for Construct 3.

  • As ever the best place for bug reports is the issue tracker. However based on the project file shared by R0J0hound I think I have a fix for the next beta.