I wish I had good news about this. If this is happening to you, there’s unfortunately very slim chance that it’ll ever get truly (properly) fixed. I’d love to be able to blame this on FC, but it’s probably not actually their fault (in THIS case). Anti-optimizations are likely to result whenever they update their version of the game engine internally and/or whenever they attempt to import up-versioned engine features; due to a surfeit of compounding issues within the engine itself, they will only get harder and harder to fix over time as a rule. This is becoming a major obstacle to progress and performance-maintenance across the industry, but particularly for UE projects.
(I’m bored and waiting on coworkers to catch up at the moment, so the following is what’s going on in more detail, for those who are curious):
The “optimization”—along with many other recent ones added to the game—causing this performance problem isn’t actually an optimization at all. What they are actually doing is offloading work to previously-unused/unavailable instruction sets which are present only in more recent (processor) hardware. Sounds good in principle, right? Those instruction sets can perform some specific jobs much more efficiently than otherwise possible without them; that’s why they exist. So, sure, in theory it’s great to have that option… unless you don’t have hardware with those instruction sets. But in that (very common) case, updates to any major game engine will normally preserve—and even typically enhance!—legacy/fallback functionality for the vast majority of framework projects that aren’t running on brand-new hardware, (with any subsequent overhead additions handled strictly by the new offloads, per industry standards and common sense). Done correctly, it should only improve performance across the entire user base overall, barring the odd bonafide bug. Simple, right?
Here’s the thing: In CE’s case, (being a UE title), the developers in charge of that engine framework (UE) are absolute morons that have all but completely abandoned support for all but the latest hardware releases… pretty much just because they can. (Though Intel/Nvidia’s aggressive financial incentives sure aren’t helping. They’re fast becoming the electronics equivalent of a medical insurance company). Every time they push a new build, they don’t bother preserving legacy functionality very well—if they deign to attempt to do so at all—and thus more and more (perfectly-capable) legacy hardware gets arbitrarily pushed out of the compatibility pool, with those needless incompatibilities then being inherited by any project (e.g. CE) that versions up.
This leaves primary framework users (game developers) to foot the bill for framework developers’ incompetence and corruption - typically in the form of struggling to write their own hacky framework patches, (not something that most framework-prefab studios are at all suited to doing), which in turn are almost guaranteed to break something else.
So, thanks to the UE de(generates)vs, your application can’t offload that “legacy” work anywhere, and no longer knows how to do it the way it used to; suddenly that once-manageable workload just got harder for your hardware to do - for absolutely no good reason, and with no upside whatsoever for you. Voila! Performance hit for you! And you! And YOU! Everyone gets a performance hit!!
UE (CE’s core framework) development team is by far the worst in the industry in this regard, and it’s getting worse year after year. Send UE game devs your deepest sympathies. Send UE framework devs your goriest hatemail. GL <3