Ashley's Recent Forum Activity

  • I'd definitely recommend separate Sprite objects rather than one Sprite object with tons of content on it. See memory usage - Construct's memory management either entirely loads all a Sprite object's animations, or unloads them all; if you have everything in one Sprite, it will either have everything loaded or nothing, but if you have everything in multiple Sprite objects, you can have just some of those loaded.

    You can then add all those Sprite objects to a Family so you don't have to repeat events. You should be able to use 'Replace object' on your existing events with a Family so you don't even have to re-do the events.

    And on a Meizu Pro 7, I get artifacts and a white screen with a sad smiley face in the upper left—basically, it crashes.

    These are characteristics of graphics driver bugs. So it might be crashing due to a buggy GPU driver rather than running out of memory.

  • rusya119a - I'm not sure I follow... it sounds like you started off talking about GPU performance, and then you went in to a whole bunch of things but didn't talk about GPU performance again. So I'm confused as to whether you really think GPU performance is an issue now.

    You raised a whole load of things that involve a lot of complex tradeoffs. I could probably write a whole series of blog posts covering a full response. I'm afraid however I just don't have the time to do that. I've just added a few responses off the top of my head in the time I have available.

    I would however point out that you're comparing Unity - a billion-dollar public multinational corporation with thousands of staff - to Construct - a small UK company with a handful of staff. The fact we even merit comparison is, I think, quite a credit to us.

    1. WebView Overhead Construct apps run inside a WebView (Cordova/Capacitor). While functional, this essentially runs a full browser instance inside the app.

    These days I don't think this is actually significant. I also don't believe it affects GPU performance at all - WebGL and WebGPU come down to the same GPU commands a native app would use.

    2. Native vs. Interpreted Execution (The GC Issue)

    Well-written JavaScript code (which we have) can come pretty close to C in performance. It's also been a long time since I've seen good evidence the GC is responsible for any performance degradation. Modern JavaScript GCs are generational, incremental, and concurrent, meaning they have less work to process, collection can happen on different CPU cores, and the work done on the main thread can be done in tiny increments well within a frame time, all making the performance impact negligible in most cases. People often misattribute things like this - what if you're skipping frames because of v-sync scheduling misses? It's necessary to rule out other causes like that before you point the finger at GC. So please share your evidence - if GC really is an issue in some case, it is possible we could optimize things to reduce GC pressure - but as I said it's been a long time since I've had to do that.

    3. Thermal Throttling

    Thermal throttling happens in the hardware and affects all software.

    4. Tooling and Profiling (Critical)

    If you want more advanced tools in this area, use the browser developer tools. They have things like performance profiles, flame graphs, memory analysis and more.

    5. Texture Management Support for KTX2 / Basis Universal

    Compressed texture support involves tricky tradeoffs. All compressed texture formats are lossy, and so degrade the quality of your artwork. This is generally a poor fit for 2D content where people want pristine artwork. It's easier to get away with lossy images with 3D content, as it often appears distorted (e.g. far away, at oblique angles, or wrapped around a mesh). Perhaps we could do this now Construct has 3D model support, but then you run in to the next tradeoff: compressed texture formats have much poorer compression than WebP/AVIF. So if you put everything in that format, the project download size would get significantly larger - not great for a web-first engine. You could download WebP/AVIF and then encode to compressed texture formats on startup, but that could significantly increase in-game load times. I don't think there's an easy route to have both a small download size and fast loading times with compressed textures.

    Suggestion: Implementing SDF (Signed Distance Field) font rendering

    SDF font rendering is monochrome. The Text object supports quite a lot of color formatting options, as well as color emoji. So this also involves tricky tradeoffs and is definitely not as obvious a thing to do as it might sound.

    7. Blur

    We could definitely do improvements in this area. The main complication is the effects compositor is one of the most complex parts of Construct.

    8. Mobile Simulation Tools

    Browser developer tools can emulate mobile behavior and even allow throttling performance. However I don't believe there will ever be as good a substitute as running on a real device. I don't think anyone else in the industry heavily relies on powerful PCs trying to pretend to be a weaker device, instead of just having some actual devices to hand to run on. Construct's Remote Preview makes it pretty quick and easy to try things out on mobile devices, and it's one of the reasons we have it.

    9. I've noticed that even with the Preload Sounds checkbox enabled, the game might not launch at all on my older devices.

    If you ask Construct to load the entire project's audio in to memory on startup, then yeah, it's going to potentially use a lot of memory. So if you want to reduce memory use, you should definitely turn that off.

  • What happens if I want to hide the status bar but don't want the viewport to cover non-visible areas of the screen?

    Checking 'Hide status bar' exported exactly the same thing as setting the project 'Viewport fit' to 'Cover'. There is no functional difference and so the 'Hide status bar' setting was redundant, hence its removal. There should not be any need to handle anything differently in your project because of this change.

    the project's name is just App.xcodeproj rather than <gameName>.xcodeproj

    That's an intentional change in Cordova iOS 8.0.0.

    I'm not sure if that other error you mentioned is related to that - it looks like something has a typo (presumably FIleUtility should be FileUtility), but it's not clear that's relevant. It might be an issue with a third-party addon. If you're not using any third-party addons and you get a build error, please file an issue.

  • They should focus on optimization, because that's the biggest drawback of Construct 3. Similar graphics and functions running in Unity will be much more efficient than Construct.

    We've done a great deal of work on optimizing Construct already, including writing an entire new renderer based on the latest WebGPU graphics technology and taking advantage of the improvements it made possible. 2D content often uses a lot of transparency which generally means back-to-front rendering is necessary, and then the performance you get with that usually depends on the capabilities of the graphics hardware rather than anything the engine does. If you have specific benchmarks I could try out I'd be happy to investigate - there may be more we can do, or there may be some performance pitfall we missed.

  • Unfortunately it's quite a common problem that the latest graphics drivers are still buggy. You could try exporting with WebGPU disabled in Project Properties (Advanced section) to see if that helps. If it does it would be useful to know the system details of the laptops that have problems, in particular what GPU chip they have.

  • It doesn't always break the code - it depends on your code. It's not possible to automatically solve this, which is why you have to adjust the way you write your code, as the guide describes.

  • Graphic glitches are commonly caused by system issues like broken graphics drivers rather than being anything to do with Construct. Try installing the latest graphics drivers, or install any available system software updates.

  • Most authentication services don't provide an email address for privacy reasons. You would probably have to ask the user to enter their email address separately.

  • Simple minify should always be safe to use. If you want to use advanced minify, see the guide Exporting with advanced minification for the kinds of code changes you might need to make.

  • Thanks for checking - based on this:

    So I uploaded a new build with that option - XBox controller works but the overlay doesn't.

    ...it sounds like gamepads do actually work when specifying "allow-host-input-processing": false providing Steam Input is configured appropriately. So you can work around gamepads not working, at the cost of not having the Steam overlay work until the WebView2 issue is fixed.

    The "allow-host-input-processing": false should have no impact on any Steam features other than the overlay. All other features like achievements should still work.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • It looks like a bug. It's best to report such things to the issue tracker following the guidelines.

  • In the past cases of "400 Bad Request" are due to buggy browser extensions, VPNs, or security software, that interfere with the network requests the browser is making, and ends up making them invalid. In particular the error beginning "YIkPfp2E9gyQ09dk_yNy9scwlvKH58Ft..." does not look like a request Construct would normally make. So I would guess this is not actually a problem with Construct.

    If you disable browser extensions/VPNs/security software, you may need to also clear your browser cache afterwards to allow it to start over properly - otherwise it may still be getting error responses from the cache.

Ashley's avatar

Ashley

Early Adopter

Member since 21 May, 2007

Twitter
Ashley has 1,823,603 followers

Connect with Ashley

Trophy Case

  • Jupiter Mission Supports Gordon's mission to Jupiter
  • Forum Contributor Made 100 posts in the forums
  • Forum Patron Made 500 posts in the forums
  • Forum Hero Made 1,000 posts in the forums
  • Forum Wizard Made 5,000 posts in the forums
  • Forum Unicorn Made 10,000 posts in the forums
  • Forum Mega Brain Made 20,000 posts in the forums
  • x126
    Coach One of your tutorials has over 1,000 readers
  • x74
    Educator One of your tutorials has over 10,000 readers
  • x5
    Teacher One of your tutorials has over 100,000 readers
  • Sensei One of your tutorials has over 1,000,000 readers
  • Regular Visitor Visited Construct.net 7 days in a row
  • Steady Visitor Visited Construct.net 30 days in a row
  • RTFM Read the fabulous manual
  • x44
    Great Comment One of your comments gets 3 upvotes
  • Email Verified

Progress

32/44
How to earn trophies

Blogs