Naka Gamedev's Forum Posts

  • 15 posts
  • Hi Ashley,

    Thanks for your reply, but I need to be clear: my post isn't a bug report, and I know how to file those. My concern here is the lack of clarity in the documentation, as the manual doesn't explain the use of the mobileIAP.transactionID expression.

    It's important to note that my game has had a functioning IAP store for over four years without this specific issue, which indicates it's not a simple "misconfiguration" on my part.

    I'm investigating the possibility of mobileIAP.transactionID being a way to work around the current problem where items are granted without payment. This happens specifically with methods like Pix in Brazil, but it could affect other regional payment methods.

    For this, I need to know:

    If mobileIAP.transactionID actually returns the current transaction's ID.

    At what specific point this ID is retrieved.

    And how the expression identifies which transaction is in progress.

    I hope you can focus on clarifying these specific questions about mobileIAP.transactionID, as the information isn't available in the manual and could help solve a problem affecting regional transactions.

  • citron2010The bug occurs as follows: when the player starts the purchase process and selects a regional payment method. In Brazil, for example, there's a method called Pix, which allows the user to generate a code that is used to make the payment through a banking app. The problem happens when the user simply generates this code but, instead of completing the payment, just returns to the game. What happens is that the system interprets the purchase as successful and grants the user the consumable item.

    This does not happen when the item is a non-consumable product and we use the condition "On transaction finish" together with the condition "Has product [product ID]". I’ve done several tests, and this doesn't work with consumable items. For this reason, I’m looking for information to see if it's possible to use the transaction ID to create a method to prevent this issue, but unfortunately, I haven’t yet received a response from Ashley.

  • Ever since the bug appeared where players receive store items simply by closing the payment window, and the mobileIAP plugin grants the purchase even if the payment wasn't completed. I've been searching for ways to work around this issue.

    My question is about the expression mobileIAP.transactionID, Ashley.

    Only you can clarify this, as the manual provides no explanation on how to use it.

    Does it actually return the current transaction's ID? At what point is this ID retrieved? How does the expression know which transaction is in progress?

    I'm asking because there are already bug reports about this issue, and I believe this expression might be the solution.

    I hope you can help clarify this doubt.

  • Thank you for the detailed response, Ashley — it really clarified things. I found it fascinating that there’s a specific rule in place to handle this scenario.

    Based on your explanation, I had a question related to the design of my own game: in many cases, my characters are composed of multiple distinct objects, such as the body, weapon, and projectiles. All of these elements typically appear together on screen during gameplay.

    With that in mind, I was wondering:

    Is there any way to influence the grouping of these related objects so that they end up on the same sprite sheet? The idea would be to ensure that, when a character is loaded, all associated elements are loaded at once — avoiding partial or redundant loading during gameplay.

    Or, based on how the current system works, does Construct already handle this kind of scenario well through its existing heuristics — and trying to force this grouping manually might actually be counterproductive?

    Thanks again for your attention! Your response has already given me many valuable insights on how to better optimize the project.

  • Hello Ashley!

    I’ve been investigating how Construct 3 assembles sprite sheets during export, especially regarding memory optimization and the organization of multiple objects and animations. I carefully read the manual and conducted several practical tests, and I’d like to confirm if my interpretation is correct — particularly on a point that I couldn’t find mentioned in the manual.

    What is already documented (and confirmed through testing):

    Sprite sheets are always assembled in sizes that are powers of two.

    For example, if an object has a 32x32 texture, it will be placed in a 32x32 sprite sheet. If there are more objects or more frames, the size can increase to something like 64x128.

    There is padding between images.

    Even images that are exactly the right size (like 32x32) can end up taking up more space due to this automatic padding — the manual recommends that images be a few pixels below a power of two (like 508px instead of 512px) for better space usage.

    Sizes slightly above powers of two waste memory.

    For example, a 530px x 530px image fits poorly in a 2048x2048 sprite sheet compared to a 500px x 500px image — this point is well explained in the manual.

    Additional observations based on testing:

    Sprite size influences the sprite sheet layout.

    If I create two 32x32 objects, the resulting sprite sheet that contains them becomes 64x128, presumably due to padding.

    ➤ However, if I create the same objects at 30x30, the resulting sprite sheet is 32x64 — showing that slightly smaller objects effectively save space, as the manual suggests.

    NEW DISCOVERY

    (main point of my question):

    If two different objects each have fewer than 8 frames, they are typically grouped together in the same sprite sheet.

    ➤ However, if a single object has 8 or more frames, it gets its own sprite sheet, even if its frames are small (like 32x32). This consistently occurred in my tests, including when changing resolutions and the number of objects in the layout.

    My questions are:

    Is this behavior of isolating objects with 8 or more frames in their own sprite sheets intentional?

    Is there a specific technical reason for this 8-frame limit? (e.g., limitations of the texture packer, loading optimizations, etc.)

    Is it possible to control or influence this behavior in any way to better group similar objects together?

    I find this behavior quite interesting and think it could help many developers optimize their projects better — but I wanted to confirm if my analysis is correct

    I appreciate any clarification you can provide!

  • You need to master the basics first, then you can try doing more advanced things, otherwise, you'll just get frustrated.

  • I found out what the problem was! During the export, I had enabled the minify option in the advanced settings. After exporting a version with minify disabled, the ads started working normally again! So if you're having the same issue, check if you're not exporting with the minify option enabled.

  • I've been working with mobile games developed with Construct 3 for years, and I've never had any issues displaying interstitial ads using the Mobile Advert plugin. However, a problem recently came up that I haven't been able to find an answer or solution for yet.

    For some unknown reason, the interstitial ads in my game on the Play Store are not showing. I've checked my AdMob account and there are no limitations or restrictions — everything is properly set up.

    The events are correctly configured and working.

    Is anyone else experiencing the same issue?

  • Yes, I found the secret vehicles hehe

  • I played your game and have some interesting things to say about it:

    First of all, congratulations! I could feel that you really put a lot of care into this game. I can see it in the amount of detail you put into the levels.

    Second, you're on the right path. I was impressed by the mechanics you implemented, even as a beginner. It's just a matter of time before you manage to release a game at a commercial level.

  • It's simple, just change the layer name so that it doesn't match the name of the global layer.

  • Are you using effects in your game? Effects like glow, warp, etc.? Mobile devices can't handle the effects of games made in Construct 3.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • You do not have permission to view this post

  • You do not have permission to view this post

  • You do not have permission to view this post

  • 15 posts