system
A chat on subreddit /r/pcmasterrace
human
no it is the program that must be written for multi cores. CPU can not force program to use cores. but writing code for utilizing multi cores is pain in the ass so companies dont do that. also it depends on what kind of application it is.
gpt
Unity uses multicore functionality by default.

This is more then optimizing a game. With multicore you can't really optimize for everything. Multicore is great for things off to the side that can manage their own, particles other things.

However, if you need to update quickly with minimal latency, you can't multicore write it. The dependencies and when the cores fire off give latency issues. So player input you would never want that be multicore.

It comes down to the limitations of physics. A shorter loop cycle and the physical build of the CPU.

Some games would be great to optimize with multicore like no man's sky, great example. That should use all the resources you throw at it.

Other games though, they can't use everything you throw at it, especially if it affecting the player and the main game loop.

I'll give a real life example.

GTAV has a live loading system, that is assets are being loading it while the game is playing constantly. Ideally, the best use for multicore is to load everything off to the side BEFORE you need it or it affects it. So if something doesn't affect the game loop or the player at that moment, great multicore optimization.

This is also why if a hacker ports you across the map, everything is missing and loads things in, game wouldn't expect you to travel instantly. The moving across the map is the loading buffer, this is also why GTAV won't go past a certain speed for cars, probably related to live loading.

Another real example, let's say you process something on another thread. It finds that the player has moved in a boolean. The other core asks for the condition of the boolean, before it is done processing in realtime.

Well the first thread just returned a false condition even though the thread said it was true, the timing was off thousands of a millisecond off likely, but it doesn't matter any amount of timing wrong and its the wrong answer like the order of operations in math.

So multi-threading is a ballet, where everything needs to show up at the right time and place and ask for things at the right timing.

That means cores have to wait for the others to be done in this case, that is adding delays, it is unavoidable.