R0J0hound's Recent Forum Activity

  • An event that isn’t a sub event of anything.

  • Maybe another way to look at it is the new objects are added to the instance list as the last step of a top level event. Functions are run in place so their new objects aren't added till the end of the caller top level event.

    It's the single most annoying quirk of the picking system, it's hard to explain, and hard to understand, but hard to not run into. With most of the events I write I do my best to work around having to deal with it.

    Anyways, I was merely pointing out it's possible to pick new objects sooner than the end of the tick if needed. It's just another tool, but if you have a different approach that's good too.

  • You can pick newly created instances sooner than just the end of a tick. The next top level event is enough.

  • I can never seem to open google drive links. It always asks me to login. So I have no input on your events.

    As far as the physics stepping mode:

    Variable will be frame rate independent but according to the box2d docs a fixed timestep is better since it makes things more consistent with the simulation. Realistically a variable timestep would only affect constraints such as joints and contacts. Can’t imagine it would be bad for simply moving objects and applying forces.

    Fixed will make the simulation more consistent but defaults to a timestep of 1/60. That means if you have a faster screen refresh rate the sim will run faster.

    A solution would be to set the timestep to match the screen refresh rate. But I forget if the physics behavior even lets you change the timestep. If it doesn’t then never mind what else I have to say. That’s kind of a blocker.

    Browsers don’t provide a way to get the screen’s refresh rate but you can guess it from the frame dt. A better guess would be to average multiple frame dts, maybe over one second. Ideally you’d want the game to be running with a low cpu/gpu load when sampling the frames so there is minimal frame skipping which would throw the average off. But it should be possible to statistically figure out that bigger dts refer to skipped frames but I digress.

  • Not really.

    If the level data is in a grid then presumably you could load it into construct as a tilemap, otherwise as sprites. Tilemap is problematic if you can’t load a different image at runtime in construct. So probably you’d have to create tilemaps and sprites with the relevant textures first then parse the level data from JSON.

    Layers? You’d need to someone match up construct features with LDTK features. Construct is limited with what you can create or modify at runtime. Guess you could create a construct layer for every layer but that would be up to you.

    Atlases? Construct does its own atlases and you can’t really replace them at runtime. That’s why I said first create objects with the relevant textures then parse the json. Alternately you could load the texture atlas into a sprite and use distort maps to select sub textures. TiledBackground is another option but replacing texture at runtime is per instance with that.

    You could use events or JavaScript. Js is only an advantage if you make your own plugin here to be better tailored for LDTK features.

    If someone hasn’t posted a converter before it probably hasn’t been done.

    Even Tiled doesn’t have a full loader. Construct only lets you load a small subset of tiled features that match with tilemap features.

    In general getting the info out of the LDTK json should be straightforward enough once you start doing it. It’s the visual aspect that would require some creativity to do in construct imo.

  • Loops are actually easy. Algorithms can be harder, especially when making them from scratch.

    So what are you trying to do exactly? Do you want to know all the tiles connected to a certain tile? You can do that with a flood fill algorithm. That could help narrow your search for how people solved that kind of thing before.

    I get lost though when you mention other things you’re trying to do and I’m not seeing a lot of connection. It probably is because I’ve never played the game you’re replicating.

  • If it freezes it’s a logic error somewhere in your loop events where they never end so it becomes an infinite loop.

    To debug where the error is I usually write it a bit at a time and make sure it works for the simpler stuff before adding more to it. That way it’s easier to track when you introduce the error.

    Another idea is to try to use the debugger to step through the events. Although I haven’t really used it and I’m not sure how detailed it’s able to step through your events.

    You could also use “repeat” or “for” instead of “while” for your loops. With those a logic error would just not work instead of freezing. Also tweaking your logic to use those loop conditions instead may help fix the logic anyways.

    Once you get it not to freeze you could log values to the console or editbox as your events run. And that could be a tool to see what is happening and maybe help you spot where to look for the error.

    Just reading the events and running them in your mind sometimes works too. But breaking things down to simpler steps helps more.

    Anyways, those are some strategies I use.

    I used to be better at debugging others code but lack the time and patience lately.

    What you’re running into with using all those while loops is there are many more places for the code to fail so it’s too tall an order to debug from a screenshot. A minimal example to download is better for other users to fiddle with if they get the urge to give debugging a go.

    There could be some action or condition that’s not working as you expected. For that I often find it useful to do small tests with them to better understand what they are doing.

  • He means the programming language scratch where all coding is done with blocks that that can be dragged and snapped together kind of like legos.

    en.m.wikipedia.org/wiki/Scratch_(programming_language)

    Or maybe blocky which is basically the same. But it’s not clear how that library could be cobbled into construct.

    en.m.wikipedia.org/wiki/Blockly

    Anyways like anything the trick to doing it is to break it down into simpler doable steps.

    Start by having blocks you can drag and drop. Next have locations that the blocks will snap to when close enough. Next is to keep track of how everything is connected, and where to insert stuff and moving stuff to make everything fit. You could either just highlight the drop points or preview the resulting layout as you drag, but that’s objectively more involved.

    Probably best to try something simpler first. Like just a vertical list of sprites you can drag to reorder.

    Another exercise could be to just work on the visuals on how everything should be positioned. Like positioning everything via events.

    Anyways good luck.

  • Do you want the small tilemaps merged into a third tilemap just big enough to combine the two? Or do you want to just draw them onto the main tilemap that covers the layout?

    What is the array you mention for? Tilemaps can already be thought of an array of tiles so using an array too seems redundant and overcomplicate things.

  • You’ll have to show a screenshot of the events. If it’s freezing it’s an infinite loop. For a while loop to end you either need a condition in the same event block as the while, or you need to use “stop loop” somewhere elsewhere in the sub-events. Lastly you need to ensure your logic avoids infinite loops. Often a for loop is easier to do right.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Just to clarify you want to detect collisions between instances that have a variable=1 and other instances with variables<>1?

    Easiest way to reference another instance is to use a family with just that sprite type

    So say you have a Sprite added to a family called other, and you added the instance variables to the family you could do this:

     Other: variable<>1
    Sprite overlaps other
    Other: variable=1
    — sprite: set color to red

    The difficulty with this is you need to add the variables to the family. Which can be a bit laborious to change if you already have a bunch of instance variables and events using them.

    An alternate idea is to use dummy sprites that you create on the fly.

    every tick
    — dummy: destroy
    
    Sprite: variable =1
    — Sprite: spawn dummy
    
    Sprite: variable <> 1
    Sprite: overlaps dummy
    — sprite: set color to red

    With this method you may need to do more when you spawn the dummy. The idea is you want the dummy sprites to match the position,size,angle and shape of the source sprite.

    A third way could be to manually loop over each pair of instances. With it you’d get the iid of both instances, and you’d do expressions like sprite(i0).x to access values to compare. If you want to modify an instance you’d use the pick nth instance condition. The loop would look like this:

    For “i0” from 0 to sprite.count-2

    For “i1” from loopindex+1 to sprite.count-1

    Unfortunately the biggest disadvantage of this method is you can’t use the overlapping condition so you’d have to do your own collision detection. Which may or may not be complicated depending on the shapes.

    A final option would somehow use the js api to do it. But that is completely uninteresting to me.

  • If both tilemap are the same size and at the same position with the same tile size then you could loop over all the tiles on one and see if there is a tile on the other. If both tilemaps have a tile at the same position then stop the loop since they are colliding.

    If position, size or tile size differs between the two then it would just become more involved. Worst case you’d take each tile of one and compare the bounding boxes of each tile of the other. But there are likely lots of ways you can reduce the amount of checks needed. Even so, it will be slow with a lot of checks.

R0J0hound's avatar

R0J0hound

Member since 15 Jun, 2009

Twitter
R0J0hound has 155 followers

Connect with R0J0hound