TLDR: In 2.79 you could run a complex armature, put in a lot of geometry, and have no performance drop due to the fact that the render engine was optimised for performance. The Eevee engine we now have allows for beautiful graphics, but at the cost of laggy games, and no amount of sophistication in CPU power can help. Only a complete rewrite of the render engine would allow for proper 60fps again and smooth performance while being easy on the player and to work with. This could happen with Eevee Next.
Long version: 2.79/0.2x used a less powerful, but more optimised rendering engine that prioritised speed over graphics, allowing for 60 frames, even with a very complex armature and CPU-based skinning.
In 3.0, performance regressed very sharply due to a new cutting edge render engine called Eevee, which was primarily to update Blender so it could render beautiful animations with realism and advanced shaders in mind.
But the developers probably did not anticipate this would be bad for a game engine when putting the render engine in, but since they had no choice, they put it in anyway since they have to build UPBGE from Blender source code. The UPBGE internal player (and it’s external player), are based largely on Blender 2.79’s code, and must be updated to accommodate the latest version of UPBGE.
The combination of a sophisticated render engine designed solely for animation rendering, and a player that dates back from 2.79 puts a major strain on performance, since the original Eevee was never designed to be used as a game engine. Combine the extreme slowdown of bones in Eevee, and the result can be a flipbook-like experience.
But with Eevee Next, this could maybe change. GPU-based displacement is coming, which could result in a large performance boost. This won’t completely eradicate the performance problem - armatures will still be an issue with the current implementation of the modifier. Eevee Next could also change other things which will allow for a lot more performance improvements too.
And lastly, openGL. This outdated language is likely the reason for UPBGE’s extremely variable performance. While it will be changed to Vulkan/Metal in the future (possibly 4.0?), this will come at the cost of not being able to write openGL shaders anymore, so we will likely need a different shading language for writing with. But it will help increase performance a lot, and for the first time ever, UPBGE will be able to take advantage of M1/M2 chips using Metal, which will make it more like Unity.