Rosario our Graphic Programmer gives an insight into the work carried out that significantly improved the game graphics last year
Everyone at Stainless continues to be busy and so apologies for the delay in bringing you our next blog, but this time we cover how the huge graphical improvements in our October 2015 update were achieved. Rosario was instrumental in the work involved and is pictured below....with his lightning eyed cat screensaver!
Rosario has been working as the Graphic Programmer on Carmageddon: Reincarnation since February 2014. He can often be found in the office way past midnight, working on the mysterious things that fill up a Graphic Programmer's world, and is almost solely responsible for the programming wizardry that enabled Carmageddon: Reincarnation’s well received visual transformation between our August and October 2015 updates. Here’s how…
Sometimes in Games development a fundamental problem can lie undiscovered, concealed in a wall of code written by programmers long since departed. Then one small issue will manifests itself and lead to an investigation which reveals it as just the tip of the iceberg!
There are many calculations that need to be done to make colours in a computer game look like the colours we see with our eyes. They all hinge around Gamma, which is a tricky term to define, but partly helps colours to appear as realistic on computer monitors. The human eye has a great sensitivity to a wide range of colour tones which it views in a non-linear way. A computer see colours differently and isn’t as sensitive, so complicated conversions have to occur to make colours in-game appear normal on monitors. When computers make these computations using colour they must be converted to a linear representation to make the final result looks correct. So if you start with an image, you have to gamma correct the image, do the computation, then reverse the gamma correction.
Rosario was initially investigating a problem where the reflections on cars were appearing differently between the static cube map and dynamic cube map. Rosario said, “I suspected there was a deeper problem and began to check the reasons for this. In the same week one of our artists Jas complained that the texture he could see in his programme looked completely different to his texture inside the engine.”
Rosario soon found out what the problem was, “Our dynamic cube map had the wrong gamma. That was the big indication that everything was wrong and we soon confirmed that the whole game had the wrong gamma.”
Just before our first update in August 2015, Rosario sent out an email which began “Ok…ehm everything is wrong. Can we start redoing the game from scratch? >_> … I found one of these earth shaking bugs………” It was quickly clear that the fix for this bug was never going to be implemented in time for our August update, but the main concern was to find a solution that could save the artists from having to redo all their work from scratch and would still use as much of their original texture as possible.
Rosario explains, “Basically ages ago our artists had been instructed to do something a certain way which made the most of our old system, but after big changes were made to the engine, this way no longer worked like it had done. The reason this went undetected for so long was that Yebis, our post-processing effects middleware had been colour correcting the incorrect images to make them appear as correct as possible. The look of the game wasn’t right because everything was being over processed, which was affecting the detail in the art and textures and making things look more washed out than they should be.” In a follow up email Rosario illustrated the very serious issue in his usual humorous way.
“I think almost every animals with eye have non linear receptor. Linear world really sucks.
This is Greg:
This is Linear Greg.
Everything is washed out. Fuck you Linear Greg, nobody love you.”
Rosario worked with our lead Artist/designer Will McCourt and the other artists to verify the textures that they thought looked correct on their screens, and then he didn’t leave the workplace until those and the ones in the game looked the same.
After this, the artists made a script to convert thousands of diffuse and specular textures and assets for everything in the game. Most were correct and just needed a flag to be checked on them, but a lot needed double-checking and tweaking. Rosario’s fixing work continued, although there was an element of breaking things involved too so it wasn’t easy! As Rosario mentions, “There’s a good quote from Mark Zuckerberg who says ‘Move fast and break things. Unless you are breaking stuff, you are not moving fast enough.’ I was moving very fast, so there was plenty of breaking stuff going on as well as fixing.”
Rosario continued liaising with the artists who regularly gave feedback on the look of things. “The car textures particularly needed reviewing a lot as they needed to look shiny. This revisiting of everything obviously wasn’t an easy task, but once the artists could see the results were so much better they were very happy that the problem had been solved, despite the extra work involved. So basically that’s how we did it; completely changed the engine for physically correct rendering. It’s pretty similar to Unity now and we were pretty happy with the final result, which you can see in Carmageddon: Reincarnation today.”
We received really good feedback after this update, and although you can never please everyone, nobody can say the game doesn’t look much better than it did! So there you have it folks, another small insight into one aspect of the myriad complicated endeavours that all go together to make a videogame. We hope to bring you the next blog soon.
Discuss this in the forums