• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Epic details Unreal Engine 4 upgrades made for Fortnite: Battle Royale

Nirolak

Mrgrgr
This is how a lot of the upgrades that go into Unreal Engine come about, but I assume they're detailing this as part of their response to Bluehole over PUBG.

We recently released a new PvP mode in Fortnite: Battle Royale. This new game mode drops 100 players into a large 5.5 km^2 playable area to duke it out and see who will be the last player standing. The scale of these requirements presented the Fortnite development team with several challenges, which will be discussed here.

In the course of developing the Battle Royale game mode we’ve made many performance, memory, and workflow optimizations that not only benefit Fortnite: Battle Royale but every developer using Unreal Engine 4, especially those building games with similar requirements.

All of these improvements are already available in both Perforce and GitHub. Many will ship in Unreal Engine 4.18 this month with the rest shipping in 4.19.

UE4 input latency:
While working on Battle Royale we identified some issues with input latency in the engine that particularly affected 30Hz games. We were able to make improvements to thread synchronization, reducing latency by around 66ms (the reduction will be around half that in a 60Hz title) to address this problem.

Console memory savings:
Here are some of the console improvements, which will ship in 4.18:

[XboxOne + PS4] Improved our low-level memory tracking tools to better identify potential memory optimizations.
[XboxOne + PS4] More efficient volume texture updates, which reduced peak memory by 240MB+.
[XboxOne] Added options for different render target layouts to maximize bandwidth utilization on the GPU depending on what rendering features are enabled.
[XboxOne] Reduced memory overhead in D3D12 descriptor heaps, and saved 120MB.
[XboxOne] Allocated and freed render targets on-the-fly to reduce memory usage by 100MB+.
[PS4] Optimized how we handle the texture streaming and defragmentation pools, saving 300-400MB.

Large maps:
Building and Rendering a Large Map
The map in Fortnite: Battle Royale has a playable area of 5.5km^2. You can see the entire map at once when parachuting in and we wanted to support long view distances during gameplay. We knew that we needed to optimize our level-of-detail solution to make that possible.

Unreal+Engine%2FblogAssets%2F2017%2FOCTOBER+2017%2FFortnite+Battle+Royale+UE+Improvements%2FFNBR_SocialRangerTower-770x433-a1b2112ca6bf4445b2c912c3036fff21ca8193cb

We used the Hierarchical LOD (HLOD) feature in the engine, backed by Simplygon, to combine regions of the map into single low-poly meshes that could be drawn in a single draw call when viewed from a distance. Those tools already exist – we use them in Paragon – but we needed to make changes to allow our artists to be more efficient.

The way the map was broken up so that artists could collaborate on it didn’t mesh well with our HLOD tools. We made some changes to HLOD to better support that workflow and added a commandlet to rebuild all HLODs in the map that could run overnight rather than requiring artists to rebuild HLODs locally.
Source: https://www.unrealengine.com/en-US/blog/unreal-engine-improvements-for-fortnite-battle-royale

There are also a bunch of improvements to dedicated server performance.
 

RoboPlato

I'd be in the dick
Those are pretty significant memory savings on consoles. Even if I'm not a huge fan of the games themselves, Epic's service titles are a great way for them to have ongoing development in a variety of situations and make changes directly to the engine.
 

Ploid 3.0

Member
Yep, Epic keeps improving when they experiment with the games they make right now. It don't even seem like they really care if they make a lot of money off of it. I don't know if they make enough money on Paragon, but it looks so good it must be worth keeping around to show off what the engine can do.
 

RiccochetJ

Gold Member
I hope this helps Bluehole to iron out their performance kinks.

I feel that the most significant changes to the engine are directed at consoles. Which makes sense because Epic got their version on there first which means that they're seeing the problems first hand.
 
Fortnite uses an Unreal Engine 4?!!, this could go to the Switch i imagine with little issue, this game engine works super well on Switch, would be nice to see an announcement along those lines soon
 

Sho Nuff

Banned
Hell yeah give me more optimizations for dat HLOD system, godsend when it comes to reducing draw calls.

Fortnite uses an UR4 engine?!!, this could go to the Switch i imagine with little issue, game engines works super well on Switch, would be nice to see an announcement along those lines soon

Yes you literally click the button and it makes the port, we are living in the future now, I look forward to the inevitable Switch port next week
 
Hell yeah give me more optimizations for dat HLOD system, godsend when it comes to reducing draw calls.



Yes you literally click the button and it makes the port, we are living in the future now, I look forward to the inevitable Switch port next week

Nintendo are also very open to X-platform, would be very sweet to have
 

spineduke

Unconfirmed Member
Does UE4 have a networking layer? I remember the PUBG devs saying part of the latency problems are tied to the UE4 engine. Supposedly Epic was working with them on tweaking the engine to resolve such issues.
 

BigEmil

Junior Member
Finalllly some decent level of optimisation for UE4 on PS4/XB1, maybe at this state it will be now good enough

Before it wasn't optimised well enough for consoles with amd architecture

Where did you get this info from btw source?
 

spineduke

Unconfirmed Member

BigEmil

Junior Member
I hope these optimizations would benefit the PS4 versions of upcoming UE4 games.
Any game that uses this version of UE4 and newer will have these optimisations though not sure what they mean by this exactly:

"that not only benefit Fortnite: Battle Royale but every developer using Unreal Engine 4, especially those building games with similar requirements."

Maybe some of the optimisations for games with different requirements and all optimisations for games with similar requirements
 
Why didn't you include the server stuff? thats what people care about!

Dedicated Server Performance

Our first challenge was to optimize the dedicated server so that it could handle 100 simultaneous players, maintain 20hz, and minimize bandwidth.

With every frame the server sends updates to all actors near that player. That means for each player we need to determine all relevant actors, figure out what has changed on those actors, and send a packet to that player with the differences. In order to minimize CPU time and bandwidth we need send the minimum updates needed to provide a good experience for players.

Much of this work was profiling and optimizing the game code but we also found many engine optimization opportunities along the way.

Here are some of the dedicated server optimizations we made for the engine:

Batched level streaming RPCs to reduce the number of RPCs that need to be sent to clients when they connect. (Will be in 4.19)
Make the OS socket buffer sizes configurable and raise them for Battle Royale. This prevents simultaneously connecting clients from overflowing these buffers resulting in excessive server load. (Will be in 4.19)
Reduce bandwidth for CharacterMovement RPCs when the character is not standing on any component, such as when jumping or falling. (Will be in 4.19)
Added the ability to limit how many players receive updates from the server per frame. We set the limit to 25 in the lobby and 50 during gameplay. (Will be in 4.19)
Limit the rate at which clients send movement updates to the server. Prevents clients running at high framerates from causing excessive load on the server. (Shipped with 4.17)
Added an option to not replicate client ping times to other clients as it results in a lot of network traffic when there are many players. (Will be in 4.19)
Removed several memory allocations during replication in FArchive::SerializeIntPacked and changing how CompatibleChecksum is calculated. (Will be in 4.19)
Switched property type comparisons from strings to FNames for speed during replication. (Will be in 4.19)
Added a way to view a dedicated server's network stats on a client in real time to more easily see stats for cloud-hosted servers. (Will be in 4.19)
Changes to the ability system to better account for relevancy, which greatly reduces replication cost when using the ability system. (Will be in 4.19)
 
Any game that uses this version of UE4 and newer will have these optimisations though not sure what they mean by this exactly:

"that not only benefit Fortnite: Battle Royale but every developer using Unreal Engine 4, especially those building games with similar requirements."

Maybe some of the optimisations for games with different requirements and all optimisations for games with similar requirements

He is clearly talking to other devs making 100 player BR games, there's probably a lot of them right now.
 
Optimisations for large maps with high player counts has much further reaching effects than just BR games too. Very exciting.
 

Neoxon

Junior Member
Hopefully SFV, MvCI, Tekken 7, & DBFZ implement these updates at some point (DBFZ may be able to more easily since it's still in development).
 
Hopefully SFV, MvCI, Tekken 7, & DBFZ implement these updates at some point (DBFZ may be able to more easily since it's still in development).

SFV lowered the input lag from 8 frames to ~6 since launch, right? Hopefully they continue improving
 

vg260

Member
Here's hoping they remove the chromatic aberration filter from the engine so no developers are able to implement it.
 
D

Deleted member 59090

Unconfirmed Member
Hope those input latency changes help with all the fighting games on UE.
 

Truant

Member
My guess is that Epic created the BR mode in Fortnite as a fast and easy way to test out Unreal Engine optimizations for Bluehole. This would explain why Bluehole was so pissed about the whole thing, seeing as they probably knew the BR mode existed for testing purposes.
 

Ploid 3.0

Member
Paragon exist for testing and showing off the game. Fortnite exist for the engine also. Bluehole are just being stupid. Epic seems to improve the engine all the time and test changes in their own games.
 

Heel

Member
So help me understand. Are these changes already implemented in Battle Royale and are now being added to the engine for UE4 licencees to take advantage of, or are they implementing these changes to further improve Battle Royale?

I hope the latter, because as it stands things like server performance leave a lot to be desired. I know they're being hammered, but it's very bad on console right now.
 

Isotropy

Member
Maybe a stupid question, but do performance and efficiency enhancements like this flow through to developers already working on an existing version of UE4? Like FFVII?
 

spineduke

Unconfirmed Member
Paragon exist for testing and showing off the game. Fortnite exist for the engine also. Bluehole are just being stupid. Epic seems to improve the engine all the time and test changes in their own games.

You don't see the conflict in interest? Considering that Epic are both their tech partner, and their competitor at the same time?
 
He is clearly talking to other devs making 100 player BR games, there's probably a lot of them right now.

With how Fortnite and Pubg are performing we will be complaining about every game having a battle royal mode. Kinda everything is ww2, modern warfare etc in fps games 10 years ago.
 

Aureon

Please do not let me serve on a jury. I am actually a crazy person.
You don't see the conflict in interest? Considering that Epic are both their tech partner, and their competitor at the same time?

Epic makes games, and licenses their tools to make games to other people who make other games.

A conflict of interest is inevitable. Apparently, considering the number of their licensees, nobody has much of a problem with it.
 

amardilo

Member
What are the chances these updates go into existing games.

I'd like to see some latency updates go into a game like Gears 4 (not that it is bad but if it can be better than that could be good).
 

koutoru

Member
Maybe a stupid question, but do performance and efficiency enhancements like this flow through to developers already working on an existing version of UE4? Like FFVII?
What are the chances these updates go into existing games.

I'd like to see some latency updates go into a game like Gears 4 (not that it is bad but if it can be better than that could be good).

They would have to update their game to the newest version of UE4 to get those improvements.
Some games choose a version of an engine and decide to stick to it for stability reasons, while others update with the newest version while still in development.
 

amardilo

Member
They would have to update their game to the newest version of UE4 to get those improvements.
Some games choose a version of an engine and decide to stick to it for stability reasons, while others update with the newest version while still in development.

I know devs can customise UE4 or take parts out and replace them but do you (or anyone) know if updating the engine to an existing game is something doable for most games or does that require to much rework?
 

koutoru

Member
I know devs can customise UE4 or take parts out and replace them but do you (or anyone) know if updating the engine to an existing game is something doable for most games or does that require to much rework?

When it comes to games that have already been released in a stable state, unless there's a specific feature they want to take advantage of, you don't often see something as fundamental as an entire engine version upgrade.

Engine updates themselves are not something you can just casually patch in, they require their own dev and qa time. Especially if you already have a game released in a stable state.
 

M3d10n

Member
I know devs can customise UE4 or take parts out and replace them but do you (or anyone) know if updating the engine to an existing game is something doable for most games or does that require to much rework?

The problem is that the amount of rework is not known until you actually try upgrading and perform a comprehensive QA to find out if anything needs to be changed with the new engine version and if it didn't introduce new bugs. If your game is using a modified version of UE4, then you need to merge your modifications into the new version. The more extensive the modifications, the harder this becomes. Finally, depending on how large your team is, you also need to deploy the upgrade on everyone's workstations.

This is why it's not recommended to upgrade projects that are in advanced development state, unless the upgrade brings significant advantages that are worth extra (and unpredictable) dev time.
 
Top Bottom