Hi, I’ve just seen this tweet announcing that you plan to convert Unreal Engine to a Y-Up coordinate system. https://x.com/TimSweeneyEpic/status/1930678660098408669
This is genuinely the worst idea I have ever heard, and I hope that by posting in this place we can maybe get in some feedback before it is too late? I don’t know where else we can turn to about what you are proposing to do to the engine.
What’s wrong with Y-Up?
The main problem, of course, is that it does not make any intuitive sense. In a game engine, we almost always deal with 3d worlds that are based on a ground surface. It is perfectly intuitive to have X/Y for movement on the ground surface, and add a third height component to the end.
This used to be a breath of fresh air for those of us coming from Unity to finally be working in an engine where the coordinate system actually matched how we intuitively thought about the world geometry. By using the middle component for the height, you are turning everything on its head.
Y-Up is also terrible for gameplay code
Many games routinely need to do math in both 3 dimensions and 2d relative to the ground plane. Currently, this is trivial: drop the last dimension to go from 3d to 2d, expand with a 0 to go from 2d to 3d. With Y-Up, the middle coordinate becomes the height (???) so now we have to do weird shuffling like converting X and Y to (X, 0 , Y) to turn it into a 3d vector, or removing the middle element to turn it into a 2d one.
This is going to infect everything from vector literals, which currently make perfect intuitive sense as (X, Y, Height) to every single math function which now has to deal with the wrong coordinate being used.
The sheer scale of the effort required from all of us
This is not a change you can make isolated to the core engine. Every client project is now going to have to deal with the bugs introduced all over the place. No longer limited to the boundary on import from a third party DCC, we can now have wrong coordinates everywhere! If you’re planning to somehow support both coordinate systems at the same time in the same engine, that is even worse, the incompatibilities will multiply unchecked. Should this piece of gameplay code be using Y-Up or Z-Up coordinates? Who knows?
You’re about to force all of your users through an insanely complicated migration process for no actual reason (if it even works at all) and finally end up with a worse, less intuitive engine.
I assume it is already too late to change this direction since it seems to be one of Tim Sweeney’s pet projects, but I had to at least make it known that you are doing something a large amount of your users don’t want. Maybe others can join in the discussion with their own experiences to add more weight to this post. Thanks!