As some of you may have seen from the recent sneak peek on Around the Verse or the Foundry 42 monthly updates, we’ve been hard at work for some time to improve the damage system on the ships. We’ve already shown in Arena Commander our very powerful and flexible system for controlling the damage on your ships, which combined with some awesome artwork gives some great results. But your ships are such a big part of the Star Citizen universe we felt we had to go several steps further.
So we took a top down look our damage system to review what we could improve, and although there is great satisfaction in peeling off each part of an enemy ship when they take major damage, we felt we could better represent the specific location and type of damage inflicted. Whether it be a projectile weapon, an energy weapon, an explosion or scratching your ship after a dodgy landing, we want you to be able to differentiate them just from looking at your ship. We felt this was going to be especially important in our game as we want each ship to tell a story of what’s is been through.
Two other areas we wanted to improve on were the time it takes our artist to create the numerous damage states for each part of the ship, and the hefty memory cost these meshes come with, which could prove to be a problem as we scale up the game. The reason the damage states are so labour intensive is that each ship has over ten main parts, and each of these requires five damage states to represent the different levels of damage, then each of these requires up to five simplified meshes that we use when they’re further from the camera to save performance. This equates to over 200 meshes per ship!
When you examine the current damage states in Arena Commander you’ll notice that the first two damage states tend to just contain minor dents, some burn damage, and perhaps a few panels that have been blown off exposing some internals. It’s only when you get to the 75% and 100% damage states you start seeing major silhouette changes, however the earlier damage states still carry the same memory cost. So our goal was to try and achieve the minor damage without having to create whole new meshes, saving both memory and artist time. To do this we decided to record the impacts on the ship within an extra set of textures that wrap around the entire ship, and to then use these in the shaders to dynamically add the dents and burn in precisely the location your ship took the damage. However rather than just opting to blend in a simple damaged texture in these areas, we instead chose to model the type of damage much more accurately by recording four different quantities:
|Temperature||The current temperature of the hull|
|Burn||The maximum temperature the hull has been burnt with|
|Thickness||How much of the outer hull remains. Paint comes off first, then the underlying metal|
|Deformation||How much physical force the hull has taken to bend and distort it|
Using these four damage values we can make the hull glow with heat, make paint burn and bubble, peel paint off to expose the underlying metal, dent and deform the surface, and even cut holes through the hull to expose the internal wiring and mechanics. Rather than the internals of the ship only being modeled in specific locations we now model the internals under the vast majority of the hull. You might expect this would involve a lot of work for the artists, but they’ve come up with several methods of adding these internals very efficiently and the overall damage state setup is now significantly quicker than before.
Your ship’s life story
The really interesting thing about us having access to four different measures of damage is that these can be imprinted on your ship in a pattern and strength that is unique to each weapon, explosive or type of impact. So while lasers will cause your hull to light up for several seconds leaving burnt paint and exposed metal, a powerful ballistic might tear a hole straight through your hull. We’re just scratching the surface of how far we can go with this system, and we plan to soon upgrade the weapon/ammo code to expose more unique and physically realistic damage behaviors.
We’ve trialed this tech on the Gladius, and you’ll see for yourselves in 1.1.0 that the results are great. What you might not see is that the Gladius uses four times less memory than the other ships, and this equates to better performance for the backers. Our artists are happy as this will allow them to make ships more quickly, which ultimately gets this game in your hand sooner! You’ll also be glad to know we’ll be rolling this tech out on every new ship, and also retrofitting the older ships as we go along.
Additional tech needed to be developed for placing our Particle and Squib Effects to complete the look of our new damage pipeline. When a part such as a Wing detaches from the ship, Squibs and Particles detonate along the edge of the separation. The Squibs, when detonated, specifically cause holes and burn damage to appear on the skin of the ship, revealing the ‘guts’ of the ship underneath so that the piece of the ship looks like it was torn away from the body. Particles also fire off as pieces break off from the ship, adding dramatic smoke, explosions and sparks. A specialized art tool, developed by Matt Intrieri, was created to convert helper objects in 3DSMax into XML code to add the effect in-game. CIG’s Effects Artist, Mike Snowdon, used the tool to add the Particles and Squibs to the ship along the edges of each part of the ship, creating dynamic and realistic effects based on the ship’s systems at each location.
But this isn’t the end of the road for this tech, there’s still several major features we’re working on. One of these is particle effects that are created, simulated and rendered entirely on the GPU, and this gives them two huge advantages. The first is performance, we can spawn 10-100 times more GPU particles than CPU particles for the same cost. The other benefit is that they tie in perfectly with the precise damage you’ve taken, so as the hull burns you’ll get glowing embers falling off, when it takes physical damage you’ll see shards of metal fly off, and when you blow out a large section of the hull you’ll see space littered with the debris. We’re also working on some major optimizations using to the damage system using DirectX 11 features to ensure that it’ll still run fast when there’s twenty fighters attacking a capital ship!
The first thing we did when we got this system working was to have some fun and write our names into a ship with a Gatling gun! Now it’s your turn to have a play and we’re keen to hear what you all think of this new tech so please let us know on the forums.