This is an archived news post. Some content and links might not work as expected.
This is an archived news post. Some content and links might not work as expected.
In addition to bug fixes and cool new content that will be part of this week’s release, update 4.2 also includes an Engine Upgrade. This update is a technical back-end improvement that may not add flashy content to the in-game experience, but is an integral part of us continuing to upgrade Squad and ensure that it has a lot of longevity to come. It will also help to better support us in all of the exciting content plans we have for 2023.
We’ll be keeping a close eye on how this engine upgrade impacts performance, and thank you all in advance for any bug reports you send our way. We will add a dedicated forum thread for reporting issues directly related to the engine upgrade.
For those of you that are interested in all of the technical nitty-gritty, we’ve got a great breakdown of the engine upgrade below! For those of you that are less inclined to keep reading, just be on the lookout for anything you wish to report – performance edge cases or new bugs, we want to be aware of all of it. Thank you for partnering with us in the continued quest to make Squad better!
_____________
Squad is built using Epic’s Unreal Engine. In this blog we’ll use the term Unreal Engine or UE here to refer to both UE4 and UE5. UE5 is an evolution of the development line of UE4, not a separate development started from scratch.
Squad’s origins are closely tied to UE4. Squad started development on one of the first versions in 2014, and released on Steam with version 4.10 in 2015.
Since then Epic has released 20 major updates to the Engine, and Squad has been following. Often multiple engine releases were combined in one update, leading to a total of 6 engine upgrades since launch. Engine upgrades are often a major effort, especially for a large game like Squad, since existing game functionality will need to be adapted to changed engine functionality.
It is possible to get engine improvements into the game without updating the engine. We can bring individual fixes from new engine versions into an older version (merging), which we frequently do for crash fixes for example, or we can even start developing the engine independently from Epic. The former becomes harder the further behind we are in engine versions, as changes pile up on top of each other. The latter would prevent us from benefiting from the work all the talented people at Epic do.
We decide, whether to update the engine, based on a number of factors
Improvements in the engine could be better performance, better visuals, supporting new features, as well as new tools and workflows to support the development.
In the early days of the engine, there weren’t any large-scale multiplayer games like Squad on UE, and the requirements of this type of game weren’t well supported. Squad launched with a maximum player count of 40 per server. Successive updates to the engine, especially during the “Fortnite period”, enabled a much larger scale for the game, but in turn usually required us to remove some of our own optimizations, in favor of using the engine’s way of making the game run better. That’s why an initial release of Squad on a new engine version often didn’t significantly increase performance, but the following updates did, as we were able to gather more information on shifting bottlenecks and used the new tools to their full potential. Engine upgrades enable us to make the game run better, or to maintain performance while we’re increasing the scale and features available.
From a technical perspective the most impactful change we made in this update is in the graphics API. While UE4 has supported Direct3D 12 (the graphics API part of DirectX 12) for years, in the past the disadvantages outweigh the benefits of using the low level API in Squad. With UE 4.27 we found that DirectX 12 is now ready for Squad and enabled it as the default graphics API. Direct3D 12 brings huge gains in rendering scenes with lots of objects, as it allows the necessary CPU work to be better distributed. This has the potential to create new bottlenecks, with buffers getting flooded with the sheer amount of data available and the frame rate potentially being less stable.
In the past months we spent a lot of time on overcoming issues like this. We expect that DirectX 12 will be the best choice for almost all Squad players, but since there are countless possible system configurations we can’t know for sure and included the option to switch back to DirectX11 in the main menu. If you experience issues, please give it a try and send us feedback. DirectX 12 also allows support for advanced temporal upsampling algorithms.
We have integrated AMD FSR version 2.1.2, which is the latest version available for Unreal Engine. FSR 2 is an open-source temporal upsampler. Based on information in the current and previous frame, as well as information passed in from the game, like how the camera is moving, it can calculate more detail into images than has been rendered. This allows to render games in a lower resolution than the native monitor resolution and then upsample the image to the native resolution, without a significant loss in image quality.
This upsampling process takes far less time and memory on the GPU, then rendering the image natively at that resolution would take. In short, using FSR gives better performance in scenarios where you are GPU-bottlenecked. There are also temporal upsampling solutions from Nvidia and Intel, which we’re evaluating. For this release we decided to ship with FSR 2 only, as it is supported on all GPUs and as an open-source solution was easy to integrate.
The focus of the engine upgrade has been performance. Depending on your individual system, it is possible to get double the frame rate, or more, in some scenes compared to previous versions. The gains will be more limited or non-existing when there are lots of moving objects, like other players, vehicles and projectiles around you. That is because all the necessary updates your client computes and you receive from the server will start taking up more time than the rendering of the scene. Squad is making heavy use of distance and visibility based optimizations, to reduce how many times objects are updated. The engine comes with advanced methods to help determine what information is most relevant to you at any given time and focus on updating what really matters to you. We are now working on transitioning some of our optimizations to these advanced methods, to unlock better performance in situations, which are full of action.
A difference that will be immediately visible is the new water, which was possible to create thanks to better support by the engine for the features required to render it. The new engine version also comes with many bug and crash fixes, as well as tools and workflow improvements. Over time these will enable us to rework existing features and content in Squad for better performance or visuals. In total there are tens of thousands of engine changes between UE 4.23 and 4.27. Some of these changes will bring new bugs, many of which we have found and fixed, but there will be others which we haven’t. As always, please report any new bugs you encounter in discord.
Unreal Engine 4.27 is generally considered a very stable and mature release, as many of the more ambitious and experimental changes to the engine were developed for UE5. Taking this intermediate step allows us to gather information on the state of the game with this version, making it easier to pinpoint the root cause of any issues we may face in a future engine upgrade. If an issue doesn’t appear on UE4.27, but it does on UE5, we can look at the changes between those versions. If we try to jump a lot of engine versions at the same time, this becomes much harder due to the accumulation and stacking of changes.