Games are much more complex than they used to be.
You have various subsystems running on multiple cores. Many of the subsystem are 3rd party and you have very little technical insight in what goes on inside of them. You then have these running on multiple cores which makes debugging much much much harder than in the single core days (ie. you can't single step through a parallel program in any meaningful way).
The games themselves, in particular open-world ones, can't be exhaustively tested because there is an infinite amount of states you can put the game in. Your QA team, with a few dozen people (at best) will find a fair chunk of bugs, but the millions of gamers that will subsequently play the game will find bugs the QA team didn't. - That's just simple statistics.
You do your best to harden each individual subsystem, you add margins (memory, processing time/resources) and you test the shit out of it. If you have time, you do more, if you don't, you do less.
Cheers
You have various subsystems running on multiple cores. Many of the subsystem are 3rd party and you have very little technical insight in what goes on inside of them. You then have these running on multiple cores which makes debugging much much much harder than in the single core days (ie. you can't single step through a parallel program in any meaningful way).
The games themselves, in particular open-world ones, can't be exhaustively tested because there is an infinite amount of states you can put the game in. Your QA team, with a few dozen people (at best) will find a fair chunk of bugs, but the millions of gamers that will subsequently play the game will find bugs the QA team didn't. - That's just simple statistics.
You do your best to harden each individual subsystem, you add margins (memory, processing time/resources) and you test the shit out of it. If you have time, you do more, if you don't, you do less.
Cheers