Todd Howard Responds to Starfield’s Alleged Lack of PC Optimization: “Upgrade Your PC”

It could use it. Every game can use RT.
Can and should are very different things though.

I'm all for it when it makes a big impact. I haven't seen much outside of tech demos in controlled environments where that's the case though. It'll get there one day though, I'm sure - it just isn't past the "parlor trick" stage yet as far as I'm concerned. Kinda like PhysX back when it first came about - it took a while for it to move beyond just flappy cloaks and bouncing crates that were just eye candy - but now almost every game has some sort of physics engine as a part of it.
 
That I agree with. It's not necessary to have in every game, but every game would benefit from more accurate lighting.


I missed it almost immediately...
I agree. I've played enough games now that I can usually spot RT vs non. I'm not saying that's an absolute but when I go back to older games that don't have things stand out a bit more than they used to. There's just a blanket approach with lighting w/o RT. Starfield's isn't horrible, I've seen much worse. However, not going to throw the "opt-----" word around here but there's more than that, that needs to happen before RT can be used here since the game is already pretty demanding as it. If they had put RT it would bring a 7900XT to its knees and the same for a 4090 until DLSS 3 and Framgen were allowed to do their magic.
 
In thinking about Howard's statement a little more this morning, I realized it's a bit ironic and hypocritical of him to make the statement about players upgrading their PCs when the game didn't even launch with a number of features common to modern PCs. Maybe he should do his own fact-checking on that (re: 32:9, FOV, and true HDR support, including brightness/gamma controls). There are indie developers who manage to do this so there's no reason a company like Bethesda didn't have the resources to do the same given the amount of time and money it probably invested into Starfield's development.

I'm deliberately leaving out the NVIDIA/Intel items because it's been clearly stated why they were not included at launch but hopefully they will once whatever AMD agreements have expired. I get why those were left out but the others, no, they need to be on the table. If he's going to throw PC owners under the bus he should take responsibility for the currently common features that have been omitted from the game.

Btw, I am enjoying the game a lot but that's after doing various tweaks and using mods to get it to a more modern state that I and many other PC owners expect for current AAA games. Not giving a choice to players is just poor judgment from a developer and putting the blame on gamers doesn't help. I feel this statement from Howard was not supportive of the PC community. I will say this is my personal feeling and not that of The FPS Review.
 
I would be interested to see if he has statistics to correlate to the complaints. If user A is complaining and they are below the minimum/recommended specs then their experience would be lackluster. I would go so far as to say even minimum spec would be lackluster.
 
I would be interested to see if he has statistics to correlate to the complaints. If user A is complaining and they are below the minimum/recommended specs then their experience would be lackluster. I would go so far as to say even minimum spec would be lackluster.
Actually I saw more people with hi-end hardware complaining. That it only runs at 60fps in 4k, and things like that.
 
Actually I saw more people with hi-end hardware complaining. That it only runs at 60fps in 4k, and things like that.
That's interesting. At higher resolutions yea things definitly slow down a LOT. I think memory speed is more important than people think.
 
That's interesting. At higher resolutions yea things definitly slow down a LOT. I think memory speed is more important than people think.
The crux of it is that the game looks like Fallout 4 with a fresh coat of paint. You see some higher resolution textures and higher poly models, but little else to indicate that the juice is worth the squeeze.
 
Fallout 4 with a fresh coat of paint
It really doesn't. It might not look like Cyberpunk 2077 but it is much closer to that than Fallout4.

That's interesting. At higher resolutions yea things definitly slow down a LOT. I think memory speed is more important than people think.
I don't know when did it become the norm to expect games to run 4K Ultra at ludicrous FPS numbers.
 
In terms of the memory frequency thing I OC'd both my 3090 TIs and 4090 which all have a stock 10,500 MHz speed. I only add 500 MHz because after a point not only does its draw more power off the PCB and potentially prevent higher overclocks on the GPU but power draw and heat really start to go up. That being said, 11102 MHZ on them gave around 1-3 FPS gain depending on the rig. If Todd is saying we should all be using cards at above 23 GHz he needs to check in on what tech is actually available.

After doing all the tricks with DLSS3 Framegen the 4090 was amazing at 4K but how many PC users are able to have a overclocked liquid-cooled/hybrid AIO 4090 out there to do that? Sorry Todd, but it's totally unrealistic to put that on PC users when 4K gaming is a growing thing.
 
I've noticed a bit of both, Fallout and CB, plus some Mass Effect Andromeda and even No Man's Sky. It's kind of all over the place. I also noticed some similarities to 2017's Prey (a lot in fact when it comes to being inside the ships and space stations).
 
I'd like Todd Howard to explain the sh1t seen here: https://forums.thefpsreview.com/threads/the-starfield-discussion-thread.13426/post-76034
And here: https://forums.thefpsreview.com/threads/the-starfield-discussion-thread.13426/post-76061

Oh and how about this: https://www.destructoid.com/open-so...s-out-problems-with-performance-in-starfield/
"...Starfield is not interacting properly with graphics card drivers. Arntzen did not mince words in his recent release, describing Starfield‘s graphics driver overhead as 'very inefficient.' The problem is so severe, in fact, that the aforementioned translation layer had to be updated specifically to handle Starfield as an exception to the usual handling of the issue.

...Arntzen’s work has revealed that Starfield does not allocate video memory correctly, and that it misuses an important DirectX 12 feature (ExecuteIndirect) to the point where the GPU needs to double-check certain bits of data, causing lower frame rate than otherwise might’ve been expected. The problem is then exacerbated due to Starfield generating multiple ExecuteIndirect calls one after another while they should’ve been batched together for performance purposes."
 
I can easily explain it. It's easy to be a couch expert who has infinite time to look for things that are not done by the textbook. When you have deadlines and limited resources and actually have a ROI goal you can't make every api call in the game the most efficient possible.

And it's also entirely another thing to find things that can be done faster, and to implement faster solutions considering how many knock-on effect any change can have.

When we say a game is optimized it doesn't mean every line of code in it is the most efficient possible. It means the game runs at reasonable speed expected from any given hardware without stuttering and performance spikes.

Even in the minuscule code bases I worked on there are always things that are done in a dirty way. That could be done 10 or 100 times faster.
There is always something to optimize in a code, you can get old doing it, it is a time sink. There must be a cut off point where you say OK, now it runs fast enough.
 
Last edited:
This guy doesn't exactly sound like a couch expert so I do disagree with delegating him as such. He's in the trenches working with Vulcan and DX12. Here's a little more of the quote @DrezKill had posted.

"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. "

and from his page on github:

"NOTE: The meaning of this PR, potential perf impact and the problem it tries to solve is being grossly misrepresented on other sites.

The goal of this refactor is to optimize for cases where games (Starfield in particular) uses advanced ExecuteIndirect in very inefficient ways.

  • Indirect count, but indirect count ends up being 0.
  • Non-indirect count, but none of the active draws inside the multi-draw indirect actually result in a draw. Multiple back-to-back ExecuteIndirects are called like this, causing big bubbles on the GPU.
In RADV, a special optimization was added which uses indirectCount in DGC as a predicate when possible. This lets us skip over the prepare cmdbuffer as well as the INDIRECT_BUFFER execution which is about 10x faster than spawning a small CS, adding extra sync and then executing a NOP-ed out indirect buffer.

We can take advantage of this by doing our own prologue which scans through the ExecuteIndirect buffer in the scenario where non-indirect count is used. Using indirect count is not slower than direct count at all.

To make this efficient, this PR refactors the command buffer emit system so that instead of having one init command buffer and one "real" command buffer, we have N sequences of this pattern. This allows us to split a command stream when observing an INDIRECT_ARGUMENT barrier, and we can batch up any patch CS easily. For example, given a D3D12 command stream like:

  • CS to generate indirect arguments
  • ResourceBarrier(UAV -> INDIRECT_ARGUMENT)
  • ExecuteIndirect (arg0, command_count = 16)
  • ExecuteIndirect (arg1, command_count = 16)
  • ExecuteIndirect (arg2, command_count = 16)
  • ExecuteIndirect (arg3, command_count = 16)
we can now transform this into:

iteration[0].vk_cmd_buffer:

  • CS to generate
  • UAV -> INDIRECT_ARGUMENT
  • Begin new sequence
iteration[1].vk_init_buffer:

  • Scan arg0 (emit count 0 if all empty draws)
  • Scan arg1 (emit count 0 if all empty draws)
  • Scan arg2 (emit count 0 if all empty draws)
  • Scan arg3 (emit count 0 if all empty draws)
  • CS -> INDIRECT_ARGUMENT
iteration[1].vk_cmd_buffer:

  • ExecuteIndirect(arg0, count0) (over 10x faster throughput if we can predicate out work)
  • ExecuteIndirect(arg0, count0)
  • ExecuteIndirect(arg0, count0)
  • ExecuteIndirect(arg0, count0)
This kind of command reordering can be extended later to whatever use case we have in mind, but reordering indirect work is the main important case I think.

As a heuristic, splitting command buffers isn't ideal, so we only consider a split if a device ever created a fancy execute indirect command signature and existing content outside Halo and Starfield should not observe any difference in behavior here."



To me, this does not look like the work of a couch expert.


And now there are more reports from AMD and NV sides of the fence:


Sure we've seen games in the distant past that greatly favored NV cards over AMD but recently that has not been true to the degree of 46% when not using NV-specific hardware (i.e. RT and Tensor cores). In terms of rasterization, many recent similar tier cards are often within 20% and sometimes even single-digit ranges so a 46% difference is a flag.

and


The bottom line is that even as Bethesda puckered up to smooch AMD you-know-where, it needs to get some patches out. The game, for no reason anyone can clearly identify why, does not run well on NV cards and now reports are surfacing that it has other issues on AMD cards. Perhaps Todd's crew were too scared to inform him of the facts before release and before he tried to throw PC users under the bus.
 
This guy doesn't exactly sound like a couch expert so I do disagree with delegating him as such. He's in the trenches working with Vulcan and DX12. Here's a little more of the quote @DrezKill had posted.
I didn't mean couch expert as a critique of his knowledge or the validity of the findings. It's purely an observation that using your free time to comb through something for mistakes or omissions is not the same as working on a for profit project with a time crunch.

I do not for a moment doubt that the issues found are real and can cause performance degradation. But if overall the performance is reasonable then I'd say the game is optimized. And I find the performance esp. on my ageing rig more than acceptable as is.

If this is as easy fix I'm all for it, but I do not consider it essential. Especially not to the point where some people talk like they found the bloody sword which Bethesda used to murder thousands of innocent people.
 
Even in the minuscule code bases I worked on there are always things that are done in a dirty way. That could be done 10 or 100 times faster.
There is always something to optimize in a code, you can get old doing it, it is a time sink. There must be a cut off point where you say OK, now it runs fast enough.
For video games... sure I agree. For critical systems where time = lives and not just money... that's a clear distinction. :)
 
There must be a cut off point where you say OK, now it runs
It's funny you mention that. Just last week I was explaining to a coworker, in regard to a bizarre error code they encountered, that as some point even the best programming team has to set a cut-off point and move on. When this happens, a number of error calls are directed to a generic message that may or may not have anything to do with said error. I figured it out pretty quickly but when I saw the error message I said to myself right away, I know what this is.
 
For video games... sure I agree. For critical systems where time = lives and not just money... that's a clear distinction. :)
Actually if time = lives wouldn't it make more sense to produce reliably working code as fast as possible instead of making sure the code runs in 10ms instead of 300ms? The applications are very rare where the sub 1s time scale matters. Like for example the code to trigger the airbags in a crash maybe? I'm not even going to entertain HFT because I'm against it on principle.
 
It's funny you mention that. Just last week I was explaining to a coworker, in regard to a bizarre error code they encountered, that as some point even the best programming team has to set a cut-off point and move on. When this happens, a number of error calls are directed to a generic message that may or may not have anything to do with said error. I figured it out pretty quickly but when I saw the error message I said to myself right away, I know what this is.
That's actually more of a lack of external testing. The creators of a program are unconsciously biased to use their product correctly, so they can't even fathom some unexpected ways users can break it. And this is not a fault of the user, nor the programmer.

Happened to me a dozen times at least, where I missed something I didn't think of until an user tried it. And as soon as it happens it is obvious.
 
Actually if time = lives wouldn't it make more sense to produce reliably working code as fast as possible instead of making sure the code runs in 10ms instead of 300ms? The applications are very rare where the sub 1s time scale matters. Like for example the code to trigger the airbags in a crash maybe? I'm not even going to entertain HFT because I'm against it on principle.
In the environment I work in... those MS matters.
 
In the environment I work in... those MS matters.
Microsoft does matter when we are talking about Starfield. :LOL: But seriously, why so cryptic? Care to reveal what programs are these, where lives depend on milliseconds lost in code execution?
 
Become a Patron!
Back
Top