Hyper Light Breaker

Hyper Light Breaker

Very Bad FPS Performance
The game needs a critical optimization pass

Direct to the point, I own the following hardware: i9 13900k, RTX 4080 SUPER, 48GB Ram 6800MHZ, 7000MBPS SSD.

With this hardware I cant even reach consistent 90fps on the game (fps moves around 80 and 180, 1440p mid settings). Even lowering settings and resolution won't help the framerate at all. This is obviously because code is producing a serious CPU bottleneck.

I'm Unreal developer aswell, and I can tell specifically why this is happening... because many parts of the game are coded using Blueprints, a scripting language that gets to be up to 200x times slower than native code.

References to the speed of blueprints vs c++(native code):
https://youtu.be/yk2J1sdQ-5I
https://www.reddit.com/r/unrealengine/comments/6qtxy3/test_blueprint_vs_c_performance_vs_nativized_bp/

My test project using bubble sort https://drive.google.com/file/d/19GjQwnrl0W01KGAbuASAAP8hc1OeXIiQ/view?usp=sharing


For non-technical people, this means that the game was made using some nonprofessional tools within the engine. It's the main reason of the utter poor game performance.

Native code is best to deliver a good End User experience to the actual players, please Hearth Machine take note of this and take action by refactoring several parts of the game to native. Also, this will help with production time of code in general, because for experienced programmers typing code will always be faster than dragging nodes around.

Also, since the game usually has many enemies activate, consider paralyzing the character movement component. This would entail doing the Move part of the CMC on a UE Tasks (parallelized) then back to the game thread doing a deferred move and the subsequent overlap and physics steps. For 25 actors, this optimization lowers the processing time for cmc from 3.5ms to 1.2ms.

To be specific, please rewrite player logic, weapon logic, managers, and AI logic including the Behavior Tree tasks/decorators/services in native. Create the components from c++, as blueprint created component as heavier.


At least I leave a video of the game running on the Steam Deck. as you can see the game goes below 19fps! https://youtu.be/olaQuxOdViE?t=131

When games such as Zelda Breath of the Wild run on a much slower system such as the Wii U/Switch are a thing, this just can't be.

The end user's hardware should be utilized efficiently and effectively!
Laatst bewerkt door Pixel; 10 feb om 20:56
< >
1-9 van 9 reacties weergegeven
you have a really good argument here man, i just wish they'd be able to see it properly here on steam. I think they are only able to reply to these types of messages on their official discord for the game, you can try and post it there!!
ah see as a hobbiest dev I would def use blueprints, and when I was done with my game, Id hire someone to do it in c++ for sure because of what you said. Also came here because I have a 4090 and was getting 45fps every now and then. I think they dont cache anything in memory so when you leave one area like ONE LITTLE AREA it stutters like mad because its loading a new zone and unloading the old. But in this case maybe with LODs and textures. Its so insane, and I NEVER post here and I had to because of this.
ya know what, Id like actually love to hear more about what you think! I have a 3950x which I know is bottlenecking my gpu but this bad?
Origineel geplaatst door grahamquest:
ya know what, Id like actually love to hear more about what you think! I have a 3950x which I know is bottlenecking my gpu but this bad?

Issue is with the enemy code first. One thing is that the enemies are Characters and all of them have CharacterMovementComponents, evidently the studio hasnt multithreaded this component which is pretty much a necessity given the amount of enemies and on top of that, the AI decision logic is evidently written in BPs. So its essentially this game is just fully using a single thread of the cpu where all the game logic is happening so fps go down regardless of gpu and even if you literally have the best cpu onthe market.

Like if you go play with your same hardware Battlefield 1 or 2042, you will see how the game performs way better than Hyper Light Breaker even with 100+ players and high fidelity graphics
Laatst bewerkt door Pixel; 5 feb om 1:13
Hi, I'm an *actual* game developer in Unreal, and the OP has no idea what they're talking about.

Blueprints aren't "non-professional" tools. They're used by nearly every single game made in Unreal Engine 4/5, including Fortnite, and are not even remotely close to "200x slower", even in the worst possible real world cases. Unreal is designed to use a mix of C++ and Blueprints for maximum flexibility and performance. If you're interested in this topic, I recommend this video by Alex Forsythe: https://www.youtube.com/watch?v=VMZftEVDuCE

While the OP is partially correct in that the character movement component is typically considered "heavy", you have no idea what optimizations are present, how these are handled, or if the bulk of frame time is even coming from those at all. Have you done a performance sweep? Care to show me your Unreal Insights tool frame breakdown on Breaker? Do you have access to Heart Machine's tech stack, and you know precisely where the bottlenecks are coming from?

tl;dr: ignore the OP. Absolute armchair nonsense.
Laatst bewerkt door Feep; 8 feb om 0:28
How would you know if the game is written entirely in blueprints? And if so why is the game is struggling on the gpu rather the cpu or the game thread? It really almost has nothing to do having shipping blueprints. As Feep mentioned, a lot of features in unreal are using blueprints such as widgets(UI), gameplay abilities, heck even animations are using anim blueprints. There's no way in hell to my knowledge extracting or reverse engineering the game's code in shipping build and most of the shipping build I believe strip our the pdb files which make it even harder to know the scripts behind the scene.

Please don't spread misinformation about the game's optimization unless you have at least some prove. The steam deck video you linked doesn't show that the cpu is struggling at all.
Origineel geplaatst door Feep:
Hi, I'm an *actual* game developer in Unreal, and the OP has no idea what they're talking about.

Blueprints aren't "non-professional" tools. They're used by nearly every single game made in Unreal Engine 4/5, including Fortnite, and are not even remotely close to "200x slower", even in the worst possible real world cases. Unreal is designed to use a mix of C++ and Blueprints for maximum flexibility and performance. If you're interested in this topic, I recommend this video by Alex Forsythe: https://www.youtube.com/watch?v=VMZftEVDuCE

While the OP is partially correct in that the character movement component is typically considered "heavy", you have no idea what optimizations are present, how these are handled, or if the bulk of frame time is even coming from those at all. Have you done a performance sweep? Care to show me your Unreal Insights tool frame breakdown on Breaker? Do you have access to Heart Machine's tech stack, and you know precisely where the bottlenecks are coming from?

tl;dr: ignore the OP. Absolute armchair nonsense.

Clearly individuals like you are incapable of objective engineering discussion. I've posted on this same thread how blueprints can get to be up to 200x slower than c++. For example the is bubble sort public example. https://drive.google.com/file/d/19GjQwnrl0W01KGAbuASAAP8hc1OeXIiQ/view?usp=sharing

The execution speed of blueprints in comparison with c++ goes from 4x up to 250x for a diverse set of tasks.

Blueprints are a truly extremely slow scripting language as it abstracts a hell lot of logic in order to achieve "ease of use". Blueprints use a Virtual Machine that under performs even when compared against very High Level Languages such as Javascript, Python or Lua.

To think a language as Blueprints isn't as performance clearly shows how ignorance over essential software engineering/computer science knowledge. "Unreal is designed to be used mixing BPs/C++" -> What ? You can fully program in c++ including animation logic, most AAA games have been fully made with c++, actually almost no well known game has been coded with gameplay logic on some sort of visual scripting tool. And for the small amount of cases this happened to a degree, it implied a degradation of the product for performance reasons.

As for Character Components, you clearly have never attempted to improve CMC performance, the techniques I've mentioned regarding paralelizing CMC logic have been widely use in AAA developments.


________________________________________________

More importantly. STOP JUSTIFYING POOR PROFESSIONAL PRACTICES THAT CAN ONLY DELIVER AN INFERIOR PRODUCT TO CUSTOMERS.

What is of relevance is the end user experience!
For the people that do not work within the software industry. What these last 2 comments from so called "actual game devs" in this thread actually represents is no more than a degradation of professionals skills within a profession. In this case software developments.

Obviously this is no way representative of the industry as a whole but there's certainly a movement of sorts of certain groups that do advocate for inferior software in the name of "convenience"... in truth we know this simply a way to justify incompetence.

Me, both as a software engineer and a customer simply don't want inferior products. I know that other people, as customers like me will agree on this.

This video is a good explanation of this beyond the bounds of "programmers" https://youtu.be/ZSRHeXYDLko
Laatst bewerkt door Pixel; 10 feb om 20:54
Yes, the entire games industry is wrong and some guy on Steam who (checks notes) made a Bubble Sort in a gray boxed default first person template project is definitely right.

Carry on
< >
1-9 van 9 reacties weergegeven
Per pagina: 1530 50