Ashley's Forum Posts

  • The new C++ extension system is specifically designed for integrating other C/C++ SDKs like this. However I doubt we'll do it ourselves - we just don't have the resources to integrate every possible third-party service out there, which is exactly why we're (about to) publish the SDK so third-party developers can do it themselves without having to wait for us.

  • Chrome, Opera and Edge all use the same browser engine (Chromium). Again, this is categorically a problem with ANGLE, the Chromium browser engine or graphics drivers, and the only way progress will be made is if it is reported to Google.

  • In short, the code sent to the minify service does not include any personal information, does not include much information about your project, and is not permanently stored. I believe it to be fully compliant with our existing privacy policy.

    Here's a few more details about precisely what it does and how it works. If you export a project with minify disabled, you'll find a lot of engine code in the files c3runtime.js and main.js. When you minify your project these files are sent to the minify service, which runs Closure Compiler on them, and then sends them back again.

    These files contain the stock Construct engine code used for all Construct projects. Why don't we just ship minified engine code with Construct itself? The problem with that is for efficiency, Construct only exports code from the plugins, behaviors and effects your project actually uses. That can also include code from third-party addons too. So the engine code does end up changing, but only because it's a combination of different pre-defined components to suit your project. Further, the engine code does also include any JavaScript code you write in your project, either in event sheets or script files. So the code sent to the minify server does include your project's JavaScript, and strictly speaking implicitly contains the list of addons used by your project. However this is not enough information to reverse-engineer your project. For this reason I used the phrase "does not include much information about your project" rather than "does not include any information about your project".

    To be clear, the actual information describing your main Construct project is not sent to the minify server. The main project-specific data is stored in data.json, and in all the other assets as image files, sound files etc; none of that is sent to the minify server.

    The code that is sent to the minify server is encrypted in transit in both directions. It is decrypted for the purposes of performing minification, and then as soon as the minified result has been transmitted back to the client, all files are promptly deleted. So decrypted engine code will remain on the server for perhaps a couple of minutes before deletion. There are also various failsafes to make sure that in the event of an error, or even a server crash, the working files will be deleted. In the event the minify server was compromised and the information leaked, it would potentially expose any JavaScript code written in your project. If that is for any reason a problem for you, there is the option of manually minifying your code locally: export from Construct with no minification, and then use a third-party tool to minify the code in c3runtime.js and main.js.

    Hopefully that helps clear up any concerns about what it does and how it works.

  • Storing the encryption key on the client is fundamentally insecure - it will always be possible for someone to find it, no matter how it's obfuscated. If an attacker can't find the key in plaintext in the game files, then the next step would be to intercept it at the point it is used with developer tools, which means it will have already been de-obfuscated and appear in plaintext again in the developer tool.

    Therefore if you are happy with a fundamentally insecure system which is only designed to make casual tampering a bit harder, I'd say you may as well just use a simple obfuscation scheme - some kind of string manipulation would do. The only significant thing you can do is avoid the key appearing in plaintext in the game files, and beyond that the particular kind of obfuscation you use doesn't really matter, as it won't affect how hard it is to bypass.

  • It all seems to be working fine for me and I haven't seen anyone else having issues. Try disabling any browser extensions you have installed in case one of them is interfering with Construct. It might be worth updating Chrome as well in case a recent Chrome bug that was affecting Construct was causing problems for you as well.

  • You should definitely go through the full Learn JavaScript in Construct tutorial series. Your code makes mistakes that are explained by that guide.

  • Have you filed an issue with Google? That is the only way this will get solved. It is categorically a problem with ANGLE or the graphics driver. There's nothing much we can do about the underlying issue, and so if you keep posting here expecting me to do something, it won't get fixed.

  • File an issue anyway - it's the best way for me to review the situation. If it comes down to a browser issue usually I end up filing an issue with the browser maker.

  • There's been at least 25 posts in the past 24 hours, so it seems pretty busy to me. I usually check the forums every working day and it seems about as busy as usual.

    Instant messaging tools like Discord can work for getting immediate help, but I think forums work better for creating a searchable archive of knowledge, so where possible I think it's best to post to the forum.

    People generally also only post when they have a problem... so a quiet forum could be a sign of software working well! 😅 I don't think a forum getting hundreds of posts a day with everyone struggling with bugs and difficulties would necessarily be a better situation!

  • There'll always be long lists of features we could potentially do, and we'll always be working our way through it. But for what it's worth, after all the things we've tried over the years, all the experiments we've done, all the PR stunts, all the blog posts written, and so on - in my view, by far the most effective thing is independent developers recommending us. If you want to help make Construct a success, merely talking about us on social media, showing what you're working on and mentioning the engine, or recommending us to others, I think is far more effective than anything we can do ourselves even if we threw a lot of money at it.

    Another problem we've had in the past is people tend to disregard things we say ourselves. For example even if we show impressive results, people tend to have an attitude of "of course they'd say that about their own product". What independent developers say carries a lot more weight with other developers. So if you like us and want to help, it would be great if people who use Construct just talk about us! Independent feature comparisons, benchmarks and so on would be great too. Construct has tons of features and JavaScript performance is ridiculously good and in some cases it genuinely far exceeds the competition, but people seem to distrust us doing our own comparisons.

    Also don't forget we recently launched a new affiliate program - so if you have a popular website, YouTube channel or whatever, you can make money from talking about Construct or helping promote it too.

  • I'm sure it would be quite a bit of work to add Electron support, it would need on-going maintenance, probably bring its own various quirks that would have to be dealt with, and architecturally it's basically the same as NW.js - it's the Chromium browser engine with node.js integrated. So I don't think it's worth it. Regardless of the outcome of my experiment with a node native addon, I'd rather focus on WebView2 which is a better technology in my view.

  • If you are merely trying to load a file in a subfolder, then the path to use depends on the Export file structure project setting. The new default is folder mode, which means you need to specify the full subfolder path, e.g. "Dialogues/Timothy/Test/Timothy-dialogue-1.json".

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • In order to try to prevent unwanted reverse engineering, we've deliberately made it as difficult as possible to reverse engineer an exported project back to a Construct project. If you use advanced minification, it's probably close to impossible since so much information is lost.

    This is why it's important to keep regular backups!

  • It might be because the version of Closure Compiler used for minifying has been updated. It's difficult to help any more without seeing the project. It's probably best to file an issue about it.

  • To be clear: providing your content is hosted on a secure server (HTTPS), all content exported by Construct automatically works offline.