Now that UE is a 64-bit game engine, will there be a 64-bit coordinate system for large worlds and space games?
Unreal Engine has been a 64-bit application for a while. 64-bit means that a memory address is 64-bit (8-byte) large . When a program is 64-bit and is on a 64-bit system, it can use more memory. 32-bit applications cap out at 4GB. This has nothing to do with the floating-point precision size. Unreal Engine uses the float
type, which is 32-bit. Changing the floating-point type from float
to double
(64-bit) would be quite the challenge, and would make stored coordinates take up double the memory. On top of all that (all though I’m not sure of this), there is a good chance that the physics engine is limited to float
as opposed to double
.
UE4 has no double data type but UE5 now has a double data type.
I don’t know what the limitations are when it comes to 64-bit coordinates, but since UE5 now supports doubles I’d like to find out from the developers if this is planned for implementation in UE5; especially since UE5 is still in early access.
The engine dropping 64 bit support has nothing to do with double precision coordinate system. There is a double data type in blueprint now that is new. People seem to be taking that as a sign of double precision worlds coming to UE, but there is little evidence of that in code. It is a pretty significant effort to make such a change.
I would bet that when/if double precision UE5 comes, they very likely aren’t going to make the default engine double precision. It will probably be an entirely different build of the engine, whether you have to compile it yourself from source in double precision mode, or whether a double precision build becomes available through the launcher.
There are a lot of us that are working on space games and would love to have 64-bit coordinates. We’ve been waiting for UE5 to see if it would be implemented. I didn’t make the assumption that UE5 would have double precision coordinates, that’s why I’m asking and would like to find out from the UE5 devs. We are aware that the coordinate system is still FP32.
There are some indie game devs that were able to create their own version of 64-bit coordinates in their games, such as Galaxia or Satellite Command, so this is possible.
I would certainly love to have the option for sure.
Double precision is coming to 5.0 for worlds, called Large World Coordinates. Which allows for bigger worlds without the floating point issues associated with large fp values.
Thanks for the info. I really hope so. Was there any confirmation from the devs?
Yes Unreal Engine 5 Noteworthy Changes | Unreal Engine Documentation check here under the Gameplay Framework.
Wow. This is amazing! Thanks much, @TheKaosSpectrum! You’ve answered my question!
Upgrades
Large World Coordinates removes some of the limitations on world size related to the use of single-precision floating point coordinates for absolute positions.
Hopefully the removal of the single-precision limitations means double precision.
THANK YOU @AntiGravity! I’ll keep up-to-date on any information you relay to us.
There are several commits in the ue5-main branch for it, just look for commit messages mentioning “LWC”. Those aren’t yet in the early access branch, it’s under active development.
Thanks @witch-dev.
The official staff of Unreal Engine said in a tutorial video that UE4 displays wrong screen and position when it is far from the world origin, but UE5 supports 64 bit precision, you can set the position coordinates to a very large value. So I believe UE5 Will support 64 bit precision in the near future.
Transforms and Vectors are still floats. Meaning it’s not yet using double precision for world positions and such. It’s misleading to say that UE5 supports double precision. It doesn’t yet.
The commits in github on the main branch are low level math functions and SIMD vectorization stuff. Given how low level these changes are, work on this feature seems relatively new(but I don’t know for sure). You can’t change your actors to use double precision transforms until your math functions can work in double precision. This feature is going to be a bear to implement throughout the engine I suspect.
I too am very curious what is meant by remove some of the limitations on world size.
I agree. I don’t assume double precision is supported yet. That’s why I had said:
“UE4 has no double data type but UE5 now has a double data type.”
“…but since UE5 now supports doubles I’d like to find out from the developers if this is planned for implementation in UE5…”
“I didn’t make the assumption that UE5 would have double precision coordinates, that’s why I’m asking and would like to find out from the UE5 devs. We are aware that the coordinate system is still FP32.”
Would int64 be a better option than float64 for the coordinate system?
How would that be handled since GPUs use 32-bit?
No no, floats allow decimals, int don’t, in 3D not everything is exact such as spheres, so you would need floats, and doubles for 64 bit. GPU’s don’t use 32 bit, they process those values and GPU’s also support 64 bit.
Doubles are certainly being added, I would dare say very soon,
https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Source/Runtime/Core/Public/Misc/LargeWorldCoordinates.h
I don’t see how multiplayer is affected by this, by some I think it probably shouldn’t really mean much hopefully, and probably a very small thing.