Blenders suspend scene breaking things

Under the scene actuator is a setting called suspend scene. Effectively what I have done is set it up so that when I press esc it pauses my main scene and adds an overlay. Once you press a button on that overlay scene it removes the scene and resumes the main one.

Here’s the first problem, objects that have animations if in mid-animation upon resuming the main scene have a high chance of replaying, so say if I have a door and its halfway through its opening animation, I pause then resume, it will restart its animation of opening. The reason this is such a problem is that I have a boss character who’s collision objects are directly tied to its animated rig, and because of the way its set up, if you pause it and it breaks the animation he can have two attacks happening at the same time.

My second issue is audio, upon pausing a scene the primary scenes audio will still play. So for example say if I had a character lip-synced to dialogue, well if I paused his character would obviously stop playing its animation but his voice work would still be playing meaning, if I were to resume after the audio ended even if the animation doesn’t break his lips will be moving without any audio accompanying him.

Also, I have no experience with coding, so if there is an answer you know that requires coding to fix these problems I’ll need a bit more help then saying, just use this code and insert the properties you need into it.
And yes I have already tried upbge, It fixes the problem but my games performance is more than halved and I have tried various means to fix it to no avail so that is not an option.

turn off environment lighting in the render properties to help speed up upbge.

i use 2.74 and it works.

I have all those options but one disabled pal, still ran luke crap.

for animations you can catch the frame number, save it and let the action play from it when you resume the scene.
that animations break is well known for a year + by now.

That’s nice and all but how.

In a way to read the armature actions etc.

you can check if an action is playing on any layer, then save the frame and other details.
example:


            action_layer = 0 # the layer the animation is running on
            frame = armature.getActionFrame(action_layer) get the frame of the action on the layer that the armature is playing
            
            if frame > 36 and frame < 38:
                #frame between 36 and 38, so frame 37

I dont think you read my last bit

“Also, I have no experience with coding, so if there is an answer you know that requires coding to fix these problems I’ll need a bit more help then saying, just use this code and insert the properties you need into it.
And yes I have already tried upbge, It fixes the problem but my games performance is more than halved and I have tried various means to fix it to no avail so that is not an option.”

you ask how, so i have given you an example on how to grab the frame and to do stuff at a set frame.
You indeed need python for this to catch all the info, then save it, and then you need to restore it all to the right animations.

For this particular request, i can not help you, simply due to it needs a custom script, you want to catch all animations from all armatures that are playing an animation, and all your other needs.

what i would do is make a loop to grab all armatures put it in a list, then loop trough that list, then loop trough the layers and then save all the information on the armature/object it self. but before this i would make sure that i have saved the animation that is playing in a property on the object it self, so you have a reference

But because you don’t have experience with it, you should learn it. Sooner or later your stuck and python will be the only way to solve it or to actually make what you need.

Thanks for trying i guess? But that still doesnt address the sound issue.