YoYoGames / GameMaker-Bugs

Public tracking for GameMaker bugs
26 stars 8 forks source link

Only rebuild texture pages whose sprites have actually been edited #2814

Closed WangleLine closed 1 year ago

WangleLine commented 1 year ago

Is your feature request related to a problem?

I work as a gameplay programmer on a title with many various assets in its gamemaker project. This includes sprites. Whenever I make a small tweak to a sprite in the IDE and launch the game, gamemaker spends around 4-5 minutes recompiling, with a majority of this time allocated to rebuilding texture pages.

This feels like a big waste of time, considering there is no need to rebuild texture pages whose sprites I haven't changed.

Describe the solution you'd like

Don't re-process/re-atlas all texture pages & texture groups - Only do this for ones with changes in them.

Describe alternatives you've considered

External sprite loading, but that has its own set of limitations and difficulties.

Additional context

No response

rwkay commented 1 year ago

This is actually what happens already but it has to happen at the Texture Group level so when a sprite changes the Texture Group is rebuilt (as there may well be a more optimal layout for this group). You should really have multiple Texture Groups for any non-trivial project. All parallelisation happens at the Texture Group level so it is inefficient to just keep a single default texture group.

For 2023.11 as well we have optimised the texture packing algorithm and it is around 2-3x faster than before, this depends on the composition of the images in your texture group though so YMMV.

scott-dunbar commented 12 months ago

I can confirm that this is indeed how it works as per Russell's comment - confirmed in IDE v2023.11.0.120 Runtime v2023.11.0.157

WangleLine commented 12 months ago

Ok, thank you kindly