Hard Light Productions Forums
Community Projects => The FreeSpace Upgrade Project => Topic started by: Al Tarket on July 29, 2008, 02:42:00 pm
-
better damage physics for the fs2 scp versions. take for example the below as examples of what i mean.
(http://img291.imageshack.us/img291/1414/dmg1wv1.png)
when a ship is destroyed on FS2 using the SCP, like for example a fenris cruiser, the fenris breaks up into low poly chunks of the former ship, however the game could be further enhanced by such poly additions like randomized under hull damage when breaking up to make it look real. in this shot of the klingon vorcha class, it has been destroyed.
(http://img375.imageshack.us/img375/4347/dmg2sk1.png)
(http://img179.imageshack.us/img179/722/dmg3tl3.png)
as mentioned above about randomized under hull damage, these shots contain such things. i really think freespace 2 is missing out on such a thing. even if randomized under hull damage can not be done because of the extra time involved, fixed positioning for more realistic damage effects would also be good.
however it can be made an optional thing, for those who have the computer to run such high grade and more realistic effects to give you a much better feeling for freespace 2.
if you cannot to do such a thing, i will cancel my campaigns and get to work modeling such a thing... (more to be said when its right)
-
I already implemented the ability for longlasting hull debris, but it was in the unstable CVS branch, and (apparently) nobody cared enough to ever notice when it was no longer in any EXEs.
-
*shrug* I like it
-
no, long lasting low poly hull chunks is not what i mean. what i mean is, you get to see a ship break apart, float apart more break off by explosions and after a few seconds wehn the fires are sucked out you get to see the construction steel, individual decks, lights and bulkheads from your fighter view, sharp pieces of wreckage, much the same could happen to a fighter even a freighter.
-
Al Tarket, do you have any idea what would be involved in making that work properly? :shaking:
-
dare i say it, if your not up to the task as useful modelers, i will do it and i would need to learn every thing about modeling myself, it will take time however it can be done.
-
So you pretty much want to HTL the ship debris.
-
More like something like this, if I'm right:
(http://i38.tinypic.com/4uflo9.jpg)
Internal detail in the models, revelated by the armour plating damage...
-
I already implemented the ability for longlasting hull debris, but it was in the unstable CVS branch, and (apparently) nobody cared enough to ever notice when it was no longer in any EXEs.
Dude, never assume that! We can't possibly test for every feature's presence in every build! :p
In fact I had noticed the debris not acting as it had in some past builds, but was busy testing other features at the time and just assumed either it wasn't in that particular branch I was using, or as has happened _many_ many times in the past; the format for its usage had been changed since then probably to conserve backwards compatability or something.
Remember also that I've put considerable effort into making full hull volume debris for every ship I've built, so having a feature that took advantage of that effort disappear completely is somewhat frustrating.
As for the topic - whether it uses 1) geomod, 2) destroyable chunks of the hull or 3) that IL2 internal detail thing, it's not going to happen because for 1), the amount of work involved in implementing and testing a geomod system is beyond ridiculus, 2) the amount of work, time and effort involved in 'chunkifying' ships is equally ridiculus and would probably seriously reduce the visual quality of the completed ship and 3) would also be a huge amount of work seriously hampered by the engines problems with transparency and would as with 2) require a total rebuild of every ship in the game to take advantage of it.
No, damage decals is the best that could happen. :p
-
dare i say it, if your not up to the task as useful modelers, i will do it and i would need to learn every thing about modeling myself, it will take time however it can be done.
Sure, it can be done... in 10 goddamn years after the entire rendering engine has been rebuilt from scratch.
However, feel free to waste untold hours of your life trying to prove everyone wrong. :p
-
dare i say it, if your not up to the task as useful modelers, i will do it and i would need to learn every thing about modeling myself, it will take time however it can be done.
Good luck with that. Get back to me when you give up.
-
modeling that sort of stuff isn't THAT bad, BWO has a bomber with 36 debris pieces.
-
modeling that sort of stuff isn't THAT bad, BWO has a bomber with 36 debris pieces.
10 goddamn years
Quot Erat Demonstrandum, if I dare say...
When do we get to, you know, play with that bomber? :p
-
Well, all one needs is six months to write a program that auto-chunkifies a ship so it can be easily edited to look good...
Yeah, if you want something like that, you're going to have to be a bit more realistic. You truly don't have any idea how difficult it is to mod an engine to do something else rather than design one to do everything you want from the get-go.
Geomod would be cool, but it's something for FS3. In other words: never.
-
What is the best that the FSOpen engine could do realistically? HTLing cap ship debris and damage decals?
-
Good debris is one thing - you basically are just ripping the LOD1 of the ship apart and filling the newly created holes with various debris textures that are placed on a debris version of the main ships map - where you can go and paint in blast holes revealing the structure beneath and the like.
'Chunkifying' a ship so that you can destroy individual bits of it without destroying the whole thing is much much harder and looks far uglier. This is because each chunk needs to be at least one separate object (two if you want to use live debris where the blown up bit falls off the ship). As such, any smoothing of curved surfaces would be broken up at the boundaries where chunks met - which would look absolutely hideous on vasudan ships.
Then you have to accommodate what would happen if a player blew up the geometry below a turret bank - obviously the turret would either vanish or just float there, and what happens if more than one hull chunk is underneath a turret? As you can imagine this also has the potential to introduce massive balance problems for some missions - such as just blowing off the sath's entire head rather than shooting the beam turrets, but you will also screw up stuff like bounding boxes for the entire model which would need fixing - and I'd be willing to bet more than a few collision detection problems would arise at some point.
On top of this you have the MASSIVE efficiency hit that doing this will cause - not only because of how you will need thousands of extra polys forming the 'insides' of each chunk, but the HTL engine won't be able to render the hull in one go due to it being split into subobjects. Now imagine this combined with texture tiling and think of the efficiency hit there. ;)
Incidentally, this concept has been brought up, shot, stabbed, castrated, hung, skewered, poisoned, drowned, run over and otherwise murdered in horrible ways and subsequently buried quite a few times now. :p
-
Incidentally, this concept has been brought up, shot, stabbed, castrated, hung, skewered, poisoned, drowned, run over and otherwise murdered in horrible ways and subsequently buried quite a few times now. :p
Sad as it seems a really good idea, but it's true that it should prove to be a difficult even imposible task to develope from zero.
-
Yes, a really good idea, in the same way that cold fusion or peace in the middle east is a really good idea.
-
Doing it just for a few subsystems would be a lot more feasible, I guess. But not completely getting blown off, just changing to another submodel that looks slightly damaged. It's been done before (like on the HTL Hecate). Though Galemp didn't say whether or not it was a ***** to do.
-
Once we get parallax mapping, we could probably pull off some good blast decals, though. You never know...
-
Once we get parallax mapping, we could probably pull off some good blast decals, though. You never know...
We have parallax (height) mapping, it's just that damage decals aren't working and as far as I know, aren't being worked at for the moment.
I'm guessing that with material system it would be possible to set different levels of surface damage to be rendered, either depending on general hull integrity or, say, amount of shots that have hit the ship. Ideally a damage decal would appear where the hit is detected, but I dunno how that would be done regarding the mechanism on how to make a damage decal texture appear on some UV coordinates of the model's surface, and how to make it so that it doesn't meddle with what's going on at the location with normal and height maps otherwise.
-
Doing it just for a few subsystems would be a lot more feasible, I guess. But not completely getting blown off, just changing to another submodel that looks slightly damaged. It's been done before (like on the HTL Hecate). Though Galemp didn't say whether or not it was a ***** to do.
what you mean using a replace texture sexp??
-
no, blow-up-able subobjects.
-
It works pretty well, as you can see on the Hecate. Realistically it's not that different from creating debris, and (despite what VA says) smoothgroups tend to come out well.
There are two big problems: one that's been brought up is that it has to be an unoccupied section of the hull. A turret floating in space above a destroyed object is unacceptable. The other is that sometimes subsystems are repaired in-mission. Consider 'Argonautica' where the Aquitaine is disabled. If the lower engine pods were completely destroyed, when they were reactivated by SEXP the engine glow would be disembodied, with no engine for it to come from.
-
I'm anticipating seeing the decals working nicely. The old decals from days gone by looked like I was shooting the ship with notebook paper.
-
It works pretty well, as you can see on the Hecate. Realistically it's not that different from creating debris, and (despite what VA says) smoothgroups tend to come out well.
There are two big problems: one that's been brought up is that it has to be an unoccupied section of the hull. A turret floating in space above a destroyed object is unacceptable. The other is that sometimes subsystems are repaired in-mission. Consider 'Argonautica' where the Aquitaine is disabled. If the lower engine pods were completely destroyed, when they were reactivated by SEXP the engine glow would be disembodied, with no engine for it to come from.
For this reason I'm thinking that destroying parts of ships should be relegated to in-game cutscenes, or special SEXP'ed events caused by beam fire etc, i.e. a Hecate's engines get ripped off by a scripted beam sequence, but never a bombing from a player.
-
Or perhaps an in-mission checkbox on the ship? If I know the engines will get repaired, I check "no destructible subobjects" and they can't be destroyed.
If I'm just going to blow the ship completely away anyway, why not destroy a few sub-objects?
Would it be possible to somehow "slave" sub-objects to other sub-objects? If that large fin goes or whatever, the two turrets mounted on it go as well.
-
Would it be possible to somehow "slave" sub-objects to other sub-objects? If that large fin goes or whatever, the two turrets mounted on it go as well.
Yeah you can do that by setting those turrets to be children of the subobject piece that they're attached to. Though I've never tried it myself, AFAIK that works ok. :)
Hierarchy wise it would then look like....
Hull
|- StarboardFin
| |- Turret01
| |- Turret02
|
...kinda thing.
Setting it up so that you can blow up pieces of a ship isn't hard and can look good, but setting up a ship so that you can do that too the entire ship is a different thing all together. The effort you'd have to go through to do that for even a small capship, and the massive blow to rendering efficiency it would cause are both huge.
-
I think having permanent damage decals with parallax support would be a good way to go. Setting some up to glow brightly would give the impression of internal fires then fading to a dark hull hole. Also making ships not break up into such small chunks... I'd like to see cruisers broken in two, smouldering as it drifts through space like in this pic...
(http://img291.imageshack.us/img291/1414/dmg1wv1.png)
breaking ships up as much as we do right now doesn't leave much room for detail or atmosphere, with so many chunks we are forced into low poly, low detail debris. My ideal scenario would be hulking wrecks of ships becoming battlefield obstacles to be dodged during combat, fighters flying around the ruined hull of a cruiser in chase of enemies with tiny pieces of debris making dull thuds as they glance off their hulls... With a couple of large pieces of a ship and a surrounding/trailing debris field we could create an awesome atmosphere.
-
I think having permanent damage decals with parallax support would be a good way to go. Setting some up to glow brightly would give the impression of internal fires then fading to a dark hull hole.
That's how it did work (there was a short "burn" texture which became a "hole" texture)
Also making ships not break up into such small chunks... I'd like to see cruisers broken in two, smouldering as it drifts through space like in this pic...
<snip>
breaking ships up as much as we do right now doesn't leave much room for detail or atmosphere, with so many chunks we are forced into low poly, low detail debris. My ideal scenario would be hulking wrecks of ships becoming battlefield obstacles to be dodged during combat, fighters flying around the ruined hull of a cruiser in chase of enemies with tiny pieces of debris making dull thuds as they glance off their hulls... With a couple of large pieces of a ship and a surrounding/trailing debris field we could create an awesome atmosphere.
Well, we already have GIANT debris for the Colossus and some destroyers, which become kamikaze chunks (capable of downing other destroyers), which bugs me. It makes no sense that the debris of a ship could do more damage than the ship itself. :lol:
-
breaking ships up as much as we do right now doesn't leave much room for detail or atmosphere, with so many chunks we are forced into low poly, low detail debris. My ideal scenario would be hulking wrecks of ships becoming battlefield obstacles to be dodged during combat, fighters flying around the ruined hull of a cruiser in chase of enemies with tiny pieces of debris making dull thuds as they glance off their hulls... With a couple of large pieces of a ship and a surrounding/trailing debris field we could create an awesome atmosphere.
WMCoolmon's build looks promising with regards to hulking wrecks.
http://www.hard-light.net/forums/index.php/topic,55622.0.html (http://www.hard-light.net/forums/index.php/topic,55622.0.html)
-
i have a crazy idea...
What if instead of having one ship with various sub objects, we have various ships docked with each other to make 1 ship... think legos. i know it would be a ***** to table and a ***** to fred but.. it might work?
-
Not sure if this would work, but just have the subobjects to be destroyed as "turrets", so a ships could basically be a large hunk of "turrets", and when they are destroyed, the destroy detail texture appears.
As for debris, just have some low poly objects classed as "ships" in the tables, etc. and have them "appear" when a ship is destroyed, or have them there at the start of the mission. Have them non-targetable, or low priority or something so they don't appear in the hostile targeting list.
-
Urgh.
-
Creating a "ship" involves a hell of a lot of overhead that creating "debris" doesn't. The way that a ship blows up and debris spreads can be incredibly complex. Ever notice how a ship actually splits apart when it blows up? That actually appears to be something in the code that's entirely different from debris, but which is used as the basis from which debris is created. That's also what the "Expl propagates" command toggles. If it's set to NO the ship blows up all at once; otherwise it splits into chunks, those blow up, and debris is formed.
Once debris is formed, you also have to calculate how it's going to move, and how it's going to spin. Not only do you now have to consider those chunks splitting apart, you can also consider the force of the explosion, the mass of the chunk, and the surface area of the chunk facing the explosion, as well as how that might relate to the chunk splitting off either the parent ship or the half-ship. (Does it break apart evenly at all points, or are there support beams etc. that are connected to the chunk that would make a certain part stick a little more?)
Now you can generate lots of little particles to represent portions of the ship. Do these bounce off of ships the mission (prohibitively collision-checking expensive) or do ships unrealistically fly through them?
How does debris go away? Do the lights on the debris flicker or do they go out all at once? How do they flicker? Do textures get replaced with an animation to make it flicker, or is it done in-game? By a special shader? Does the debris move when a ship hits it and, if so, how does it move?
If a ship is moving when it blows up, does the debris continue on course, or does it fly in all directions? Or does it randomly pick one of the two options? Something in-between?
Freespace 2 doesn't do a lot of advanced physics thinking, it approximates a lot of stuff. This makes some things easier, but it also makes it a lot more ambiguous - how many Newtons of force does an explosion with a damage value of "100" represent, anyway? Tooling around with this conversion factor (or how you don't have a conversion factor) can dramatically impact backwards compatibility. Along with all this other stuff. Once debris becomes something that stays around in a mission and doesn't disappear a few seconds after the explosion, it can now hit other things or pose as an obstacle to the AI, or block further shots to ships behind a ship that was destroyed. You can also tool around with debris hitpoints.
-
i have a crazy idea...
What if instead of having one ship with various sub objects, we have various ships docked with each other to make 1 ship... think legos. i know it would be a ***** to table and a ***** to fred but.. it might work?
Sorry, but that would actually be even more fiddly to set up than building the main capship out of destroyable subobjects, and having a single ship built out of dozens of others would mean you could fit maybe 4 into the 130 ship limits before running out of slots. You would also cause tons of errors and problems like SEXPing things.
Overall for the effort you'd put into building one complete ship you could have built and released an entire campaign. And you'd probably have lots of bugs left over as well, not to mention it would still not look very good. ;)
Not sure if this would work, but just have the subobjects to be destroyed as "turrets", so a ships could basically be a large hunk of "turrets", and when they are destroyed, the destroy detail texture appears.
As for debris, just have some low poly objects classed as "ships" in the tables, etc. and have them "appear" when a ship is destroyed, or have them there at the start of the mission. Have them non-targetable, or low priority or something so they don't appear in the hostile targeting list.
You can already do the second one - you just need a bit of creative SEXPing and a hulk model ready.
The first one is essentially the same as the standard destroyable subobjects idea, with the added instability of making all those subobjects into turrets, which would mean those subobjects would then BE turrets. (Turrets are just specialised subobjects) There'd be no less effort involved than the standard method of making the entire hull volume destroyable subobjects, so all the cons (no pros :p ) of that method would all still apply.
Overall there are 3 viable options to improve debris beyond what is already in existance:
1) Make more subsystems physical submodels that can be destroyed (as has been done on the hecate). This method doesn't require much more work, and the localised sections mean it's far less likely to mess up much if any smoothing. It can't easily be applied to existing HTL ships but it could be done on future ones.
(Side note here: Galemp - the reason the hecate didn't have messed up smoothing is mainly because max is FAR better with smoothing than the COB format. You can achieve smoothing in max that far exceeds the messy slop that is COB smoothing. If I were to convert the exact same hecate model with the best smoothing settings I can achieve we'd get bad distortion around the seams of the debris chunks.)
2) Have a line in the ships table for each ship that defined a pof to use as a hulk after the main ship is destroyed, and a flag in FRED for each ship to define if it becomes a hulk or not. Upon destruction there'd be the usual explosion but no debris, and the clipping planes would just move out from the centre of the ship in both directions - without the sections drifting apart though. The hulk would be clipped in at the same points - the transition being covered by the explosion, in exactly the same way the current debris work.
3) Parallax/displacement mapped damage decals.
The fourth viable option would be Geomod, and we all know how soon that will be implemented so don't even think about it. :p
-
meh it was just a thought... I only got the idea because I was thinking of doing a model of the Enterprise D and making the saucer section a separate ship from the main hull and docking the two together, while having the engines from the saucer powered down while it is docked.
-
2) Have a line in the ships table for each ship that defined a pof to use as a hulk after the main ship is destroyed, and a flag in FRED for each ship to define if it becomes a hulk or not. Upon destruction there'd be the usual explosion but no debris, and the clipping planes would just move out from the centre of the ship in both directions - without the sections drifting apart though. The hulk would be clipped in at the same points - the transition being covered by the explosion, in exactly the same way the current debris work.
Is there any reason for it to be another model? Do you really need thruster glows, dockpoints, insigniae, gunpoints, missile banks, etc etc?
The fourth viable option would be Geomod, and we all know how soon that will be implemented so don't even think about it. :p
I already implemented Geomod, but it was in a parallel universe. It's the Einstein-Rosen-Podolsky bridge that's giving us the problem. As soon as it's stabilized, we'll have geomodding. :p
-
It should be a separate pof rather than not-moving debris because I know I for one would model hulks very differently to full ship volume debris. Gaping holes, huge blast marks and stuff. :)
It would also allow us to add hulkified versions to existing ships without the very VERY time consuming process of converting back and forth and making sure everything still works.
You could also do it really snazzily and have debris set for the hulk model. The hulks debris would drift away as soon as the hulk was created, meaning that you could have more delicate aspects of a ship get broken off and float away rather than just disappear upon destruction. That could be quite cool and would be quite doable from a modelling standpoint. :)
-
ooo ooo ooo can we have lil miniature models of people floating away from the hull breach?!
-
ooo ooo ooo can we have lil miniature models of people floating away from the hull breach?!
And put your mugshots on all of them? Yeah!
-
Everyone hit by beams/lasers/missiles or the ship blast would be absolutely incinerated and annihilated. People floating away would invoke the feeling that they were covered in an adamantine suit or something.
Anyway, I feel that the best course of action is first to replace the current blastlet and flame particles with something better as soon as they can be safely modified. After that would be the time to modify the tables and code in such a way that one of several generic hull-damage overlay textures is revealed on the ship as it suffers damage. This texture obviously would have a glow map, specular map, and height map. The third part would be the most lengthy: getting decals to work again.
Also, WMCoolmon's current model for debris is probably the best we'll ever get. Besides, post processing can probably make the ship explosions look even better.
-
Anyway, I feel that the best course of action is first to replace the current blastlet and flame particles with something better as soon as they can be safely modified. After that would be the time to modify the tables and code in such a way that one of several generic hull-damage overlay textures is revealed on the ship as it suffers damage. This texture obviously would have a glow map, specular map, and height map. The third part would be the most lengthy: getting decals to work again.
Of all the HTL models that I haven't made, exactly one of them features a custom drawn texture. I don't rate the idea of people going to the HUGE effort of making underlying damaged hull textures for ships as being much higher than say, geomod. ;)
Additionally, that would mean another 3 to 5 large textures per ship, which is way too much cost to performance for the effect you'd get out of it.
The three stages I listed have the advantage of 1) being possible now, 2) being possible with relatively simple code modifications and 3) being already recognised as a long term SCP goal anyway.
Also, WMCoolmon's current model for debris is probably the best we'll ever get. Besides, post processing can probably make the ship explosions look even better.
Actually unless WMC or a like-minded coder beats me to it, I want to at least attempt to implement that hulk POF idea as practice for my Embedded C course at uni this semester.
-
What I meant was 3-5 total generic damage textures of varying sizes that are applied to the ships. Just assign a blast texture to a material or something.
-
What I meant was 3-5 total generic damage textures of varying sizes that are applied to the ships. Just assign a blast texture to a material or something.
You'll be able to do that with scripting when I get around to fixing texture replacement. You can also do it in FRED right now, but of course you'd have to do it for every mission in order for it to be effective. (Yes, you can replace all map types with the new texture replacement code in my builds, as long as you assign that kind of a map to the ship originally. So a ship needs a normal map before you can replace it with a damage normal map.)
-
It should be a separate pof rather than not-moving debris because I know I for one would model hulks very differently to full ship volume debris. Gaping holes, huge blast marks and stuff. :)
It would also allow us to add hulkified versions to existing ships without the very VERY time consuming process of converting back and forth and making sure everything still works.
You could also do it really snazzily and have debris set for the hulk model. The hulks debris would drift away as soon as the hulk was created, meaning that you could have more delicate aspects of a ship get broken off and float away rather than just disappear upon destruction. That could be quite cool and would be quite doable from a modelling standpoint. :)
I like this idea, a separate "hulk" model for dead cap ships would rock.
As for the "deadly debris" collision problem, I can't see it being a huge code change to allow cap ships to "see" large debris items and treat them as ships to be avoided. the hulk idea would work for this particularly because when you spawn one you could flag it appropriately. The collision detection/avoidance code needs work still anyway iirc.
-
Capital ships don't even avoid other ships as it is.
-
Capital ships don't even avoid other ships as it is.
oh :( I really need to get my C on.