Star Wars: Jedi Outcast - FluffyMod with Various Quality-of-Life changes
Added 2022-06-26 20:13:35 +0000 UTC
This is a project I did recently. I wanted to make a few changes to the game before playing through it, and then things went out of hand and I did a lot of changes. The biggest changes include better widescreen support (by the default the game stretches everything), better-looking shadows, support for tweaking weapon values, and some other stuff.
There are 4 downloads in this post:
- FluffyMod.zip - This is the mod itself. Extract to where you have the game installed. Make backups of the files it's replaced if you want to revert (or reinstall the game).
- FluffyMod-Preferences.zip (Optional) - This contains a bunch of personal preferences as an example of how you can customize the play experience (different gun position, static crosshair, no self-shadowing, and other changes).
- FluffyMod-Rebalance.zip (Optional) - This was my attempt at rebalancing the game to make the gunplay closer to previous games in the series. Blasters are much deadlier and most projectiles move much faster. Since it affects enemies, this makes the game noticeable harder.
- FluffyMod-Gonk.zip (Optional) - Silly mod that replaces Kyle with a Gonk droid. The game isn't fully playable like this as Gonk can't do everything Kyle can do.
I based my mod on this codebase: https://github.com/eezstreet/JediKnight2
And here's the source code for my mod: https://github.com/FluffyQuack/JediKnight2/tree/FluffyMod
Read below for a full list of changes (the text in parenthesis is how I tagged the changes in the code, for people who want to look up exactly how these changes were made and want to include them in their own builds).
Better widescreen support (Widescreen2D)
- 2D HUD elements now render non-stretched in aspect ratios that aren't 4:3. Any aspect ratio is supported (through extremely tall or wide aspect ratio may place elements in locations where they'll be hard to see).
- Full-screen 2D menus (ie, main menu and datapad) are rendered 4:3 with black borders in wider aspect ratios.
- The binoculars and light amplification goggles overlays are stretched. I figured that was the best way to handle those considering the assets for them are built to be fullscreen and there aren't widescreen variants.
- Pre-rendered cutscenes now scale and crop so it displays correctly at various aspect ratios.
- FOV and letterboxing is automatically changes for real-time cutsenes. Letterboxing disappears entirely at wider aspect ratios.
- New cvar: "cg_alwaysLetterboxCutscenes" - Set to 1 if you want letterboxing at wide aspect ratio during cutscenes. Default is 0.
- FOV is automatically updated behind the scenes to keep vertical FOV the same when changing aspect ratio.
- I didn't add new resolutions to the menus, so you'll need to change via the console to access non-4:3 resolutions using these commands: r_customWidth & r_customHeight & vid_restart
Option to control how long before enemy bodies despawn (CorpseRemovalTime):
- New cvar: "g_corpseRemovalTime" - Quantity of seconds before a body despawns. Default is 10. Set to 0 so they last forever.
- Based on code from Jedi Academy.
Toggle to make stencil shadows not self-shadow (StencilNoSelfShadows):
- New cvar: "r_noSelfShadow" - Set to 1 to disable self-shadowing. Default is 0.
Added a ton of cvars to customize weapon damage and projectile speeds (ProjectileCVars):
- All of these cvars default to 1, and they all multiply damage values or projectile speeds.
- Note: A lot of these will affect enemies as well.
- Full list:
- g_blasterVelocity / g_blasterDamage - Affects blaster rifle and bryar pistol
- g_disruptorDamage
- g_bowcasterVelocity / g_bowcasterDamage
- g_repeaterVelocity / g_repeaterDamage
- g_dempVelocity / g_dempDamage
- g_flechetteVelocity / g_flechetteDamage
- g_rocketLauncherVelocity / g_rocketLauncherDamage - Affects rockets fired by the player, but not rockets from all enemy types
- g_ATSTDamage
- g_mineDamage
- g_detonatorDamage
- g_saberDamage
- g_flyingSaberDamage
- g_miscVelocity and g_miscDamage - Affects imperial probe, turrets, remote droids, mark1, mark2, and seekers
Added a new type of config file that's always executed (AllowMultipleAutoexecs):
- The game will check if alwaysrun.cfg exists and run it. If this exists in multiple archives, each version will be run.
- Run order for config files (later files take priority):
- default.cfg
- jk2config.cfg
- alwaysrun.cfg
- autoexec.cfg
Increased game entity limit, and some other related limitations (HigherEntityMax):
- Default game entity limit is 1022, and I've quadrupled the limit. You'd never hit the default limit during normal gameplay, but it could be reached via cheats or modding.
- Similar limitations (for instance, particle limit) have also been quadrupled.
Made it possible to freely zoom in and out with binoculars and disruptor scope (ZoomInOut):
- In order to freely zoom in and out, map these new bindable commands: +zoomin and +zoomout
Misc changes:
- Parts of the rendering code updated with code from Jedi Academy, for instance, all of the stencil shadow code.
- Gun FOV now no longer changes when cg_fov changes. Set new cvar "cg_autoChangeGunFOV" to 1 to revert to old behaviour (DontAutoChangeGunFOV).
- It's now allowed to auto-complete cheat commands by pressing tab in the console (AllowAutoCompleteCheatCVars).
- cg_fov cvar now gets saved to config file automatically.
- It's now possible to skip cutscenes by pressing Escape in addition to the use key (EscapeToSkipCutscenes).
- Game will now check for files with ZIP extension in addition to PK3 when loading game archives (LoadZipAlongsidePk3).
- Added code for replacing Kyle model with any other model, this is turned off by default and can only be turned on via code changes and recompiling (KyleModelOverride).
- Changed the cg_dynamicCrosshair cvar to behave like this:
- 0 = Always static, non-dynamic crosshair
- 1 = Always dynamic crosshair
- 2 = Static crosshair in first person. Dynamic crosshair in third person.
- New cvar: "cg_noSaberCrosshair" - If 1, there will be no crosshair when using saber or other melee weapons. Default is 0.
- Made cg_gunX, cg_gunY, and cg_gunZ no longer count as cheat cvars.
- If cg_thirdPersonHorzOffset is not zero, the game will now push the camera off walls if camera would be clipping into walls (HorizonalCameraOffsetAvoidWalls).
- Fixed a legacy bug where a random datapad category button would light up after selecting one with the mouse (ClearMenuItemFocusAfterMouseClick).
- Disabled rendering of player shadow if player is using saber in first person (NoFirstPersonSaberShadow).
- Maybe some other stuff I've forgotten about.
Known issues:
- The rocket launcher lock-on symbol on the HUD is stretched.
- Dead enemies can block elevators. If this happens and g_corpseRemovalTime is set to 0, then temporarily set it to non-zero so bodies despawn.
- Savegames made from earlier versions of the game most likely won't work.
- The text crawl during the intro cinematic doesn't have correct size and position in wider aspect ratios.
- The 3D saber mesh in the main menu doesn't render in the correct position in certain aspect ratios.
- Framerate can get low in rooms with a lot of dead enemies with stencil shadows on.