A prominent open-source dev publishes their findings as to what's going on with Starfield's performance, and it's pretty darn strange.
According to Hans-Kristian Arntzen, a prominent open-source developer working on Vkd3d, a DirectX 12 to Vulkan translation layer, Starfield is not interacting properly with graphics card drivers.
It’s the same trash engine they’ve used for 20 years. To be perfectly honest, they should put it in the ground and build a new one from scratch instead of pushing their Frankenstein engine along.
Unreal is older than their engine no? And everyone uses that…so what does this even mean?
The difference is that Epic barely makes games. They have their Fortnite which they can put in some minor effort to keep the money flowing and otherwise they can focus on the engine. Maybe with MS now being behind Bethesda they can also put in more work into their engine…maybe. We’ll see.
Yeah you always have. They’ve been screwing modern graphics features to the old dog for years and hoping it’ll continue to work. There’s some serious limitations in it that another engine would be able to work through for a game like this. Seamless planet travel for one, and less abrupt loading.
People really have no idea about anything in game development. I agree it should have seemless planet travel, but it is not something that an engine “can just do.” It takes so many complicated systems to make that function. There’s no engine that does it out of the box.
Basically any engine can do it, but it requires it to be built. The land must be deterministic at all points, it must be able to create chunks accurately for all points (which gets really weird at the poles, but any latitude above 0 because your chunks shouldn’t be square anymore), and they must be able to be streamed in to their correct position seemlessly.
It is quite complicated, and there’s no reason the engine developed for an arena shooter (Unreal) would be able to handle it any better than any other engine. It just has to be built.
I guess though I mean it is expected at this stage of game development for this genre to have something like seamless planet travel for a space game. Like it didn’t have to be NMS or Elite Dangerous, they could’ve copied something like how Jedi Fallen Order did it, where basically your ship takes off from the planet, jumps to hyperspace and loads the next one during hyperspace and lets you know when you’re ‘arriving’ (aka when the destination is loaded) and you then take an action and land on the loaded planet. It ends up being the same thing as what Starfield basically does but handles it much more deftly.
Idk, just saying there’s better ways they could’ve handled it even if the engine couldn’t handle seamless planet travel in a traditional sense.
There’s a reason Hello Games wrote their own engine for NMS. We all know that it was pretty bad gameplay-wise at launch, but under the hood NMS was (and still is) something of a technical marvel. No loading screens except for a disguised one when jumping between systems is quite impressive.
Also, IIRC, NMS doesn’t have different gravities, right? Been a year or two since I properly played, but I don’t remember ever really jumping higher or being forced to the ground. That’s one of the sacrifices for seamless landing.
I don’t buy this. Plenty of games allow you to adjust gravity on the fly using console commands. All they would have to do if you enter a new planet’s atmosphere, is adjust the gravity value.
Source engine has allowed this forever, changing gravity on the fly. No reason it can’t be implemented in other engines.
I have no game dev experience but I have a math and software background. I’m just curious about what “it gets weird at the poles” means. If I wanted to (abstractly) generate tiny square chunks of a large sphere, I would generate them as (proper) squares and then pass them through an explicit diffeomorphism to the associated region of the sphere, relying on the relative smallness to guarantee that the diffeomorphism doesn’t change things too much. From a game dev perspective, what approach do you take that causes issues at the poles?
Imagine trying to find the intersections of a line or region as it crosses multiple cells of a non-euclidian “grid” near the poles where an entire axis can flip from one cell to the next.
Are you suggesting using a stereographic projection? That seems like a bad idea. You wouldn’t want your projection to depend on the coordinate system. Am I missing a reason why you wouldn’t use proper, nonsingular spherical coordinates?
Games, support libraries, and engines don’t really support spherical coordinate systems. If you don’t want to write everything from scratch, you gotta go Cartesian.
It’s the same trash engine they’ve used for 20 years. To be perfectly honest, they should put it in the ground and build a new one from scratch instead of pushing their Frankenstein engine along.
Unreal is older than their engine no? And everyone uses that…so what does this even mean?
The difference is that Epic barely makes games. They have their Fortnite which they can put in some minor effort to keep the money flowing and otherwise they can focus on the engine. Maybe with MS now being behind Bethesda they can also put in more work into their engine…maybe. We’ll see.
But how is it getting worse? Or did you always had to load every door you open. I honestly can’t remember
Yeah you always have. They’ve been screwing modern graphics features to the old dog for years and hoping it’ll continue to work. There’s some serious limitations in it that another engine would be able to work through for a game like this. Seamless planet travel for one, and less abrupt loading.
People really have no idea about anything in game development. I agree it should have seemless planet travel, but it is not something that an engine “can just do.” It takes so many complicated systems to make that function. There’s no engine that does it out of the box.
Basically any engine can do it, but it requires it to be built. The land must be deterministic at all points, it must be able to create chunks accurately for all points (which gets really weird at the poles, but any latitude above 0 because your chunks shouldn’t be square anymore), and they must be able to be streamed in to their correct position seemlessly.
It is quite complicated, and there’s no reason the engine developed for an arena shooter (Unreal) would be able to handle it any better than any other engine. It just has to be built.
I guess though I mean it is expected at this stage of game development for this genre to have something like seamless planet travel for a space game. Like it didn’t have to be NMS or Elite Dangerous, they could’ve copied something like how Jedi Fallen Order did it, where basically your ship takes off from the planet, jumps to hyperspace and loads the next one during hyperspace and lets you know when you’re ‘arriving’ (aka when the destination is loaded) and you then take an action and land on the loaded planet. It ends up being the same thing as what Starfield basically does but handles it much more deftly.
Idk, just saying there’s better ways they could’ve handled it even if the engine couldn’t handle seamless planet travel in a traditional sense.
There’s a reason Hello Games wrote their own engine for NMS. We all know that it was pretty bad gameplay-wise at launch, but under the hood NMS was (and still is) something of a technical marvel. No loading screens except for a disguised one when jumping between systems is quite impressive.
Impressive for sure. They had to choose to not have a lot of things to do it though. They knew what they wanted and did it, which is smart.
Also, IIRC, NMS doesn’t have different gravities, right? Been a year or two since I properly played, but I don’t remember ever really jumping higher or being forced to the ground. That’s one of the sacrifices for seamless landing.
I don’t buy this. Plenty of games allow you to adjust gravity on the fly using console commands. All they would have to do if you enter a new planet’s atmosphere, is adjust the gravity value.
Source engine has allowed this forever, changing gravity on the fly. No reason it can’t be implemented in other engines.
I have no game dev experience but I have a math and software background. I’m just curious about what “it gets weird at the poles” means. If I wanted to (abstractly) generate tiny square chunks of a large sphere, I would generate them as (proper) squares and then pass them through an explicit diffeomorphism to the associated region of the sphere, relying on the relative smallness to guarantee that the diffeomorphism doesn’t change things too much. From a game dev perspective, what approach do you take that causes issues at the poles?
Imagine trying to find the intersections of a line or region as it crosses multiple cells of a non-euclidian “grid” near the poles where an entire axis can flip from one cell to the next.
Are you suggesting using a stereographic projection? That seems like a bad idea. You wouldn’t want your projection to depend on the coordinate system. Am I missing a reason why you wouldn’t use proper, nonsingular spherical coordinates?
Games, support libraries, and engines don’t really support spherical coordinate systems. If you don’t want to write everything from scratch, you gotta go Cartesian.
You can still use local Cartesian coordinates.