rusya119a's Forum Posts

  • Hello everyone. I have already contacted support about this issue before, but I still haven’t received any working solutions.

    My game runs in landscape mode at 1280x720.

    The game has a rewarded ad feature. When the player watches an ad, a portrait ad is automatically shown. After the ad finishes, the game freezes, some objects or graphics disappear, the screen may turn black, and buttons may stop working. In general, the game starts behaving strangely after the ad closes.

    Previously, I was advised to load the ad at the start of the layout and only show it later when the player presses a button, so that the ad would be preloaded correctly instead of being selected randomly. Unfortunately, this did not solve the issue.

    I also couldn’t find any setting that forces rewarded ads to display only in landscape mode. Changing the orientation through the browser after the ad finishes also doesn’t seem to make any difference.

    I don’t know how to fix this anymore, so I really need your help.

    Tagged:

  • Let's say I managed to save the entire car in the canvas, even though some layers are overlapping in the wrong order—but I think that's because I have the interior, parts, wheels, and so on on different layers.

    Another question is how can I load canvases of DIFFERENT cars from an array? For example, I have an array called `cars` that stores images from snapshots.

    1. How does it store them? More specifically, how do I save a canvas to an array?

    2. How do I load them from the array in a different order so that the car images appear in a row? (Like in the screenshot in the post.)

    I did `paste`, then `save snapshot`, and then used `load image from url Cars.At(0,26)`, where 26 is the row number for the image. But that didn’t work.

    And I can’t even load the snapshot back into the canvas. There’s a problem here. I have 6 cells where 6 cars should fit.

    Cars.At(0,26), Cars.At(1,26), Cars.At(2,26), and so on.

  • How to render a complex group of sprites (with blend modes) into a single flat image/texture?

    Hey everyone! I’m facing a really tough problem that seems easy to solve in other engines, but I’ve hit a massive wall in Construct 3.

    I'm developing a mobile game and struggling with UI optimization. I have a complex modular 2D car built from ~30 separate sprites with different Z-orders: body, interior, wheels, headlights, glass highlights, reflections, tires, rims, brakes, suspension, shadows, etc. Crucially, some of these layers (like drop shadows or window tints) use Blend Modes (Multiply, Add, etc.).

    In the main menu, I need to display 6-7 of these cars simultaneously as UI cards (exact miniature thumbnail copies of the assembled cars).

    Spawning real sprites for each card (30 parts × 7 cars = 200+ objects just for the UI) is completely out of the question—mobile devices will instantly drop frames. I need a way to "bake" (Render to Texture) the assembled car into a single flat image with a transparent background so I can just display it as a single sprite in the UI.

    Here is what makes it so difficult:

    Drawing Canvas issues: The Canvas refuses to handle this properly. Also, using Paste Object for 30+ individual parts per car is an absolute nightmare and leads to messy, unmanageable code.

    Dynamic generation: These 6-7 cars are not identical. They all have different colors, wheels, headlights, and interiors, reading data from an array.

    Coordinate math: The parts are attached to each other using specific offset coordinates from an array. Since the UI thumbnails are scaled down, all these offset coordinates have to be mathematically scaled down as well, which is extremely painful.

    Hierarchies don't work: Please don't suggest using Hierarchies. They don't help because cars might lack certain parts (e.g., no interior or missing spoilers), and checking every part inside a hierarchy loop causes even more issues.

    I've written massive formulas with loops to spawn cars, assign variables, and distribute parts, but it always breaks somewhere. Even AI assistants couldn't crack this task.

    How do you guys handle the "Render to Texture" problem for complex composite objects with transparent backgrounds in your projects? How can I properly merge a bunch of sprites with blend modes into one lightweight image without killing performance or breaking the alpha channel?

    I’d appreciate any ideas, workarounds, or plugins. By the way, I own the full Chadori plugin suite—is there anything in there that could help with this?

    Thanks in advance!

  • Does anyone know how to easily and efficiently create such a system? An RGB panel that would paint another object?

  • Do you see that images only use 100 MB in the debugger? That's very modest memory usage, it should not crash a phone with 4GB of RAM. The issue must be with something else. Try collecting LogCat logs.

    Yes, in the construct debugger

    I found an old screenshot with a video recording where the game, while idle and without any additional actions, simply crashed after a while. It's a different project, but it has the same memory consumption of around 100 MB.

    Yes, for me, that's a critical figure right now. Still, are there any recommendations other than improving the content in my game?

  • 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.

    Hi Ashley, thanks for the detailed reply. I understand the progress made with WebGPU, and I agree that desktop browser performance is impressive.

    However, from my perspective as a developer shipping mobile games, the core friction points lie in architectural differences and — crucially — the lack of visibility into them.

    Here is a breakdown of the challenges we face on mobile:

    1. WebView Overhead Construct apps run inside a WebView (Cordova/Capacitor). While functional, this essentially runs a full browser instance inside the app. This abstraction layer adds unavoidable overhead in terms of base memory footprint and CPU usage compared to thin native runtimes.

    2. Native vs. Interpreted Execution (The GC Issue) Unity uses IL2CPP to compile to native machine code. Construct relies on JavaScript. Even with V8's amazing JIT, we suffer from lack of manual memory control. Garbage Collection (GC) spikes are the main cause of micro-stutters on mid-range Android devices, creating a "janky" feel even at high average FPS.

    3. Thermal Throttling Because the CPU has to handle the WebView overhead + game logic (mostly on a single thread), thermal load increases rapidly. This leads to aggressive thermal throttling on mobile, causing performance to degrade significantly after 10-15 minutes of gameplay.

    4. Tooling and Profiling (Critical) In my opinion, this is the biggest missing piece. We lack professional profiling tools to diagnose why performance drops. What we desperately need:

    Deep CPU Profiling: Breakdowns of which specific Event Sheets or Functions are consuming frame time.

    Asset Auditing: Visibility into texture memory usage and heavy assets.

    Performance Warnings: Alerts for expensive operations (e.g., "High overdraw detected" or "Heavy logic in Every Tick").

    5. Texture Management Support for KTX2 / Basis Universal would be a game-changer. Unity, Godot, and Unreal use these standards to drastically reduce GPU memory usage. Since WebGPU supports them, native integration in Construct would significantly help mobile devices with limited VRAM.

    6. Text Rendering The current text system is a performance bottleneck. Text objects are heavy, and styling is limited.

    Long text becomes blurry.

    Baseline/offset issues persist on iOS.

    Suggestion: Implementing SDF (Signed Distance Field) font rendering would solve both the quality and performance issues, allowing for crisp text with cheap outlines/shadows.

    7. Blur and UI Effects Blur is standard in modern UI, but it is currently too expensive in Construct (requiring separate layers or heavy shaders). Optimized, built-in primitive effects for UI that don't tank the framerate would be very welcome.

    8. Mobile Simulation Tools It is difficult to predict mobile behavior on a desktop. It would be helpful to have debug modes that simulate:

    Artificial memory limits (e.g., cap at 100MB).

    Low-end CPU throttling simulation.

    Strict FPS caps.

    (Example: My old Meizu PRO 7 crashes if the game exceeds 100 MB of memory, regardless of the event logic. Debugging this without tools is a nightmare.)

    9. I've noticed that even with the Preload Sounds checkbox enabled, the game might not launch at all on my older devices. So I'm forced to disable it to save memory. I don't know why... But with the checkbox disabled, the sounds are terrible. This means I can't create high-quality sounds for a large project.

    Summary I’m not suggesting Construct should abandon the web stack. But precisely because we are running on the web stack, we need better tooling, profiling, and resource control to manage these overheads effectively.

    I love Construct and use it daily. I’m sharing this because I want to see it become even more viable for high-quality mobile releases.

    Thanks for listening!

  • > Each animation contains 100-200 frames, and these are the same 105x131 images.

    Just to clarify - the size is the same, but the images are different in each animation, right?

    A quick test shows that 1000 frames with that resolution use about 80-85 MB in memory. So your game should probably run fine, even on mobile. But I would try to reduce the number of frames in animations, 200 frames feels like a lot.

    Yes, the size is the same everywhere, but the images are different. These images are different cards. I can't reduce them because my game is quite content-rich. And I give them complete freedom. The maximum I can do is cut down and use 170-180 animation images instead of 200. But don't forget about updates. Since the entire game is based on my cards, they're a core element in the game, and I plan to expand them.

    I specifically bought a test phone and am using my old one. My game runs on an Oppo A3, which uses about 100 MB of memory, and lags a bit, but overall works. 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. Basically, 100 MB is already pretty critical. Although my card images alone weigh 80, not counting the UI and other objects.

    Maybe there's another solution? I tried asking the neural network, and they told me to split all the animations into separate sprites. But that doesn't change the essence of the problem if all these sprites are on the screen. It's the same thing.

  • I'll add to the post: 105x131 is the minimum size I can make. Although I need to use 140×174.

  • Hello everyone. I have a card game in which I store a Cards object containing various images. I've reduced these images to a minimum of 105x131. But there's a problem. My Cards object has 20 types, specifically 20 animations. Each animation contains 100-200 frames, and these are the same 105x131 images. I'm afraid that if I store around 1000-2000 objects in a single sprite, even at this size, my game for low-end mobile devices won't even run them. Besides the cards, there are also various other UI objects that are larger. I don't know what to do or if there's a convenient way to store all of this. Perhaps you can help? I don't know, maybe I should split these animations into different sprites, then there would be 100 objects per sprite, but I already wrote the code with one sprite, not with different ones. I'll have to redo everything. Please recommend a solution for optimization.

  • 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. I specifically bought a simple Android for game testing and noticed that many of my projects simply lag on the Oppo A3.

    Also, a decent text editor, which is available in all engines. Why can't we add a border or shadow to the text? I'm not even asking about a gradient. Perhaps I don't understand how text is structured correctly, but I struggled with adding shadows.

    The problem isn't with the code—the code is optimized. The problem is with the engine itself.

    Construct 3 uses too much memory, especially when working with sprites, animations, and textures. Even with careful resource management, size limits, and asset optimization, memory usage remains unreasonably high.

    The problem with spritesheets and rendering is particularly noticeable:

    Large spritesheets quickly inflate memory consumption

    The GPU becomes more heavily loaded than it should be

    Weaker devices begin to throttle

    Similar scenes run noticeably more reliably in Unity—simply because it has better memory management and a better graphics pipeline.

    My other complaint is the debugger. It's completely neglected. Bugs and other errors are practically impossible to track. There are no graphs, no memory tracking. It's absolutely necessary to add the ability to track memory usage for specific events. For example, so that you can see that Event 30 is consuming the most. Even breaking it down by group doesn't help you understand the exact action. I spent a whole day trying to figure out what was causing my lag until I noticed a very hidden every tick rotation; a debugger would have improved this.

    List of active textures

    Weight of each sprite

    What's currently in memory

    Which assets are being reloaded

    Texture / Memory Profiler

    Construct 3 is an excellent engine in terms of ease of use and development speed, but its main drawback is poor optimization of memory and graphics. Nobody raises the issue of optimization because many people's projects are small or pixelated. But a truly large game with thousands of code lines and tens of thousands of lines will simply wreck any mobile device. Except for the iPhone. By the way, text display on the iPhone is still crooked, and I have to use Y-4.

    3D is absolutely not what Construct should be doing. You won't be able to create a game on the level of Unreal Engine or simple Unity indie games. It would be better to focus on 2D mechanics, animations, timelines, and usability, rather than useless 3D features. Construct could become a leader in 2D, although in my opinion, it's the ease of use that makes it so. Thank you.

  • > I press the button changing the variable, for example. Which sets the text.

    Which variable and which text?

    Are you talking about Index3 and "Engine_Type_Text"? The text should display (Index3+1)&"/5"

    So when Index3=2, then the text would display "3/5". Is this not the case?

    It would be a lot easier if you could share the project file.

    drive.google.com/file/d/1b-_h-VZD3Rymb5cKaTsZuQEoG-3M9esB/view

    And so I was able to repeat the error with the coordinates moving. Press the up button and see that the square has changed color and moved. Press up and see that the red stripe has moved down.

    Now look at the code.

    The square that changed color to cyan can NOT have a red stripe on top. Only by duplicating the button press did it take the position.

    I have the same error with text, display, etc. Check carefully. Study the image points. I don't understand the logic.

  • > I press the button changing the variable, for example. Which sets the text.

    Which variable and which text?

    Are you talking about Index3 and "Engine_Type_Text"? The text should display (Index3+1)&"/5"

    So when Index3=2, then the text would display "3/5". Is this not the case?

    It would be a lot easier if you could share the project file.

    No, that's not it at all. We're talking about a real delay, not as stated in the text.

    I can say that no wait 0 will help now. The project works on its own. Adding more and more different new systems makes it work worse. And I don't understand at all how to track it, even through the debugger.

    Here are two screenshots for you as an example. At the first stage, all the texts indicate the beginning of the layer and successful use of ajax. In the second place, identical actions, but in functions. THE TEXT IS NOT DISPLAYED IN THE FUNCTION. Absolutely. I don't understand at all where the delay is and what the problem could be. We're not talking about Engine_Type_Text, we're talking about all the texts that are on the screen.

    Or another point. With variable 0, the sprite position is on some coordinates, with variable 1, the sprite position is on other coordinates.

    Here's an example

    variable 0 = x.sprite -> 25

    variable 1 = x.sprite -> 45

    When the layer starts, we get x.sprite = 25. I press the button, the variable has changed to 1, the coordinates are still 25. I press the button, the variable is already 2, the coordinates are 45.

    Although variable 2 does not set any coordinates. :/

    I press back, to variable 0 = the coordinates are again 45. Although they should be 25. I press the button again so that the variable is -1, and the coordinates are again 25.

    I don't understand at all what's going on, why are the functions lagging and how can I display the text if not every tick ??? Where every tick works perfectly.

  • Okay, so what exactly isn't working? What do you see, and what should be displayed instead?

    I press the button changing the variable, for example. Which sets the text.

    For example, the variable = 0. I press the button, it should be 1, then I press it should be 2. I add one at a time.

    The variable itself is added if you look in the debugger, it is 1, 2, 3, etc.

    And the text that is displayed set text in the function is delayed by one click. That is, if the variable is 2, then the text will show 1. And this applies to coordinates, animation frames and other moments. From here it introduces me into some kind of dissonance, as if the text changes first, and then the variable. But under the conditions, first I change the variable, and then the text, and I change the text in the function.

    I was just able to solve this problem by setting wait 0 sec. However, this is wrong, and I do not understand how to do it without wait

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Can you show the events above the "On tap" one? Is it nested under any other conditions?

    Also, please post screenshots of those functions - Change_Details, Details_Update

    One tap