I spent about 10 years or so working in AAA games and I found that I had to work in a way that was essentially anticipating major changes. Essentially a totally different approach to programming compared to the other programming jobs I've had (robotics/finance/academic).
Many games I've worked on, the shipped product is completely different from the initial prototype that was sold.
My understanding was generally you get into a contract with a publisher and have a payment schedule every N months. At each checkpoint the publisher can assess whether they want to continue with the contract or let it go.
I can't imagine this kind of project ever working with a fixed-cost contract. Extreme change is the norm when you have creatives at the helm of the project.