How do I, if there is a way to, keep my layers' settings consistent thru layouts?

Not favoritedFavorited Favorited 0 favourites
From the Asset Store
Create large maps with dynamic depth and precise sprite layering control in top-down games.
  • Ok so batch editing then.

    If layers get a new "Batch Edit" or whatever checkbox, then all changes made to them will affect all other layers in the project with the same name? Somehow including layer order/structure with an error if it can't be done?

    Honestly I'm fine with that. Functionally it's the same thing. 👍

    Template Layer was only suggested because it "is literally copy/paste of global layers but with less features," and it is far less error-prone, but clearly we're at an impasse about that and there's more to it.

  • Why not allow us to add layer effects at runtime? This would be a lot easier, I've done engine hacks in the past that let me do it, and it would completely skip the whole problem if we can just setup all the layers at runtime manually.

    Oh please no, that is still very convoluted, we need better. This would maybe be nice for other cases but not as a solution for this.

    Ashley I'm not sure exactly what is meant by batch changes, but could that still work in combination with the templates idea?

    I could be wrong, but it sounds like they're asking for something like this:

    I had imagined this per layer not per layout but that actually makes a lot of sense for solving my original problem.

    having the option to just make the changes at runtime means we can just generate all the layers on startup which is also a good option and completely eliminates the problem.

    It isn't? It would be very odd to work with.

    Somehow including layer order/structure with an error if it can't be done?

    I think that that is not needed, the same way layer hierarchy doesn't affect global layers. BUT you've just reminded me that I originally created this thread not only because editing layer properties across layouts was getting bad but also because editing the entire layer hierarchy was, so that is important too.

  • I mean it's a different way to work with this, but it's far from a bad idea. This means you can put your assets wherever you want without having to think about layer order as a final thing and you can make the decision for how layers are structured at runtime.

    I did that for one of my game and it made level design super easy specifically because I didn't need to set up any complex layer system at edittime and I could just create everything on layout start and be sure that everything would be set up correctly.

    Although I do agree that batch edits would be a good idea too don't get me wrong. But being able to fully create layers at runtime including the effect stack and all its properties mean you can make a function that creates a layer template for anything, including with template elements on it.

  • Maybe I don't understand your situation, but wouldn't better planning solve your problem? Maybe know exactly what you want before making too many levels that might need changes?

  • Maybe I don't understand your situation, but wouldn't better planning solve your problem? Maybe know exactly what you want before making too many levels that might need changes?

    Are you asking me or skymen?

  • I mean if we could plan perfectly and never make mistakes we wouldn't need most things.

  • Are you asking me or skymen?

    You and anyone with similar issues. I'm not trying to be argumentative, nor negate the usefulness of your ideas for C3. My intent was suggestive and I'm only trying offer some helpful advise. You don't know what you don't know. If you had never worked for a studio before, maybe you are unaware most studios have development workflows that would help you avoid the issues you are having now. Best practice is doing all the planning, pre-production like design and prototyping before moving into the production phase. If you already know this, great! If not, I hope it helps.

    fedca I mostly agree, but not what I meant.

  • You and anyone with similar issues. I'm not trying to be argumentative, nor negate the usefulness of your ideas for C3. My intent was suggestive and I'm only trying offer some helpful advise. You don't know what you don't know. If you had never worked for a studio before, maybe you are unaware most studios have development workflows that would help you avoid the issues you are having now. Best practice is doing all the planning, pre-production like design and prototyping before moving into the production phase. If you already know this, great! If not, I hope it helps.

    fedca I mostly agree, but not what I meant.

    No need for all the apologizing, it's ok. I do disagree tho, it is a big process of trial and error. There is a reason software like these are called "editors" not "creators" tbh.

    The usual workflow, as you said, is to prototype first. You make a barebones version of everything you imagined and then you slowly develop all the things to a more and more finished state. But that means a lot of editing, not less editing.

    As for skymen's take, I just think an engine's interface is all about you not having to do everything from scratch in a text editor.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • No need for all the apologizing, it's ok. I do disagree tho, it is a big process of trial and error. There is a reason software like these are called "editors" not "creators" tbh.

    The usual workflow, as you said, is to prototype first. You make a barebones version of everything you imagined and then you slowly develop all the things to a more and more finished state. But that means a lot of editing, not less editing.

    As for skymen's take, I just think an engine's interface is all about you not having to do everything from scratch in a text editor.

    Mistakes happen, but all the trial and error should happen in prototyping phase, but you moved into production when you created many levels that you now have to change. In the production phase, all you should really be doing is reproducing your successes.

    It's a little like putting the cart before the horse, but you want the cart manufacturer to build you a crane so you can more easily move horses around, because in the back of your mind, you know you'll probably put the horse in the wrong spot again. I'm just suggesting to put the horses first so you won't need a crane.

    You work however you want to work though and do what's best for you. You like the entire process to be trial and error, that's fine. I was only making a suggestion in case you were unaware of am more established way of working. I'll stop wasting your time and let you all get back to brainstorming solutions. I wish you success with your app and getting this new feature added to the editor!

  • Ashley I've been curious if any planning has been done for a feature / feature set to accomplish the things discussed in this thread. I know 3D is the big focus right now but this is clearly a big refactoring / productivity related one that's been wanted for a very long time, regardless of implementation. Thanks.

  • 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?

  • Ashley No worries, thanks for the thorough response. I appreciate the consideration being put into this and am seeing myself why it's a bigger feature than it sounds.

    I am definitely a proponent of methods 2 or 3. I'm not exactly sure how there isn't a way to tell a rename apart from a delete-and-add - I would assume finishing either operation could or would send a particular signal to differentiate, but evidently not.

    Overall method 3 sounds just like 2 (my favorite option) but with a dedicated rename operation to solve this so... Unless I'm missing something I say that's the winner!

    Even my current project has 18 "area" layouts with far more layers than I care to deal with, so this feature will help immensely. For level-based games in the future it is an absolute must! Thanks again for considering it and I look forward to seeing how it plays out.

  • thanks Ashley and Tokinsom, these solutions will be a great improvement for working on large projects!

    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".

    That's interesting that it's tricky for renames to apply across multiple layouts.

    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.

  • 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.

Jump to:
Active Users
There are 0 visitors browsing this topic (0 users and 0 guests)