0 Favourites

MM_Preloader (layout preloader) (Plugins)

  • Overview

    v1.5.1 update (2017-11-11)

    • * Fixed a bug where in some cases the preloader was not preloading objects after toggling between the same layouts or unload/preload sequence.

    v1.4 update (2017-08-17)

    • Plugin is now compatible with C3 (c3addon added to the pack)
    • Fixed an issue where plugin could have a problem with detecting if an object was already preloaded or not in certain cases

    v1.3 update (2017-07-29)

    • Lazy preloading added. Preloads with specified interval. Potential use case: preload next layout while playing the current one

    v1.2 update (2017-06-27)

    • Spriter SCML objects compatibility adjustment

    What is MM_Preloader?

    It's a plugin which handles any type of preloading:

    • Layout preloading - preload elements of the next layout to get rid of layout transition lag
    • Layout initialization - hook any custom functions to preloader: AJAX, import, multiplayer connection, required calculations, etc.
    • Lazy preloading - slowly preload elements of the next layout while playing current layout
    • Loader layout - game initial loading screen

    Does this plugin just calculate the % or really preload items?

    It is a real preloader. With a single action MM_Preloader finds and preloads (loads to memory) all Sprites, Tiled Backgrounds, SpriteFonts, SpriteFonts+, TileMaps and even Spriter objects of the selected layout. You can also preload custom objects or actions.

    How do I use it?

    Simply add items to the preloader's list and trigger Start action. Plugin will automatically preload and calculate the current preloading progress based on number of added items (and their current preloading state). While it's processing you can use expressions to fetch current state of preloading.

    What can I preload?

    Really anything. The best feature is the ability to preload assets of layout you are switching to, so it's possible to make a preloader between two layouts (not possible by default in C2).

    You can use it on Loader Layout and easily make the initial preloader of your app.

    It is also possible to add custom items which means that you can preload sounds, AJAX fetching progress, Ads, multiplayer connection, etc.

    Can I make visual preloading?

    You can make any visual appearance you want. MM_Preloader does not draw anything, it just preloads and calculates the progress. Based on the current progress you can make any visual custom preloader you need.

    Warranty

    This plugin has lifetime warranty.

  • Uploaded version 1.2. It has exactly same set of ACEs, there's just a small fix for better compatibility with Spriter's C2 plugin.

  • Hi, I have a couple questions if you don't mind.

    First, I've noticed for your other plugins you specify in the warranty

    [quote:dfflmswm]This plugin does not rely on any third party libraries (not even jQuery) so it will never get outdated or broken. Lifetime warranty.

    Same thing with this preloader?

    Publishing on mobile would it need to be added to the wrapper plugins (Cocoon, Intel XDK) as well to get the extra functionality or it works internally so it isn't needed?

    Thanks and.. Awesome plugin

  • Hi CrK

    MM_Preloader does not use any third party library. It also has a lifetime warranty. I just haven't updated the description yet .

    No need to add any Github or Cocoon plugins. It works straight away on every platform.

    BTW there's v1.3 already available with "Lazy preloading" possibility (preload next layout while playing curent one). I should update the desciption soon with details.

  • BackendFreak Sounds great

    And even more flexible with the lazy preloading functionality, but couldn't show some lag on the current layout while preloading and running events at the same time?

    Thanks for your time, I'll buy the plugin very soon

  • BackendFreak Sounds great

    And even more flexible with the lazy preloading functionality, but couldn't show some lag on the current layout while preloading and running events at the same time?

    Thanks for your time, I'll buy the plugin very soon

    Lazy preloading works best with many yet small assets, then there's no lag at all. If there are some big assets then the lag can occur indeed. Still there are some workarounds.

    Let's say that you have just two big assets and all the rest is quite small. Those two are background layers for instance.

    So at the beginning of current layout you can make a short regular preloader for just those two objects (add object to preloader manually), and then start lazy preloading of the next layout while playing the current layout. Preloader does not double load the asset so the backgrounds will be ignored in lazy preloading since they are already in memory).

  • Lazy preloading works best with many yet small assets, then there's no lag at all. If there are some big assets then the lag can occur indeed. Still there are some workarounds.

    ...

    I see, interesting workaround and I guess you have to take in account the device memory since if the current layout is still running this means C2 hasn't unloaded the assets in use so both need to fit into memory before switching, right?

    One last thing, idk if I'm overthinking but is making a sort of "global" preloader possible? Kind of one preloader layout using MM_Preloader that works dynamically for whatever layout you switch to after it.

    So let's say you run "layout 1" > then go to "preloader layout" > it preloads the next "layout 2" and switch to it, then you go again to "preloader layout" this time preloading "layout 3" and so on. Hope it makes sense

    What I'm wondering is if it's meant to be used making many loader layouts between every regular layouts (like LAYOUT 1 > LOADER 1 > LAYOUT 2 > LOADER 2) that needs to be preloaded or it can be reused in some way.

  • One last thing, idk if I'm overthinking but is making a sort of "global" preloader possible? Kind of one preloader layout using MM_Preloader that works dynamically for whatever layout you switch to after it.

    So let's say you run "layout 1" > then go to "preloader layout" > it preloads the next "layout 2" and switch to it, then you go again to "preloader layout" this time preloading "layout 3" and so on. Hope it makes sense

    What I'm wondering is if it's meant to be used making many loader layouts between every regular layouts (like LAYOUT 1 > LOADER 1 > LAYOUT 2 > LOADER 2) that needs to be preloaded or it can be reused in some way.

    Yes it is absolutely possible and recommended. There's an action "Add all objects from layout (by name)" which can take a string variable (layout name) as a parameter. With this one you can make a generic preloader layout as you described above.

    Actually there are two ways of achieving such generic preloader. One is by making a separate preloader layout. And the second approach is by making a layer dedicated for preloader global. With such layer you just need to set the visuals only once.

    I'd recommend the approach with global layer, it will work faster in certain cases. Note that separate layout for preloader will work, but it's a double layout transition so C2 will release assets of Layout1 from the memory and then load all assets from Layout2 with preloader. While with global layer approach common assets for Layout1 and Layout2 will not be released/re-loaded.

  • Yes it is absolutely possible and recommended. There's an action "Add all objects from layout (by name)" which can take a string variable (layout name) as a parameter. With this one you can make a generic preloader layout as you described above.

    Perfect!

    Actually there are two ways of achieving such generic preloader. One is by making a separate preloader layout. And the second approach is by making a layer dedicated for preloader global. With such layer you just need to set the visuals only once.

    I'd recommend the approach with global layer, it will work faster in certain cases. Note that separate layout for preloader will work, but it's a double layout transition so C2 will release assets of Layout1 from the memory and then load all assets from Layout2 with preloader. While with global layer approach common assets for Layout1 and Layout2 will not be released/re-loaded.

    Mhhh I didn't think it could work as a global layer and it sounds indeed the best way, I just have to play with it a bit to see how to set it this way as I thought it would need a layout with some logic (like: on start of layout > add all objects etc) to make it work.

    Seems like this plugin has all pros and no cons at all, so great job!

  • Construct 3

    Buy Construct 3

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

    Buy Now Construct 3 users don't see these ads
  • You can make it with global layer and create a separate event sheet "Preloader" with the generic logic which then you simply include in the particular layouts event sheets. No need to write redundant code obviously.

    Regular preloader for layout transition is triggered at the end of current layout, not at the start of next layout.

    Please see the capx attached to plugin version v1.1. There are some implementation examples.

  • What is the stabilizer? I turn it on but when do i have to turn it off?

  • What is the stabilizer? I turn it on but when do i have to turn it off?

    Hi Xh3maa,

    I briefly explained the Stabilizer in the FAQ on the store page:

    [quote:3pqv2op7]Stabilizer is a built in feature that monitors the current FPS. If FPS is stable, the stabilizer sends a signal to the preloader that stabilizing process is completed.

    If you enable the Stabilizer then the "Stabilizer" item is added to the preloader list which is always processed as the last item. As described above, it checkes the current FPS and if it's greater or equal of the "Minimum FPS" property (or "Maximum checks" * "Check frequency" seconds passes) then the item is considered as 100% completed.

    Stabilizer simply assures you that all background processes (like rendeding, memory release, memory load, etc.) are completed and the engine is now "stable". Even though it's a useful feature in some cases, it's not needed in most of cases - that's why it's disabled by default.

  • Hi, I think this plugin is what I need.

    Does it support C3 ? Because I use C3 now. thanks.

  • Hi, I think this plugin is what I need.

    Does it support C3 ? Because I use C3 now. thanks.

    Hi mahaiting,

    [EDITED]

    Yes it does, please see the post below.

  • MM_Preloader v1.3 and up is now compatible with C3.

    By purchasing MM_Preloader from now on you will receive a .c2addon and .c3addon files.

    I've just submitted c3addon to the store, should be available to download within 24h (Scirra has to approve new files).

    @mahaiting this might interest you.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)
Similar Topics Posts Views Last Post
Unread hot topic
1,068 148,674
Reflextions's avatar
Reflextions
Unread hot topic
0 Favourites
[plugin] firebase
687 65,154
cybertron7's avatar
cybertron7
Unread hot topic
0 Favourites
[PLUGIN] Canvas
627 186,695
zenox98's avatar
zenox98