quackgyver's Forum Posts

  • I've had a lot of problems with not being able to load Tilemap image URI's during runtime, and I've boiled it down to the Tilemap object's image size not adapting to newly-loaded images.

    To be more specific, while other objects types (Sprites, Backgrounds) adapt their image sizes to fit whatever image that is loaded in during runtime, the Tilemap object apparently demands that nothing exceeds the original image size.

    My questions are:

    • What happens if i load in an image that is smaller than the original image size? Will I just get a lot of blank tiles until the tile row wraps, or will the image size shrink to fit the new, smaller image?
    • What happens if I decide that I need more tile space, and increase the original image size to allow for larger images to be loaded in. Will the tilemap data become messed up, due to the tile row wrapping changing?
    • Is there any way to get around Tilemaps not being able to load in larger images during runtime?

    Thanks in advance.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • "Executed", not "excluded". Because that's how Construct works. All events are executed on every tick, unless they are triggers or functions.

    Sorry, I misread.

    I expect them to be executed on every loop, yeah, so that's fine by me.

    It still may require 1-2 ticks to be fetched, or maybe even longer on a slower machine. So you should not start checking JSON keys until it finished loading!

    Try this code:

    > JSON has key "maps.test" -> Browser Log "HAS key, "&tickcount
    Else -> Browser Log "NO key, "&tickcount
    

    Open browser console and check the messages. You will probably see a couple of "NO key" before "HAS key" appear.

    I actually can't get that to work at all:

    I've tried with single quotes, double quotes as well as loading the data from a separate JSON-file, but this always returns "no test".

    JSON.CurrentKey works only inside "JSON For Each" loop. If you need to get current path outside the loop, use JSON.path expression.

    Yes, I'm doing this as part of iterating through a foreach-loop.

  • If the events are at root level, they are executed on every tick.

    Why are they excluded?

    And if you are getting JSON data from a file or Internet, then it may not be ready during the first couple of ticks. And that's why the Else part is triggered.

    It's all local, so nothing is fetched remotely. All I'm doing is loading in a local JSON file that is embedded with the project.

    The reason why I posted this topic is because I'd like to understand how Construct loops through JSON. As far as I can tell, this information doesn't seem to be available anywhere.

    I keep running into strange scenarios like the one outlined in this thread, as well as a new one that I encountered just now where:

    Will not fire at all, but:

    Will set the global variable "debugger" to "background".

    The fact that you can't really troubleshoot JSON with breakpoints makes the whole thing challenging:

    Is there no information anywhere on how Construct loops through JSON objects?

  • This is possibly a bug with the JSON object.

    If you run in to a bug or issue in Construct 3, please post it to the GitHub issue tracker here:

    https://github.com/Scirra/Construct-3-bugs

    You must follow the bug report guidelines or your issue will be closed without investigation.

    Construct is a great product, but as far as the bug reporting goes the customer experience is not so great.

    Customers shouldn't be expected to deal with issue creation, refinement, maintenance and demanding responses from engineers who think that issues needs further refinement or be split up into additional issues.

    And like, threatening with "having my issue closed without investigation" unless I jump through all these hoops is not exactly going to entice me to want to submit bugs.

    > You need to remove "Append JSON.Get("books.title") (i.e. line #3) for the "Else"-case (i.e. line #4) to fire.

    Nope, without this action it still works correctly for me. The Else event is not fired if the key exists in JSON.

    https://www.dropbox.com/s/2x9jtliyiud772n/JSON_HasKey.c3p?dl=0

    Sorry, I just noticed that you had an AJAX-related trigger. It needs to be a continuous loop that checks for "Has key" on every loop.

    If you put your two sub-conditions on root level so that they run on every loop then it should work. :-)

    Thank you very much for the help so far!

  • quackgyver Could you share a sample project or JSON string? I tested this just now and it works correctly - only one event fires.

    You need to remove "Append JSON.Get("books.title") (i.e. line #3) for the "Else"-case (i.e. line #4) to fire.

    I think if you give that a try, you'll be able to reproduce the issue.

  • as far as I know the "Has Key" is basically a loop, so the else will almost always get triggered.

    by inverting the first condition you get the "else" effect when the key is not present, and the the actual else will trigger properly when the key is present...

    I haven't actually tested that.

    I'm not sure I'm following the logic.

    Regardless of whether it's inverted, it should be either hard true or hard false, unless something is happening in the application loop that causes some loops to return true and some to return false (for instance in case "Has Key" is asynchronous), but as far as I know that's not the case here.

  • Did you try to invert that condition?

    Why would I do that?

  • For some reason, putting "Else" after "Has key" will cause both "Has key" and "Else" to fire, if "Has key" points to an object that is one level down from the path's root.

    See example:

    However, putting the two events inside another "Has key"-condition that checks the path's root will cause only the "Has key"-element to fire.

    See example:

    I'm having a hard time seeing the logic behind both conditions firing unless they're placed inside another condition. I feel like the loop should iterate through them the same way in both scenarios since the "Has key"- and "Else"-events are siblings.

    Can someone shed some light on this?

    Thanks in advance.

    EDIT:

    For clarification, the JSON data is loaded in many seconds before these events are run, so I don't think it's a lag- or synchrony-related issue.

  • Bump.

    This still hasn't been fixed.

  • I have a function that needs to be able to pick objects by combing strings (e.g. variable_foo&"bar"&variable_baz).

    I don't want to have to copy over object names into instance variables since that's going to increase the manual work significantly, so I'd like to be able to pick objects by names specifically.

    Is this possible to do, and if so, how can I achieve this?

    I feel like this should work:

    But for some reason it doesn't.

    Would appreciate some help on this.

    Thanks in advance.

    EDIT:

    I should probably mention that it's the picking object-aspect that's important, because I also need to know when it returns false (so that I can insert an "else" case to determine whether any objects matching the name exists). Otherwise I would've just used a foreach loop on a family and compared the ObjecTypeName.

  • have you tried right clicking on a blank area of the eventsheet, choose "Event Sheet" (at the bottom of the pop-up menu), choose "Font Size" and then click Reset.

    That worked. Thank you. :-)

  • Are on a laptop? I keep accidentally shrinking the type by holding Command/Ctrl and scrolling on the trackpad (2-finger on Mac). You could try that shortcut to scale things back up.

    I've tried scrolling to zoom, as well as holding CTRL, ALT, SHIFT etc. while both scrolling and pressing + and -. Nothing happens, except for when I do CTRL+ and - to zoom the browser's view, but that still doesn't fix the problem of UI elements shrinking in Construct.

  • When I load my project, the event editor is zoomed out while everything else in the project looks normal.

    The browser view's zoom is at 100%, but the event editor is still barely readable.

    How can I restore the event editor to normal?

    See attached image.

  • So apparently the issue is that Debug Layout has suddenly broken for my project specifically.

    How do I fix this?

  • I can't click on "Debug layout" anymore. I've tried it in both Safari and Firefox, and it's not working in either browser.

    I've tried clearing cookies, resetting the Ui, resetting the local storage and other basic troubleshooting steps, but none seem to work.

    Is anyone having the same issue?