"GameInfo" { game "citadel" title "Citadel" type multiplayer_only nomodels 1 nohimodel 1 nocrosshair 0 hidden_maps { "test_speakers" 1 "test_hardware" 1 } nodegraph 0 perfwizard 0 tonemapping 0 GameData "citadel.fgd" PGIVersion "39A735A413003C88A806B364C32DFC6D077E551B9E4EC6C7B11D41E8E67BFA0C" Localize { DuplicateTokensAssert 1 } SupportedLanguages { "brazilian" "3" "czech" "3" "english" "3" "french" "3" "german" "3" "italian" "3" "indonesian" "3" "japanese" "3" "koreana" "3" "latam" "3" "polish" "3" "russian" "3" "schinese" "3" "spanish" "3" "thai" "3" "turkish" "3" "ukrainian" "3" } FileSystem { // // The code that loads this file automatically does a few things here: // // 1. For each "Game" search path, it adds a "GameBin" path, in \bin // 2. For each "Game" search path, it adds another "Game" path in front of it with _ at the end. // For example: c:\hl2\cstrike on a french machine would get a c:\hl2\cstrike_french path added to it. // 3. If no "Mod" key, for the first "Game" search path, it adds a search path called "MOD". // 4. If no "Write" key, for the first "Game" search path, it adds a search path called "DEFAULT_WRITE_PATH". // // // Search paths are relative to the exe directory\..\ // SearchPaths { // These are optional language paths. They must be mounted first, which is why there are first in the list. // *LANGUAGE* will be replaced with the actual language name. If not running a specific language, these paths will not be mounted // These currently hold localized images containing text, so they need to follow the UI language, not the audio language. // When we ship localized VO, it should go in a separate Game_AudioLanguage path (e.g. citadel_vo_*LANGUAGE*) Game_UILanguage citadel_*LANGUAGE* // These are optional low-violence paths. They will only get mounted if you're in a low-violence mode. Game_LowViolence citadel_lv Game citadel Game core } "UserSettingsPathID" "USRLOCAL" "LegacyUserSettingsPathID" "MOD" } MaterialSystem2 { RenderModes { game Default game Forward game Deferred game Outline game Depth game FrontDepth game ShadowSilhouette dev ToolsVis // Visualization modes for all shaders (lighting only, normal maps only, etc.) dev ToolsWireframe // This should use the ToolsVis mode above instead of being its own mode\ tools ToolsUtil // Meant to be used to render tools sceneobjects that are mod-independent, like the origin grid } } MaterialEditor { "DefaultShader" "environment_texture_set" } NetworkSystem { BetaUniverse { FakeLag 40 FakeLoss .1 //FakeReorderPct 0.05 //FakeReorderDelay 10 //FakeJitter "low" // Turning off fake jitter for now while I work on making the CQ totally solid FakeReorderPct 0 FakeReorderDelay 0 FakeJitter "off" } "SkipRedundantChangeCallbacks" "1" } RenderSystem { IndexBufferPoolSizeMB 32 UseReverseDepth 1 Use32BitDepthBuffer 0 Use32BitDepthBufferWithoutStencil 0 VulkanMutableSwapchain 1 "LowLatency" "1" "VulkanRequireSubgroupWaveOpSupport" "1" "VulkanRequireDescriptorIndexing" "1" "VulkanStagingPMBSizeLimitMB" "384" "VulkanOnlyTestProbability" "0" "VulkanDefrag" "1" "MinStreamingPoolSizeMB" "1024" "MinStreamingPoolSizeMBTools" "2048" } NVNGX { AppID 103371621 SupportsDLSS 1 } Engine2 { HasModAppSystems 1 Capable64Bit 1 URLName citadel RenderingPipeline { SupportsMSAA 0 DistanceField 1 } PauseSinglePlayerOnGameOverlay 1 PauseOnCtrlConsole 0 // Src2 issues a 'setpause' on holding down CTRL + toggleconsole key, disable this for Deadlock. DefensiveConCommands 1 DisableLoadingPlaque 1 LocalServerClientAccess 1 "MapMaxCoord" "32768" } ContentBuilder { ResourceCompilerDirectXUsesWARP "0" } SoundSystem { SteamAudioEnabled "1" WaveDataCacheSizeMB "256" "UsePlatTime" "1" } Sounds { HierarchicalEncodingFiles "1" } ToolsEnvironment { "Engine" "Source 2" "ToolsDir" "../sdktools" // NOTE: Default Tools path. This is relative to the mod path. } pulse { "pulse_enabled" "1" } Hammer { "fgd" "citadel.fgd" // NOTE: This is relative to the 'game' path. "GameFeatureSet" "Citadel" "DefaultSolidEntity" "trigger_multiple" "DefaultPointEntity" "info_player_start" "NavMarkupEntity" "func_nav_markup" "OverlayBoxSize" "8" "TileMeshesEnabled" "1" "RenderMode" "ToolsVis" "CreateRenderClusters" "1" "DefaultMinDrawVolumeSize" "2048" "DefaultMinTrianglesPerCluster" "16384" "TileGridSupportsBlendHeight" "1" "TileGridBlendDefaultColor" "0 255 0" "LoadScriptEntities" "0" "UsesBakedLighting" "1" "UseAnalyticGrid" "0" "SupportsDisplacementMapping" "0" "SteamAudioEnabled" "1" "LatticeDeformerEnabled" "1" "ShadowAtlasWidth" "16384" "ShadowAtlasHeight" "16384" "TimeSlicedShadowMapRendering" "1" } SoundTool { "DefaultSoundEventType" "src1_3d" SoundEventBaseOptions { "Base.Announcer.VO.2d" "" "Base.World.VO.Emitter.3d" "" "Base.Hero.VO.Ping.2d" "" "Base.Hero.VO.2d" "" "Base.Hero.VO.3d" "" "Base.Hero.VO.Ability.3d" "" "Base.Hero.VO.Ultimate.3d" "" "Base.Hero.VO.Dash.3d" "" "Base.Hero.VO.Effort.3d" "" "Base.Hero.VO.Pain.3d" "" "Base.Hero.VO.Melee.3d" "" "Base.Hero.VO.Death.3d" "" } } RenderPipelineAliases { } ResourceCompiler { ForceVulkanForMapBuild 1 // Overrides of the default builders as specified in code, this controls which map builder steps // will be run when resource compiler is run for a map without specifiying any specific map builder // steps. Additionally this controls which builders are displayed in the hammer build dialog. DefaultMapBuilders { "bakedlighting" "1" // Enable lightmapping during compile time "envmap" "0" // turned off since it currently causes an assert and doesn't work due to some build issue "nav" "1" // Generate nav mesh data "sareverb" "0" // Bake Steam Audio reverb "sapaths" "0" // Bake Steam Audio pathing "sacustomdata" "1" // Bake Steam Audio custom data } // Game specific steps run after the map has been built, in the order they are listed here GameSpecificPostMapBuildSteps { "pve_nav_cache" "1" // Bake the spots the PVE directors spawn things on } MeshCompiler { OptimizeForMeshlets 1 TrianglesPerMeshlet 64 // Maximum valid value currently is 126 UseMikkTSpace 1 EncodeVertexBuffer 1 EncodeVertexBufferVersion 1 EncodeVertexBufferLevel 3 EncodeIndexBuffer 1 SplitDepthStream 1 } WorldRendererBuilder { VisibilityGuidedMeshClustering "1" MinimumTrianglesPerClusteredMesh "8192" MinimumVerticesPerClusteredMesh "8192" MinimumVolumePerClusteredMesh "8192" // ~20x20x20 cube MaxPrecomputedVisClusterMembership "96" MaxCullingBoundsGroups "128" UseAggregateInstances "1" AggregateInstancingMeshlets "1" BakePropsWithExtraVertexStreams "1" MergeTranslucents "1" } BakedLighting { Version 4 ImportanceVolumeTransitionRegion 512 // distance we transition from high to low resolution charts LightmapChannels { direct_light_shadows 1 debug_chart_color 1 directional_irradiance_sh2_dc 1 directional_irradiance_sh2_r { CompressedFormat DXT1 } directional_irradiance_sh2_g { CompressedFormat DXT1 } directional_irradiance_sh2_b { CompressedFormat DXT1 } } LightmapGutterSize 2 // For bicubic filtering UseStaticLightProbes 0 LPVAtlas 1 } SteamAudio { ReverbDefaults { GridGenerationType "0" // 0: Automatic, Everywhere, 1: Automatic, Use Probe Generation Volume, 2: Manual FilterUsingVolumes "1" // Filter Using Probe Exclusion Volumes ( boolean ) FilterUsingNavMesh "0" // Filter Using NavMesh GridSpacing "3.0" HeightAboveFloor "1.5" RebakeOption "0" // 0: cleanup, 1: manual, 2: auto NumRays "32768" NumBounces "64" IRDuration "1.0" AmbisonicsOrder "1" ClusteringEnabled "0" ClusteringCubemapResolution "16.0" ClusteringDepthThreshold "10.0" } PathingDefaults { GridGenerationType "0" // 0: Automatic, Everywhere, 1: Automatic, Use Probe Generation Volume, 2: Manual FilterUsingVolumes "1" // Filter Using Probe Exclusion Volumes ( boolean ) FilterUsingNavMesh "0" // Filter Using NavMesh GridSpacing "3.0" HeightAboveFloor "1.5" RebakeOption "0" // 0: cleanup, 1: manual, 2: auto NumVisSamples "1" ProbeVisRadius "0" ProbeVisThreshold "0.1" ProbeVisPathRange "1000.0" } CustomDataDefaults { GridGenerationType "0" // 0: Automatic, Everywhere, 1: Automatic, Use Probe Generation Volume, 2: Manual FilterUsingVolumes "1" // Filter Using Probe Exclusion Volumes ( boolean ) FilterUsingNavMesh "1" // Filter Using NavMesh GridSpacing "6" HeightAboveFloor "1.5" RebakeOption "0" // 0: cleanup, 1: manual, 2: auto BakeOcclusion "0" // 0: Disabled, 1: Enabled BakeDimensions "1" // 0: Disabled, 1: Enabled BakeMaterials "0" // 0: Disabled, 1: Enabled OcclusionPathing "1" OcclusionReflection "0" OcclusionReflectionRays "16384" OcclusionReflectionBounces "16" DimensionsOutsideThreshold "0.02" } ProbeGenerationVolumeDefaults { Spacing "3.0" Height "1.5" HeightSpacing "12" UseForReverb "0" UseForPathing "0" UseForCustomData "1" FilterUsingVolumes "1" FilterUsingNavMesh "1" } } SoundEventScripts { OmitMetadataAndLineText "1" } SoundStackScripts { CompileStacksStrict "1" } VisBuilder { MaxVisClusters "4096" PreMergeOpenSpaceDistanceThreshold "128.0" PreMergeOpenSpaceMaxDimension "2048.0" PreMergeOpenSpaceMaxRatio "8.0" PreMergeSmallRegionsSizeThreshold "20.0" } VDataLocalization { GameOutputPath "resource/localization/citadel_vdata" TokenPrefix "Citadel_VData_" } TextureCompiler { //Compressor "lz4" //CompressMipsOnDisk "1" //CompressMinRatio "95" AllowNP2Textures "1" AllowPanoramaMipGeneration "1" //PublicToolsDefaultMaxRes "2048" } } Source1Import { "forcevtxfileupconvert" 1 } WorldRenderer { EnvironmentMaps 1 EnvironmentMapFaceSize 256 EnvironmentMapRenderSize 1024 EnvironmentMapFormat BC6H EnvironmentMapPreviewFormat BC6H EnvironmentMapColorSpace linear EnvironmentMapMipProcessor GGXCubeMapBlur // Build cubemaps into a cube array instead of individual cubemaps. "EnvironmentMapUseCubeArray" 1 "EnvironmentMapCacheSizeTools" 300 BindlessSceneObjectDesc CitadelBindlessDesc GrassCastsShadows 1 } SceneSystem { GpuLightBinner 1 FogCachedShadowAtlasWidth 2048 FogCachedShadowAtlasHeight 2048 FogCachedShadowTileSize 128 GpuLightBinnerSunLightFastPath 1 CSMCascadeResolution 2048 SunLightManagerCount 0 SunLightManagerCountTools 0 DefaultShadowTextureWidth 6144 DefaultShadowTextureHeight 6144 DynamicShadowResolution 1 TransformTextureRowCount 1024 TransformTextureRowCountToolsMode 6144 SunLightMaxCascadeSize 4 SunLightShadowRenderMode Depth NonTexturedGradientFog 1 CubemapFog 1 VolumetricFog 1 FrameBufferCopyFormat R11G11B10F Tonemapping 0 WellKnownLightCookies { "blank" "materials/effects/lightcookies/blank.vtex" "flashlight" "materials/effects/lightcookies/flashlight.vtex" } ComputeShaderSkinning 1 } NavSystem { "NavTileSize" "128.0" "NavCellSize" "1.5" "NavCellHeight" "2.0" // Hull definitions live in scripts/nav_hulls.vdata // Preset definitions live in scripts/nav_hulls_presets.vdata "NavHullsPreset" "default" "NavRegionMinSize" "8" "NavRegionMergeSize" "20" "NavEdgeMaxLen" "1200" "NavEdgeMaxError" "51.0" "NavVertsPerPoly" "4" "NavDetailSampleDistance" "120.0" "NavDetailSampleMaxError" "2.0" "NavSmallAreaOnEdgeRemovalSize" "81.0" } AnimationSystem { "DisableServerInterpCompensation" "1" "DisableAnimationScript" "1" "ServerPoseRecipeHistorySize" "60" "ClientPoseRecipeHistorySize" "60" } ModelDoc { "models_gamedata" "models_gamedata.fgd" "features" "modelconfig;gamepreview;wireframe_backfaces;distancefield" } Particles { "EnableParticleShaderFeatureBranching" "1" "Float16HDRBackBuffer" "1" "PET_SupportFadingOpaqueModels" "1" "BindlessParticleShader" "1" "Features" "non_homogenous_forward_layer_only" } Physics { "EnableWorldCompounds" "1" } ConVars { "rate" { "min" "98304" "default" "786432" "max" "1000000" } // Networking - General "sv_minrate" "98304" "sv_maxunlag" "0.500" "sv_maxunlag_player" "0.200" "sv_lagcomp_filterbyviewangle" "false" "cl_usesocketsforloopback" "1" "cl_poll_network_early" "0" "cq_buffer_bloat_msecs_max" "120" // 7.68 ticks @64hz max cq bloat // Networking - Induced latency (pred offset) "cl_tickpacket_recvmargin_desired" "5" // 5 ms base, min. floor for protecting against thrashing the queue "cl_tickpacket_desired_queuelength" "1" "cl_async_usercmd_send_disabled_recvmargin_min" "0.5" // Additional frame since we do not use the async usercmd send (potentially unneccessary) "cl_clock_buffer_ticks" "1" // Buffer added to the simulation clock margin ( affects pred offset and cadence of client world ticks ) "cl_interp_ratio" "0" "cl_async_usercmd_send" "false" // We don't support early prediction at the moment, which async send requires // Nav gen "nav_gen_connect_dist_a" "2.0" // Spew warning when adding/removing classes to/from the top of the hierarchy "panorama_classes_perf_warning_threshold_ms" "0.75" // Panorama - enable minidumps on JS exceptions "panorama_js_minidumps" "1" // Enable the render target cache optimization. "panorama_disable_render_target_cache" "0" // Enable the composition layer optimization "panorama_skip_composition_layer_content_paint" "1" // Steam audio loading data "snd_steamaudio_load_reverb_data" "0" "snd_steamaudio_load_pathing_data" "0" "snd_steamaudio_load_occlusion_data" "0" "snd_steamaudio_load_dimensions_data" "1" "snd_steamaudio_load_materials_data" "0" // Steam Audio project specific convars "snd_steamaudio_enable_custom_hrtf" "0" "snd_steamaudio_active_hrtf" "0" "snd_steamaudio_pathing_order" "3" "snd_steamaudio_pathing_order_rendering" "3" "snd_steamaudio_enable_pathing" "0" "snd_steamaudio_enable_reverb" "0" "snd_steamaudio_reverb_level_db" "-6" "snd_steamaudio_enable_pathing" "0" "snd_steamaudio_invalid_path_length" "0.0" "snd_steamaudio_max_probes_customdata_dimensions" "100000" "snd_steamaudio_dimensions_grid_height_max" "100" "snd_steamaudio_baked_dimensions_probelookup_usealternate" "1" "snd_steamaudio_custombake_dimensions_size_and_inout_bake_enabled" "1" "snd_steamaudio_custombake_dimensions_outsidefield_bake_enabled" "0" "snd_steamaudio_custombake_dimensions_smallsizefield_bake_enabled" "0" "snd_steamaudio_dimensions_max_ray_length" "2500" "cl_disconnect_soundevent" "citadel.convar.stop_all_game_layer_soundevents" "snd_event_browser_default_stack" "citadel_default_3d" // voip "voice_in_process" "1" // Sound debugging "snd_report_audio_nan" "1" // Audio system settings "snd_sos_max_event_base_depth" "10" "sos_use_guid_filter" "1" "voice_always_sample_mic" { "version" "2" "default" "0" } "reset_voice_on_input_stallout" "0" "voice_input_stallout" "0.5" "audio_enclosure_calc_enabled" "0" "sc_layer_batch_threshold_fullsort" "20" // Perf/Parallelism "iv_parallel_restore" "1" // For perf reasons, since we don't use source-based DSP: "disable_source_soundscape_trace" "1" "fps_max" "400" "fps_max_ui" "120" "in_button_double_press_window" "0.3" // Convars that control spatialization of UI audio. "snd_ui_positional" "1" "snd_ui_spatialization_spread" "2.4" // sound volume rate change limiting "snd_envelope_rate" "100.0" "snd_soundmixer_update_maximum_frame_rate" "0" //don't let people mess with speaker config settings. "speaker_config" { "min" "0" "default" "0" "max" "2" } "snd_soundmixer" "Default_Mix" "cloth_filter_transform_stateless" "0" "cl_joystick_enabled" "0" "panorama_joystick_enabled" "0" "snd_event_browser_focus_events" "true" "cl_max_particle_pvs_aabb_edge_length" "100" // Particles "cl_aggregate_particles" "true" "r_particle_batch_collections" "1" "citadel_enable_vdata_sound_preload" "true" "r_add_views_in_pre_output" "1" // Disable Cubemap Brightening "lb_cubemap_normalization_max" "1" "update_all_keyframed_in_spatial_partition_update" "0" "parallel_update_surrounding_bounds_in_spatial_partition_update" "1" "always_perform_full_spatial_partition_update" "1" "cl_interp_parallel" "1" "parallel_perform_invalidate_physics" "1" "phys_agg_world_compounds" "0" "cl_updaterate" "128" "sv_parallel_checktransmit" "2" "net_gather_child_fields_only" "1" } Memory { "EstimatedMaxCPUMemUsageMB" "1" "EstimatedMinGPUMemUsageMB" "1" "ShowInsufficientPageFileMessageBox" "1" "ShowLowAvailableVirtualMemoryMessageBox" "1" } }