Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [{'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/FrontEnd/FrontEnd.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'default_settings.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/COOP_007/COOP_007.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/COOP_002/COOP_002.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/COOP_003/COOP_003.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/COOP_010/COOP_010.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/COOP_006/COOP_006.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/Web_Loading/Web_Loading.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Bank/SP_Bank.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Jet/SP_Jet.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Finale/SP_Finale.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Villa/SP_Villa.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Tank/SP_Tank.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Valley/SP_Valley.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Paris/SP_Paris.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Earthquake2/SP_Earthquake2.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Earthquake/SP_Earthquake.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_018/MP_018.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_001/MP_001.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_011/MP_011.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_Subway/MP_Subway.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_017/MP_017.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_013/MP_013.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_012/MP_012.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_003/MP_003.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Sniper/SP_Sniper.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/MP_007/MP_007.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_Tank_b/SP_Tank_b.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/SP_New_York/SP_New_York.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'fs': 'initfs_Win32',
- 'name': 'Levels/COOP_009/COOP_009.cfg',
- 'payload': <Blob 'Core.GameConfigurationName gameconfigurations/game
- '>}},
- {'$file': {'name': 'database.dbmanifest',
- 'payload': <Blob '<?xml version="1.0" encoding="UTF-8"?>
- <Database id="VeniceRetailPc" family="Venice" displayName="Venice Retail PC Database" pipelineTag="Venice">
- <Settings>
- <Setting name='UseSparseSerialization' value='false'/>
- </Settings>
- <EditorSettings>
- <EditorSetting Name="AudioSystemAsset">Sound/AudioSystem</EditorSetting>
- <EditorSetting Name="SoundStatesAsset">Sound/SoundStates</EditorSetting>
- <EditorSetting Name="VoiceOverSystemAsset">Sound/VO/VO_System</EditorSetting>
- <EditorSetting Name="TagDatabaseHost">DICE-BM153\SQLEXPRESS</EditorSetting>
- <EditorSetting Name="TagDatabaseName">VENICE-META</EditorSetting>
- <EditorSetting Name="TagDatabaseUser">FrostEd</EditorSetting>
- <EditorSetting Name="TagDatabasePwd">frostis</EditorSetting>
- </EditorSettings>
- <!-- Domain configuration
- -->
- <Domain name="Source" root="Source" isReadOnly="true">
- <EmergencyBindings>
- <Type name="TextureBaseAsset" target="Textures/white"/>
- <Type name="ShaderGraph" target="Shaders/debug/black"/>
- </EmergencyBindings>
- </Domain>
- <Domain name="Temp" root="db/Temp" isEphemeral='true'>
- <Import domain="Source" readOnly='true'/>
- </Domain>
- <Domain name="Win32" root="Output/Win32" isEphemeral='true' isTargetDomain='true'/>
- <Domain name="Xenon" root="Output/Xenon" isEphemeral='true' isTargetDomain='true'/>
- <Domain name="Ps3" root="Output/Ps3" isEphemeral='true' isTargetDomain='true'/>
- <Domain name="Linux" root="Output/Linux" isEphemeral='true' isTargetDomain='true'/>
- <Domain name="Editor" root="Output/Editor" isEphemeral='true'/>
- </Database>
- '>}},
- {'$file': {'name': 'Scripts/Game/BugCommands.lua',
- 'payload': <Blob 'Commands =
- {
- -- Bug needed for when using Trigger bug in B4Bug, info is used for all bugs
- StandardB4BugBug =
- {
- Name = "Standard B4Bug bug",
- Title = "Venice",
- Menu = "Bugs",
- AutoB4Bug = true,
- IsStandardBug = true,
- Information =
- {
- "Field" , "Issue Type" , "Bug",
- "Field" , "Priority" , "Minor (C, V3, L3)",
- "Field" , "Assignee" , "Automatic",
- "Field" , "Report Method" , "B4Bug",
- "Field" , "Milestone Hindering" , "None",
- "Field" , "Language" , "English",
- "Field" , "User Path" , "Probable",
- "RPCGet", "Game Level" , "LocalPlayer.getClientLevelName",
- "Field" , "Description" , "\
- Soldier position: ",
- "RPCGet", "Description" , "LocalPlayer.getPlayerPosition",
- "Field" , "Description" , "\
- Current camera position: ",
- "RPCGet", "Description" , "DebugCam.getCurrentCameraPosition",
- "Field" , "Environment" , "\
- OS Version: ",
- "RPCGet", "Environment" , "BugManager.getOSInfo",
- "Field" , "Environment" , "\
- GPU description: ",
- "RPCGet", "Environment" , "DxRenderer.AdapterDescription",
- "Field" , "Environment" , "\
- GPU driver version: ",
- "RPCGet", "Environment" , "DxRenderer.AdapterDriverVersion",
- "RPCGet", "Platform" , "BugManager.getPlatform",
- "RPCGet", "Reported By (Game Team)" , "BugManager.getReportedBy",
- "RPCGet", "Found in Change List (Game)" , "BugManager.getChangelist",
- "RPCGet", "Found in Change List (Frostbite)" , "BugManager.getFrostbiteChangelist",
- "RPCGet" , "Juice Session ID" , "BugManager.getjuiceSessionId",
- }
- },
- TestBug1 =
- {
- Name = "Testbug",
- Title = "Venice",
- Menu = "Bugs",
- AutoB4Bug = true,
- Information =
- {
- },
- RPCs =
- {
- },
- },
- TestCommand1 =
- {
- Name = "Testcommand 1",
- Title = "Venice",
- Menu = "QA Commands",
- AutoB4Bug = false,
- RPCs =
- {
- "DebugRender.DrawStatsEnable 1",
- "UI.DrawEnable 0",
- },
- ReverseRPCs =
- {
- "DebugRender.DrawStatsEnable 0",
- "UI.DrawEnable 1",
- },
- },
- TestCommand2 =
- {
- Name = "Testcommand 2",
- Title = "Venice",
- Menu = "QA Commands",
- AutoB4Bug = false,
- RPCs =
- {
- "Debug.DrawScreenCenterHelper 1",
- "Render.ForceFov 100",
- },
- ReverseRPCs =
- {
- "Debug.DrawScreenCenterHelper 0",
- "Render.ForceFov 65",
- },
- },
- AnimationCommand1 =
- {
- Name = "Animation Test",
- Title = "Venice",
- Menu = "Animation",
- AutoB4Bug = false,
- RPCs =
- {
- "AntDebug.DrawDebugInfo 1",
- "AntDebug.DrawSignals 1",
- "UI.DrawEnable 0",
- },
- ReverseRPCs =
- {
- "AntDebug.DrawDebugInfo 0",
- "AntDebug.DrawSignals 0",
- "UI.DrawEnable 1",
- },
- },
- WeaponCommand1 =
- {
- Name = "Show weapon info",
- Title = "Venice",
- Menu = "Weapons",
- AutoB4Bug = false,
- RPCs =
- {
- "AntDebug.DrawDebugInfo 1",
- "Debug.DrawScreenCenterHelper 1",
- "clientsoldier.debug.firingstats 1",
- },
- ReverseRPCs =
- {
- "AntDebug.DrawDebugInfo 0",
- "Debug.DrawScreenCenterHelper 0",
- "clientsoldier.debug.firingStats 0",
- },
- },
- }
- '>}},
- {'$file': {'name': 'Scripts/Game/Configure.lua',
- 'payload': <Blob '--
- -- Game configuration script
- --
- -- Local helper functions
- function commandLine:lookup(name, default)
- local value = self[string.lower(name)]
- return value or default
- end
- local function cmdLineSwitch(switchName, fieldName, inTable)
- local table = inTable or Game
- if (commandLine:lookup(switchName)) then
- table[fieldName] = true
- end
- end
- function cmdLineOption(optionName, default)
- return commandLine:lookup(optionName, default)
- end
- local function readCfg(name)
- log:debug("reading cfg: " .. name)
- core.readKeyValueCfg(name, _G)
- end
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G)
- end
- -- Basic settings
- core.import("Scripts/Game/Settings.lua")
- -- Import old-school cfg files for backwards compatibility
- local defaultConfigFile = commandLine:lookup("defaultConfig")
- if defaultConfigFile then
- readCfg(defaultConfigFile)
- else
- readCfg("Scripts/Game.cfg")
- end
- --------------------------------------------------------------------------
- -- Handle any Drone override options
- --
- for i,v in ipairs(commandLine) do
- if string.lower(v) == "-customconfig" then
- if commandLine[i+1]:find("/") then
- readCfg(commandLine[i+1])
- else
- readCfg("Scripts/" .. commandLine[i+1])
- end
- end
- end
- local editorActive = false
- local liveEditingEnable = commandLine:lookup("core.liveeditingenable")
- if liveEditingEnable then
- if liveEditingEnable == "1" or liveEditingEnable == "true" then
- editorActive = true
- end
- end
- --------------------------------------------------------------------------
- -- Handle local overrides
- --
- -- This needs to run before we load the level cfg as we can specify the fast startup level name here!
- if not commandLine:lookup('noLocalCfg', false) then
- -- Read common local cfg file
- readCfg("/local/local.cfg", _G)
- if editorActive == true then
- -- Read local cfg with editor specific settings
- readCfg("/local/localeditor.cfg", _G)
- else
- -- Read local cfg with standalone specific settings
- readCfg("/local/localgame.cfg", _G)
- end
- end
- --------------------------------------------------------------------------
- -- Handle level specific configuration
- --
- local levelName = commandLine:lookup("level")
- if not levelName then
- local gameTable = _G["Game"]
- if gameTable then
- levelName = gameTable["Level"]
- end
- end
- -- Level names without slashes are assumed to be shorthand for
- -- Levels/name/name to go with Venice's epic level naming convention
- if levelName and not string.find(levelName, "/") then
- levelName = "Levels/" .. levelName .. "/" .. levelName
- end
- if levelName then
- readCfg(levelName .. ".cfg")
- end
- --------------------------------------------------------------------------
- -- Handle commandline options
- --
- -- Commandline options effectively override any settings specified
- -- elsewhere.
- --
- if not Game then Game = {} end
- cmdLineSwitch("verbose", "Verbose")
- if Game.Verbose then
- print "------------Commandline parameters:"
- for k,v in pairs(commandLine) do print (k,v) end
- end
- -- Handle <Table>.<Member> settings
- if allowCommandlineSettings then
- for _,option in ipairs(commandLine) do
- local table,member = string.match(option, "^%-(%w+)%.(%w+)")
- if table and member then
- local value = commandLine[_ + 1]
- if not _G[table] then _G[table] = {} end
- _G[table][member] = value
- else
- local varName = string.match(option, "^%-([%w-]+)")
- if varName then
- local value = commandLine[_ + 1]
- if value then
- _G[varName] = value
- end
- end
- end
- end
- end
- --------------------------------------------------------------------------
- -- Force specific settings when running through FrostEd
- --
- if editorActive then
- Online.Backend = "Backend_Lan"
- Online.UseFallback = true
- Client.IsPresenceEnabled = false
- Server.IsPresenceEnabled = false
- applySettings([=[
- Server.forceStartMapOnLoad true
- Network.GhostCountWarning true
- Network.GhostCountWarningInfo true
- Game.DisablePreRound true
- ]=])
- end
- --
- core.import("Scripts/Game/DebugSettings.lua")
- '>}},
- {'$file': {'name': 'Scripts/Game/DebugSettings.lua',
- 'payload': <Blob '
- core = require "Frost.Core"
- logging = require "Frost.Logging"
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G) end
- -- helpers
- local function getSetting(key)
- container, field = string.match(key, "(%w+)%.(%w+)");
- if container and field then
- if not _G[container] then
- _G[container] = {}
- end
- return _G[container][field]
- else
- return _G[key]
- end
- end
- local function setSetting(key, value)
- container, field = string.match(key, "(%w+)%.(%w+)");
- if container and field then
- if not _G[container] then
- _G[container] = {}
- end
- _G[container][field] = value
- else
- _G[key] = value
- end
- end
- -- thin-client settings: 0=Off 1=Console
- setSetting("thin-client", cmdLineOption("thinClient", getSetting("thin-client")))
- if getSetting("thin-client") == "1" then
- applySettings([=[
- RenderDevice.CreateMinimalWindow true
- Core.HardwareProfile Hardware_Low
- Core.HardwareGpuBias -1
- Server.DebrisClusterEnabled true
- Client.DebrisClusterEnabled false
- DebrisSystem.Enable false
- Client.WorldRenderEnabled false
- Client.EmittersEnabled false
- Client.TerrainEnabled false
- Client.MeshMergingEnabled false
- Client.OvergrowthEnabled false
- Client.OccludersEnabled true
- Decal.SystemEnable false
- Render.DebugRendererEnable false
- UI.HudEnable false
- UI.System UISystem_None
- EmitterSystem.Enable false
- Window.Fullscreen false
- Render.Enable false
- disable-input true
- scripted-input true
- use-script-input true
- disable-client-correction true
- disable-client-animations true
- Sound.Enable false
- disable-entities true
- disable-camera true
- Texture.LoadingEnabled false
- Texture.RenderTexturesEnabled false
- Mesh.LoadingEnabled false
- ShaderSystem.DatabaseLoadingEnable false
- disable-audio-loading true
- GameTime.ForceUseSleepTimer true
- ShaderSystem.DxFrameVertexBufferPoolSize 16
- ShaderSystem.FrameMemoryBufferSize 16
- PerformanceTracker.Enabled false
- ]=])
- end
- -- testingEnabled 0=Off, 1=On
- setSetting("testing-enabled", cmdLineOption("testingEnabled", getSetting("testing-enabled")))
- if getSetting("testing-enabled") == "1" then
- applySettings([=[
- Server.EnableMonkeyTestLayers true
- add-debug-entity true
- scripted-input true
- use-script-input true
- Juice.logClientTestingEvents true
- ]=])
- end
- '>}},
- {'$file': {'name': 'Scripts/Game/Settings.lua',
- 'payload': <Blob '--
- -- Define basic settings tables
- --
- Game = {
- LogFileEnable = true,
- }
- Client = {
- }
- Server = {
- }
- ShaderSystem = {
- DebugNonFiniteColor = { x=0, y=0, z=0 },
- }
- NetworkSettings = {
- Version = "V0.0",
- ProtocolVersion = 0,
- TitleId = 4,
- ClientPort = 1001,
- ServerPort = 1003,
- MaxGhostCount = 1024,
- MaxClientCount = 64,
- }
- Core = {
- }
- '>}},
- {'$file': {'name': 'Scripts/Game/Startup.lua',
- 'payload': <Blob '--
- -- Game startup script
- --
- require "vfs"
- core = require "Frost.Core"
- logging = require "Frost.Logging"
- -- The global platform variable can be used to detect which platform
- -- we are currently executing on
- platform = dice.getCurrentPlatformName()
- -- Set up a logger which logs to the console (not stdout)
- -- By default, we only show warnings or worse. For more verbose
- -- diagnostics, you may set the level to INFO or DEBUG.
- log = logging.ingameConsole()
- log:setLevel(logging.DEBUG)
- core.import("Scripts/Game/Configure.lua")
- '>}},
- {'$file': {'name': 'Scripts/GlobalSettings.lua',
- 'payload': <Blob '--
- -- Global Settings
- --
- -- These are front-end settings exposed to the end-user. The idea is that
- -- settings that are interesting to the majority of end-users should be
- -- defined here to enable tools to query for exposed options.
- --
- -- This file is imported by Pipeline, Game, etc
- --
- -- *********************************************************
- -- NOTE: This is largely deprecated and will be phased out!
- -- *********************************************************
- GlobalSettings = {}
- GlobalSettings.Meta = {}
- local function ValidateSetting(name, value)
- assert(name and value)
- local meta = GlobalSettings.Meta[name]
- local lowerValue = string.lower(value)
- if meta then
- for _,v in ipairs(meta.validValues) do
- if string.lower(v[1]) == lowerValue then
- return v[1]
- end
- end
- -- We intentionally don't build this string in the loop above
- -- in an attempt to generate less ephemeral garbage
- local choices = nil
- for _,v in ipairs(meta.validValues) do
- if choices then
- choices = choices .. ", " .. v[1]
- else
- choices = v[1]
- end
- end
- error("Setting '" .. name .. "' cannot be set to specified value: " .. value .. ", valid values are " .. choices)
- else
- error("Undefined setting - '" .. name .. "'")
- end
- end
- local function DefineSetting(descriptionTable)
- assert(descriptionTable[1] and descriptionTable[2], "Settings must have name and default values!")
- local name = descriptionTable[1];
- local defaultValue = descriptionTable[2];
- GlobalSettings[name] = defaultValue
- GlobalSettings.Meta[name] = {}
- GlobalSettings.Meta[name].default = defaultValue
- if descriptionTable.description then
- GlobalSettings.Meta[name].description = descriptionTable.description
- end
- if descriptionTable.validValues then
- GlobalSettings.Meta[name].validValues = descriptionTable.validValues
- end
- if descriptionTable.commandLine then
- GlobalSettings.Meta[name].commandLine = descriptionTable.commandLine
- end
- if descriptionTable.envVar then
- GlobalSettings.Meta[name].envVar = descriptionTable.envVar
- end
- -- Validate default vs validValues
- ValidateSetting(name, defaultValue)
- end
- function ApplyCommandLineSettings(commandLine)
- for setting,meta in pairs(GlobalSettings.Meta) do
- if meta.commandLine then
- local options = meta.commandLine
- for _,entry in ipairs(options) do
- local k = entry[1]
- local v = entry[2]
- local value = commandLine[string.lower(k)]
- if value then
- if not v then
- SetSetting(setting, value, string.format(" (due to -%s %s)", k, value))
- else
- SetSetting(setting, v, string.format(" (due to -%s)", k))
- end
- end
- end
- end
- end
- end
- function ApplyEnvironmentVariableSettings()
- for setting,meta in pairs(GlobalSettings.Meta) do
- if meta.envVar then
- local envVarValue = os.getenv(meta.envVar)
- if envVarValue then
- SetSetting(setting, envVarValue)
- end
- end
- end
- end
- function SetSetting(settingName, value, source)
- if not GlobalSettings[settingName] then
- error("Attempted set of unknown setting '" .. settingName .. "'")
- else
- GlobalSettings[settingName] = ValidateSetting(settingName, value)
- if log then
- log:debug("Set setting " .. settingName .. " to value: " .. value .. (source or ""))
- end
- end
- end
- function GetGlobalSetting(settingName)
- if not GlobalSettings[settingName] then
- error("Attempted get of unknown setting '" .. settingName .. "'")
- else
- return GlobalSettings[settingName]
- end
- end
- --------------------------------------------------------------------------
- -- Setting definitions
- --
- DefineSetting {
- "Cache", "Enabled",
- validValues = {
- { "Enabled", "Normal cache mode" },
- { "Disabled", "No caching" },
- { "ReadOnly", "Only read from caches (never upload)" },
- { "WriteOnly", "Only write to caches (useful for fixing problems)" }
- },
- description = "Cache Control",
- commandLine = {
- { "cacheMode" },
- { "nocache", "Disabled" },
- { "readonlyCache", "ReadOnly" },
- { "writeOnlyCache", "WriteOnly" },
- { "cache", "Enabled" }
- },
- envVar = "PIPELINE_CACHE_MODE"
- }
- '>}},
- {'$file': {'name': 'Scripts/Packages/Frost/Core.lua',
- 'payload': <Blob '--
- -- Various bits of Lua scaffolding
- --
- require "os"
- require "vfs"
- module("Frost.Core", package.seeall);
- -- Execute a script
- --
- -- If flags contains a "silent=true" flag, then no message
- -- will be emitted if the script can't be found
- --
- -- Execute a script, optionally returning an error message if it fails
- function import(script, friendlyName, flags)
- local name = friendlyName or script
- local success, err = pcall(dofile,script)
- if not success and not (flags and flags.silent) then
- error("Could not import script: " .. name .. " error: " .. err)
- end
- end
- -- Execute a new-style config file
- local function executeCfg(file)
- if log then
- log:debug(" Executing new style (lua) config file")
- end
- local script = file:read("*all")
- local func, err = loadstring(script)
- if func then
- func()
- else
- error(err)
- end
- end
- -- Parse a single line containing a key-value pair (and possibly some comments)
- function parseKeyValueCfgLine(line, targetTable)
- -- Remove comments
- line = string.gsub(line, "#.*", "")
- line = string.gsub(line, "//.*", "")
- -- Split into key, value pairs
- local key, value = string.match(line, "(%S+)%s+(.+)%s*");
- if key and value then
- -- Handle dotted key names
- local container, field = string.match(key, "(%w+)%.(%w+)");
- if container and field then
- if not targetTable[container] then
- targetTable[container] = {}
- end
- targetTable[container][field] = value;
- if log then
- log:debug(string.format("set %s.%s = %s (from key-value cfg line)", container, field, value))
- end
- else
- targetTable[key] = value;
- if log then
- log:debug(string.format("set %s = %s (from key-value cfg line)", key, value))
- end
- end
- end
- end
- -- Parse a string of key-value config entries
- function parseKeyValueCfgString(str, targetTable)
- for line in string.gmatch(str, "[^\
- ]*") do
- parseKeyValueCfgLine(line, targetTable)
- end
- end
- -- Parse an old-style key-value CFG file
- function readKeyValueCfg(file, targetTable)
- if log then
- log:debug("Reading cfg '" .. file .. "'")
- end
- local f = vfs.open(file, "r")
- if not f then
- -- File not found
- if log then
- log:debug("Failed to find file '" .. file .. "'")
- end
- return
- end
- local firstLine = true
- while true do
- local line = f:read("*line")
- if not line then
- break
- end
- if firstLine and line == "#!/bin/lua" then
- executeCfg(f)
- end
- parseKeyValueCfgLine(line, targetTable)
- end
- f:close();
- end
- '>}},
- {'$file': {'name': 'Scripts/Packages/Frost/Logging.lua',
- 'payload': <Blob '-- Logging package
- local type, table, string, assert, _tostring = type, table, string, assert, tostring
- require "vfs"
- module("Frost.Logging", package.seeall)
- -- The DEBUG Level designates fine-grained informational events that are most
- -- useful to debug an application
- DEBUG = "DEBUG"
- -- The INFO level designates informational messages that highlight the
- -- progress of the application at coarse-grained level
- INFO = "INFO"
- -- The WARN level designates potentially harmful situations
- WARN = "WARN"
- -- The ERROR level designates error events that might still allow the
- -- application to continue running
- ERROR = "ERROR"
- -- The FATAL level designates very severe error events that will presumably
- -- lead the application to abort
- FATAL = "FATAL"
- local LEVEL = {
- [DEBUG] = 1,
- [INFO] = 2,
- [WARN] = 3,
- [ERROR] = 4,
- [FATAL] = 5,
- }
- -------------------------------------------------------------------------------
- -- Creates a new logger object
- -------------------------------------------------------------------------------
- function new(append)
- if type(append) ~= "function" then
- return nil, "Appender must be a function."
- end
- local logger = {}
- logger.level = DEBUG
- logger.append = append
- logger.setLevel = function (self, level)
- assert(LEVEL[level], string.format("undefined level `%s'", tostring(level)))
- self.level = level
- end
- logger.log = function (self, level, message)
- assert(LEVEL[level], string.format("undefined level `%s'", tostring(level)))
- if LEVEL[level] < LEVEL[self.level] then
- return
- end
- if type(message) ~= "string" then
- message = tostring(message)
- end
- return logger:append(level, message)
- end
- logger.debug = function (logger, message) return logger:log(DEBUG, message) end
- logger.info = function (logger, message) return logger:log(INFO, message) end
- logger.warn = function (logger, message) return logger:log(WARN, message) end
- logger.error = function (logger, message) return logger:log(ERROR, message) end
- logger.fatal = function (logger, message) return logger:log(FATAL, message) end
- return logger
- end
- -------------------------------------------------------------------------------
- -- Prepares the log message
- -------------------------------------------------------------------------------
- function prepareLogMsg(pattern, dt, level, message)
- local logMsg = pattern or "%date %level %message\
- "
- message = string.gsub(message, "%%", "%%%%")
- logMsg = string.gsub(logMsg, "%%date", dt)
- logMsg = string.gsub(logMsg, "%%level", level)
- logMsg = string.gsub(logMsg, "%%message", message)
- return logMsg
- end
- -------------------------------------------------------------------------------
- -- Converts a Lua value to a string
- --
- -- Converts Table fields in alphabetical order
- -------------------------------------------------------------------------------
- function tostring(value)
- local str = ''
- if (type(value) ~= 'table') then
- if (type(value) == 'string') then
- str = string.format("%q", value)
- else
- str = _tostring(value)
- end
- else
- local auxTable = {}
- table.foreach(value, function(i, v)
- if (tonumber(i) ~= i) then
- table.insert(auxTable, i)
- else
- table.insert(auxTable, tostring(i))
- end
- end)
- table.sort(auxTable)
- str = str..'{'
- local separator = ""
- local entry = ""
- table.foreachi (auxTable, function (i, fieldName)
- if ((tonumber(fieldName)) and (tonumber(fieldName) > 0)) then
- entry = tostring(value[tonumber(fieldName)])
- else
- entry = fieldName.." = "..tostring(value[fieldName])
- end
- str = str..separator..entry
- separator = ", "
- end)
- str = str..'}'
- end
- return str
- end
- --
- -- Print appender
- --
- function console(logPattern)
- return new( function(self, level, message)
- print(prepareLogMsg(logPattern, os.date(), level, message))
- return true
- end
- )
- end
- function ingameConsole()
- return new( function(self, level, message)
- ingamePrint(level, message)
- return true
- end
- )
- end
- '>}},
- {'$file': {'name': 'Scripts/Pipeline/Configuration.lua',
- 'payload': <Blob '--
- -- Pipeline Configuration
- --
- -- This is an internal script used for configuring the pipeline. Normal
- -- users should typically not edit this file, as most end-user settings
- -- are exposed through the GlobalSettings.lua file
- --
- --
- -- Import common settings
- --
- core.import(allScriptsRoot .. "GlobalSettings.lua", "global settings");
- -- Import session startup script, if specified on commandLine
- --
- -- This is used by Drone to change settings
- if commandLine.startupscript then
- core.import("/data/" .. commandLine.startupScript, _G)
- end
- core.import(scriptsRoot .. "Settings.lua")
- -- -config commandLine switch is used by Drone to configure custom settings
- if commandLine.config then
- core.readKeyValueCfg("/data/Scripts/" .. commandLine.config, _G)
- end
- --------------------------------------------------------------------------
- -- Handle commandline options
- --
- -- Commandline options effectively override any settings specified
- -- elsewhere.
- --
- local function cmdLineSwitch(switchName, fieldName)
- if (commandLine[string.lower(switchName)]) then
- Pipeline[fieldName] = true
- end
- end
- local function cmdLineArg(switchName, fieldName)
- local entry = commandLine[string.lower(switchName)]
- if (entry) then
- Pipeline[fieldName] = entry
- --print("Set " .. fieldName .. " to " .. entry)
- end
- end
- cmdLineSwitch("debug", "DebugMode");
- cmdLineSwitch("validateData", "ValidateData");
- cmdLineSwitch("addToPerforce", "AddToPerforce");
- cmdLineSwitch("noconsole", "NoConsole");
- cmdLineSwitch("verbose", "Verbose");
- cmdLineSwitch("trace", "EnableTracing");
- cmdLineSwitch("nohal", "DisableHalDevice");
- cmdLineSwitch("trim", "TrimLayout");
- cmdLineSwitch("updateIndex", "UpdateIndexOnly");
- cmdLineArg("opfilter", "OpFilter")
- --
- -- Parse commandline options that may occur multiple times ("list" options)
- --
- ----------------------------------------------------------------------------------------
- --
- -- Diagnostics dump
- --
- if Pipeline.Verbose then
- print ""
- print "Pipeline settings summary:"
- print "------------------------------------------------------"
- for k,v in pairs(Pipeline) do
- print(k, v)
- end
- print ""
- print "Command line:"
- print "------------------------------------------------------"
- for _,v in pairs(commandLine) do
- print(_,v)
- end
- print ""
- end
- '>}},
- {'$file': {'name': 'Scripts/Pipeline/Settings.lua',
- 'payload': <Blob '--
- -- Internal Pipeline settings
- --
- -- This is not really the best place to change settings locally,
- -- please see GlobalSettings.lua instead and use it if at all
- -- possible
- --
- local Dx10PathEnable = false
- local Dx10PlusPathEnable = true
- local Dx10Dot1PathEnable = false
- local Dx11PathEnable = true
- local AutoPathEnable = false
- local SkipAllPaths = false
- Pipeline =
- {
- Verbose = false,
- Rebuild = false,
- ShowReason = true,
- AddToPerforce = false,
- -- Debugging/profiling options
- Profiler = false,
- DebugMode = false,
- EmitPlaintextDbx = false,
- EnableTimingLog = false,
- BundleDebugging = false,
- ResourceDebugging = false,
- AsyncOpWrite = true,
- DumpOplogStats = false,
- --ServiceMode = true,
- }
- --------------------------------------------------------------
- Core =
- {
- LogLevel = "Info",
- }
- Ant =
- {
- -- Setting this to true sometimes breaks reimport
- ShowSyncDialogOnReimport = false,
- }
- Havok =
- {
- WriteShapeLog = false,
- WriteMemoryLog = false,
- WriteMaterialsLog = false,
- ErrorOnStaticValidationError = true,
- DetailExport = true,
- LogTriangleDensity = true,
- HavokImportVersion = 1,
- }
- HavokGroupPhysicsEntity =
- {
- WriteShapeLog = false,
- WriteMemoryLog = false,
- WriteMaterialsLog = false,
- WriteGroupGeneralLog = false,
- WritePartInfoLog = false,
- ErrorOnStaticValidationError = true,
- DetailExport = true,
- LogTriangleDensity = true,
- HavokImportVersion = 1,
- AllowDefaultCollisionShape = true
- }
- Texture =
- {
- SkipMipmapsPs3Enable = true,
- CudaEnable = true,
- WaitOnCudaEnable = false,
- MultithreadedCompressionEnable = true,
- DefaultTextureGroup = "TextureGroups/Default";
- }
- ObjectBlueprint =
- {
- AllowDefaultPartMaterial = true,
- AllowDefaultEntityMaterial = true,
- }
- BlueprintImport =
- {
- UseDefaultRaycastRoot = false,
- OptimizeGeometries = true,
- ErrorOnSceneMismatch = true,
- }
- Mesh =
- {
- Verbose = false,
- ZOnlyMeshEnable = true,
- Ps3EdgeEnable = true,
- Ps3EdgeCompressPositionsEnable = true,
- Ps3EdgeCompressIndicesEnable = true,
- Ps3EdgeMinSubsetTriangleCount = 0,
- MinStreamingLodSize = 0,
- SootSkipShaderNames =
- {
- "Template",
- "Tmpl",
- "NoSoot"
- },
- WarningsAsErrorsEnable = false,
- -- EnlightenSaveInputMeshEnable = true,
- -- RadiosityPixelSize_Lower = 16.0,
- -- RadiosityPixelSize_Lowest = 8.0,
- -- RadiosityPixelSize_Low = 4.0,
- -- RadiosityPixelSize_Medium = 2.0,
- -- RadiosityPixelSize_High = 1.0,
- -- RadiosityPixelSize_Higher = 0.5,
- -- RadiosityPixelSize_Max = 0.25,
- }
- Enlighten =
- {
- -- Set this to false to prevent any dynamic enlighten data from beeing built and loaded into the game.
- -- This is useful for retail builds if only static enlighten data is allowed.
- DynamicEnable = true,
- }
- Level =
- {
- VoAnimTreesEnable = false,
- GroupTreeModelEntities = true,
- GroupStaticModelEntities = true,
- GroupMiddlegrowthModelEntities = true,
- OptimizeMaterialGrid = true,
- LogDetailedInstanceCounts = false
- }
- ShaderState =
- {
- TerrainDebugColorEnable = false,
- TerrainOverdrawModeEnable = false,
- DynamicEnvmapModeEnable = false,
- StripUnusedTextures = true,
- VanillaShadowmapsEnable = false,
- -- CascadedBox3ShadowmapsEnable = true,
- -- CascadedBox4ShadowmapsEnable = true,
- }
- ShaderProgramDatabase =
- {
- ShaderDebugInfoEnable = false,
- DxShaderDebugInfoEnable = false,
- Dx10PathEnable = Dx10PathEnable,
- Dx10PlusPathEnable = Dx10PlusPathEnable,
- Dx10Dot1PathEnable = Dx10Dot1PathEnable,
- Dx11PathEnable = Dx11PathEnable,
- AutoPathEnable = AutoPathEnable,
- SkipAllPaths = SkipAllPaths,
- Ps3OptimizationLevel = 3,
- Ps3BuildRandomizedShaders = false
- }
- ShaderDatabase =
- {
- ShaderDebugInfoEnable = false,
- DxShaderDebugInfoEnable = false,
- Dx10PathEnable = Dx10PathEnable,
- Dx10PlusPathEnable = Dx10PlusPathEnable,
- Dx10Dot1PathEnable = Dx10Dot1PathEnable,
- Dx11PathEnable = Dx11PathEnable,
- AutoPathEnable = AutoPathEnable,
- SkipAllPaths = SkipAllPaths,
- Ps3OptimizationLevel = 3,
- Ps3PackVertexElementsEnable = true,
- Ps3ForceHalfPrecisionEnable = false,
- Ps3ForceVertexDynamicBranchesEnable = false,
- Ps3ForcePixelDynamicBranchesEnable = false,
- ForceCompileInConstantsEnable = true,
- NonFiniteColoringEnable = false,
- ManualSourceChangeEnable = false,
- StateMetricsEnable = false,
- StateSolutionCacheEnable = false,
- SeparateWorldTransformEnable = false
- }
- Terrain =
- {
- SplineDecalsSubdivisionCount = 1,
- MaskFunctionsEnable = false,
- }
- TerrainStreamingTree =
- {
- OptimizeUsingProceduralMask = true
- }
- Award =
- {
- OutputAwardXml = true,
- OutputRankXml = true,
- InvalidAwardCodeCharacters = "-. ",
- AllowEmptyAwardCodes = false,
- CheckStatCategories = true,
- SetSpecificDataToChildAwards = true,
- }
- Persistence =
- {
- OutputXml = true,
- OutputBlazeProperties = true,
- DeltaGameReports = true,
- }
- Unlock =
- {
- ExportUnlocks = true
- }
- EmitterSystem =
- {
- DxAtlasSkipMipmaps = 0,
- Ps3AtlasSkipMipmaps = 0,
- XenonAtlasSkipMipmaps = 0,
- }
- Audio =
- {
- EnableDevelopmentFeatures = false,
- }
- UIActionscriptInjection =
- {
- RemoveTraces = true;
- }
- VeniceLevel =
- {
- GenerateCombatAreaTextures = false;
- }
- GameConfig =
- {
- AnimationProjectPath = "Animations/AntAnimations",
- }
- '>}},
- {'$file': {'name': 'Scripts/Pipeline/Startup.lua',
- 'payload': <Blob '-- Pipeline startup script
- --
- -- This is executed very early, and can really only be used to
- -- configure settings.
- --
- -- The settings specified here will override any settings in the
- -- legacy settings file pipeline.config
- --
- core = require "Frost.Core"
- require "os"
- require "vfs"
- Environment = {}
- local userName = os.getenv("USERNAME")
- if userName then Environment.UserName = userName end
- branchName = os.getenv("BRANCH_NAME")
- if not branchName then
- error("Configuration error: BRANCH_NAME environment variable not set -- fix the .diceconfig file for this branch!")
- end
- -- This is a verification tag to make sure the script is in sync with runtime
- -- whenever something is changed that requires changes to be present on both
- -- the script end and the runtime end, this should be updated. The value is
- -- just an arbitrary string and has no semantic relevance
- local expectVerificationTag = "22062007"
- if verificationTag ~= expectVerificationTag then
- error("verification tag mismatch! Most likely, your data/Scripts folder is not right for your build!")
- end
- -- Execute configuration and setup scripts
- allScriptsRoot = "/Data/Scripts/"
- scriptsRoot = allScriptsRoot .. "Pipeline/"
- core.import(scriptsRoot .. "Configuration.lua")
- '>}},
- {'$file': {'name': 'Scripts/Server/Master.lua',
- 'payload': <Blob 'print("Loading scripts...")
- serverSaveFilePath = "serverAdminSave.lua"
- dofile("Scripts/Server/Startup.lua")
- dofile("Scripts/Server/Shutdown.lua")
- dofile("Scripts/Server/Server.lua")
- dofile("Scripts/Server/Session.lua")
- print("Done loading scripts.")'>}},
- {'$file': {'name': 'Scripts/Server/Server.lua',
- 'payload': <Blob 'require "vfs"
- require "os"
- banList = {}
- levelList = {}
- currentLevelIndex = 0
- maxLevelIndex = 0
- function Server_LoadLevel()
- -- print("Server_LoadLevel called")
- end
- function Server_UnloadLevel()
- -- print("Server_UnloadLevel called")
- end
- function Server_LevelLoaded()
- -- print("Server_LevelLoaded called")
- end
- function Server_LevelUnloaded()
- -- print("Server_LevelUnloaded called")
- end
- ticks = 0
- function Server_ScriptTick()
- -- print("Server_ScriptTick called; ticks = " .. ticks)
- ticks = ticks + 1
- end
- function Server_PlayerBanned(onlineId, name)
- print("Server_PlayerBanned called: Player " .. onlineId .. " banned")
- banList[onlineId] = { ["time"]=os.time(), ["name"]=name }
- writeServerData()
- end
- function Server_UnbanPlayer(id)
- if (banList[id] ~= nil) then
- print("Player " .. id .. " unbanned")
- banList[id] = nil
- if (banList[id] ~= nil) then
- print("Player was not removed for some reason")
- end
- writeServerData()
- else
- print("No player with id " .. id .. " is banned")
- end
- end
- function Server_ListBans()
- --Server_PlayerBanned(174636, "gunnar")
- --Server_PlayerBanned(345636, "olle")
- for k,v in pairs(banList) do
- currentTime = os.date("%c", v.time)
- print("[" .. k .. "]: " .. v.name .. "," .. currentTime)
- end
- end
- function Server_LoadNextLevel()
- if (levelList[currentLevelIndex] ~= nil) then
- print("Loading level: " .. levelList[currentLevelIndex])
- loadNextLevel(levelList[currentLevelIndex])
- if (currentLevelIndex < maxLevelIndex) then
- currentLevelIndex = currentLevelIndex + 1
- else
- currentLevelIndex = 1
- end
- else
- print("Levelindex " .. currentLevelIndex .. " do not exist")
- end
- end
- function Server_AddLevel(levelName)
- maxLevelIndex = maxLevelIndex + 1
- levelList[maxLevelIndex] = levelName
- print("Added level '" .. levelName .. "' to level list")
- writeServerData()
- if (currentLevelIndex == 0) then
- currentLevelIndex = 1
- end
- end
- function Server_RemoveLevel(levelIndex)
- if (levelList[levelIndex] ~= nil) then
- print("Removing level '" .. levelList[levelIndex] .. "' at index: " .. levelIndex)
- --table.remove(levelList, levelIndex)
- for i=levelIndex,(maxLevelIndex-1),1 do
- levelList[i] = levelList[i+1]
- end
- table.remove(levelList, maxLevelIndex)
- maxLevelIndex = maxLevelIndex - 1
- writeServerData()
- if (currentLevelIndex > maxLevelIndex) then
- currentLevelIndex = maxLevelIndex
- end
- else
- print("No level at index: " .. levelIndex)
- end
- end
- function Server_ListLevels()
- for k,v in pairs(levelList) do
- if (k == currentLevelIndex) then
- print("[" .. k .. "]: " .. v .. " <<")
- else
- print("[" .. k .. "]: " .. v)
- end
- end
- end
- function writeServerData()
- local currentPlatform = string.lower(dice.getCurrentPlatformName())
- if (currentPlatform == "xenon" or currentPlatform == "ps3") then
- return
- end
- local f = vfs.open(serverSaveFilePath, "w")
- if not f then
- -- File not found
- return
- end
- serializedTable = tableToString(banList)
- f:write("banList = " .. serializedTable .. "\
- ")
- --print("Wrote to file: banList = " .. serializedTable)
- serializedTable = tableToString(levelList)
- f:write("levelList = " .. serializedTable .. "\
- ")
- --print("Wrote to file: levelList = " .. serializedTable)
- f:close()
- end'>}},
- {'$file': {'name': 'Scripts/Server/Session.lua',
- 'payload': <Blob 'require "vfs"
- require "os"
- function Session_PlayerJoined(id)
- print("Session_PlayerJoined called: Player " .. id .. " joined")
- end
- function Session_PlayerLeft(id)
- print("Session_PlayerLeft called: Player " .. id .. " left")
- end
- function Session_PlayerAuthenticated(id)
- print("Session_PlayerJoined called: Player " .. id .. " joined")
- if (banList[id] ~= nil) then
- print("Player " .. banList[id].name .. " is banned")
- kickPlayer(id)
- end
- end'>}},
- {'$file': {'name': 'Scripts/Server/Shutdown.lua',
- 'payload': <Blob 'function Shutdown()
- print("Shutdown called")
- end
- '>}},
- {'$file': {'name': 'Scripts/Server/Startup.lua',
- 'payload': <Blob 'function Startup()
- print("Startup called")
- local currentPlatform = string.lower(dice.getCurrentPlatformName())
- if (currentPlatform == "xenon" or currentPlatform == "ps3") then
- return
- end
- Frost.Core.import(serverSaveFilePath, "Server Admin file", {silent=true})
- print("Loaded banList")
- for k,v in pairs(banList) do
- currentTime = os.date("%c", v.time)
- print("[" .. k .. "]: " .. v.name .. "," .. currentTime)
- end
- print("Loaded levelList")
- for k,v in pairs(levelList) do
- maxLevelIndex = maxLevelIndex + 1
- print("[" .. k .. "]: " .. v)
- end
- if (maxLevelIndex > 0) then
- currentLevelIndex = 1
- end
- end
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/DefaultValues.lua',
- 'payload': <Blob 'core = require "Frost.Core"
- logging = require "Frost.Logging"
- function makeConstant(t)
- return setmetatable({},
- {
- __index = function (_, n)
- if t[n] == nil then
- log:error("Invalid constant member '" .. tostring(n) .. "'")
- end
- return t[n]
- end,
- __newindex = function (t, n, v)
- log:error("Attempting to change constant " .. tostring(n) .. " to " .. tostring(v))
- end
- })
- end
- local constants = {
- Quality = makeConstant({
- Autodetect = -1,
- Low = 0,
- Medium = 1,
- High = 2,
- Ultra = 3,
- Custom = 4,
- On = 1,
- Off = 0,
- }),
- AnisotropicFilter = makeConstant({
- X1 = 0,
- X2 = 1,
- X4 = 2,
- X8 = 3,
- X16 = 4,
- }),
- AntiAliasingDeferred = makeConstant({
- Off = 0,
- MSAA2X = 1,
- MSAA4X = 2,
- }),
- AntiAliasingPost = makeConstant({
- Off = 0,
- Low = 1,
- Medium = 2,
- High = 3,
- }),
- AmbientOcclusion = makeConstant({
- Off = 0,
- SSAO = 1,
- HBAO = 2,
- }),
- MotionBlur = makeConstant({
- Off = 0,
- On = 1,
- }),
- }
- for k, v in pairs(constants) do
- _G[k] = v
- end
- dofile("Scripts/UserOptions/HardwareProfiles.lua")
- specs = hardwareSpecs[hardwareProfile]
- log:info("hardwareProfile : " .. hardwareProfile)
- cpuCount = specs['cpuCount']
- cpuQuality = specs['cpuQuality'] + hardwareCpuBias
- availableMemory = specs['availableMemory']
- adapterName = specs['adapterName']
- gpuQuality = specs['adapterQuality'] + hardwareGpuBias
- gpuCount = specs['gpuCount']
- availableGpuMemory = specs['availableGpuMemory'] + hardwareGpuBias*256*1024*1024
- deviceSettings = specs['deviceSettings']
- log:info("cpus : " .. cpuCount)
- log:info("memory : " .. availableMemory)
- log:info("adapter : " .. adapterName)
- log:info("gpu quality : " .. gpuQuality)
- log:info("gpuCount : " .. gpuCount)
- log:info("gpuMemory : " .. availableGpuMemory)
- settings = {}
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G) end
- defaultSettings = {
- Render = {
- [Quality.Autodetect] = { -- Auto detect, we fill this in when we're done autodetecting
- },
- [Quality.Low] = {
- TextureQuality = Quality.Low,
- ShadowQuality = Quality.Low,
- EffectsQuality = Quality.Low,
- MeshQuality = Quality.Low,
- TerrainQuality = Quality.Low,
- UndergrowthQuality = Quality.Low,
- AntiAliasingDeferred = AntiAliasingDeferred.Off,
- AntiAliasingPost = AntiAliasingPost.Off,
- AnisotropicFilter = AnisotropicFilter.X2,
- AmbientOcclusion = AmbientOcclusion.Off,
- MotionBlurEnabled = MotionBlur.Off,
- },
- [Quality.Medium] = {
- TextureQuality = Quality.Medium,
- ShadowQuality = Quality.Medium,
- EffectsQuality = Quality.Medium,
- MeshQuality = Quality.Medium,
- TerrainQuality = Quality.Medium,
- UndergrowthQuality = Quality.Medium,
- AntiAliasingDeferred = AntiAliasingDeferred.Off,
- AntiAliasingPost = AntiAliasingPost.Medium,
- AnisotropicFilter = AnisotropicFilter.X4,
- AmbientOcclusion = AmbientOcclusion.SSAO,
- MotionBlurEnabled = MotionBlur.Off,
- },
- [Quality.High] = {
- TextureQuality = Quality.High,
- ShadowQuality = Quality.High,
- EffectsQuality = Quality.High,
- MeshQuality = Quality.High,
- TerrainQuality = Quality.High,
- UndergrowthQuality = Quality.High,
- AntiAliasingDeferred = AntiAliasingDeferred.Off,
- AntiAliasingPost = AntiAliasingPost.High,
- AnisotropicFilter = AnisotropicFilter.X16,
- AmbientOcclusion = AmbientOcclusion.HBAO,
- MotionBlurEnabled = MotionBlur.On,
- },
- [Quality.Ultra] = {
- TextureQuality = Quality.Ultra,
- ShadowQuality = Quality.Ultra,
- EffectsQuality = Quality.Ultra,
- MeshQuality = Quality.Ultra,
- TerrainQuality = Quality.Ultra,
- UndergrowthQuality = Quality.Ultra,
- AntiAliasingDeferred = AntiAliasingDeferred.MSAA4X,
- AntiAliasingPost = AntiAliasingPost.High,
- AnisotropicFilter = AnisotropicFilter.X16,
- AmbientOcclusion = AmbientOcclusion.HBAO,
- MotionBlurEnabled = MotionBlur.On,
- },
- [Quality.Custom] = {
- -- There is a bug in LuaOptionSetManager where it can not handle empty tables, so we add this dummy option here for now (no time to fix the parser atm)
- OverallGraphicsQuality = Quality.Custom + 1
- }
- }
- }
- settings["OverallGraphicsQuality"] = 0 -- Show as autodetect in UI
- for setting, value in pairs(defaultSettings.Render[deviceSettings.baseQualityLevel]) do
- settings[setting] = value
- end
- for setting, value in pairs(deviceSettings.defaultSettings or {}) do
- settings[setting] = value
- end
- -- audio thread
- if cpuCount < 4 then
- applySettings("Audio.AudioCoreThread 0")
- else
- if (cpuCount < 6) then
- applySettings("Audio.AudioCoreThread 2")
- else
- applySettings("Audio.AudioCoreThread "..(cpuCount-1))
- end
- end
- -- audio
- if cpuQuality < 4 then
- settings['AudioQuality'] = 0.0
- else
- settings['AudioQuality'] = 1.0
- end
- -- physics
- if cpuQuality < 4 then
- settings['PhysicsQuality'] = 0.0
- else
- settings['PhysicsQuality'] = 1.0
- end
- -- animations
- if cpuQuality < 4 then
- settings['AnimationQuality'] = 0.0
- else
- settings['AnimationQuality'] = 1.0
- end
- -- textures
- if adapterName == "Xenon" or adapterName == "PS3" then
- settings['TextureQuality'] = Quality.Medium
- elseif availableGpuMemory <= 512*1024*1024 then
- settings['TextureQuality'] = Quality.Low
- elseif availableGpuMemory <= 768*1024*1024 then
- settings['TextureQuality'] = Quality.Medium
- elseif availableGpuMemory <= 1024*1024*1024 then
- settings['TextureQuality'] = Quality.High
- else
- settings['TextureQuality'] = Quality.Ultra
- end
- -- resolution
- settings['ResolutionWidth'] = defaultFullscreenWidth or 0
- settings['ResolutionHeight'] = defaultFullscreenHeight or 0
- settings['ResolutionHertz'] = defaultFullscreenRefreshRate or 0
- settings['FullscreenScreen'] = 0
- settings['FullscreenEnabled'] = defaultFullscreenEnabled or 0
- settings['VSyncEnabled'] = defaultVSyncEnabled or 0
- -- Test to override auto detected values (using lua to allow use of constants)
- --core.readKeyValueCfg("/user/profile/settings/overrideAutodetect.cfg", settings) --will override autodetected values
- function vfs_loadfile(filename)
- local f = vfs.open(filename, "r")
- if f == nil then
- return false, "File not found!"
- end
- function getNextChunk()
- return f:read(128)
- end
- return load(getNextChunk, filename)
- end
- local overrideFilename = "/user/profile/settings/overrideAutodetect.lua"
- local executeAutoDetectOverride, e = vfs_loadfile(overrideFilename)
- function bind(f, param)
- return function(...)
- f(param, ...)
- end
- end
- if executeAutoDetectOverride then
- overrideSettings = setmetatable({},
- {
- __index = constants,
- __newindex = bind(function(s, t, n, v)
- if s[n] == nil then
- log:error("Trying to set unknown setting " .. n .. " to " .. tostring(n))
- elseif v == nil then
- log:error("Trying to set setting " .. n .. " to nil")
- else
- log:info("Overriding " .. n .. ": " .. tostring(v))
- s[n] = v
- end
- end, settings)
- })
- setfenv(executeAutoDetectOverride, overrideSettings)
- local success, e = pcall(executeAutoDetectOverride);
- if not success then
- log:info("Failed to parse '" .. overrideFilename .. "' " .. e)
- end
- else
- log:info("Override file error '" .. overrideFilename .. "': " .. e)
- end
- -- Last thing we do is to save the values we want for the autodetect setting
- -- (use the same keys as used for the low settings)
- for key, _ in pairs(defaultSettings.Render[Quality.Low]) do
- defaultSettings.Render[Quality.Autodetect][key] = settings[key]
- if settings[key] == nil then
- log:error("Setting " .. key .. " does not have an auto detected default value")
- end
- end
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles.lua',
- 'payload': <Blob 'function getGpuQuality(gpuName, gpuCount)
- if string.find(gpuName, "GeForce 8") or
- string.find(gpuName, "GeForce 9") then
- return 1
- elseif string.find(gpuName, "GeForce GTX 26") then
- return 2
- elseif string.find(gpuName, "GeForce GTX 2") or
- string.find(gpuName, "ATI Radeon HD 4870 X2") or
- string.find(gpuName, "ATI Radeon HD 5800 Series") or
- string.find(gpuName, "ATI Radeon HD 5900 Series") or
- string.find(gpuName, "AMD Radeon HD 68") or
- string.find(gpuName, "AMD Radeon HD 69") or
- string.find(gpuName, "GeForce GTX 4") or
- string.find(gpuName, "GeForce GTX 5") then
- if gpuCount > 1 then
- return 4
- else
- return 3
- end
- else
- return 1
- end
- end
- function getCpuQuality(cpuCount, cpuSpeed)
- return (cpuSpeed-1.2)*(cpuCount-1)
- end
- -- 2 cores, 3.0 gHz : 1.8
- -- 2 cores, 3.6 gHz : 2.4
- -- 4 cores, 2.0 gHz : 2.4
- -- 4 cores, 3.2 gHz : 6
- -- 8 cores, 1.8 gHz : 4.2
- -- 8 cores, 3.2 gHz : 14!! awesome
- vendorDB = {
- [0x1002] = dofile("Scripts/UserOptions/HardwareProfiles/ATI.lua"),
- [0x10DE] = dofile("Scripts/UserOptions/HardwareProfiles/nVidia.lua"),
- [0x8086] = dofile("Scripts/UserOptions/HardwareProfiles/Intel.lua")
- }
- -- Autodetect settings based on graphics card device id
- function getDeviceSettings(vendorId, deviceId, adapterName)
- if adapterName == "Xenon" then
- return { baseQualityLevel = Quality.Medium, defaultSettings = {}, consoleOverrides = "" }
- elseif adapterName == "PS3" then
- return { baseQualityLevel = Quality.High, defaultSettings = {}, consoleOverrides = "" }
- else
- return (vendorDB[vendorId] and vendorDB[vendorId][deviceId]) or { baseQualityLevel = Quality.Medium, defaultSettings = {}, consoleOverrides = "" }
- end
- end
- hardwareSpecs = {
- [0] = {
- cpuCount = detectedCpuCount,
- cpuQuality = getCpuQuality(detectedCpuCount, detectedCpuFreq),
- availableMemory = detectedAvailableMemory,
- adapterName = detectedAdapterName,
- gpuCount = detectedGpuCount,
- adapterQuality = getGpuQuality(detectedAdapterName, detectedGpuCount),
- availableGpuMemory = detectedAvailableGpuMemory,
- deviceSettings = getDeviceSettings(detectedVendorId, detectedDeviceId, detectedAdapterName)
- },
- [1] = {
- cpuCount = detectedCpuCount,
- cpuQuality = getCpuQuality(2, 2.3),
- availableMemory = 512*1024*1024,
- adapterName = "Faked Low",
- gpuCount = 1,
- adapterQuality = 0,
- availableGpuMemory = 512*1024*1024,
- deviceSettings = { baseQualityLevel = Quality.Low, defaultSettings = {}, consoleOverrides = "" }
- },
- [2] = {
- cpuCount = detectedCpuCount,
- cpuQuality = getCpuQuality(2, 3),
- availableMemory = 1*1024*1024*1024,
- adapterName = "Faked Medium",
- gpuCount = 1,
- adapterQuality = 1,
- availableGpuMemory = 768*1024*1024,
- deviceSettings = { baseQualityLevel = Quality.Medium, defaultSettings = {}, consoleOverrides = "" }
- },
- [3] = {
- cpuCount = detectedCpuCount,
- cpuQuality = getCpuQuality(4, 3),
- availableMemory = 1.5*1024*1024*1024,
- adapterName = "Faked High",
- gpuCount = 1,
- adapterQuality = 3,
- availableGpuMemory = 1*1024*1024*1024,
- deviceSettings = { baseQualityLevel = Quality.High, defaultSettings = {}, consoleOverrides = "" }
- },
- [4] = {
- cpuCount = detectedCpuCount,
- cpuQuality = getCpuQuality(8, 3),
- availableMemory = 2*1024*1024*1024,
- adapterName = "Faked Ultra",
- gpuCount = 2,
- adapterQuality = 4,
- availableGpuMemory = 2*1024*1024*1024,
- deviceSettings = { baseQualityLevel = Quality.Ultra, defaultSettings = {}, consoleOverrides = "" }
- },
- }
- vendorDB = nil
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles/ATI.lua',
- 'payload': <Blob '-- Settings database for ATI devices
- return {
- -- [0xHHHH] = { -- Example card
- -- baseQualityLevel = Quality.Low,
- -- defaultSettings = {
- -- TextureQuality = Quality.Low,
- -- ShadowQuality = Quality.Low,
- -- EffectsQuality = Quality.Low,
- -- },
- -- consoleOverrides = [=[
- -- WorldRender.MotionBlurEnable 0
- -- ]=]
- -- }
- [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI All-in-Wonder HD
- [0x9519] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9170
- [0x9452] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9250
- [0x9450] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9270
- [0x688D] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9350
- [0x688C] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9370
- [0x94C7] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2350
- [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2350 Series
- [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 Series
- [0x94C1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 Series
- [0x94CC] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 Series
- [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 LE
- [0x94C9] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2400
- [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400
- [0x94C1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400
- [0x94C8] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2400 XT
- [0x94C1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 XT
- [0x9589] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2600
- [0x9581] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2600
- [0x9583] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2600 XT
- [0x9588] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2600 XT
- [0x958A] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2600 X2 Series
- [0x9400] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900
- [0x9405] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900 GT
- [0x9400] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900 XT
- [0x9400] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900 XT
- [0x9616] = { baseQualityLevel = Quality.Low }, -- ATI Radeon 3000 Graphics
- [0x9611] = { baseQualityLevel = Quality.Low }, -- ATI Radeon 3100 Graphics
- [0x9613] = { baseQualityLevel = Quality.Low }, -- ATI Radeon 3100 Graphics
- [0x9612] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3200 Graphics
- [0x9610] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3200 Graphics
- [0x9614] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3300 Graphics
- [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3400 Series
- [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3400 Series
- [0x95C4] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3400 Series
- [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3410
- [0x95C2] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3430
- [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3450
- [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3550
- [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3550
- [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3570
- [0x9589] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series
- [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series
- [0x9591] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series
- [0x9581] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series
- [0x9583] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series
- [0x9589] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3610
- [0x9591] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3650
- [0x9593] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3670
- [0x9501] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3690
- [0x9505] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3690
- [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3730
- [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD3750
- [0x9501] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3800 Series
- [0x9505] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3800 Series
- [0x9507] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3830
- [0x9505] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3850
- [0x9504] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3850
- [0x9513] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3850 X2
- [0x9506] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 3850 X2
- [0x9501] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 3870
- [0x950F] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 3870 X2
- [0x9508] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 3870
- [0x9509] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 3870 X2
- [0x9713] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon 4100
- [0x9712] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4200 Series
- [0x9710] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4200
- [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4230
- [0x9715] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4250
- [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4250
- [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4250
- [0x9714] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4290
- [0x9552] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4300/4500 Series
- [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4300/4500 Series
- [0x9553] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4300/4500 Series
- [0x9555] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD4300/HD4500 series
- [0x9552] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4300 Series
- [0x9555] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4300/4500 Series
- [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4450
- [0x9553] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4500/5100 Series
- [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4520
- [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4550
- [0x9540] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4550
- [0x9555] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4550
- [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4570
- [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4580
- [0x9540] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4590
- [0x9490] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4600 Series
- [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4600 Series
- [0x9598] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4610
- [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4650
- [0x9480] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 4650
- [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4670
- [0x9488] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 4670
- [0x94B3] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4770
- [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4700
- [0x944E] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4700 Series
- [0x94B4] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4700 Series
- [0x9490] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4710
- [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4720
- [0x944E] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4730 Series
- [0x9505] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4730
- [0x9505] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4750
- [0x9501] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4750
- [0x94B3] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4770
- [0x94B5] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4770
- [0x9440] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series
- [0x9442] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series
- [0x944C] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series
- [0x9460] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series
- [0x9462] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series
- [0x944A] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series
- [0x944E] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4810 Series
- [0x944E] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4820
- [0x944C] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4830
- [0x94A0] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4830
- [0x944A] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4850
- [0x9442] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4850
- [0x9443] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4850 X2
- [0x94A1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4860
- [0x945A] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4870
- [0x9440] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4870
- [0x9441] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4870 X2
- [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5400 Series
- [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5400 Series
- [0x68E0] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5400 Series
- [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5400 Series
- [0x68E0] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5400 Series
- [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5430
- [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5450
- [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5470
- [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5470
- [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5490
- [0x68DA] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5500 Series
- [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5500 Series
- [0x68CA] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5500 Series
- [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5530
- [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5570
- [0x68C7] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5570
- [0x68B9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5600/5700
- [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5600 Series
- [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5630
- [0x68DA] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5630
- [0x68C1] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5650
- [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5670
- [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5690
- [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5730
- [0x68C0] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5700 Series
- [0x68BE] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5700 Series
- [0x68B8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5700 Series
- [0x68C1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5750
- [0x689E] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5800 Series
- [0x6899] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5800 Series
- [0x6898] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5800 Series
- [0x68A0] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
- [0x68A1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
- [0x68A0] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
- [0x68A1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
- [0x6899] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5850X2
- [0x689C] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5900 Series
- [0x9804] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6200 series Graphics
- [0x9805] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6200 series Graphics
- [0x68F9] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6230
- [0x68E1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6230
- [0x68F9] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6250
- [0x68E1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6250
- [0x9802] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6250
- [0x68F9] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6290
- [0x9802] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300 series Graphics
- [0x9803] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300 series Graphics
- [0x68E5] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300M Series
- [0x68E4] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300M Series
- [0x9802] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6310
- [0x68F9] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6350
- [0x68E4] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6350M
- [0x68E5] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6330M
- [0x68E4] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6370M
- [0x68DA] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6390
- [0x6770] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400 Series
- [0x6760] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400M Series
- [0x6779] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400 Series
- [0x6760] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400M Series
- [0x6761] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6430M
- [0x6761] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6430M
- [0x6779] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6450
- [0x68C1] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6500M/5600/5700 Series
- [0x6759] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6500 Series
- [0x68C1] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6500M Series
- [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 6510
- [0x68C0] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6570M
- [0x68C0] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6570M/5700 Series
- [0x6750] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6600A Series
- [0x6758] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6600 Series
- [0x6741] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon 6600M and 6700M Series
- [0x6742] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6625M Graphics
- [0x6740] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700M Series
- [0x68BA] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series
- [0x68BF] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series
- [0x673E] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series
- [0x68B8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series
- [0x6741] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700M Series
- [0x68BE] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6750
- [0x68BF] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6750
- [0x68BA] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6770
- [0x6740] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6770M
- [0x68B8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6770
- [0x68A8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800M Series
- [0x6738] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series
- [0x6739] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series
- [0x673E] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series
- [0x689B] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series
- [0x68A8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800M Series
- [0x6720] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900M Series
- [0x6718] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series
- [0x671F] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series
- [0x671D] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6990
- [0x6718] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series
- [0x6720] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900M Series
- [0x6719] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series
- }
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles/Intel.lua',
- 'payload': <Blob '-- Settings database for Intel devices
- return {
- -- [0xHHHH] = { -- Example card
- -- baseQualityLevel = Quality.High,
- -- defaultSettings = {
- -- TextureQuality = Quality.Low,
- -- ShadowQuality = Quality.Medium,
- -- EffectsQuality = Quality.High,
- -- },
- -- consoleOverrides = [=[
- -- WorldRender.MotionBlurEnable 0
- -- ]=]
- -- }
- }
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles/nVidia.lua',
- 'payload': <Blob '-- Settings database for nVidia devices
- return {
- -- [0xHHHH] = { -- Example card
- -- baseQualityLevel = Quality.Medium,
- -- defaultSettings = {
- -- TextureQuality = Quality.Low,
- -- ShadowQuality = Quality.Medium,
- -- EffectsQuality = Quality.Medium,
- -- },
- -- consoleOverrides = [=[
- -- WorldRender.MotionBlurEnable 0
- -- ]=]
- -- }
- [0x004E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4000
- [0x009D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4500
- [0x00CD] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3450/4000 SDI
- [0x00CE] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1400
- [0x00F8] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3400/4400
- [0x014A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 440
- [0x014C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 540M
- [0x014D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 550
- [0x014E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 540
- [0x0165] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 285
- [0x0191] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GTX
- [0x0193] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GTS
- [0x0194] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 Ultra
- [0x0197] = { baseQualityLevel = Quality.Low }, -- NVIDIA Tesla C870
- [0x019D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 5600
- [0x019E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4600
- [0x01DB] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 120M
- [0x01DE] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 350
- [0x0245] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 210S / NVIDIA GeForce 6150LE
- [0x029C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 5500
- [0x029D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3500
- [0x029E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1500
- [0x029F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4500 X2
- [0x039C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 560M
- [0x039E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 560
- [0x0400] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GTS
- [0x0401] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GT
- [0x0402] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GT
- [0x0403] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GS
- [0x0404] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
- [0x0405] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500M GS
- [0x0406] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8300 GS
- [0x0407] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600M GT
- [0x0408] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9650M GS
- [0x0409] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8700M GT
- [0x040A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 370
- [0x040B] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 320M
- [0x040C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 570M
- [0x040D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1600M
- [0x040E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 570
- [0x040F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1700
- [0x0410] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330
- [0x0420] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 SE
- [0x0421] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8500 GT
- [0x0422] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
- [0x0423] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8300 GS
- [0x0424] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
- [0x0425] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600M GS
- [0x0426] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400M GT
- [0x0427] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400M GS
- [0x0428] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400M G
- [0x0429] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 140M
- [0x042A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 130M
- [0x042B] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 135M
- [0x042C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400 GT
- [0x042D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 360M
- [0x042E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300M G
- [0x042F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 290
- [0x053A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 PV / NVIDIA nForce 630a
- [0x053B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 PV / NVIDIA nForce 630a
- [0x053E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7025 / NVIDIA nForce 630a
- [0x05E0] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 295
- [0x05E1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 280
- [0x05E2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 260
- [0x05E3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 285
- [0x05E6] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 275
- [0x05E7] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla C1060
- [0x05EA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 260
- [0x05EB] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 295
- [0x05F9] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro CX
- [0x05FD] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro FX 5800
- [0x05FE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro FX 4800
- [0x05FF] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro FX 3800
- [0x0600] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GTS 512
- [0x0601] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GT
- [0x0602] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GT
- [0x0603] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230
- [0x0604] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GX2
- [0x0605] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GT
- [0x0606] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GS
- [0x0607] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 240
- [0x0608] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTX
- [0x0609] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800M GTS
- [0x060A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTX 280M
- [0x060B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GT
- [0x060C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800M GTX
- [0x060F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTX 285M
- [0x0610] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GSO
- [0x0611] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GT
- [0x0612] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GTX/9800 GTX+
- [0x0613] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GTX+
- [0x0614] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GT
- [0x0615] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 250
- [0x0617] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTX
- [0x0618] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTX 260M
- [0x0619] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4700 X2
- [0x061A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3700
- [0x061B] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro VX 200
- [0x061C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3600M
- [0x061D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 2800M
- [0x061E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3700M
- [0x061F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3800M
- [0x0621] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230
- [0x0622] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
- [0x0623] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GS
- [0x0625] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GSO 512
- [0x0626] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 130
- [0x0627] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 140
- [0x0628] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTS
- [0x062A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9700M GTS
- [0x062B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GS
- [0x062C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTS
- [0x062D] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
- [0x062E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
- [0x0631] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 160M
- [0x0635] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GSO
- [0x0637] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
- [0x0638] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1800
- [0x063A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 2700M
- [0x0640] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GT
- [0x0641] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400 GT
- [0x0643] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GT
- [0x0644] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GS
- [0x0645] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GS
- [0x0646] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120
- [0x0647] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600M GT
- [0x0648] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600M GS
- [0x0649] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600M GT
- [0x064A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9700M GT
- [0x064C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9650M GT
- [0x0651] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G 110M
- [0x0652] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 130M
- [0x0653] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120M
- [0x0654] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220M
- [0x0655] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120
- [0x0656] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120
- [0x0658] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 380
- [0x0659] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 580
- [0x065A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1700M
- [0x065B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400 GT
- [0x065C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 770M
- [0x065F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G210
- [0x06C0] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 480
- [0x06C4] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 465
- [0x06CA] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 480M
- [0x06CD] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 470
- [0x06D1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla C2050 / C2070
- [0x06D2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla M2070
- [0x06D8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 6000
- [0x06D9] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 5000
- [0x06DA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 5000M
- [0x06DC] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 6000
- [0x06DD] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 4000
- [0x06DE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla T20 Processor
- [0x06DF] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla M2070-Q
- [0x06E0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 GE
- [0x06E1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 GS
- [0x06E2] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400
- [0x06E3] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 SE
- [0x06E4] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
- [0x06E6] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G100
- [0x06E7] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 SE
- [0x06E8] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200M GS
- [0x06E9] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300M GS
- [0x06EA] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 150M
- [0x06EB] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 160M
- [0x06EC] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G 105M
- [0x06EF] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G 103M
- [0x06F1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G105M
- [0x06F8] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 420
- [0x06F9] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 370 LP
- [0x06FA] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 450
- [0x06FB] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 370M
- [0x06FD] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 295
- [0x06FF] = { baseQualityLevel = Quality.Low }, -- NVIDIA HICx16 + Graphics
- [0x07E0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7150 / NVIDIA nForce 630i
- [0x07E1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7100 / NVIDIA nForce 630i
- [0x07E2] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 / NVIDIA nForce 630i
- [0x07E3] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 / NVIDIA nForce 610i
- [0x07E5] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 / NVIDIA nForce 620i
- [0x0840] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200M
- [0x0844] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9100M G
- [0x0845] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200M G
- [0x0846] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
- [0x0847] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9100
- [0x0848] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8300
- [0x0849] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200
- [0x084A] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 730a
- [0x084B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
- [0x084C] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 980a/780a SLI
- [0x084D] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 750a SLI
- [0x084F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8100 / nForce 720a
- [0x0860] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
- [0x0861] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
- [0x0862] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M G
- [0x0863] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M
- [0x0864] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300
- [0x0865] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
- [0x0866] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M G
- [0x0867] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
- [0x0868] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 760i SLI
- [0x0869] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
- [0x086A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
- [0x086C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 / nForce 730i
- [0x086D] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
- [0x086E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9100M G
- [0x086F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200M G
- [0x0870] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M
- [0x0871] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
- [0x0872] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G102M
- [0x0873] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G102M
- [0x0874] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
- [0x0876] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
- [0x087A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
- [0x087D] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
- [0x087E] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION LE
- [0x087F] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION LE
- [0x08A0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 320M
- [0x08A4] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 320M
- [0x0A20] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220
- [0x0A22] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 315
- [0x0A23] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 210
- [0x0A26] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 405
- [0x0A27] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 405
- [0x0A28] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230M
- [0x0A29] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330M
- [0x0A2A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230M
- [0x0A2B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330M
- [0x0A2C] = { baseQualityLevel = Quality.Low }, -- NVIDIA NVS 5100M
- [0x0A2D] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 320M
- [0x0A34] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 240M
- [0x0A35] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 325M
- [0x0A38] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro 400
- [0x0A3C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 880M
- [0x0A60] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G210
- [0x0A62] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 205
- [0x0A63] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310
- [0x0A64] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
- [0x0A65] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 210
- [0x0A66] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310
- [0x0A67] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 315
- [0x0A68] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G105M
- [0x0A69] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G105M
- [0x0A6A] = { baseQualityLevel = Quality.Low }, -- NVIDIA NVS 2100M
- [0x0A6C] = { baseQualityLevel = Quality.Low }, -- NVIDIA NVS 3100M
- [0x0A6E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 305M
- [0x0A6F] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
- [0x0A70] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310M
- [0x0A71] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 305M
- [0x0A72] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310M
- [0x0A73] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 305M
- [0x0A74] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G210M
- [0x0A75] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310M
- [0x0A76] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
- [0x0A78] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 380 LP
- [0x0A7A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 315M
- [0x0A7C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 380M
- [0x0CA0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330
- [0x0CA2] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 320
- [0x0CA3] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 240
- [0x0CA4] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 340
- [0x0CA5] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220
- [0x0CA7] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330
- [0x0CA9] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 250M
- [0x0CAC] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220
- [0x0CAF] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 335M
- [0x0CB0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 350M
- [0x0CB1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 360M
- [0x0CBC] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1800M
- [0x0DC0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 440
- [0x0DC4] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
- [0x0DC5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
- [0x0DC6] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
- [0x0DCD] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 555M
- [0x0DCE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 555M
- [0x0DD1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 460M
- [0x0DD2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 445M
- [0x0DD3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 435M
- [0x0DD6] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GT 550M
- [0x0DD8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 2000
- [0x0DDA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 2000M
- [0x0DE0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 440
- [0x0DE1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 430
- [0x0DE2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 420
- [0x0DE5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 530
- [0x0DEC] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 525M
- [0x0DED] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520M
- [0x0DEE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 415M
- [0x0DF0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 425M
- [0x0DF1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 420M
- [0x0DF2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 435M
- [0x0DF3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 420M
- [0x0DF4] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 540M
- [0x0DF5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 525M
- [0x0DF6] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 550M
- [0x0DF7] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520M
- [0x0DF8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 600
- [0x0DFA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 1000M
- [0x0E22] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 460
- [0x0E23] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 460 SE
- [0x0E24] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 460
- [0x0E30] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 470M
- [0x0E31] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 485M
- [0x0E3A] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 3000M
- [0x0E3B] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 4000M
- [0x1040] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520
- [0x1050] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520M
- [0x1054] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 410M
- [0x1056] = { baseQualityLevel = Quality.Medium }, -- NVIDIA NVS 4200M
- [0x1057] = { baseQualityLevel = Quality.Medium }, -- NVIDIA NVS 4200M
- [0x1080] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 580
- [0x1081] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 570
- [0x1082] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560 Ti
- [0x1084] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560
- [0x1086] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 570
- [0x1088] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 590
- [0x1089] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 580
- [0x1091] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla M2090
- [0x109A] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 5010M
- [0x109B] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 7000
- [0x10C0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 9300 GS
- [0x10C3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 8400GS
- [0x10C5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 405
- [0x10D8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA NVS 300
- [0x1200] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560 Ti
- [0x1201] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560
- [0x1241] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 545
- [0x1243] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 545
- [0x1244] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 550 Ti
- [0x1245] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
- [0x1251] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560M
- }
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/Options.lua',
- 'payload': <Blob 'core = require "Frost.Core"
- logging = require "Frost.Logging"
- levelName = currentGameLevel or cmdLineOption('level') or Game.Level
- if levelName then
- -- Level names without slashes are assumed to be shorthand for
- -- Levels/name/name to go with Venice's epic level naming convention
- if not string.find(levelName, "/") then
- levelName = "Levels/" .. levelName .. "/" .. levelName
- end
- Game.FastStartupEnable = true
- if not Game.Level then
- Game.Level = levelName
- end
- end
- function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G)
- end
- function applyQualitySettings(name, qualityMap)
- local quality = settings[name]
- if quality == nil then
- log:error("Invalid setting '" .. name .. "'")
- return
- end
- local consoleCommands = qualityMap[quality]
- if consoleCommands == nil then
- log:error("Could not find console settings for '" .. name .. "' with quality " .. quality)
- else
- log:info("setting '" .. name .. "': " .. quality)
- applySettings(consoleCommands)
- end
- end
- dofile("Scripts/UserOptions/Options/Graphics.lua")
- dofile("Scripts/UserOptions/Options/Physics.lua")
- dofile("Scripts/UserOptions/Options/Sound.lua")
- dofile("Scripts/UserOptions/Options/Animations.lua")
- applySettings(deviceSettings.consoleOverrides or "")
- if not cmdLineOption('noLocalCfg', false) then
- core.readKeyValueCfg("/local/local.cfg", _G)
- end
- if allowCommandlineSettings then
- for index,option in ipairs(commandLine) do
- local table,member = string.match(option, "^%-(%w+)%.(%w+)")
- if table and member then
- local value = commandLine[index+1]
- if not _G[table] then _G[table] = {} end
- _G[table][member] = value
- else
- local varName = string.match(option, "^%-([%w-]+)")
- if varName then
- local value = commandLine[index+1]
- if value then
- _G[varName] = value
- end
- end
- end
- end
- end
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/Options/Animations.lua',
- 'payload': <Blob 'local quality = settings['AnimationQuality']
- log:info("setting animation quality : "..quality)
- -- IMPORTANT:
- -- GameAnimation.TemporalLoddingFirstDistance *must* be slighly larger than the
- -- distance where IK is disabled in the animation project (EnableFootplanting_ESIG)
- -- for all quality levels.
- if(quality > 0.8) then
- applySettings([=[
- GameAnimation.TemporalLoddingFirstDistance 31.0
- GameAnimation.TemporalLoddingSecondDistance 40.0
- GameAnimation.TemporalLoddingThirdDistance 60.0
- GameAnimation.TemporalLoddingFourthDistance 90.0
- GameAnimation.TemporalLoddingFifthDistance 120.0
- GameAnimation.TemporalLoddingSixthDistance 208.0
- GameAnimation.TemporalLoddingFirstDeltaTime = 0.02
- GameAnimation.TemporalLoddingSecondDeltaTime = 0.04
- GameAnimation.TemporalLoddingThirdDeltaTime = 0.06
- GameAnimation.TemporalLoddingFourthDeltaTime = 0.08
- GameAnimation.TemporalLoddingFifthDeltaTime = 0.10
- GameAnimation.TemporalLoddingSixthDeltaTime = 0.12
- ]=])
- else
- applySettings([=[
- GameAnimation.TemporalLoddingFirstDistance 31.0
- GameAnimation.TemporalLoddingSecondDistance 40.0
- GameAnimation.TemporalLoddingThirdDistance 50.0
- GameAnimation.TemporalLoddingFourthDistance 90.0
- GameAnimation.TemporalLoddingFifthDistance 120.0
- GameAnimation.TemporalLoddingSixthDistance 208.0
- GameAnimation.TemporalLoddingFirstDeltaTime = 0.02
- GameAnimation.TemporalLoddingSecondDeltaTime = 0.04
- GameAnimation.TemporalLoddingThirdDeltaTime = 0.06
- GameAnimation.TemporalLoddingFourthDeltaTime = 0.08
- GameAnimation.TemporalLoddingFifthDeltaTime = 0.10
- GameAnimation.TemporalLoddingSixthDeltaTime = 0.12
- ]=])
- end
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/Options/Graphics.lua',
- 'payload': <Blob '------ Common settings for all quality levels
- applySettings([=[
- ]=])
- ------ Texture Quality
- applyQualitySettings('TextureQuality', {
- -- up to 512 mb
- [Quality.Low]=[=[
- Texture.SkipMipmapCount 2
- TextureStreaming.PoolSize 150000
- TerrainStreaming.HeightfieldAtlasSampleCountXFactor 1
- TerrainStreaming.HeightfieldAtlasSampleCountYFactor 1
- TerrainStreaming.MaskAtlasSampleCountXFactor 1
- TerrainStreaming.MaskAtlasSampleCountYFactor 1
- TerrainStreaming.ColorAtlasSampleCountXFactor 1
- TerrainStreaming.ColorAtlasSampleCountYFactor 1
- VisualTerrain.TextureAtlasSampleCountXFactor 1
- VisualTerrain.TextureAtlasSampleCountYFactor 1
- VisualTerrain.TextureRenderJobCount 1
- VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 1
- VisualTerrain.Decal3dFarDrawDistanceScaleFactor 1.0
- ]=],
- -- up to 768 mb
- [Quality.Medium]=[=[
- Texture.SkipMipmapCount 1
- TextureStreaming.PoolSize 200000
- TerrainStreaming.HeightfieldAtlasSampleCountXFactor 1
- TerrainStreaming.HeightfieldAtlasSampleCountYFactor 2
- TerrainStreaming.MaskAtlasSampleCountXFactor 1
- TerrainStreaming.MaskAtlasSampleCountYFactor 2
- TerrainStreaming.ColorAtlasSampleCountXFactor 1
- TerrainStreaming.ColorAtlasSampleCountYFactor 2
- VisualTerrain.TextureAtlasSampleCountXFactor 1
- VisualTerrain.TextureAtlasSampleCountYFactor 2
- VisualTerrain.TextureRenderJobCount 2
- VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 2
- VisualTerrain.Decal3dFarDrawDistanceScaleFactor 1.2
- ]=],
- -- up to 1G
- [Quality.High]=[=[
- Texture.SkipMipmapCount 0
- TextureStreaming.PoolSize 300000
- TerrainStreaming.HeightfieldAtlasSampleCountXFactor 1
- TerrainStreaming.HeightfieldAtlasSampleCountYFactor 2
- TerrainStreaming.MaskAtlasSampleCountXFactor 1
- TerrainStreaming.MaskAtlasSampleCountYFactor 2
- TerrainStreaming.ColorAtlasSampleCountXFactor 1
- TerrainStreaming.ColorAtlasSampleCountYFactor 2
- VisualTerrain.TextureAtlasSampleCountXFactor 1
- VisualTerrain.TextureAtlasSampleCountYFactor 2
- VisualTerrain.TextureRenderJobCount 4
- VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 4
- VisualTerrain.Decal3dFarDrawDistanceScaleFactor 1.7
- ]=],
- -- 1 Gb or more
- [Quality.Ultra]=[=[
- Texture.SkipMipmapCount 0
- TextureStreaming.PoolSize 500000
- TerrainStreaming.HeightfieldAtlasSampleCountXFactor 2
- TerrainStreaming.HeightfieldAtlasSampleCountYFactor 2
- TerrainStreaming.MaskAtlasSampleCountXFactor 2
- TerrainStreaming.MaskAtlasSampleCountYFactor 2
- TerrainStreaming.ColorAtlasSampleCountXFactor 2
- TerrainStreaming.ColorAtlasSampleCountYFactor 2
- VisualTerrain.TextureAtlasSampleCountXFactor 2
- VisualTerrain.TextureAtlasSampleCountYFactor 2
- VisualTerrain.TextureRenderJobCount 4
- VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 4
- VisualTerrain.Decal3dFarDrawDistanceScaleFactor 2
- ]=],
- })
- ------ Mesh Quality
- applyQualitySettings('MeshQuality', {
- [Quality.Low]=[=[
- WorldRender.CullScreenAreaScale 1
- Mesh.GlobalLodScale 1
- Mesh.ShadowDistanceScale 1
- MeshStreaming.PoolSize 100000
- VegetationSystem.UseShadowLodOffset 1
- VegetationSystem.MaxActiveDistance 100
- VegetationSystem.MaxPreSimsPerJob 2
- VegetationSystem.SimulationMemKbClient 2048
- Render.EdgeModelViewDistance 50
- ]=],
- [Quality.Medium]=[=[
- WorldRender.CullScreenAreaScale 1.7
- Mesh.GlobalLodScale 1.7
- Mesh.ShadowDistanceScale 1.7
- MeshStreaming.PoolSize 100000
- VegetationSystem.UseShadowLodOffset 0
- VegetationSystem.MaxActiveDistance 200
- VegetationSystem.MaxPreSimsPerJob 3
- VegetationSystem.SimulationMemKbClient 2048
- Render.EdgeModelViewDistance 70
- ]=],
- [Quality.High]=[=[
- WorldRender.CullScreenAreaScale 3
- Mesh.GlobalLodScale 3
- Mesh.ShadowDistanceScale 3
- MeshStreaming.PoolSize 125000
- VegetationSystem.UseShadowLodOffset 0
- VegetationSystem.MaxActiveDistance 300
- VegetationSystem.MaxPreSimsPerJob 4
- VegetationSystem.SimulationMemKbClient 4096
- Render.EdgeModelViewDistance 100
- ]=],
- [Quality.Ultra]=[=[
- WorldRender.CullScreenAreaScale 4
- Mesh.GlobalLodScale 4
- Mesh.ShadowDistanceScale 4
- MeshStreaming.PoolSize 150000
- VegetationSystem.UseShadowLodOffset 0
- VegetationSystem.MaxActiveDistance 350
- VegetationSystem.MaxPreSimsPerJob 8
- VegetationSystem.SimulationMemKbClient 4096
- Render.EdgeModelViewDistance 150
- ]=],
- })
- ------ Effects Quality
- applyQualitySettings('EffectsQuality', {
- [Quality.Low]=[=[
- EffectManager.EffectQuality 0
- EmitterSystem.QuadHalfResEnable 1
- WorldRender.SpotLightShadomapLevel QualityLevel_Low
- ]=],
- [Quality.Medium]=[=[
- EffectManager.EffectQuality 1
- EmitterSystem.QuadHalfResEnable 1
- WorldRender.SpotLightShadomapLevel QualityLevel_Medium
- ]=],
- [Quality.High]=[=[
- EffectManager.EffectQuality 2
- EmitterSystem.QuadHalfResEnable 1
- WorldRender.SpotLightShadomapLevel QualityLevel_High
- ]=],
- [Quality.Ultra]=[=[
- EffectManager.EffectQuality 2
- EmitterSystem.QuadHalfResEnable 0
- WorldRender.SpotLightShadomapLevel QualityLevel_Ultra
- ]=],
- })
- ------ Terrain Quality
- applyQualitySettings('TerrainQuality', {
- [Quality.Low]=[=[
- VisualTerrain.DxDisplacementMappingEnable 0
- VisualTerrain.DxTessellatedTriWidth 12
- VisualTerrain.LodScale 1.0
- ]=],
- [Quality.Medium]=[=[
- VisualTerrain.DxDisplacementMappingEnable 0
- VisualTerrain.DxTessellatedTriWidth 12
- VisualTerrain.LodScale 1.1
- ]=],
- -- Only on DX11 cards
- [Quality.High]=[=[
- VisualTerrain.DxDisplacementMappingEnable 1
- VisualTerrain.DxTessellatedTriWidth 12
- VisualTerrain.LodScale 1.1
- ]=],
- [Quality.Ultra]=[=[
- VisualTerrain.DxDisplacementMappingEnable 1
- VisualTerrain.DxTessellatedTriWidth 9
- VisualTerrain.LodScale 1.1
- ]=],
- })
- ------ Terrain Decoration Quality
- applyQualitySettings('UndergrowthQuality', {
- [Quality.Low]=[=[
- VisualTerrain.MeshScatteringBuildChannelCount 2
- VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 1
- VisualTerrain.MeshScatteringDensityScaleFactor 1
- VisualTerrain.MeshScatteringDistanceScaleFactor 1
- ]=],
- [Quality.Medium]=[=[
- VisualTerrain.MeshScatteringBuildChannelCount 4
- VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 2
- VisualTerrain.MeshScatteringDensityScaleFactor 1.2
- VisualTerrain.MeshScatteringDistanceScaleFactor 1.3
- ]=],
- [Quality.High]=[=[
- VisualTerrain.MeshScatteringBuildChannelCount 8
- VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 4
- VisualTerrain.MeshScatteringDensityScaleFactor 1.5
- VisualTerrain.MeshScatteringDistanceScaleFactor 1.7
- ]=],
- [Quality.Ultra]=[=[
- VisualTerrain.MeshScatteringBuildChannelCount 8
- VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 4
- VisualTerrain.MeshScatteringDensityScaleFactor 2.0
- VisualTerrain.MeshScatteringDistanceScaleFactor 2.3
- ]=],
- })
- ------ Shadow Quality
- applyQualitySettings('ShadowQuality', {
- [Quality.Low]=[=[
- WorldRender.ShadowmapsEnable true
- WorldRender.ShadowmapViewDistance 100
- WorldRender.ShadowmapResolution 1024
- WorldRender.ShadowmapQuality 0
- WorldRender.TransparencyShadowmapsEnable 0
- ]=],
- [Quality.Medium]=[=[
- WorldRender.ShadowmapsEnable true
- WorldRender.ShadowmapViewDistance 100
- WorldRender.ShadowmapResolution 1024
- WorldRender.ShadowmapQuality 1
- WorldRender.TransparencyShadowmapsEnable 1
- ]=],
- [Quality.High]=[=[
- WorldRender.ShadowmapsEnable true
- WorldRender.ShadowmapViewDistance 200
- WorldRender.ShadowmapResolution 1536
- WorldRender.ShadowmapQuality 1
- WorldRender.TransparencyShadowmapsEnable 1
- ]=],
- [Quality.Ultra]=[=[
- WorldRender.ShadowmapsEnable true
- WorldRender.ShadowmapViewDistance 200
- WorldRender.ShadowmapResolution 2048
- WorldRender.ShadowmapQuality 1
- WorldRender.TransparencyShadowmapsEnable 1
- ]=],
- })
- ------ Antialiasing Deferred
- applyQualitySettings('AntiAliasingDeferred', {
- [AntiAliasingDeferred.Off]=[=[
- WorldRender.MultisampleCount 1
- ]=],
- [AntiAliasingDeferred.MSAA2X]=[=[
- WorldRender.MultisampleCount 2
- ]=],
- [AntiAliasingDeferred.MSAA4X]=[=[
- WorldRender.MultisampleCount 4
- ]=],
- })
- ------ Antialiasing Post
- applyQualitySettings('AntiAliasingPost', {
- [AntiAliasingPost.Off]=[=[
- WorldRender.FxaaEnable 0
- ]=],
- [AntiAliasingPost.Low]=[=[
- WorldRender.FxaaEnable 1
- WorldRender.FxaaQuality 0
- ]=],
- [AntiAliasingPost.Medium]=[=[
- WorldRender.FxaaEnable 1
- WorldRender.FxaaQuality 1
- ]=],
- [AntiAliasingPost.High]=[=[
- WorldRender.FxaaEnable 1
- WorldRender.FxaaQuality 2
- ]=],
- })
- ------ Ambient Occlusion
- applyQualitySettings('AmbientOcclusion', {
- [AmbientOcclusion.Off]=[=[
- PostProcess.DynamicAOEnable 0
- ]=],
- [AmbientOcclusion.SSAO]=[=[
- PostProcess.DynamicAOEnable 1
- PostProcess.DynamicAOMethod DynamicAOMethod_SSAO
- ]=],
- [AmbientOcclusion.HBAO]=[=[
- PostProcess.DynamicAOEnable 1
- PostProcess.DynamicAOMethod DynamicAOMethod_HBAO
- ]=],
- })
- ------ Anisotropic filtering
- ShaderSystem = ShaderSystem or {}
- ShaderSystem.MaxAnisotropy = 2^settings['AnisotropicFilter'] -- 1, 2, 4, 8, 16
- ------- Motion Blur
- WorldRender = WorldRender or {}
- WorldRender.MotionBlurEnable = settings['MotionBlurEnabled']
- -- WorldRender.MotionBlurScale = settings['MotionBlur'] / 5
- -- for some reason motion we get "attempt to perform arithmetic on field 'MotionBlur' (a nil value)" when starting up so workaround by having a script default value to handle that case --johan
- WorldRender.MotionBlurScale = (settings['MotionBlur'] or 0.5) / 5
- ------- Screen resolution
- RenderDevice = RenderDevice or {}
- RenderDevice.FullscreenWidth = settings['ResolutionWidth']
- RenderDevice.FullscreenHeight = settings['ResolutionHeight']
- RenderDevice.FullscreenRefreshRate = settings['ResolutionHertz']
- RenderDevice.Fullscreen = settings['FullscreenEnabled']
- RenderDevice.FullscreenOutputIndex = settings['FullscreenScreen']
- RenderDevice.VSyncEnable = settings['VSyncEnabled']
- PostProcess.UIBrightnessNorm = settings['Brightness']
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/Options/Physics.lua',
- 'payload': <Blob 'local quality = settings['PhysicsQuality']
- log:info("setting physics quality : "..quality)
- if(quality > 0.8) then
- applySettings([=[
- Physics.EnableFollowWheelRaycasts true
- Physics.EnableASyncWheelRaycasts true
- ]=])
- else
- applySettings([=[
- Physics.EnableFollowWheelRaycasts false
- Physics.EnableASyncWheelRaycasts true
- ]=])
- end
- '>}},
- {'$file': {'name': 'Scripts/UserOptions/Options/Sound.lua',
- 'payload': <Blob 'local quality = settings['AudioQuality']
- log:info("setting sound quality : "..quality)
- if(quality > 0.8) then
- applySettings([=[
- Audio.MaxAudibleSoundCount 15
- Audio.AudioCoreCpuLoadLimit 50
- ]=])
- else
- applySettings([=[
- Audio.MaxAudibleSoundCount 8
- Audio.AudioCoreCpuLoadLimit 30
- ]=])
- end
- '>}},
- {'$file': {'name': 'Scripts/BuildMonkeyAutosmoke.cfg',
- 'payload': <Blob '#!/bin/lua
- core = require "Frost.Core"
- log:debug("Parsing 'BuildMonkeyAutosmoke.cfg' settings")
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G)
- end
- applySettings [=[
- Core.IgnoreAlways true
- Core.Heartbeat true
- Core.HeartbeatInterval 20
- Client.UseMouseAndKeyboardSystem false
- RenderDevice.NvidiaMinDriverVersion 18585
- Client.IsPresenceEnabled false
- Server.IsPresenceEnabled false
- ]=]
- '>}},
- {'$file': {'name': 'Scripts/BuildMonkeyXenon.cfg',
- 'payload': <Blob '#!/bin/lua
- core = require "Frost.Core"
- log:debug("Parsing 'BuildMonkeyXenon.cfg' settings")
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G)
- end
- applySettings [=[
- Core.IgnoreAlways true
- Client.UseMouseAndKeyboardSystem false
- SoldierTest.maxCountTestSoldier 23
- Client.IsPresenceEnabled false
- Server.IsPresenceEnabled false
- ]=]
- '>}},
- {'$file': {'name': 'Scripts/Checkins.cfg',
- 'payload': <Blob "Code Win32;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.Win32\Logs
- Code Win64;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.Win64\Logs
- Code Xenon;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.Xenon\Logs
- Code PS3;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.PS3\Logs
- No Master Win32;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.Win32\Logs
- # Removed these, since they don't trigger on checkins:
- #No Master Xenon;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.Xenon\Logs
- #No Master PS3;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.PS3\Logs
- #No Master PS3 (GCC);//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.PS3GCC\Logs
- #Editor;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.EditorSmoke\Logs
- Data Win32;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.Win32\Logs
- Data Win64;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.Win64\Logs
- Data Xenon;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.Xenon\Logs
- Data PS3;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.PS3\Logs
- ">}},
- {'$file': {'name': 'Scripts/DisablePresence.cfg',
- 'payload': <Blob 'Client.IsPresenceEnabled false
- Server.IsPresenceEnabled false
- '>}},
- {'$file': {'name': 'Scripts/FrostTest.cfg',
- 'payload': <Blob '#!/bin/lua
- core = require "Frost.Core"
- log:debug("Parsing 'FrostTest.cfg' settings")
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G)
- end
- applySettings [=[
- Game.LogFileEnable true
- Client.IsInternetSimulationEnabled false
- Server.IsInternetSimulationEnabled false
- Server.PacketDrops 0
- Server.DropSpikeChance 0
- Server.DuplicationChance 0
- Server.CorruptionChance 0
- Client.PacketDrops 0
- Client.DropSpikeChance 0
- Client.DuplicationChance 0
- Client.CorruptionChance 0
- PerformanceTracker.JuiceLogPerformance false
- Core.DisplayAsserts false
- Core.EnableJuiceTelemetry true
- Core.EnableJuice true
- CrashDump.WarnBeforeDoingMemoryDump false
- Core.JuiceValidateAsAssert false
- Core.ValidateAsWarning true
- juice-alternative-naming-scheme true
- Core.HardwareProfile Hardware_Low
- Render.SkipMipmapCount 4
- #Demo.RecordDemoFileName /temp/demo/BuildMonkeySession
- #UdpSocket.ReusePort true
- #Network.IncrementServerPortOnFail false
- UI.SpawnOnPressEnter true
- Inventory.postSpawnEquipping true
- Game.DisablePreRound true
- Player.ignoreLevelWarmUpTimers true
- Player.allowDefaultSpawnPointSelection true
- Window.Width 800
- Window.Height 600
- Window.Fullscreen false
- Player.allowRandomSpawnPointSelection true
- UI.SkipIntroVideoSequence true
- ]=]
- '>}},
- {'$file': {'name': 'Scripts/FrostTestPerformance.cfg',
- 'payload': <Blob '#!/bin/lua
- core = require "Frost.Core"
- log:debug("Parsing 'FrostTestPerformance.cfg' settings")
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G)
- end
- applySettings [=[
- Game.LogFileEnable true
- Client.IsInternetSimulationEnabled false
- Server.IsInternetSimulationEnabled false
- Server.PacketDrops 0
- Server.DropSpikeChance 0
- Server.DuplicationChance 0
- Server.CorruptionChance 0
- Client.PacketDrops 0
- Client.DropSpikeChance 0
- Client.DuplicationChance 0
- Client.CorruptionChance 0
- ShaderSystem.DrawStats true
- PerformanceTracker.Interval 99999
- Render.PerfOverlayVisible true
- PerformanceTracker.JuiceLogPerformance true
- Core.DisplayAsserts false
- Core.EnableJuiceTelemetry true
- Core.EnableJuice true
- CrashDump.WarnBeforeDoingMemoryDump false
- Core.JuiceValidateAsAssert false
- Core.ValidateAsWarning true
- juice-alternative-naming-scheme true
- UdpSocket.ReusePort true
- Network.IncrementServerPortOnFail false
- UI.SpawnOnPressEnter true
- Inventory.postSpawnEquipping true
- Game.DisablePreRound true
- Tickets.DisableTicketBleed true
- ServerMetrics.TickTelemetryEnabled false
- ServerMetrics.PerformanceTelemetryEnabled true
- ServerMetrics.PerformanceProfileStateEnabled true
- ServerMetrics.JuiceTelemetryEnabled true
- ServerMetrics.DbxReportEnabled true
- Player.allowRandomSpawnPointSelection true
- Client.LoadingTimeOut 99999
- Client.LoadedTimeOut 99999
- Client.IngameTimeOut 99999
- Server.IngameTimeOut 99999
- Server.LoadingTimeOut 99999
- BFServer.NoInteractivityTimeoutTime 999999
- Online.Environment Development
- Client.IsPresenceEnabled false
- Server.IsPresenceEnabled false
- ]=]
- '>}},
- {'$file': {'name': 'Scripts/Game.cfg',
- 'payload': <Blob '#!/bin/lua
- core = require "Frost.Core"
- log:debug("Parsing 'Game.cfg' settings")
- local function applySettings(settings)
- core.parseKeyValueCfgString(settings, _G)
- end
- local function append(table, value)
- table[#table+1] = value
- end
- --
- -- Note that this is now actually a Lua script (signified by the first line
- -- of this file), to allow conditionals and more advanced settings processing
- --
- -- There are two ways to set settings. One is by editing the key-value string
- -- block below, the other is to actually use Lua code to set settings.
- --
- applySettings [=[
- Game.Level Levels/Frontend/Frontend
- #Game.DefaultLayerInclusion GameMode=ConquestLarge
- #Level.Start E3_Demo
- Server.DebrisClusterEnabled true
- Server.WaterPhysicsEnabled true
- Server.IsDesertingAllowed false
- Server.IsRenderDamageEvents false
- Server.IsStatsEnabled false
- Server.IsNetworkStatsEnabled false
- Server.IsAiEnabled true
- Server.AILooksIntoCamera false
- Server.IsDestructionEnabled true
- Server.IsTreeDestructionEnabled true
- Server.IsSoldierAnimationEnabled true
- Server.IsSoldierDetailedCollisionEnabled true
- Server.DisableCutscenes false
- Server.HavokVisualDebugger false
- Server.ShowTriggerDebugText false
- Server.TimeoutGame false
- Server.TimeoutTime 9999.0 // 5.0
- Server.JobEnable true
- Server.ThreadedLoadingEnable true
- // Internet simulation (only active in multiplayer)
- Server.IsInternetSimulationEnabled false
- Server.MinLatency 0.1
- Server.MaxLatency 0.2
- Server.PacketDrops 0.01
- Server.DropSpikeChance 0.03
- Server.MinDropDuration 0.3
- Server.MaxDropDuration 1.0
- Server.ReorderingChance 0.01
- Server.DuplicationChance 0.02
- Server.CorruptionChance 0.01
- enable-category-lookup-error-trigger false
- Server.FallBackToSquadSpawn false
- Server.Playlist DefaultPlayList
- Server.forceCurrentMapOnLoad true
- Server.forceStartMapOnLoad false
- Player.allowDefaultSpawnPointSelection true
- Player.ignoreLevelWarmUpTimers true
- Client.IsSpectator false
- #Client.ScreenshotToFile true
- Client.OccludersEnabled true
- Client.DebrisClusterEnabled true
- Client.TerrainEnabled true
- Client.WaterPhysicsEnabled true
- Client.PauseGameOnStartUp false
- Client.RenderTags false
- Client.EffectsEnabled true
- Client.EmittersEnabled true
- Client.OnDamageSpottingEnabled false
- #Client.ServerIp 10.20.102.99
- #Client.SecondaryServerIp 10.20.102.63
- Client.DrawStats false
- Client.DrawFpsStats true
- Client.DrawObjectLimits true
- Client.DrawNetworkStats false
- Client.Team 0
- Client.Kit 0
- Persistence.AllUnlocksAlwaysUnlocked false
- #Client.SpawnPoint
- Client.InvertPitch false
- Client.InvertPadPcRightStick false
- //Flip Y-axis for non-pilots (Infantry and Land Vehicles)
- Client.Scheme0FlipY false
- //Flip Y-axis for pilots (Air Vehicles)
- Client.Scheme1FlipY false
- Client.AimScale 1.0
- Client.HavokVisualDebugger false
- Client.HavokVDBShowsEffectsWorld false
- Client.IncomingFrequency 15.0
- Client.IncomingRate 128000
- Client.OutgoingRate 48000
- Server.OutgoingFrequency 10.0
- Server.OutgoingRate 128000
- Server.IncomingRate 48000
- // Internet simulation (only active in multiplayer)
- Client.IsInternetSimulationEnabled false
- Client.MinLatency 0.1
- Client.MaxLatency 0.2
- Client.PacketDrops 0.01
- Client.DropSpikeChance 0.03
- Client.MinDropDuration 0.3
- Client.MaxDropDuration 1.0
- Client.ReorderingChance 0.01
- Client.DuplicationChance 0.02
- Client.CorruptionChance 0.01
- Client.ThreadedLoadingEnable true
- Client.VisualFrameInterpolation true
- Client.AsyncClientBulletEntity true
- UI.AmpServerEnabled false
- UI.AmpWaitForServerConnection false
- UI.AmpPort 7534
- UI.OnScreenTraces false
- UI.ShowDebugStringTag false
- UI.OutputEnabled false
- UI.VerboseOutputEnabled false
- // Language can be set to override the language that is getting sent from the web
- UI.Language LanguageFormat_Undefined
- UI.FontCacheTextureWidth 1024
- UI.FontCacheTextureHeight 1024
- UI.RenderCommandBufferSize 327680
- UI.RenderVertexBufferSize 327680
- UI.RenderIndexBufferSize 98304
- UI.RenderPcBufferScale 4
- UI.DisableMoviesOnConsoles true
- UI.MaxMinimapIconsPc 256
- UI.MaxMinimapIconsConsole 64
- //Timeout values
- //Client.LoadingTimeOut 99999
- //Client.LoadedTimeOut 99999
- //Client.IngameTimeOut 99999
- //Server.IngameTimeOut 99999
- //Server.LoadingTimeOut 99999
- Core.LogLevel Info
- Core.EnableMemoryDump false
- Core.CrashOnFatalErrors true
- Core.ProfileDirectoryName Battlefield 3
- Core.BugSubmitTool BST_B4Bug
- Core.InitSeed xa37dd45ffe100bfffcc9753aabac325f07cb3fa231144fe2e33ae4783feead2b8a73ff021fac326df0ef9753ab9cdf6573ddff0312fab0b0ff39779eaff312a4f5de65892ffee33a44569bebf21f66d22e54a22347efd375981188743afd99baacc342d88a99321235798725fedcbf43252669dade32415fee89da543bf23d4ex
- Game.LogFileEnable true
- Game.LogFileCollisionMode LFCM_Rotate
- Decal.RingBufferMaxVertexCount 15000
- Decal.StaticBufferMaxVertexCount 1000000
- Decal.DebugWarningsEnable false
- ShaderSystem.DxFixupInputSignaturesEnable false
- ShaderSystem.FrameMemoryBufferSize 16777216
- ShaderSystem.DrawStats false
- ShaderSystem.DrawAdvancedStats false
- Render.JobEnable true
- Render.PerfOverlayEnable 1
- Render.PerfOverlayVisible 0
- Render.DebugRendererEnable 1
- Render.DrawFpsMethod 1
- DebugRender.DxMaxVertexCount 262144
- //Set the Near Plane to 0.06 to help fix the most major clipping issues on weapon animations. -akertz
- Render.NearPlane 0.06
- Render.XenonBufferTwoFramesEnable 1
- RenderDevice.Dx10PlusEnable 1
- RenderDevice.Dx10Dot0Enable 0
- RenderDevice.Dx10Dot1Enable 1
- RenderDevice.Dx11Enable 1
- RenderDevice.DebugInfoEnable 0
- RenderDevice.DebugBreakOnErrorEnable 0
- RenderDevice.DebugBreakOnWarningEnable 0
- RenderDevice.DebugBreakOnInfoEnable 0
- RenderDevice.SwitchToRefEnable 0
- RenderDevice.FullscreenModeEnable true
- RenderDevice.MultiGpuValidationEnable false
- Occlusion.NormalViewDistance 400
- Occlusion.TerrainViewDistance 2000
- WorldRender.MultisampleCount 1
- WorldRender.ShadowmapSliceCount 3
- WorldRender.ShadowmapViewDistance 100
- WorldRender.ShadowmapWidth 1024
- WorldRender.ShadowmapHeight 1024
- WorldRender.ShadowmapsEnable true
- #WorldRender.SubSurfaceRolloffKeyLight 0.33
- #WorldRender.SubSurfaceRolloffLocalLight 1.0
- WorldRender.ShadowmapExtrusionLength 400
- MeshStreaming.Enable 1
- TextureStreaming.Enable 1
- TextureStreaming.PoolSize 200000
- TextureStreaming.MinTextureSize 50000
- # Should really be the new default value
- VisualTerrain.DecalOffsetY 0.04
- TerrainStreaming.DataLoadJobCount 192
- Physics.RemoveRagdollWhenWoken false
- Physics.RemoveFromWorldOnCollisionOverflow false
- Physics.SingleStepCharacter true
- Physics.HeightfieldRSXStreaming true
- #Physics.EnableClientWheelRaycasts true2
- ragdoll-settle-angularvelocity 0.05
- ragdoll-settle-linearvelocity 0.05
- ragdoll-settle-minactivetime 5
- GameAnimation.RespawnOnResourceReload false
- GameAnimation.UseAnimationDrivenCharacter true
- GameAnimation.TemporalLoddingFirstDistance 10000
- GameAnimation.TemporalLoddingSecondDistance 10000
- GameAnimation.TemporalLoddingThirdDistance 10000
- GameAnimation.TemporalLoddingFourthDistance 10000
- GameAnimation.TemporalLoddingFifthDistance 10000
- GameAnimation.TemporalLoddingSixthDistance 10000
- EmitterSystem.EnableJobs true
- EmitterSystem.QuadGroupsJoinNiceAndSimple true
- EmitterSystem.QuadEnableZOcclusion false
- Audio.ReverbAllocSize 983040
- BFServer.NoInteractivityTimeoutTime 300
- BFServer.NoInteractivityThresholdLimit 0.1
- BFServer.DefaultVoiceChannel Squad
- Game.IsGodMode false
- Game.IsJesusMode false
- Game.useSingleWeaponSelector true
- Game.UseSpeedBasedDetailedCollision true
- Game.AwardsTracking true
- Game.HasUnlimitedAmmo false
- Game.HasUnlimitedMags false
- Game.AutoAimEnabled false
- Game.DifficultyIndex -1 // Debug difficulty index to data GameConfigurations/Game_Difficulty_Settings.dbx
- //Game.DisablePreRound true
- #Don't turn this on, use the weapon data to control the FOV instead.
- #SoldierRender.WeaponFovEnable false
- UI.ConstructibleList Objects/Constructibles/Constructibles
- UI.BatchingEnable true
- UI.MaxVertexCount 32768
- UI.RenderTargetMipmapGenEnable true
- UI.PostProcessSystemEnable true
- UI.PostProcessEnable true
- UI.PostProcessMipmapgenEnable false
- UIMessageComp.debugRendering false
- UICoopComp.UnlockAllLevels true
- UILevelComp.UnlockAllSpLevels true
- Client.UseMouseAndKeyboardSystem true
- Core.EnableDbErrorPolicy true
- #Core.EnableJuice false
- Core.JuiceServerIP 10.20.96.145
- Core.JuiceLogLevel Info
- Core.MemoryStatsEnabled true
- DebugRender.TextQueueMaxLineCount 10
- DebugRender.TextQueueTimeVisible 10.0
- proximity-interact-distance 4.0
- Occlusion.MaxTriangleCount 30000
- Core.DisplayAsserts true
- uiqueue-delay 10
- kill-message-delay 0
- audio-reverb-distance-falloff 0.01
- Blaze.ServerAutoAccountCreation true
- SoldierTest.spawnEnabled false
- SoldierTest.scriptsEnabled false
- controllableEntityJobsEnabled true
- DisplayObjective false;
- DisplayMapMarkers false;
- #
- # ANT settings
- #
- Ant.EnableJobs true
- # Memory Budget Size is a pure cosmetical vars to help content creators manage the memory
- antDebug.MemoryBudgetSize 20
- # Vars
- Ant.MaxInterpolationSlots 100
- Soldier.cameraLagEffect 0
- Ant.BlockOnJobs true
- Ant.ClientEmulatesServer false
- Ant.UseCameraFov false
- Ant.UseWeaponFov false
- Soldier.animate3pWhenIn1p true
- Ant.InterpolatePoses true
- // Allow variable length ticks to be used for console MP
- Ant.AllowVariableTickLength true
- Ant.ReducedInterpolationDistance 10.0
- Ant.TrajectoryOnlyInterpolationDistance 100.0
- Ant.CheckGiantSoldiers 0.0
- Customization.dropGearVelocityScale 0.7
- Core.Heartbeat false
- Core.HeartbeatInterval 2
- Core.HardwareProfile Hardware_AutoDetect
- // Protocol version for retail consoles are set in an if-statement further down. This entry remains to make it possible to change ProtocolVersion from the builds systems.
- Network.ProtocolVersion 60
- Network.TitleId 5
- Network.ClientPort 25100
- Network.ServerPort 25200
- Network.MaxGhostCount 8192
- Network.MaxClientCount 64
- Network.UseFrameManager true
- Network.MaxServerFrameSize 2048
- //Network.MaxClientFrameSize 2048
- //Network.ClientConnectionDebugFilePrefix client
- //Network.ServerConnectionDebugFilePrefix server
- //Demo.TimeDemo demos/perf/demo0
- //Demo.PauseOnStartup true
- //Demo.StartProfilingOnFrame 400
- //Demo.StopProfilingOnFrame 600
- //Demo.LockToPlayerName JLORD1
- //Demo.ForcedDeltaTickCount 0
- //Demo.RecordDemoFileName demos/perf/demo0
- //Demo.PlaybackDemoFileName demos/perf/demo0
- GameSettings.MaxPlayerCount 64
- GameSettings.MaxSpectatorCount 4
- Game.CurrentSKU WW
- Core.AvailableLanguages *
- VeniceOnline.PunkBusterActivateServer false
- VeniceOnline.PunkBusterActivateClient false
- VeniceOnline.ServiceNameOverride null
- VeniceOnline.ClientGameConfigurationOverride null
- Client.IsPresenceEnabled true
- Server.IsPresenceEnabled true
- Online.Environment OnlineEnvironment_Production
- VeniceOnline.BlazeLogLevel 1
- // TEMPORARY SETTINGS. NOT FOR RETAIL (but certainly for Alpha Trial)
- BFServer.PingSite iad
- blaze-connecting-messages true
- LanServerBackend.fakeStatsDownload true
- ]=]
- if platform == 'Win32' then
- applySettings [=[
- ShaderSystem.MaxAnisotropy 4
- Client.LoadMenu 0
- Client.IgnoreClientFireRateMultiplier true
- Blaze.ClientAutoAccountCreation true
- VisualTerrain.VertexBufferHeightsEnable 0
- VisualTerrain.MeshScatteringInvisibleCellFovFactor 1
- VisualTerrain.PatchSlotCount 736
- # Due to differences in codecs and data sizes on Win32 compared to console this needs to be quite big
- Audio.WaveCacheSize 104857600
- Audio.WaveCacheHeadroom 5242880
- Audio.WaveCachePruneTimeLimit 0.0f
- Audio.DelayLineAllocSize 5242880
- WorldRender.SpotLightShadowmapEnable 1
- WorldRender.SpotLightShadowmapResolution 1024
- # we need to use fullres lensflares on PCs to make sure lensflares are rendered _after_ transparent foreground surfaces
- # related to http://frostbite.ea.com:8080/browse/BFIII-14492
- WorldRender.HalfResLensFlaresEnable 0
- RenderDevice.NvidiaMinDriverVersion 28538
- RenderDevice.AmdMinDriverVersion 11.7
- RenderDevice.MinDriverRequired 1
- # average method instead of minimum
- Render.DrawFpsMethod 1
- ]=]
- local onlineEnvironment = cmdLineOption('onlineEnvironment')
- if onlineEnvironment then
- onlineEnvironment = string.lower(onlineEnvironment)
- end
- if onlineEnvironment == "dev" then
- applySettings [=[
- Online.Environment OnlineEnvironment_Development
- ]=]
- elseif onlineEnvironment == "test" then
- applySettings [=[
- Online.Environment OnlineEnvironment_Test
- ]=]
- end
- local webMode = commandLine:lookup("webmode")
- if webMode then
- webMode = string.lower(webMode)
- end
- if webMode == "sp" then
- applySettings [=[
- VeniceOnline.EnableSnowroller 1
- Game.Level Levels/Web_Loading/Web_Loading
- Window.Minimized 1
- // TODO - Show intro movie once, and go directly to campain menu
- ]=]
- elseif webMode == "spoffline" then
- applySettings [=[
- Game.Level Levels/FrontEnd/FrontEnd
- // TODO - Always show intro movie
- ]=]
- elseif webMode == "coop" then
- applySettings [=[
- VeniceOnline.EnableSnowroller 1
- Game.Level Levels/Web_Loading/Web_Loading
- Client.QuitGameOnServerDisconnect true
- Window.Minimized 1
- // TODO - Prune these
- blaze-connecting-messages true
- Blaze.ClientAutoAccountCreation true
- ]=]
- elseif webMode == "mp" then
- applySettings [=[
- VeniceOnline.EnableSnowroller 1
- Game.Level Levels/Web_Loading/Web_Loading
- Client.QuitGameOnServerDisconnect true
- Window.Minimized 1
- // TODO - Prune these
- blaze-connecting-messages true
- Blaze.ClientAutoAccountCreation true
- ]=]
- else
- webMode = nil
- end
- -- Common webMode options.
- if webmode then
- applySettings [=[
- Core.DisplayAsserts 0
- Window.Minimized 1
- ]=]
- end
- end
- if platform == 'Ps3' or platform == 'Xenon' then
- applySettings [=[
- Client.VSyncEnable 1
- Ant.MaxInterpolationSlots 32
- Audio.DelayLineAllocSize 1572864
- # saves 10 mb of memory on xenon
- UI.ScreenshotEnable 0
- Decal.RingBufferMaxVertexCount 8192
- Decal.StaticBufferMaxVertexCount 16384
- MeshStreaming.MaxPendingLoadCount 2
- TextureStreaming.MaxPendingLoadCount 2
- Network.MaxClientCount 24
- WorldRender.ShadowmapAccumEnable 1
- WorldRender.ShadowmapResolution 608
- WorldRender.ShadowmapSliceCount 4
- WorldRender.ShadowmapQuality 1
- WorldRender.SpotLightShadowmapEnable 1
- WorldRender.MaxSpotLightShadowmapCount 2
- WorldRender.SpotLightShadowmapResolution 512
- VisualTerrain.LodScale 0.5
- VisualTerrain.TextureLevelOffset 2
- ]=]
- end
- if platform == 'Ps3' then
- applySettings [=[
- TextureStreaming.PoolSize 40000
- MeshStreaming.PoolSize 50000
- MeshStreaming.Ps3CellPoolSize 18000
- VegetationSystem.MaxActiveDistance 200
- Occlusion.MaxTriangleCount 5000
- Audio.WaveCacheSize 8925184
- Audio.WaveCacheHeadroom 131072
- Audio.WaveCacheRsxSize 20971520
- Audio.WaveCachePruneTimeLimit 0.0f
- Audio.WaveCacheRsxPruneTimeLimit 0.0f
- # ShaderSystem.FrameMemoryBufferSize 3670016
- ShaderSystem.FrameMemoryBufferSize 5000000
- Render.Ps3FrameLocalBufferSize 6291456
- Render.Ps3FrameMainBufferSize 6291456
- PostProcess.Ps3EdgeMlaaEnable 1
- Render.Ps3Res1280x704Enable 1
- GameTime.VSyncSubtractTime 1.0f
- ]=]
- local superbundles = cmdLineOption('super')
- if not superbundles then
- applySettings [=[
- # Enable DVD emulation when running from Avalanche.
- Core.HttpDvdSimulation 1
- Core.HttpDvdSeekPenalty 200
- # Move textures/meshes to the third streaming lane to remove DVD penalties for them
- TurboLoader.SoakHddIo 2
- ]=]
- end
- end
- if platform == 'Xenon' then
- applySettings [=[
- Render.XenonRingBufferSize 2621440
- VegetationSystem.MaxActiveDistance 100
- TextureStreaming.PoolSize 50000
- MeshStreaming.PoolSize 40000
- MeshStreaming.XenonFinalPoolSizeAdjustment 1000
- MeshStreaming.XenonRetailPoolSizeAdjustment 1000
- TextureStreaming.XenonFinalPoolSizeAdjustment 0
- TextureStreaming.XenonRetailPoolSizeAdjustment 15000
- Occlusion.MaxTriangleCount 5000
- Audio.WaveCacheSize 26214400
- Audio.WaveCacheHeadroom 65536
- Audio.WaveCachePruneTimeLimit 0.0f
- ShaderSystem.FrameMemoryBufferSize 6000000
- ShaderSystem.XenonDispatchCmdBufferSize 1048576
- WorldRender.XenonOutdoorLightTilingEnable 1
- WorldRender.FxaaEnable 1
- VisualTerrain.VertexBufferHeightsEnable 0
- PostProcess.LUTGammaR 1.3
- PostProcess.LUTGammaG 1.3
- PostProcess.LUTGammaB 1.3
- PostProcess.LUTGammaCurbOffset 0.1
- ]=]
- local superbundles = cmdLineOption('super')
- if superbundles then
- applySettings [=[
- #temporary disable all free streaming on xbox until the hd install flow is finished, that way we can still create the hd superbundle and thus make sure to fit on disc
- #Game.ForceDisableFreeStreaming true
- ]=]
- else
- applySettings [=[
- # Enable DVD emulation when running from Avalanche.
- Core.HttpDvdSimulation 1
- Core.HttpDvdSeekPenalty 200
- # Move textures/meshes to the third streaming lane to remove DVD penalties for them
- TurboLoader.SoakHddIo 2
- ]=]
- end
- end
- local level = cmdLineOption('level')
- if level then
- log:debug("Level specified on commandline, enabling fast startup")
- -- Level names without slashes are assumed to be shorthand for
- -- Levels/name/name to go with Venice's epic level naming convention
- if not string.find(level, "/") then
- level = "Levels/" .. level .. "/" .. level
- end
- Game.Level = level
- end
- if config:lower() == 'retail' then
- if platform:lower() == 'ps3' then
- applySettings [=[
- Network.ProtocolVersion 1000
- ]=]
- end
- if platform:lower() == 'xenon' then
- applySettings [=[
- Network.ProtocolVersion 2000
- ]=]
- end
- end
- local dedicatedServer = cmdLineOption('dedicated')
- if dedicatedServer then
- applySettings [=[
- #HACK: We need to set a level that always exists on the server, unfortunatley there is no such level so we just pick subway...
- Game.Level Levels/MP_Subway/MP_Subway
- Game.DefaultLayerInclusion GameMode=ConquestSmall0
- Server.ThreadingEnable false
- Ant.EnableJobs false
- ServerMetrics.Enabled false
- ServerMetrics.TransactionTelemetryEnabled true
- ServerMetrics.PerformanceTelemetryEnabled true
- ServerMetrics.PerformanceProfileStateEnabled true
- ]=]
- local protocolVersionCmd = cmdLineOption('protocolVersion')
- if protocolVersionCmd then
- Network.ProtocolVersion = protocolVersionCmd
- else
- local platformCmd = cmdLineOption('platform')
- local usingSuperBundles = cmdLineOption('super')
- if platformCmd and usingSuperBundles then
- if platformCmd:lower() == 'ps3' then
- Network.ProtocolVersion = '1000'
- elseif platformCmd:lower() == 'xenon' then
- Network.ProtocolVersion = '2000'
- elseif platformCmd:lower() == 'win32' then
- Network.ProtocolVersion = '60'
- end
- end
- end
- end
- '>}},
- {'$file': {'name': 'Scripts/Local.cfg',
- 'payload': <Blob "// Try and not add things to game.cfg if it's not meant to be checked in!
- // Add here settings that you would like to override
- //
- ">}},
- {'$file': {'name': 'Scripts/LocalE3Win32.cfg',
- 'payload': <Blob 'Client.DrawFps 0
- ShaderSystem.DrawStats 0
- Client.DrawObjectLimits 0
- Core.DisplayAsserts 0
- Window.Fullscreen 1
- Core.MemoryStatsEnabled 0
- -- Should be on for SP Levels
- -- GameTime.ForceDeltaTickCount 1
- -- Uncomment line below to remove all logging and prevent harmful log spam during MP test
- -- Core.LogLevel CllFatalAssert
- -- In case of emergency
- -- WorldRender.TransparencyShadowmapsEnable 1
- -- WorldRender.ShadowmapViewDistance 200
- -- WorldRender.ShadowmapResolution 2048
- -- WorldRender.ShadowmapQuality 1
- -- WorldRender.ShadowmapViewDistance 100
- -- WorldRender.FxaaEnable 1
- -- WorldRender.MotionBlurEnable 1
- -- PostProcess.DynamicAOEnable 1
- -- WorldRender.MultisampleCount 4
- '>}},
- {'$file': {'name': 'Scripts/LocalEditor.cfg',
- 'payload': <Blob "// Try and not add things to game.cfg if it's not meant to be checked in!
- // Add here settings that you would like to override
- // This file is executed when Frostbite is launched from FrostEd
- ">}},
- {'$file': {'name': 'Scripts/LocalGame.cfg',
- 'payload': <Blob "// Try and not add things to game.cfg if it's not meant to be checked in!
- // Add here settings that you would like to override
- // This file is executed when Frostbite is executed separately (i.e not from FrostEd)
- ">}},
- {'$file': {'name': 'Scripts/PlaytestCommon.cfg',
- 'payload': <Blob 'client-matchmaking-map0 paris_line2
- client-matchmaking-map1 mp_berlin
- blaze-server-state-change-logging true
- ShaderSystem.Dx10DelayedShaderLoadingEnable false
- Game.Level Levels/GarrisonTest/GarrisonTest
- Game.HasUnlimitedMags false
- Core.EnableJuice true
- Core.EnableBitstreamTypeVerification false
- Core.JuiceUserType jutDev
- Core.AssertLimit 5
- Client.IsPresenceEnabled true
- Client.SecondaryServerIp 10.20.102.69
- Client.MemoryStatsEnabled false
- Server.IsPresenceEnabled false
- //Client.LoadingTimeout 240
- //Client.LoadedTimeout 60
- //Client.IngameTimeout 15
- //Server.IngameTimeout 30
- //Server.LoadingTimeout 60
- // Internet simulation (only active in multiplayer)
- Client.MinLatency 0.1
- Client.MaxLatency 0.1
- RenderDevice.NvidiaMinDriverRequired false
- // Online.MatchmakeImmediately true
- // Online.MatchmakingToken fooo
- Online.BlazeWalUrl 10.20.102.120:1246
- Online.EnableSnowroller true
- Online.SnowrollerOrphanTimeout 10
- LanServerBackend.fakeStatsDownload true
- blaze-offline-notification true
- // Game.EnableSurveys true
- // Client.IncomingRate 512000
- // Server.OutgoingRate 512000
- Client.IncomingRate 150000
- Server.OutgoingRate 150000
- Network.TimeNudgeGhostFrequencyFactor 0
- Network.UseFrameManager true
- // Network.MaxServerFrameSize 4096
- Network.MaxServerFrameSize 2048
- // Physics.SingleStepCharacter false
- // Window.Fullscreen true
- Window.FullscreenAutosize true
- UIScreenshotComp.SceenshotInfos bighead,558,11,743,195,40,40;smallhead,558,11,743,195,18,18;smallupper,430,0,894,464,122,106;home_my_soldier,141,14,396,236,210,187;bigupper,430,0,894,464,290,252;full,362,0,902,800,250,371;
- // Player.zeroRespawnTimeOnSuicide true
- FragalyzerRecorder.StartAutoTrackOnSquadCreate true
- DebugRender.TextQueueMaxLineCount 3
- Player.ignoreLevelWarmUpTimers true
- Core.HardwareCpuBias -1
- Core.HardwareGpuBias -0.5
- Network.TimeNudgeBias 0.05
- Core.DialogLevel 9
- UIScreenshotComp.ScreenshotInfos bighead,558,11,743,195,40,40;smallhead,558,11,743,195,18,18;smallupper,430,0,894,464,122,106;home_my_soldier,141,14,396,236,210,187;bigupper,430,0,894,464,290,252;full,362,0,902,800,250,371;
- Core.Heartbeat true
- Core.HeartbeatInterval 30
- // for when using the beta.venice.dice.se site
- // Server.BlazeServiceName bf3-beta-2009-pc
- // newline
- '>}},
- {'$file': {'name': 'Scripts/PlaytestLocal.cfg',
- 'payload': <Blob 'Game.HasUnlimitedMags true
- Explosion.TriggerMaskVolumes true
- Ant.ForceLodDistance 0
- SoldierTest.spawnEnabled true
- SoldierTest.scriptsEnabled true'>}},
- {'$file': {'name': 'Scripts/PlaytestServer.cfg',
- 'payload': <Blob '//Server Level
- #Game.Level Levels/Level_01/Level_01
- Game.Level Levels/Level_02/Level_02
- #Game.Level Levels/Level_03/Level_03
- #Game.Level Levels/Level_04/Level_04
- #Game.Level Levels/Level_05/Level_05
- #Game.Level Levels/Level_06/Level_06
- Game.Level Levels/Testrange_Rome_MP05/Testrange_Rome_MP05
- //Game mode (16/64 player)
- #Game.DefaultLayerInclusion StartupMode=Game;GameMode=ConquestSmall
- Game.DefaultLayerInclusion StartupMode=Game;GameMode=KingOfTheHill
- #Game.DefaultLayerInclusion StartupMode=Game;GameMode=ConquestLarge
- Network.MaxClientCount 24
- GameSettings.MaxPlayerCount 24
- Server.IsPresenceEnabled true
- Server.QueryPortOffset 100
- Core.DisplayAsserts false
- CrashDump.WarnBeforeDoingMemoryDump false
- // Allow players to spawn even if server blaze connection is down
- Server.statisticsFallback true
- ServerMetrics.Enabled true
- ServerMetrics.PerformanceProfileStateEnabled true
- ServerMetrics.PerformanceTelemetryEnabled true
- // Internet simulation (only active in multiplayer)
- Server.MinLatency 0.1
- Server.MaxLatency 0.1
- Demo.RecordDemoFilename demo/PlaytestRecording0
- Demo.AllowOverwrite false
- GameReport.DebugOutput true
- # Server.Playlist Level_01_only
- Server.forcePlaylist false
- Server.forceStartMapOnLoad false
- Game.DisablePreRound false
- # SoldierTest.spawnEnabled true
- # SoldierTest.scriptsEnabled true
- // Just to remember the newline'>}},
- {'$file': {'name': 'Scripts/ProtocolVersion.cfg',
- 'payload': <Blob 'Network.Version "V0.74"
- Network.ProtocolVersion 74
- '>}},
- {'$file': {'name': 'Scripts/PS3Game.cfg',
- 'payload': <Blob '-url http://10.20.108.102:1338 -host 10.20.108.102 -branch VeniceRetailPc
- '>}},
- {'$file': {'name': 'Scripts/TestLevel.cfg',
- 'payload': <Blob 'Game.FastStartupEnable true
- Game.Level ../EditorLevels/TestLevel
- Server.IsAiEnabled false
- Server.IsGodMode true
- UI.HudEnable false
- '>}},
- {'$file': {'name': 'Scripts/XenonGame.cfg',
- 'payload': <Blob '-url http://10.20.108.102:1338 -host 10.20.108.102 -branch VeniceRetailPc
- '>}},
- {'$file': {'name': 'Scripts/Debug/cycleMpLevels',
- 'payload': <Blob 'Core.LogLevel FatalAssert
- server.loadLevel Levels/MP_001/MP_001
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_003/MP_003
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_007/MP_007
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_011/MP_011
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_012/MP_012
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_013/MP_013
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_017/MP_017
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_018/MP_018
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- server.loadLevel Levels/MP_Subway/MP_Subway
- sleep 60
- server.restartLevel
- sleep 60
- server.endRound 0
- sleep 60
- server.endRound 1
- sleep 60
- main.playCommands Scripts/Debug/cycleMpLevels
- '>}},
- {'$file': {'name': 'Scripts/Debug/cycleSpLevels',
- 'payload': <Blob 'Core.LogLevel FatalAssert
- server.loadLevel Levels/SP_New_York/SP_New_York
- sleep 60
- server.restartLevel
- sleep 240
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Earthquake/SP_Earthquake
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Earthquake2/SP_Earthquake2
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Jet/SP_Jet
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Bank/SP_Bank
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Paris/SP_Paris
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Tank/SP_Tank
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Tank_b/SP_Tank_b
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Sniper/SP_Sniper
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Valley/SP_Valley
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Villa/SP_Villa
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/SP_Finale/SP_Finale
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- main.playCommands Scripts/Debug/cycleSpLevels'>}},
- {'$file': {'name': 'Scripts/Debug/cycleSpLevelsViaMainMenu',
- 'payload': <Blob 'Core.LogLevel FatalAssert
- server.loadLevel Levels/SP_New_York/SP_New_York
- sleep 60
- server.restartLevel
- sleep 240
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Earthquake/SP_Earthquake
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Earthquake2/SP_Earthquake2
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Jet/SP_Jet
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Bank/SP_Bank
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Paris/SP_Paris
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Tank/SP_Tank
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Tank_b/SP_Tank_b
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Sniper/SP_Sniper
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Valley/SP_Valley
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Villa/SP_Villa
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- server.loadLevel Levels/SP_Finale/SP_Finale
- sleep 60
- server.restartLevel
- sleep 180
- client.restartFromLastCheckpoint
- sleep 60
- server.loadLevel Levels/FrontEnd/FrontEnd
- sleep 30
- main.playCommands Scripts/Debug/cycleSpLevelsViaMainMenu'>}},
- {'$file': {'name': 'Scripts/Debug/eorLevel',
- 'payload': <Blob 'Core.LogLevel FatalAssert
- server.endRound 1
- sleep 90
- main.playCommands Scripts/Debug/eorLevel'>}},
- {'$file': {'name': 'Scripts/Debug/joinMultiplayer',
- 'payload': <Blob 'client.joinMultiplayer 10.20.104.109
- sleep 60
- client.exitGame
- sleep 30
- main.playCommands Scripts/Debug/joinMultiplayer'>}},
- {'$file': {'name': 'Scripts/Debug/restartCheckpoint',
- 'payload': <Blob 'Core.LogLevel FatalAssert
- client.restartFromLastCheckpoint
- sleep 30
- main.playCommands Scripts/Debug/restartCheckpoint'>}},
- {'$file': {'name': 'Scripts/Debug/restartLevel',
- 'payload': <Blob 'Core.LogLevel FatalAssert
- server.restartLevel
- sleep 60
- main.playCommands Scripts/Debug/restartLevel'>}},
- {'$file': {'name': 'Scripts/Debug/stressEnterAndDestroyVehicles',
- 'payload': <Blob 'Core.LogLevel FatalAssert
- server.spawnsoldier 0 1 0
- server.spawnsoldier 0 1 0
- server.spawnsoldier 0 2 0
- server.spawnsoldier 0 2 0
- server.spawnsoldier 0 2 0
- sleep 1
- server.playerEnterClosestVehicle 1 true
- server.playerEnterClosestVehicle 2 true
- server.playerEnterClosestVehicle 3 true
- server.playerEnterClosestVehicle 4 true
- server.playerEnterClosestVehicle 5 true
- sleep 1
- server.damageSoldier 1 2000 true
- server.damageSoldier 2 2000 true
- server.damageSoldier 3 20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement