Call of Duty 4 :: IW3xo
a custom client aimed at developers that includes various modifications/additions

GitHub Repository :: Latest Release :: Changelog :: IW3xRadiant

Play Play

Features (In-Depth)

Interface

  • Completely new main menu
  • Improved in-game console (eg. drag / resize with the cursor, console output when not using the fullscreen console, … )
  • ImGUI (Devgui) to access almost all additional dvars eg. map-exporting, movement tweaks / debugging etc …

Rendering

  • Draw debug collision brushes (eg. clip, mantle, multiple, all …)
  • Draw synchronized radiant brushes
  • Trace origin and/or velocity
  • Built in postfx shaders like SSAO, Cellshading, Toon …
  • Direct3D9Ex
  • Borderless fullscreen
  • Custom aspect ratios

Radiant Live-Link (requires IW3xRadiant)

  • Synchronize up to 16 selected radiant-brushes
  • Synchronized brushes are colliding (requires a prefab within the map)
  • Synchronized worldspawn settings (sundirection, suncolor, sunlight)
  • Synchronize cameras (radiant -> server, server -> radiant or both)

Map Exporting

  • Export brushes, brushmodels, triggers (mapEnts)
  • Option to export merged triangles (quads) as patches
  • Option to export leftover unmerged triangles as patches
  • Option to export entities / reflection probes
  • Option to export static models
  • Option to export only certain selection of a map using a bounding box

Movement

  • Dvar tweakable movement types like quake3/cpm or css/surf
  • Dvar tweakable stock movement settings
  • Dvar tweakable origin and/or velocity tracing
  • Dvar tweakable world axis with fps zones / angles
  • MDD World Compass - Ported by: n1kjs
  • MDD CampingGaz (cgaz) - Ported by: n1kjs

FileSystem

  • Load FastFile addons and IWDs on startup
  • Live FastFile loading/reloading
  • Increased AssetPools
  • Rawfile menu loading / hot-reloading

Misc

  • Dvar cheat/write protection removed
  • Removed the need to precache xmodels (more assets will follow)
  • Manipulate entities with console commands (incomplete)
  • Added the most common gsc function additions like setvelocity(), jumpButtonPressed() …
  • Fixed mouse lag on some Windows 10 builds (c) Snake
  • Menu Exporter by SheepWizard
  • Live editing of ocean shader parameters via the DevGui
  • CubeMapShot fixes

In-Depth Features / Functions / Dvars

DevGui

[Hotkeys]
|-> Home       :: Opens ImGui Demo menu (DEBUG Build only)
|-> End        :: Opens DevGui (DEBUG Build only)

[Commands]
|-> devgui        :: opens the devgui
|-> devgui_demo   :: opens the ImGui demo menu

In-Game Console

[Hotkeys]
|-> F1         :: Enable mouse cursor (in-game)
|-> F2         :: Reset Console
|-> Mouse 1    :: Press and hold inputbar to move the console. Press and hold the resize-arrow to resize the console (bottom right)

[Dvars]
|-> xo_con_outputHeight          :: line amount for mini-con output window
|-> xo_con_maxMatches            :: maximum amount of matches to draw
|-> xo_con_padding               :: padding from window borders (default console state (F2))
|-> xo_con_useDepth              :: use depth-preview shader as background for output window
|-> xo_con_hintBoxTxtColor ...   :: change console text colors
|-> xo_con ...
|-> con_minicon_position         :: change position of the minicon
|-> con_minicon ...

Custom Shaders

[Types]
|-> XO_SHADEROVERLAY 1 :: SSAO (dvars : xo_ssao_)
|-> XO_SHADEROVERLAY 2 :: CELLSHADING
|-> XO_SHADEROVERLAY 3 :: OUTLINER (dvars : xo_outliner_)
|-> XO_SHADEROVERLAY 4 :: FULLSCREEN-DEPTH
|-> XO_SHADEROVERLAY 5 :: CUSTOM (dvar : xo_shaderoverlay_custom)

[Dvars]
|-> xo_shaderoverlay_custom   :: material to be used as a full screen overlay shader
|-> xo_shaderdbg_matrix       :: debug transformation matrices

Movement

[Preset Commands]
|-> pm_preset_cs
|-> pm_preset_q3
|-> pm_preset_stock

[Dvars]
|-> mdd_cgaz                     :: display mDd CampingGaz HUD
|-> mdd_cgaz_ground              :: show true ground zones
|-> mdd_cgaz_speed               :: speed at which to draw cgaz
|-> mdd_cgaz_yh                  :: cgaz y position and thickness
|-> mdd_cgaz_rgbaNoAccel         :: color of no accel zones
|-> mdd_cgaz_rgbaPartialAccel    :: color of partial accel zones
|-> mdd_cgaz_rgbaFullAccel       :: color of full accel zones
|-> mdd_cgaz_rgbaTurnZone        :: color of turn zones

|-> mdd_compass                  :: display mDd world compass
|-> mdd_compass_yh               :: compass y position and thickness
|-> mdd_compass_quadrant_rgbas0  :: color 0 to 90 quadrant
|-> mdd_compass_quadrant_rgbas1  :: color 90 to 180 quadrant
|-> mdd_compass_quadrant_rgbas2  :: color 180 to 270 quadrant
|-> mdd_compass_quadrant_rgbas3  :: color 270 to 360 quadrant
|-> mdd_compass_ticks_rgba       :: color of ticks

|-> pm_debug_drawAxis            :: draw axial information (axis/fps Zones)
|-> pm_debug_drawAxis_radius     :: radius of axis/zones circle
|-> pm_debug_drawAxis_height     :: height offset (from player origin)
|-> pm_debug_drawAxis_col ...    :: color of zone/s
|-> pm_debug_traceOrigin         :: trace player origin (multiple options)
|-> pm_debug_traceVelocity       :: trace player velocity (multiple options)

|-> pm_hud_enable                :: disable debug hud with speed/movementtype display
|-> pm_movementType              :: movement TYPES
|-> pm_cpm_ ....                 :: q3 settings
|-> pm_cs_ ....                  :: cs settings
|-> pm_ ......

Debug Collision Brushes

[Dvars]
|-> r_drawCollision                    :: enables collision drawing (multiple options)
|-> r_drawCollision_brushAmount        :: max amount of brushes to draw (starting at index _brushBegin)
|-> r_drawCollision_brushDist          :: max drawing distance
|-> r_drawCollision_brushIndexVisible  :: show clipMap brush indices for each visible debug brush
|-> r_drawCollision_brushIndexFilter   :: ^ only draw specific brushes. Format "index index index" (1 2 3 4 20)
|-> r_drawCollision_brushSorting       :: sort brushes (Z-Fighting; Disabled when using filters) 

|-> r_drawCollision_hud                :: debug hud displaying the current amount of brushes/polygons
|-> r_drawCollision_hud_ ...    

|-> r_drawCollision_material           :: only show brushes with this material index (see below)   
|-> r_drawCollision_materialList       :: print a list of all materials with their index
|-> r_drawCollision_materialInclude    :: preset filters

|-> r_drawCollision_polyLit            :: enable custom-shader usage (unlit fake-lighting)
|-> r_drawCollision_poly ...           :: polygon options
|-> r_drawCollision_line ...           :: line options

Debug Collision Brushes - Map Exporting

[Commands]
|-> mapexport                       :: export highlighted brushes + options or bounding box selection
|-> mapexport_selectionAdd          :: adds a point to the bounding box (needs mapexport_selectionMode and 2 points in total)
|-> mapexport_selectionClear        :: reset the bounding box (needs mapexport_selectionMode)

[Dvars]
|-> mapexport_selectionMode         :: export only certain parts of a map by using a bounding box (see commands above)
|-> mapexport_brush5Sides           :: export brushes that only consist of 5 sides
|-> mapexport_brushEpsilon1         :: brushside generation epsilon 1 (adv. only)
|-> mapexport_brushEpsilon2         :: brushside generation epsilon 2 (adv. only)
|-> mapexport_brushMinSize          :: only export brushes (with more then 6 sides) if their diagonal length is greater then this
|-> mapexport_writeQuads            :: export merged triangles as quads, if enabled
|-> mapexport_writeTriangles        :: export leftover triangles, if enabled
|-> mapexport_writeEntities         :: export map entities, if enabled
|-> mapexport_writeModels           :: export static models, if enabled

Radiant Live-Link

[Commands]
|-> radiant_saveSelection        :: save the current brush selection
|-> radiant_clearSaved           :: clear saved brushes

[Dvars]
|-> radiant_live                 :: enables live-Link
|-> radiant_liveDebug            :: enables live-Link debug prints
|-> radiant_livePort             :: port used for live-Link (has to match radiant)
|-> radiant_syncCamera           :: camera sync modes (radiant->game, game->radiant, both)
|-> radiant_brushColor           :: color of debug brushes created with radiant
|-> radiant_brushCollision       :: enable brush collision (map needs to include prefab <dynamic_collision_bmodels.map>)
|-> radiant_brushLit             :: enable custom-shader usage (unlit fake-lighting)
|-> radiant_brushWireframe       :: enable additional wireframe
|-> radiant_brushWireframeColor  :: color of wireframe

Menus

[Commands]
|-> menu_loadlist_raw <menulist_name.txt>                :: rawfile load/reload menus defined in a menulist. 
                                                            files need to be in devraw directories (needs fs_usedevdir)   
|-> menu_list                                            :: prints a list of all loaded menus to the console
|-> menu_open <menu_name>                                :: opens a loaded menu by name
|-> menu_open_ingame <menu_name>                         :: opens a loaded menu by name (ingame)
|-> menu_closebyname <menu_name>                         :: close a loaded and visible menu by name
|-> menu_export <menu_name> <[optional] subdir>          :: exports the specified menu
|-> menu_export_itemdefs <menu_name> <[optional] subdir> :: exports all itemdefs of the specified menu

Misc

[Commands]
|-> help                   :: link, opens IW3xo Project page
|-> iw3xo_github           :: link, opens IW3xo Github repo
|-> iw3xo_radiant_github   :: link, opens IW3xRadiant Github repo
|-> patchdvars             :: re-register cg_fovscale and snaps to patch their limits
|-> r_noborder             :: borderless fullscreen (needs vid_xpos/ypos 0)
|-> r_d3d9ex               :: enables extended dx9 interface (on by default)
|-> r_aspectRatio          :: use 4 / custom to enable custom aspect ratios (r_aspectRatio_custom)
|-> r_aspectRatio_custom   :: 21:9 = 2.333 / 32:9 = 3.5555
|-> cubeMapShot            :: fully works now -> disable r_smp_backend when using it

|-> loadzone <zoneName>                   :: load/reload zones (fastfiles)
|-> ent_rotateTo <entityID> <angles vec3> :: rotate any entity 
|-> more entity commands to follow ....

Play

None of this would be possible without the friends over at IW4x and Plutonium
Much love ❤