There are usually multiple ways to produce a given "Effect" within games...
Typically, you can produce a near perfect representation of an effect as it would appear in real-life., but the problem is performance and complexity.
As such many things are streamlined for Real-Time (30Hz / 33.32ms or better) that Games are required to hit to be Playable.
So, what happens is an Approx. approach is used instead that is more Real-Time Performance Friendly and easier to implement.
Sure... Real-Time Projection is going to produce a more accurate result, and on modern hardware isn't too demanding performance wise.
Still the problem of it being a relatively "complex" approach is still there., especially for those new to programming or lack education in Advanced Mathematics.
Don't get me wrong., I will ALWAYS recommend programmers learn Advanced Maths; or at the very least have
Math Is Fun or
Wolfram Mathworld saved in your favourites.
So, you can either learn the maths behind what you want to do... or jog the old grey matter.
Still, the thing is... Gamers aren't exactly the most observant people.
Remember their focus is usually going to be more on the gameplay., so you can get away with a lot of Smoke & Mirrors to fool them.
The trick isn't to be accurate but minimise anything that might break the illusion.
Let's take Decals as an example here.
A Gamer isn't going to notice that a Bullet Hole Decal hasn't appeared in a perfect Ray from where they've shot... it just has to be "Close Enough", where-as if it is Floating with a Clear Gap to the Surface OR is only partially showing...
Yeah... that they're going to notice as it will instantly break their suspension of disbelief.
As such., we don't have to worry about a perfectly accurate portrayal; instead what we can do is say "If the Ray cast from the Shot is ON a Given Surface... then that's where we place and align the Decal Plane and we keep it within the bounds of said surface.
If we also add some randomness (Rotation and Size) to the Decal Plane, and remember said randomness doesn't have to be BIG; actually it's better if it's subtle; well this adds to the believability of the illusion.
Life is imperfect, and as weird as it sounds; we have to add this imperfection into our approaches because a computer is generally going to produce a perfect result.
If I had the time right now... I'd mock up what I mean in an example.
Still, I will say that most of the time., this is what game development ends up being about; figuring out ways to fake something to be believable.