Ashley's Recent Forum Activity

  • Are you using the latest release? The latest versions already group different objects on to the same spritesheet if they are consistenty used together on layouts across the project.

    Either way, it's a common mistake to put too much artwork in to one object - we've seen a number of cases where that was to blame for unnecessarily high memory usage, so it can definitely be a bad thing. Perhaps if you group a small number of large images together that can be a benefit, providing they're always all used together.

  • Taximan

    > To save memory you can group many objects in a single sprite

    I must say that it has already crossed my mind and I'm thinking about doing this. Although that would require some major changes to my event sheets. So you really had advantages with this?

    This is actually worse for memory management. Construct can only load or unload entire objects in to memory. If lots of objects are combined in to one it forces Construct to load everything, making it likely memory is wasted. If they are kept as separate objects there is better granularity to load some but not others, saving memory.

    But there is one thing I can't find info on is the Project property Max Spritesheet Size.

    It's only available on the beta channel at the moment. We only update the documentation when it makes a stable release.

  • FYI that is mentioned in the signalling server description:

    purchasing an SSL certificate to encrypt the connection to the signalling server, which improves connectivity for some devices

  • I'm afraid I'm not telepathic - the reason we have all the bug report guidelines is to ensure there's enough information to actually be able to help. If you don't provide that all I can do is guess, and if you don't like my guess, then I suppose I should insist on the full details set out by the guidelines.

  • However, some more insight into how Construct manages memory would be a great fit there.

    That's also covered in the manual.

  • See Performance Tips. This is up-to-date advice documented in the manual.

    I must note that people often make games that exceed the hardware capabilities of their device and then blame Construct. You can't do more than the hardware specifications of the device allow - no software or tool will save you from that.

  • The problem makes no sense. The trigger fires before changing the "is connected" state. I would guess this is simply a mistake in your events. I can't tell any better without more information.

  • The project is corrupt because the object "smfighter" has two animations named "Animation 10". I deleted both and it opens again - here's the recovered project: https://www.dropbox.com/s/ex33ca1sbuvch09/somari-recovered.zip?dl=0

    We definitely want to fix any project-corrupting bugs but there's nothing else we can do unless we know how it happened in the first place. If you can figure out a series of steps to create the problem in the first place, please do file a bug report.

    While working with that project I did come across another bug in spritesheet building... it may or may not be related to this case, but I managed to fix it for the next release. So you should probably wait until the next beta (r135) before continuing to work with the recovered project.

  • 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 you define a function but never call it. So the code will never run.

  • No idea. My best guess is a third-party addon with a missing or unavailable file.

  • As ever the best way to deal with performance questions is rapidly mock something up and take real measurements. This will help you identify what the real problems are rather than speculating.

    I think with a large open-world style game the main issue you will come across is managing GPU memory efficiently. It would be all too easy to just load in hundreds of megabytes of textures for all the content and end up with really high system requirements. You'll need to make careful use of C3's memory management actions. Splitting content across layouts is a good idea if you can, since the C3 engine will then handle per-layout memory management for you (and it will also tend towards having fewer objects).

    Other than that, make sure you enable "render cells" for efficient drawing on large layouts, especially on layers with mostly static instances. Then, providing most of the far-away content is static, the engine is highly scalable (i.e. more or less able to work in constant time regardless of how much more content there is in the layout). If you have far-away objects moving or having events tested on them, this will consume more CPU time, but then this is entirely within your control as a game design issue and not an engine issue.

    One useful performance approach for open-world style games is to use overlap conditions to reduce the set of objects to run events on. Suppose you have 5000 instances spread across a huge layout. Normally a single event on that object will have a high CPU overhead, since it must test all 5000 instances. However you can take advantage of the efficiency of collision cells to reduce this. If you make a large invisible rectangular sprite as large as the area you want to count as "nearby", and then pin this on the player, the condition "is overlapping NearbySprite" is very efficient since it uses collision cells to reduce the instances to check against. In other words it won't check all 5000 instances - it will only check against nearby instances and then filter those down to the ones overlapping NearbySprite. Then you can add more conditions to the event, and the rest of the event runs efficiently only taking in to account nearby instances, without ever having to iterate everything in the layout. (If you're worried about the performance of collision checks, they're pretty fast, and in this case the main point is to improve the algorithmic efficiency, i.e. reducing the number of instances processed.)

    You can then extend this to a single "X is overlapping NearbySprite" event and all the rest of your logic for X in subevents beneath that. Then you have an efficient way to only run events for objects that are nearby - the amount of CPU time won't increase no matter how many far-away instances are added.

    I don't think anything else will prove to be as significant as those points. In particular using folders has zero impact on CPU usage, and the GPU rendering performance only relates to what's on-screen, so is naturally scalable regardless of the size of the layout.

Ashley's avatar

Ashley

Early Adopter

Member since 21 May, 2007

Twitter
Ashley has 1,830,074 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