Ashley's Forum Posts

  • I think it's a difference in the way the browser reports the playback time depending on the way it is played. Sounds are played with the Web Audio API and music is played with the HTML <audio> element. If these report different playback times for looping audio then so will Construct. I guess you might have to just work around it, either by wrapping the playback time according to the duration, or tracking time since playback yourself.

  • There is no method because it ought to happen automatically. If it doesn't, please file an issue.

  • For security reasons, most modern operating systems only allow read-only access to the application folder, when installed to typical locations like "Program Files" on Windows. If you want to write data, either write it to a location the user chooses with a picker dialog, or use the app data folder (i.e. picker tag "<current-app-data>").

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • If I just put the audio duration in a Text object, it works correctly - it shows the duration once the audio loads. The playback time can increase past the duration for looping audio, so it looks like a mistake in your calculation.

  • There are two problems with this kind of thing. Firstly it's actually quite difficult to detect this case. How does the engine know if something is unintentionally being called every tick? It's not possible to automatically analyse the event sheet and know if something will be true every tick. It could perhaps observe the event execution and spot things being called every tick, but that brings us to the second problem: how do you know it's a mistake? Often if you add a warning, even in very specific circumstances, someone will actually be doing that intentionally and the warning is a false positive. If you get too many false positives people will ignore them or want to turn them off. So I'm sceptical that it's possible to make a useful warning in this case.

  • Construct 2 was retired in 2021 and is no longer supported or available for sale. See Sunsetting Construct 2. Construct 3 is backwards compatible with Construct 2 projects.

  • By far the easiest way to get help is to share your project. That way others can try it out. Nobody can tell much from just watching a video, and so all you'll get are the usual general-purpose advice, which includes: try disabling any browser extensions you have installed, as often mysterious problems are caused by browser extensions interfering with Construct. You could also try clearing your browser cache.

    • Post link icon

    Please contact supportiio@construct.net as for privacy and security reasons we cannot help with payment or subscription queries on a public forum. Closing this thread. Please allow at least a couple of working days to receive a response from support as we deal with a high volume of queries.

  • You quoted me talking about Construct's File Chooser object, which is a different kind of object that the 'Taking screenshots' example does not use. (I'd note you haven't provided a link to the context, and the date is 5 years ago so it could well be out-of-date and no longer applicable anyway.) The File Chooser object is a button that you can click to choose a file, but it provides read-only access to that file - it cannot write a file to storage. As far as I'm aware File Chooser does work fine on Android, but it doesn't help you save files.

    You could also try saving data with the Local Storage plugin instead. It doesn't save to a file, but it still saves it permanently allowing the app to later recall it. Other than that, perhaps there is a third-party plugin that may help.

  • It's not broken, it's just detecting what features are available. IIRC 'Save as' does work in the Chrome browser on Android but it does not yet work in Android apps due to this Cordova issue. 'Download' is a feature provided by web browsers so is not applicable inside a non-browser app (noted in the manual here). On mobile, the best option is 'Share'.

  • If you're running in Chrome or Edge, then Construct is running the same code in the same browser engine, and there's no reason for any compatibility differences on Construct's side.

    It's entirely possible your own project has a race condition (i.e. inconsistent timing between different tasks due to a mistake in your project logic) which only happens in certain circumstances that happen to align with which export option you use. That sort of thing happens a lot in software. However it's impossible to say without knowing more details or seeing the project.

  • The manual entry says:

    In On transaction finished, the ID of the transaction that finished, using the ID provided by the store.

    I'm not sure there's much else to add - that tells you when to retrieve it and what it is. Each store transaction is assigned an ID, and that expression just returns the ID assigned by the store. Construct doesn't have any involvement in it other than passing along the transaction ID from the store to the plugin.

  • In general if you think you've run in to a bug you should file an issue following all the guidelines. We don't normally respond to bug reports on the forum other than to say that, because usually such reports omit key information and so it's impossible for us to investigate.

    Also it's very common with bug reports for addons that integrate with third-party services - like IAP - end up just being misconfiguration or mis-use of the plugin. It's very difficult for us to support such cases as we can't see your IAP configuration or your account details, and often when we set it up we get it right, and don't see any issue. It's also particularly time-consuming to do that, so generally we have a higher bar to prove that the Construct plugin really has a bug, especially as it's been used widely by lots of people over a period of years.

    Finally if you want definitive proof that a purchase is legitimate in order to rule out things like piracy, you need to implement server-side validation. The IAP plugin has an option for using a validator URL to do that, which is a feature of the underlying cordova-plugin-purchase plugin and they also provide a service you can use for that.

  • What do you want me to do - open the source code to Steam and fix it? That's not possible. You can still publish your game to Steam without support for the in-game overlay - it's not something Valve require (perhaps because they know it doesn't always work!) We've also already gone to great lengths to try to get it to work and unfortunately had to conclude it's not feasible, at least with the current state of things, and so Valve need to change Steam to get it to work.

    Unfortunately sometimes issues come up which are genuinely beyond our responsibility and capability to fix. For example sometimes a graphics driver bug - part of the system software tied to the hardware - causes someone's game to crash or glitch, and they insist we should fix it. Unfortunately the problem is the responsibility of the graphics driver developer though - they need to fix it, and usually it's infeasible for us to do anything about it. The person affected by a graphics driver issue might say similar things to you, like people who want to publish games with Construct should have a guarantee it works. They're complaining to the wrong company though. It's out of our hands. We work hard to make Construct robust and reliable within our own code, but software is complex and any ordinary program involves using components from dozens of different companies. It's possible some other component fails, and if that's the case it's the responsibility of a different company and there's only so much we can do. The best thing to do is to take it up with the company responsible. If you keep asking us, I'm afraid it won't change the situation.

  • Steam itself is a third-party solution. If you want to publish to Steam, you have to deal with Steam. If Steam isn't working properly, unfortunately that's outside of our control and not something you can easily swap out with something else, unless you're willing to publish to a different store like Epic Games (which we also have a plugin for).