Skip to content

Latest commit

Β 

History

60 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

quake3-better-gibs-mod

Quake III Arena mod that makes gibs' physics more realistic and satisfying.

gib-directional-3.mp4
better-gibs-comparison.mp4

Namely, with this mod gibs' speed and direction depends on the direction and the amount of damage you inflicted on the poor opponent.

This mod also fixes a few gibs-related bugs, e.g. the fact that in the original game the shotgun gibs very rarely (namely it only gibs when you aim at the enemy's feet). See the individual .patch files.

And yes, if you simply want MOAR GIBS, we got you covered: \set cg_gibs 10; set cg_gibsExtraRandomVelocity 1000 (or however much you need instead of 10):

Screenshot of 100 pieces of gibs flying off

Usage

The installation steps for this mod are the same as for almost every other mod.

  1. Download the mod file

  2. Put the file alongside the pak0.pk3 file of your game, usually
    C:\Programs (x86)\ioquake3\baseq3 or
    C:\Programs (x86)\Steam\steamapps\common\Quake 3 Arena\baseq3. For Team Arena the final folder is missionpack instead of baseq3.

    The directory structure will look like this:

    Quake 3 Arena
    β”œβ”€β”€ baseq3
    β”‚Β Β  β”œβ”€β”€ pak0.pk3
    β”‚Β Β  β”œβ”€β”€ pak1.pk3
    β”‚Β Β  β”œβ”€β”€ pak2.pk3
    β”‚Β Β  β”œβ”€β”€ pak3.pk3
    β”‚Β Β  β”œβ”€β”€ pak4.pk3
    β”‚Β Β  β”œβ”€β”€ pak5.pk3
    β”‚Β Β  β”œβ”€β”€ pak6.pk3
    β”‚Β Β  β”œβ”€β”€ pak7.pk3
    β”‚Β Β  β”œβ”€β”€ pak8.pk3
    β”‚Β Β  └── pak999-baseq3-better-gibs-mod.pk3
    β”œβ”€β”€ missionpack
    β”‚Β Β  β”œβ”€β”€ pak0.pk3
    β”‚Β Β  └── pak999-missionpack-better-gibs-mod.pk3
    └── quake3.exe
    

    Again, if you don't have missionpack, you don't need to create it.

  3. Start the game!

Usage details

This mod is not compatible with mods that modify the client-side logic of the game, i.e. vm/cgame.qvm.

Some (but not all) features of this mod don't require it to be installed on the server, so you can enjoy it on basically any server (except the ones with sv_pure 1).

New CVARs

  • cg_oldGibs and g_oldGibs: set to 0 to disable most (but not all!) of this mod's features
  • cg_gibs is now non-binary, (acting the same as cg_gibfactor in the GibHappy mod!): set to 1.3 to launch 3 more pieces of gibs, or to 0.5 to half the amount of gibs
  • cg_gibsInheritPlayerVelocity
  • cg_gibsKnockback
  • cg_gibsExtraKnockback
  • cg_gibsPiecesFromKnockback
  • cg_gibsLinearVelocityFromKnockback
  • cg_gibsRandomVelocityFromKnockback
  • cg_gibsVerticalVelocityFromKnockback
  • cg_gibsExtraRandomVelocity
  • cg_gibsExtraVerticalVelocity
  • cg_gibsPlayerSpeedFromKnockback
  • cg_gibsPlayerSpeedFromKnockbackMaxFraction
  • cg_gibsDuration
  • cg_gibsOriginalOrigin
  • cg_gibsNoLerpDelay
  • cg_gibsStopPlayerSounds
  • cg_gibsBounceFactor
  • cg_gibsBounceFactorRandomness
  • cg_gibsRotationFactor
  • cg_gibsBloodTrailPeriod
  • cg_gibsFireTrailPeriod
  • cg_gibsFireTrailDuration
  • cg_gibsFireTrailMinKnockback
  • cg_gibsBetterCameraOnGib
  • cg_marks Old CVAR, but it now controls the duration of blood and other marks, in milliseconds.
  • cg_bounceMarksMinImpactSpeed
  • cg_bounceSoundMinImpactSpeed
  • g_gibsMissileDirectionKnockbackWeight As you can tell by the g_ prefix, this variable techically changes gameplay. However, this only affects the direction in which the player's camera will fly when they get gibbed.
  • g_gibsNewEvGibPlayerProtocol: this mod technically modifies the network protocol, namely now the server creates a temp entity for EV_GIB_PLAYER instead of triggering the event by changing the event field on the target. This is compatible with vanilla clients. However, if some other mod does rely on vanilla server behavior, you can set this CVAR to 0 to revert this change.
  • g_gibsDeadBodyLinearVelocityFromKnockback
  • g_gibsOnCollisionMinSpeed
  • g_gibsOnCollisionBaseDamage
  • g_gibsOnCollisionAffectLivePlayers For fooling around (off by default).
  • g_gibsOnCollisionInheritPlayerVelocity
  • g_intermissionDelay
  • g_intermissionDelaySinglePlayer Only in Team Arena.
  • (maybe I've missed some: search the code for +vmCvar_t)

Another way to (almost) restore the old behavior:

// cg_oldGibs 0
// g_oldGibs 0
set cg_gibs 1.0
set cg_gibsInheritPlayerVelocity 0
set cg_gibsExtraRandomVelocity 250
set cg_gibsRandomVelocityFromKnockback 0
set cg_gibsExtraVerticalVelocity 250
set cg_gibsBounceFactor 0.6
set cg_gibsRotationFactor 0
set cg_gibsBetterCameraOnGib 0
set g_gibsMissileDirectionKnockbackWeight 1
set g_gibsNewEvGibPlayerProtocol 0
// Can't "restore" these
// cg_bounceMarksMinImpactSpeed
// cg_bounceSoundMinImpactSpeed

More fun!

Add the following to the baseq3/autoexec.cfg file, then enter a game and press F8.

exec better-gibs-cfgs/autoexec.cfg
bind F8 "vstr gibsFunCmd"

How it works

Nothing too special. The most important feature that mod introduces is that gibs inherit player velocity (cg_gibsInheritPlayerVelocity). And player velocity data is already available client-side. Players velocity gets changed as the player receives damage. More damage = more velocity. That's it.

Integrating into other mods

As was said, this mod modifies vm/cgame.qvm and vm/qagame.qvm, and thus it cannot run alongside other mods that modify those files.
Thus, if you want to run this mod together with another mod that modifies those files, you must merge the source code of that mod with the source code of this mod, and compile the .qvm files.

To do that:

git clone https://github.com/WofWca/quake3-better-gibs-mod.git
cd my-mod-dir
git am ../quake3-better-gibs-mod/patches/*.patch

This should apply the patches to your mod's code, by creating git commits. There might be conflicts, which should not be too hard to resolve. Then apply the copyright notice, Copyright (C) 2025, 2026 WofWca, wherever you have them.

However, it might be simpler to resolve the conflicts at once and not for each commit separately. To achieve that, you can apply the patches to one of the earlier commits of your mod, and then merge the resulting branch into the main branch of your mod.

Also see the ioq3 branch in this repo, which already applied these patches on top of ioquake3. In fact, the .patch files have been generated from that branch, with git format-patch --output-directory=./patches --no-numbered ioquake/main..ioq3. To build a vanillaq3-compatible version in CI, replace COMMAND ${Q3ASM} -o ${QVM_FILE} ${ASM_FILES} with COMMAND ${Q3ASM} -vq3 -o ${QVM_FILE} ${ASM_FILES}. See instructions.

Some of the patches of this mod have already been integrated into the "baseq3a" mod. The pak8a-baseq3a-mod-with-better-gibs.pk3 file was built from the baseq3a branch of this repo.

Similar projects

License

These patches are dual-licensed under either the "QIIIA Game Source License", or the "GPL-2.0", at your option. That is, you may apply these pathes to any other project based on Quake III Arena source code, be it the GPL or pre-GPL release.

Some more about Quake III licensing here:

About

πŸ– More realistic and satisfying gibs' physics

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages