Ashley's Forum Posts

  • You can use the 'Enable/disable collisions' action in the Physics behavior for collision filtering.

    Integrating a physics engine with Construct is an advanced topic with lots of complexity. If you are asking for a simple code example, you probably won't get one - it's going to be complicated. As others have advised, by far the easiest thing to do is just use the Physics behavior, which already uses the Box2D physics engine. It also uses a WebAssembly build of the original C++ code for maximum performance.

  • (Moved thread from Construct 2 forum to Construct 3 forum)

    For what it's worth - Construct updated to use the Google Play Billing library v7 in r394, which was released over a year ago in June 2024. All releases with a higher number include the update, including r397.6 LTS and r440.2 stable. Exporting your project with any of those versions will then use the v7 library.

  • It looks like possibly it's a Construct bug, but I'm afraid it's not possible to help from just that information. If you can file an issue following all the guidelines, we could then investigate.

  • That's a third-party plugin and not the responsibility of Scirra. You'll need to contact the addon developer.

  • See the Addon SDK documentation on Cordova plugin dependencies. C3IDE is a third-party tool so I cannot provide any advice about that.

  • Sorry - should have screenshot more - I only run those events on the click of a button which is only enabled once the AJAX request had completed.

    It still looks wrong though - using 'Set response binary' has no effect once the AJAX request has completed. You must use that before sending the request for it to load in to the Binary Data object automatically when the request completes.

  • I was just trying that to see what happened because:

    Also results in "EncodingError: Unable to decode audio data"

    The image also shows incorrect logic. The Binary Data object remains empty until the AJAX request is completed. That means you must send the request and wait for 'On completed' to trigger before the Binary Data object contains the downloaded data. Only then can you use the Binary Data GetURL expression with 'Add remote URL'. In the actions pictured, you obtain the Binary Data URL before the AJAX request has completed, so you are giving the Audio object a URL pointing to empty data, which it will then fail to decode audio from.

  • BinaryData Set buffer to UTF-8 text AJAX.LastData

    That's wrong - it will incorrectly interpret the binary data of the audio file as UTF-8 text and most likely corrupt it. You don't need to do that to load the AJAX data in to the Binary Data object. When you use the 'Set response binary' action it does it automatically when the request completes.

    The Binary Data object's GetURL expression does pretty much the same thing as your JavaScript code, so it looks like it should then work.

  • If I read the API docs right, it looks like the response is just a raw binary download of the generated audio file. In that case it would probably be best to download it to a Binary Data object, using 'Set response binary' before the request. Then get the URL from the Binary Data object for the 'Add remote URL' action in the Audio object.

  • I can't reproduce any problem using that minimal project (note it does not specify an app ID, so I just put in 480). It correctly launches and gets the persona name and displays it with no error messages and nothing unusual in the browser console.

    It's a really weird problem that you've described: the Steamworks plugin always obtains the persona name from the Steamworks SDK on startup, regardless of whether your events refer to it. Then when you use the PersonaName expression it just returns the string it obtained on startup. So I cannot imagine under what circumstances it would only fail when using that expression, nor how it could have anything to do with the "missing executable" error, because using that expression just returns a string in JavaScript like any other expression.

    My best guess without knowing more is some DLL files have been mixed up. The Steamworks plugin bundles its own DLLs, so if you are trying to do something like copy DLL files like you used to have to with Greenworks, you'll might actually just paste in the wrong DLL and make it crash. Using Steamworks is much simpler - refer to the addon documentation and make sure you are only doing that, and aren't doing other steps that you don't really need.

    Other than that my best guess is something has got corrupted. Try saving a copy of the project that does not work, and start over: uninstall everything, reinstall everything again being careful to get the latest version of everything - possibly on a new system entirely - and try again. If it works, you could use a diff tool like WinMerge to compare the working version to the broken version and see what the changes are (e.g. maybe a DLL file is different). If they're identical, it would mean something else on the system was wrong - perhaps a corrupt Steam install or something.

  • If an API returns a URL directly to an MP3 file, then you should just be able to put that URL directly in the 'Add remote URL' action.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Inside the Cordova plugin, or inside the Construct plugin? For the former you'll have to refer to the Cordova and EOS documentation. For the latter, you don't directly integrate the EOS SDK, you just communicate with the Cordova plugin.

  • To integrate with Android you'll need to develop a Cordova plugin, and then develop a Construct plugin to talk to the Cordova plugin.

  • Does the Construct game take time to load before it’s ready to receive messages?

    It depends when you add the event listener in your code.

    You might have a race between loading the parent page and loading the iframe. If one sends a message before the other is listening, it won't work (and will fail intermittently depending on how long loading works).

    There are various strategies to deal with this - one for example might be to make sure the parent page is listening before the iframe is loaded, and then post a ready message from the iframe to the parent once the iframe is listening, after which the parent can safely post to the iframe. Another is just to post messages to the iframe regularly on a timer and send an acknowledgement back from the iframe once received, at which point the parent can stop posting.

  • I believe that is the intended functionality of cordova-plugin-purchase. It was previously discussed in this issue - in some countries people can use a "pay later" option, which counts as the purchase succeeding, but the transaction is later cancelled.

    It's not actually correct to assume a product is granted in "On purchase success" - as noted in the documentation you should be having "On transaction finished" and "On product owned" being triggered, with only the latter being the true completion of the purchase. Perhaps in the "pay later" case the other triggers only fire when the transaction is completed? I'm not sure, and it's difficult for us to test. You might also need to make use of the validator service to perform checks server-side and revoke any items that ended up cancelling the transaction.

    FWIW I don't think any of this is specific to Construct - it's just how the app store works.