This mod adjusts all of the weights and velocities of the player weapon projectiles to be physically correct according to popular online sources. It also adjusts ammo items to match their models (e.g. 4 grenades actually give 4 grenades) and adds a few missing light sources to weapon projectiles.
Just copy the pk4 file into your base directory and load a new game.
Made with and tested on vanilla Doom 3.
After further review and a lot more testing, it looks like 1 m/s is actually close to 50 map units in doom 3 so I've adjusted all of the velocities accordingly (reference image included).
I reduced all masses by 1 order of magnitude so now 100 units is 1 kg (previously 10 units = 1 kg) and the projectile collisions feel much better now especially at the reduced speeds. My testing method here was basically just throwing a non-explosive 1 kg mass (grenade) at various objects around the game. This makes the original values for the rocket mass much more reasonable in comparison (300 = 3kg).
Full changes from v1.0 below.
weapon_chaingun.def
- "velocity" "85000 0 0" // 2,800 ft/s (850 m/s) https://en.wikipedia.org/wiki/7.62%C3%9751mm_NATO
+ "velocity" "42500 0 0" // 50 u/m * 850 m/s (2,800 ft/s) https://en.wikipedia.org/wiki/7.62%C3%9751mm_NATO
- "mass" "0.1" // 147 gr (10 g) M80 FMJ https://en.wikipedia.org/wiki/7.62%C3%9751mm_NATO
+ "mass" "1.0" // 147 gr (10 g) M80 FMJ https://en.wikipedia.org/wiki/7.62%C3%9751mm_NATO
weapon_handgrenade.def
- "contact_friction" "0.5" // appropriate levels of friction
- "bounce" "0.5" // appropriate levels of bounce
- "mass" "10" // 1 kg = ~2.5 * 14 oz (400 g) https://en.wikipedia.org/wiki/M67_grenade
- "gravity" "980" // 9.8 m/s?
+ "contact_friction" "0.7" // appropriate levels of friction
+ "bounce" "0.3" // appropriate levels of bounce
+ "mass" "100" // 1 kg = ~2.5 * 14 oz (400 g) https://en.wikipedia.org/wiki/M67_grenade
+ "gravity" "490" // 50 u/m * 9.8 m/s
weapon_machinegun.def
- "velocity" "77700 0 0" // 777 m/s (2,550 ft/s) https://en.wikipedia.org/wiki/FN_5.7%C3%9728mm
+ "velocity" "38850 0 0" // 50 u/s * 777 m/s (2,550 ft/s) https://en.wikipedia.org/wiki/FN_5.7%C3%9728mm
- "mass" "0.017" // 27 gr (1.7 g) SS195LF JHP https://en.wikipedia.org/wiki/FN_5.7%C3%9728mm
+ "mass" "0.17" // 27 gr (1.7 g) SS195LF JHP https://en.wikipedia.org/wiki/FN_5.7%C3%9728mm
weapon_pistol.def
- "velocity" "36000 0 0" // 1,180 ft/s (360 m/s) https://en.wikipedia.org/wiki/9%C3%9719mm_Parabellum
+ "velocity" "18000 0 0" // 50 u/m * 360 m/s (1,180 ft/s) https://en.wikipedia.org/wiki/9%C3%9719mm_Parabellum
- "mass" "0.0745" // 7.45 g (115 gr) Federal FMJ https://en.wikipedia.org/wiki/9%C3%9719mm_Parabellum
+ "mass" "0.745" // 7.45 g (115 gr) Federal FMJ https://en.wikipedia.org/wiki/9%C3%9719mm_Parabellum
weapon_plasmagun.def
- "velocity" "2187.5 0 0" // 875 map units per second / ~40 units per meter = 21.875 m/s https://doomwiki.org/wiki/Plasma_gun
+ "velocity" "1093.75 0 0" // 50 u/m * 21.875 m/s (875 d1 map units per second / ~40 u/m) https://doomwiki.org/wiki/Plasma_gun
- "mass" "10" // 1 kg at 21 m/s is enough
+ "mass" "100" // 1 kg at 21 m/s is enough
weapon_shotgun.def
- "velocity" "48000 0 0" // 12-gauge 1 oz slug ~ 1,560 ft/s (480 m/s) https://en.wikipedia.org/wiki/Shotgun_slug
+ "velocity" "24000 0 0" // 50 u/m * 480 m/s (1,560 ft/s) 12-gauge 1 oz slug https://en.wikipedia.org/wiki/Shotgun_slug
- "mass" "0.035" // 12-gauge #00 Buck 8 Pellets/oz (28 g) = 3.5 g https://en.wikipedia.org/wiki/Shotgun_shell
+ "mass" "0.35" // 12-gauge #00 Buck 8 Pellets/oz (28 g) = 3.5 g https://en.wikipedia.org/wiki/Shotgun_shell
if ( thinkFlags & TH_THINK ) {
if ( thrust && ( gameLocal.time < thrust_end ) ) {
// evaluate force
thruster.SetForce( GetPhysics()->GetAxis()[ 0 ] * thrust );
thruster.Evaluate( gameLocal.time );
}
}
This check at the top of base projectile's update function in the game code is stopping thrust calculations (afaik) from running for a rocket. No clue how to set a entity's "thinkFlags" via scripting at all. What a shame.