• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

INF style projectile penetration mutator available!

Status
Not open for further replies.
Hi folks,

just to end the discussion about this penetration feature for projectiles not being implementable to RO, geogob and myself have put some codes together in form of a little mutator that implements the feature of penetrating projectiles to RO.

Due to the fact that we cannot simply add 20-30 lines of code to the original ROBullet base class we had to go the mutator route.
In UT2k4 the replacing of projectiles isn't easy to archive by using a mutator simply due to projectiles not performing the same BeginPlay codes than most other classes do (for reference please check the mutator class header comments). So the standard replacement functions simply do not work here.
So we had to replace the whole weapon, its firemode object and the used projectile class. Due to this being unneeded work and us only wanting to proove that the penetration feature actually works, we selected only a handful of weapons that our mutator replaces by a version that uses projectiles that are able to penetrate thru walls and other objects.

These are: Kar98, MP40, MP41, G41, MG34 and MG42

All these weapons feature their original projectile properties. We've only added the penetration codes to our own replacement for the ROBullet class and inherited the projectile replacements from this on using the original default properties of the original projectile classes.
All this is unneeded extra work that a quick change of the ROBullet projectile base class would actually make obsolete.

The pure penetration code is about 20 lines that we've added to the function HitWall just before the original code decides to destroy the projectile on impact.
These code changes can be checked out in our INFBullet class for the case Tripwire wants to check them out. They are free to use, so use them if you like.

The MaxWall value is actually the one that decides how far thru an object/wall the projectile is able to penetrate. We have set it to 48.0 for letting you actually test things out easily. The value is the same for all weapons used. Something that a real implementation of this feature would need to adjust according to the actual projectile used. In addition we have not added any kind of material check. So you can fire thru wooden doors, standard brick walls and even metal parts, no difference. Again something a full implementation would need to check to adjust the values accordingly.

So try it out, fire thru wall or crate edges and check if the wall or floor behind is hit too. Same for thin pillars or smaller crates. Make sure that your decals stay as long as possible to actually notice the effect if the impact area is not fully in your view.
If you test this mutator offline against some bots, then maybe make sure to use the GOD command to simply not get you killed while testing out specific locations to kill them by firing thru some obstacles.

You can grab the mutator here: http://infiltration.sentrystudios.net/ro/INFPenetration.zip

For those that want to check the sources... grab them here: http://infiltration.sentrystudios.net/ro/INFPenetration_classes.zip
As said... 99% of these codes aren't actually needed for the penetration feature to be implemented.

Have fun!

[edit - from geogob]
Just put the mutator files (2 files) in the RO system folder (...\Steam\SteamApps\common\red orchestra\System)

Start open the practice session menu and click on the mutator tab to add the mutator.
[/edit]

For the case you want to test this mutator on a server... don't forget to add it to the ServerPackages list within the servers used ini file!
ServerPackage=INFPenetration
 
Last edited:
Just gave it a shot, and whaddaya know, it works as advertised. No real surprise considering the talent that made it. How long did that take, anyway? Under a day from start to finish for a proof-of-concept, doing it the hard way?

Hopefully this will act as some kind of evidence that hey, it's not impossible, and if it's natively coded, it'll be even less of a hassle to robustly create.

As was said previously... if Infiltration could do it, with a huge number of high ROF weapons, RO can do it as well with an updated engine. This is the first step towards proving that.
 
Upvote 0
Actually we copy/pasted the 20 penetration code lines over from INF and edited it as needed to get the simple version you can see now.

Most time was spend in checking the RO codes and digging into the UT2k4 mutator stuff again... was years since geo and myself have actually checked out these codes. So we at first had to find a proper way to replace a projectile. Then it was just copy/paste from the RO default properties, nothing more.

Adding the actual penetration codes 'as is' to the ROBullet class needs about two minutes of time and to compile, tho.

And we started with this actually after the other thread on this forum got closed, geo and myself got in contact by using a messenger software and another community member allowing me to download the SDK by using his account details.
So, everything combined with chatting, coding, testing and posting took us only a few hours.
 
Upvote 0
Dslyecxi
Just gave it a shot, and whaddaya know, it works as advertised. No real surprise considering the talent that made it. How long did that take, anyway? Under a day from start to finish for a proof-of-concept, doing it the hard way?

Hopefully this will act as some kind of evidence that hey, it's not impossible, and if it's natively coded, it'll be even less of a hassle to robustly create.

As was said previously... if Infiltration could do it, with a huge number of high ROF weapons, RO can do it as well with an updated engine. This is the first step towards proving that.
I would't say exactly as advertised, its kind of hit and miss. I can shoot through a sandbag wall but not through a arm of a sofa. And actually shooting through walls works sometimes, not all the time. Plus this is offline, not under a servers full load, and in this stage you couldn't test it on a public server (Germans win all the time much?). So another month for development (I don't see anywhere about using real world ballistics statistics to make this) and perhaps another for tweaking/balancing and we might have something here. Good work though, maybe in a couple more versions this can be put on a server.
 
Last edited:
Upvote 0
Byte Me, maybe you didn't get this straight the first time, so let me say again. We were not trying to do a usable game mutator, but a proof of concept to show it is possible. Of course you cannot play with it with only a quater of the weapons supported.

That was not the point of this experiment.

Like beppo said, the penetration is done with a fixed depth. So of course, it doesn't work with all walls.

As for the rest of your post and assumptions you make, I prefer not to comment. You clearly are out of your league here.

Countless is right, Static meshes are not supported or have no specific support should I rather say. The concept can be applied with static meshes and players (yes, bullets could go through players as well, regardless of the per-poly detection). It's all the same basic idea. We only catch HitWall in this demonstration.
 
Last edited:
Upvote 0
Byte Me, maybe you didn't get this straigh the first time, so let me say again. We were not trying to do a usable game mutator, but a proof of concept to show it is possible. Of course you cannot play with it with only a quater of the weapons supported.

That was not the point of this experiment.

Like beppo said, the penetration is done with a fixed depth. So of course, it doesn't work with all walls.

As for the rest of your post and assumptions you make, I prefer not to comment. You clearly are out of your league here.

Countless is write, Static meshes are not supported. The concept can be applied with static meshes and players (yes, bullets could go through players as well, regardless of the per-poly detection). It's all the same basic idea.
I understand its a proof of concept and more or less a alpha version (obviously a fixed penetration depth for smgs and rifles is clearly not meant for servers to play with). My post was to bring some reality to the situation, to actually get some where with it will take some time. Even if it is fleshed out some more, there is no gurantee it will work without causing lag or other bugs/problems. Glad someone is trying this though, I want penetration badly too, but not at the expense of 8 vs 8 player max servers.
 
Upvote 0
Just gave it a shot, and whaddaya know, it works as advertised. No real surprise considering the talent that made it. How long did that take, anyway? Under a day from start to finish for a proof-of-concept, doing it the hard way?

Hopefully this will act as some kind of evidence that hey, it's not impossible, and if it's natively coded, it'll be even less of a hassle to robustly create.

As was said previously... if Infiltration could do it, with a huge number of high ROF weapons, RO can do it as well with an updated engine. This is the first step towards proving that.

Considering that only about 0.1 % of the actual work needed to get this fully working was done, its not surprising a semi-functional mutator could be worked up in a day. Now just add this to all weapons, add proper material handling, handling for static meshes, richochets, and then test it for about a month or more to make sure it hasn't created any bugs, and then gameplay test every map in RO with 32 players to make sure that it hasn't heavily unbalanced any maps or broken the gameplay, and then test it on a wide variety of full servers to make sure the CPU isn't getting overloaded, and you'll be ready to go. See the reality of implementing anything like this in a retail product takes a lot more thought, planning, and work than just pitching something into a mod and seeing what happens. Good luck with this though, I hope you get it working.
 
Upvote 0
Adding our changes to the main RoBullet class making the penetration automatically available to all RO weapons = 5 minutes at most.
Adding material checks = one day at most.
Finding good penetration values for all projectiles RO uses = a couple of days, depending on the testing and/or on how the testers and devs agree on the same values.

Ramm, I don't want to sound rude or something. But if you really think by throwing the ball back to us you will 'win' this 'whatever you thnk it is' then you are wrong.
We gave you the basics and showed that it is doable. Add it with a little option/switch to your main RoBullet class and let the server admins test it out if they want to.
Just copy/paste the 20 lines, add an if statement around it, give this option a name and you will get a lot of server admins to try it out in no time.
This then will give you the performance tests you are looking for.

Oh and your 0.1% would actually be around 50% if not even more...
 
Last edited:
Upvote 0
Well, from here it's a few hours work. Get the code in the ROBullet class, calculate the penetration depending on bullet energy, add a factor for caliber and bullet type, check for material. Best is to have a factor for material hardness and bullet type. You can also correct the speed of the bullet on the other side depending on the caliber, material hardness and penetration depth.

All that is fairly basic stuff mod-wise. Nothing too fancy really. A few check, a good old swith-case to determine the material hardness and a factor that is bullet specific added to each bullet type.
 
Upvote 0
Adding our changes to the main RoBullet class making the penetration automatically available to all RO weapons = 5 minutes at most.
Adding material checks = one day at most.
Finding good penetration values for all projectiles RO uses = a couple of days, depending on the testing and/or on how the testers and devs agree on the same values.

Even if that was true (which is pretty conservative IMO) add a month or 2 of server usage and balance testing and your starting to get close.
 
Upvote 0
Well, then why not just try it out and get your testers to play around with it as soon as possible.

Really, you or better RO and its community can only benefit from this.


And as said before this has nothing to do with 'I'm right and you don't' or other childish things.
We just wanted to show you that it is doable. And trust me, this feature was one of the few that got thru our own testing phases in a very short amount of time cause there is not much to actually discuss about. You can always come up with sources about the real projectile behaviour and so can find values that fit close to the real thing pretty fast.

So, put all diffrences between us we may have or you think we have aside and think about the feature itself and what a great addition it would be for RO.
 
Upvote 0
Status
Not open for further replies.