Options to reduce quality

Just before, I lost yet another wait-a-day challenge (Sarven Treasure) because of many lag spikes before finally freezing until the time ran out.

The above screenshot shows where the simulation froze prior to running out of time.
As you can see, I was using the light-weight strategy of manually controlling movement using flags and I was close to reaching the goal.

What if there were options to change things such as graphics quality, remove the image in the background (map thingy in this screenshot, loading screen), remove the voices (when clicking on an enemy), etc.? Could that reduce lag?
An option to stop automatic simulation when the level is loaded would also be helpful.

I don’t know how big a difference it makes for each different game, but the easiest way to attempt “remov[ing] the voices” is turning the sound/music OFF . . . and I notice that you have them ON.

We haven’t found any non-critical things we can remove that significantly help performance. If we did find some, we would start automatically disabling them when the framerate dropped low enough.

Can you explain more about how you want to stop automatic simulation when the level is loaded?

I’m pretty sure that the code starts simulating (starts playing) automatically right after the level is loaded. It probably won’t help with overall performance but it would be nice if there was an option to make the level be paused upon loading.
Something that should definitely reduce lag is adding options to cap the simulation speed. For example, in the game Besiege it is possible to run at a slower speed to reduce lag spikes.

A side note: Why is an infinite loop sometimes detected while the level is loading?

We do need to simulate the whole level before showing it to you, but it’s an open question whether it should start playing or paused.

We set the simulation framerate per-level as low as we can go and still have good fidelity for the interactions needed on that level. Framerate on the front-end dropping low is usually more of a symptom that something else caused the game to slow down, not a cause of slowness, unless possibly you don’t have working graphics acceleration.

Infinite loop detected during level loading: either a programmer error, a really slow computer, or you code has an infinite loop. I just added some more debugging details to it so that it tells you to check the JS console when you see that and look for the cause, and it also emails me if it’s actually a bug in my code, so it’s easier for me to track those down.