Advertisement
ExtReMLapin

Untitled

Sep 22nd, 2013
1,302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 150.01 KB | None | 0 0
  1. [{'$file': {'fs': 'initfs_Win32',
  2.             'name': 'Levels/FrontEnd/FrontEnd.cfg',
  3.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  4. '>}},
  5.  {'$file': {'fs': 'initfs_Win32',
  6.             'name': 'default_settings.cfg',
  7.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  8. '>}},
  9.  {'$file': {'fs': 'initfs_Win32',
  10.             'name': 'Levels/COOP_007/COOP_007.cfg',
  11.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  12. '>}},
  13.  {'$file': {'fs': 'initfs_Win32',
  14.             'name': 'Levels/COOP_002/COOP_002.cfg',
  15.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  16. '>}},
  17.  {'$file': {'fs': 'initfs_Win32',
  18.             'name': 'Levels/COOP_003/COOP_003.cfg',
  19.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  20. '>}},
  21.  {'$file': {'fs': 'initfs_Win32',
  22.             'name': 'Levels/COOP_010/COOP_010.cfg',
  23.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  24. '>}},
  25.  {'$file': {'fs': 'initfs_Win32',
  26.             'name': 'Levels/COOP_006/COOP_006.cfg',
  27.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  28. '>}},
  29.  {'$file': {'fs': 'initfs_Win32',
  30.             'name': 'Levels/Web_Loading/Web_Loading.cfg',
  31.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  32. '>}},
  33.  {'$file': {'fs': 'initfs_Win32',
  34.             'name': 'Levels/SP_Bank/SP_Bank.cfg',
  35.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  36. '>}},
  37.  {'$file': {'fs': 'initfs_Win32',
  38.             'name': 'Levels/SP_Jet/SP_Jet.cfg',
  39.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  40. '>}},
  41.  {'$file': {'fs': 'initfs_Win32',
  42.             'name': 'Levels/SP_Finale/SP_Finale.cfg',
  43.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  44. '>}},
  45.  {'$file': {'fs': 'initfs_Win32',
  46.             'name': 'Levels/SP_Villa/SP_Villa.cfg',
  47.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  48. '>}},
  49.  {'$file': {'fs': 'initfs_Win32',
  50.             'name': 'Levels/SP_Tank/SP_Tank.cfg',
  51.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  52. '>}},
  53.  {'$file': {'fs': 'initfs_Win32',
  54.             'name': 'Levels/SP_Valley/SP_Valley.cfg',
  55.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  56. '>}},
  57.  {'$file': {'fs': 'initfs_Win32',
  58.             'name': 'Levels/SP_Paris/SP_Paris.cfg',
  59.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  60. '>}},
  61.  {'$file': {'fs': 'initfs_Win32',
  62.             'name': 'Levels/SP_Earthquake2/SP_Earthquake2.cfg',
  63.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  64. '>}},
  65.  {'$file': {'fs': 'initfs_Win32',
  66.             'name': 'Levels/SP_Earthquake/SP_Earthquake.cfg',
  67.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  68. '>}},
  69.  {'$file': {'fs': 'initfs_Win32',
  70.             'name': 'Levels/MP_018/MP_018.cfg',
  71.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  72. '>}},
  73.  {'$file': {'fs': 'initfs_Win32',
  74.             'name': 'Levels/MP_001/MP_001.cfg',
  75.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  76. '>}},
  77.  {'$file': {'fs': 'initfs_Win32',
  78.             'name': 'Levels/MP_011/MP_011.cfg',
  79.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  80. '>}},
  81.  {'$file': {'fs': 'initfs_Win32',
  82.             'name': 'Levels/MP_Subway/MP_Subway.cfg',
  83.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  84. '>}},
  85.  {'$file': {'fs': 'initfs_Win32',
  86.             'name': 'Levels/MP_017/MP_017.cfg',
  87.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  88. '>}},
  89.  {'$file': {'fs': 'initfs_Win32',
  90.             'name': 'Levels/MP_013/MP_013.cfg',
  91.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  92. '>}},
  93.  {'$file': {'fs': 'initfs_Win32',
  94.             'name': 'Levels/MP_012/MP_012.cfg',
  95.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  96. '>}},
  97.  {'$file': {'fs': 'initfs_Win32',
  98.             'name': 'Levels/MP_003/MP_003.cfg',
  99.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  100. '>}},
  101.  {'$file': {'fs': 'initfs_Win32',
  102.             'name': 'Levels/SP_Sniper/SP_Sniper.cfg',
  103.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  104. '>}},
  105.  {'$file': {'fs': 'initfs_Win32',
  106.             'name': 'Levels/MP_007/MP_007.cfg',
  107.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  108. '>}},
  109.  {'$file': {'fs': 'initfs_Win32',
  110.             'name': 'Levels/SP_Tank_b/SP_Tank_b.cfg',
  111.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  112. '>}},
  113.  {'$file': {'fs': 'initfs_Win32',
  114.             'name': 'Levels/SP_New_York/SP_New_York.cfg',
  115.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  116. '>}},
  117.  {'$file': {'fs': 'initfs_Win32',
  118.             'name': 'Levels/COOP_009/COOP_009.cfg',
  119.             'payload': <Blob 'Core.GameConfigurationName   gameconfigurations/game
  120. '>}},
  121.  {'$file': {'name': 'database.dbmanifest',
  122.             'payload': <Blob '<?xml version="1.0"   encoding="UTF-8"?>
  123. <Database id="VeniceRetailPc" family="Venice" displayName="Venice Retail PC Database" pipelineTag="Venice">
  124.     <Settings>
  125.         <Setting name='UseSparseSerialization' value='false'/>
  126.     </Settings>
  127.    
  128.     <EditorSettings>
  129.         <EditorSetting Name="AudioSystemAsset">Sound/AudioSystem</EditorSetting>
  130.         <EditorSetting Name="SoundStatesAsset">Sound/SoundStates</EditorSetting>
  131.         <EditorSetting Name="VoiceOverSystemAsset">Sound/VO/VO_System</EditorSetting>
  132.         <EditorSetting Name="TagDatabaseHost">DICE-BM153\SQLEXPRESS</EditorSetting>
  133.         <EditorSetting Name="TagDatabaseName">VENICE-META</EditorSetting>
  134.         <EditorSetting Name="TagDatabaseUser">FrostEd</EditorSetting>
  135.         <EditorSetting Name="TagDatabasePwd">frostis</EditorSetting>       
  136.     </EditorSettings>
  137.    
  138.     <!-- Domain configuration    
  139.       -->
  140.  
  141.     <Domain name="Source"   root="Source" isReadOnly="true">
  142.         <EmergencyBindings>
  143.             <Type name="TextureBaseAsset" target="Textures/white"/>
  144.             <Type name="ShaderGraph" target="Shaders/debug/black"/>
  145.         </EmergencyBindings>
  146.     </Domain>
  147.     <Domain name="Temp" root="db/Temp" isEphemeral='true'>
  148.         <Import domain="Source" readOnly='true'/>
  149.     </Domain>
  150.     <Domain name="Win32" root="Output/Win32" isEphemeral='true' isTargetDomain='true'/>
  151.     <Domain name="Xenon" root="Output/Xenon" isEphemeral='true' isTargetDomain='true'/>
  152.     <Domain name="Ps3" root="Output/Ps3" isEphemeral='true' isTargetDomain='true'/>
  153.     <Domain name="Linux" root="Output/Linux" isEphemeral='true' isTargetDomain='true'/>
  154.     <Domain name="Editor" root="Output/Editor" isEphemeral='true'/>
  155. </Database>
  156. '>}},
  157.  {'$file': {'name': 'Scripts/Game/BugCommands.lua',
  158.             'payload': <Blob 'Commands =
  159. {  
  160.     -- Bug needed for when using Trigger bug in B4Bug, info is used for all bugs
  161.     StandardB4BugBug =
  162.     {
  163.         Name = "Standard B4Bug bug",
  164.         Title = "Venice",
  165.         Menu = "Bugs",
  166.         AutoB4Bug = true,
  167.         IsStandardBug = true,
  168.        
  169.         Information =
  170.         {
  171.             "Field" , "Issue Type" , "Bug",
  172.             "Field" , "Priority" , "Minor (C, V3, L3)",
  173.             "Field" , "Assignee" , "Automatic",
  174.             "Field" , "Report Method" , "B4Bug",
  175.             "Field" , "Milestone Hindering" , "None",
  176.             "Field" , "Language" , "English",
  177.             "Field" , "User Path" , "Probable",
  178.             "RPCGet", "Game Level" , "LocalPlayer.getClientLevelName",
  179.            
  180.             "Field" , "Description" , "\
  181. Soldier position: ",
  182.             "RPCGet", "Description" , "LocalPlayer.getPlayerPosition",
  183.             "Field" , "Description" , "\
  184. Current camera position: ",
  185.             "RPCGet", "Description" , "DebugCam.getCurrentCameraPosition",
  186.            
  187.             "Field" , "Environment" , "\
  188. OS Version: ",
  189.             "RPCGet", "Environment" , "BugManager.getOSInfo",
  190.             "Field" , "Environment" , "\
  191. GPU description: ",
  192.             "RPCGet", "Environment" , "DxRenderer.AdapterDescription",
  193.             "Field" , "Environment" , "\
  194. GPU driver version: ",
  195.             "RPCGet", "Environment" , "DxRenderer.AdapterDriverVersion",
  196.            
  197.             "RPCGet", "Platform" , "BugManager.getPlatform",
  198.             "RPCGet", "Reported By (Game Team)" , "BugManager.getReportedBy",
  199.             "RPCGet", "Found in Change List (Game)" , "BugManager.getChangelist",
  200.             "RPCGet", "Found in Change List (Frostbite)" , "BugManager.getFrostbiteChangelist",
  201.             "RPCGet" , "Juice Session ID" , "BugManager.getjuiceSessionId",
  202.         }
  203.     },
  204.        
  205.     TestBug1 =
  206.     {
  207.         Name = "Testbug",
  208.         Title = "Venice",
  209.         Menu = "Bugs",
  210.         AutoB4Bug = true,
  211.        
  212.         Information =
  213.         {
  214.         },
  215.        
  216.         RPCs =
  217.         {
  218.         },
  219.     },
  220.    
  221.     TestCommand1 =
  222.     {
  223.         Name = "Testcommand 1",
  224.         Title = "Venice",
  225.         Menu = "QA Commands",
  226.         AutoB4Bug = false,
  227.        
  228.         RPCs =
  229.         {
  230.             "DebugRender.DrawStatsEnable 1",
  231.             "UI.DrawEnable 0",
  232.         },
  233.        
  234.         ReverseRPCs =
  235.         {
  236.             "DebugRender.DrawStatsEnable 0",
  237.             "UI.DrawEnable 1",
  238.         },
  239.     },
  240.  
  241.     TestCommand2 =
  242.     {
  243.         Name = "Testcommand 2",
  244.         Title = "Venice",
  245.         Menu = "QA Commands",
  246.         AutoB4Bug = false,
  247.        
  248.         RPCs =
  249.         {
  250.             "Debug.DrawScreenCenterHelper 1",
  251.             "Render.ForceFov 100",
  252.         },
  253.        
  254.         ReverseRPCs =
  255.         {
  256.             "Debug.DrawScreenCenterHelper 0",
  257.             "Render.ForceFov 65",
  258.         },
  259.     },
  260.    
  261.     AnimationCommand1 =
  262.     {
  263.         Name = "Animation Test",
  264.         Title = "Venice",
  265.         Menu = "Animation",
  266.         AutoB4Bug = false,
  267.        
  268.         RPCs =
  269.         {
  270.             "AntDebug.DrawDebugInfo 1",
  271.             "AntDebug.DrawSignals 1",
  272.             "UI.DrawEnable 0",
  273.         },
  274.        
  275.         ReverseRPCs =
  276.         {
  277.             "AntDebug.DrawDebugInfo 0",
  278.             "AntDebug.DrawSignals 0",
  279.             "UI.DrawEnable 1",
  280.         },
  281.     },
  282.  
  283.     WeaponCommand1 =
  284.     {
  285.         Name = "Show weapon info",
  286.         Title = "Venice",
  287.         Menu = "Weapons",
  288.         AutoB4Bug = false,
  289.        
  290.         RPCs =
  291.         {
  292.             "AntDebug.DrawDebugInfo 1",
  293.             "Debug.DrawScreenCenterHelper 1",
  294.             "clientsoldier.debug.firingstats 1",
  295.         },
  296.        
  297.         ReverseRPCs =
  298.         {
  299.             "AntDebug.DrawDebugInfo 0",
  300.             "Debug.DrawScreenCenterHelper 0",
  301.             "clientsoldier.debug.firingStats 0",
  302.         },
  303.     }, 
  304. }
  305. '>}},
  306.  {'$file': {'name': 'Scripts/Game/Configure.lua',
  307.             'payload': <Blob '--
  308. -- Game configuration script
  309. --
  310.  
  311. -- Local helper functions
  312. function commandLine:lookup(name, default)
  313.     local value = self[string.lower(name)]
  314.  
  315.     return value or default
  316. end
  317.  
  318. local function cmdLineSwitch(switchName, fieldName, inTable)
  319.     local table = inTable or Game
  320.  
  321.     if (commandLine:lookup(switchName)) then
  322.         table[fieldName] = true
  323.     end
  324. end
  325.  
  326. function cmdLineOption(optionName, default)
  327.     return commandLine:lookup(optionName, default)
  328. end
  329.  
  330. local function readCfg(name)
  331.     log:debug("reading cfg: " .. name)
  332.     core.readKeyValueCfg(name, _G)
  333. end
  334.  
  335. local function applySettings(settings)
  336.     core.parseKeyValueCfgString(settings, _G)
  337. end
  338.  
  339. -- Basic settings
  340.  
  341. core.import("Scripts/Game/Settings.lua")
  342.  
  343. -- Import old-school cfg files for backwards compatibility
  344. local defaultConfigFile = commandLine:lookup("defaultConfig")
  345. if defaultConfigFile then
  346.     readCfg(defaultConfigFile)
  347. else
  348.     readCfg("Scripts/Game.cfg")
  349. end
  350.  
  351. --------------------------------------------------------------------------
  352. -- Handle any Drone override options
  353. --
  354.  
  355. for i,v in ipairs(commandLine) do
  356.     if string.lower(v) == "-customconfig" then
  357.         if commandLine[i+1]:find("/") then
  358.             readCfg(commandLine[i+1])
  359.         else
  360.             readCfg("Scripts/" .. commandLine[i+1])
  361.         end
  362.     end
  363. end
  364.  
  365. local editorActive = false
  366. local liveEditingEnable = commandLine:lookup("core.liveeditingenable")
  367. if liveEditingEnable then
  368.     if liveEditingEnable == "1" or liveEditingEnable == "true" then
  369.         editorActive = true
  370.     end
  371. end
  372.  
  373. --------------------------------------------------------------------------
  374. -- Handle local overrides
  375. --
  376. -- This needs to run before we load the level cfg as we can specify the fast startup level name here!
  377.  
  378. if not commandLine:lookup('noLocalCfg', false) then
  379.     -- Read common local cfg file
  380.     readCfg("/local/local.cfg", _G)
  381.  
  382.     if editorActive == true then
  383.         -- Read local cfg with editor specific settings
  384.         readCfg("/local/localeditor.cfg", _G)
  385.     else
  386.         -- Read local cfg with standalone specific settings
  387.         readCfg("/local/localgame.cfg", _G)
  388.     end
  389. end
  390.  
  391. --------------------------------------------------------------------------
  392. -- Handle level specific configuration
  393. --
  394.  
  395. local levelName = commandLine:lookup("level")
  396. if not levelName then
  397.     local gameTable = _G["Game"]
  398.     if gameTable then
  399.         levelName = gameTable["Level"]
  400.     end
  401. end
  402.  
  403. -- Level names without slashes are assumed to be shorthand for
  404. -- Levels/name/name to go with Venice's epic level naming convention
  405. if levelName and not string.find(levelName, "/") then
  406.     levelName = "Levels/" .. levelName .. "/" .. levelName
  407. end
  408.  
  409. if levelName then
  410.     readCfg(levelName .. ".cfg")
  411. end
  412.  
  413. --------------------------------------------------------------------------
  414. -- Handle commandline options
  415. --
  416. --   Commandline options effectively override any settings specified
  417. --   elsewhere.
  418. --
  419.  
  420. if not Game then Game = {} end
  421.  
  422. cmdLineSwitch("verbose", "Verbose")
  423.  
  424. if Game.Verbose then
  425.     print "------------Commandline parameters:"
  426.     for k,v in pairs(commandLine) do print (k,v) end
  427. end
  428.  
  429. -- Handle <Table>.<Member> settings
  430.  
  431. if allowCommandlineSettings then
  432.     for _,option in ipairs(commandLine) do
  433.         local table,member = string.match(option, "^%-(%w+)%.(%w+)")
  434.  
  435.         if table and member then
  436.             local value = commandLine[_ + 1]
  437.             if not _G[table] then _G[table] = {} end
  438.             _G[table][member] = value
  439.         else
  440.             local varName = string.match(option, "^%-([%w-]+)")
  441.             if varName then
  442.                 local value = commandLine[_ + 1]
  443.                 if value then
  444.                     _G[varName] = value
  445.                 end
  446.             end
  447.         end
  448.        
  449.     end
  450. end
  451.  
  452. --------------------------------------------------------------------------
  453. -- Force specific settings when running through FrostEd
  454. --
  455.  
  456. if editorActive then
  457.     Online.Backend = "Backend_Lan"
  458.     Online.UseFallback = true
  459.     Client.IsPresenceEnabled = false
  460.     Server.IsPresenceEnabled = false
  461.  
  462.     applySettings([=[
  463.         Server.forceStartMapOnLoad true
  464.         Network.GhostCountWarning true
  465.         Network.GhostCountWarningInfo true
  466.         Game.DisablePreRound true
  467.     ]=])
  468. end
  469.  
  470. --
  471.  
  472. core.import("Scripts/Game/DebugSettings.lua")
  473. '>}},
  474. {'$file': {'name': 'Scripts/Game/DebugSettings.lua',
  475.            'payload': <Blob '
  476. core = require "Frost.Core"
  477. logging = require "Frost.Logging"
  478.  
  479. local function applySettings(settings)
  480.     core.parseKeyValueCfgString(settings, _G) end
  481.    
  482. -- helpers
  483.  
  484. local function getSetting(key)
  485.     container, field = string.match(key, "(%w+)%.(%w+)");
  486.     if container and field then
  487.         if not _G[container] then
  488.             _G[container] = {}
  489.         end
  490.         return _G[container][field]
  491.     else
  492.         return _G[key]
  493.     end
  494. end
  495.  
  496. local function setSetting(key, value)
  497.     container, field = string.match(key, "(%w+)%.(%w+)");
  498.     if container and field then
  499.         if not _G[container] then
  500.             _G[container] = {}
  501.         end
  502.         _G[container][field] = value
  503.     else
  504.         _G[key] = value
  505.     end
  506. end
  507.  
  508. -- thin-client settings: 0=Off 1=Console
  509.  
  510. setSetting("thin-client", cmdLineOption("thinClient", getSetting("thin-client")))
  511.  
  512. if getSetting("thin-client") == "1" then
  513.     applySettings([=[
  514.         RenderDevice.CreateMinimalWindow true
  515.         Core.HardwareProfile Hardware_Low
  516.         Core.HardwareGpuBias -1
  517.         Server.DebrisClusterEnabled true
  518.         Client.DebrisClusterEnabled false
  519.         DebrisSystem.Enable false
  520.         Client.WorldRenderEnabled false
  521.         Client.EmittersEnabled false
  522.         Client.TerrainEnabled false
  523.         Client.MeshMergingEnabled false
  524.         Client.OvergrowthEnabled false
  525.         Client.OccludersEnabled true
  526.         Decal.SystemEnable false
  527.         Render.DebugRendererEnable false
  528.         UI.HudEnable false
  529.         UI.System UISystem_None    
  530.         EmitterSystem.Enable false
  531.         Window.Fullscreen false
  532.         Render.Enable false
  533.         disable-input true
  534.         scripted-input true
  535.         use-script-input true
  536.         disable-client-correction true
  537.         disable-client-animations true
  538.         Sound.Enable false
  539.         disable-entities true
  540.         disable-camera true
  541.         Texture.LoadingEnabled false
  542.         Texture.RenderTexturesEnabled false
  543.         Mesh.LoadingEnabled false
  544.         ShaderSystem.DatabaseLoadingEnable false
  545.         disable-audio-loading true
  546.         GameTime.ForceUseSleepTimer true
  547.         ShaderSystem.DxFrameVertexBufferPoolSize 16
  548.         ShaderSystem.FrameMemoryBufferSize 16
  549.         PerformanceTracker.Enabled false
  550.     ]=])
  551. end
  552.  
  553. -- testingEnabled 0=Off, 1=On
  554.  
  555. setSetting("testing-enabled", cmdLineOption("testingEnabled", getSetting("testing-enabled")))
  556.  
  557. if getSetting("testing-enabled") == "1" then
  558.     applySettings([=[
  559.         Server.EnableMonkeyTestLayers true
  560.         add-debug-entity true
  561.         scripted-input true
  562.         use-script-input true
  563.         Juice.logClientTestingEvents true
  564.     ]=])
  565. end
  566.  
  567. '>}},
  568. {'$file': {'name': 'Scripts/Game/Settings.lua',
  569.            'payload': <Blob '--
  570. -- Define basic settings tables
  571. --
  572.  
  573. Game = {
  574.     LogFileEnable = true,
  575. }
  576.  
  577. Client = {
  578. }
  579.  
  580. Server = {
  581. }
  582.  
  583. ShaderSystem = {
  584.     DebugNonFiniteColor = { x=0, y=0, z=0 },
  585. }
  586.  
  587. NetworkSettings = {
  588.     Version = "V0.0",
  589.     ProtocolVersion = 0,
  590.     TitleId = 4,
  591.     ClientPort = 1001,
  592.     ServerPort = 1003,
  593.     MaxGhostCount = 1024,
  594.     MaxClientCount = 64,
  595. }
  596.  
  597. Core = {
  598. }
  599. '>}},
  600. {'$file': {'name': 'Scripts/Game/Startup.lua',
  601.            'payload': <Blob '--
  602. -- Game startup script
  603. --
  604.  
  605. require "vfs"
  606. core = require "Frost.Core"
  607. logging = require "Frost.Logging"
  608.  
  609. -- The global platform variable can be used to detect which platform
  610. -- we are currently executing on
  611.  
  612. platform = dice.getCurrentPlatformName()
  613.  
  614. -- Set up a logger which logs to the console (not stdout)
  615. -- By default, we only show warnings or worse. For more verbose
  616. -- diagnostics, you may set the level to INFO or DEBUG.
  617.  
  618. log = logging.ingameConsole()
  619. log:setLevel(logging.DEBUG)
  620.  
  621. core.import("Scripts/Game/Configure.lua")
  622.  
  623. '>}},
  624. {'$file': {'name': 'Scripts/GlobalSettings.lua',
  625.            'payload': <Blob '--
  626. -- Global Settings
  627. --
  628. --  These are front-end settings exposed to the end-user. The idea is that
  629. --  settings that are interesting to the majority of end-users should be
  630. --  defined here to enable tools to query for exposed options.
  631. --
  632. --  This file is imported by Pipeline, Game, etc
  633. --
  634. -- *********************************************************
  635. -- NOTE: This is largely deprecated and will be phased out!
  636. -- *********************************************************
  637.  
  638. GlobalSettings = {}
  639. GlobalSettings.Meta = {}
  640.  
  641. local function ValidateSetting(name, value)
  642.     assert(name and value)
  643.  
  644.     local meta = GlobalSettings.Meta[name]
  645.     local lowerValue = string.lower(value)
  646.  
  647.     if meta then
  648.         for _,v in ipairs(meta.validValues) do
  649.             if string.lower(v[1]) == lowerValue then
  650.                 return v[1]
  651.             end
  652.         end
  653.  
  654.         -- We intentionally don't build this string in the loop above
  655.         -- in an attempt to generate less ephemeral garbage
  656.  
  657.         local choices = nil
  658.  
  659.         for _,v in ipairs(meta.validValues) do
  660.             if choices then
  661.                 choices = choices .. ", " .. v[1]
  662.             else
  663.                 choices = v[1]
  664.             end
  665.         end
  666.  
  667.         error("Setting '" .. name .. "' cannot be set to specified value: " .. value .. ", valid values are " .. choices)
  668.     else
  669.         error("Undefined setting - '" .. name .. "'")
  670.     end
  671. end
  672.  
  673. local function DefineSetting(descriptionTable)
  674.     assert(descriptionTable[1] and descriptionTable[2], "Settings must have name and default values!")
  675.    
  676.     local name = descriptionTable[1];
  677.     local defaultValue = descriptionTable[2];
  678.    
  679.     GlobalSettings[name] = defaultValue
  680.     GlobalSettings.Meta[name] = {}
  681.  
  682.     GlobalSettings.Meta[name].default = defaultValue
  683.    
  684.     if descriptionTable.description then
  685.         GlobalSettings.Meta[name].description = descriptionTable.description
  686.     end
  687.  
  688.     if descriptionTable.validValues then
  689.         GlobalSettings.Meta[name].validValues = descriptionTable.validValues
  690.     end
  691.  
  692.     if descriptionTable.commandLine then
  693.         GlobalSettings.Meta[name].commandLine = descriptionTable.commandLine
  694.     end
  695.  
  696.     if descriptionTable.envVar then
  697.         GlobalSettings.Meta[name].envVar = descriptionTable.envVar
  698.     end
  699.    
  700.     -- Validate default vs validValues
  701.     ValidateSetting(name, defaultValue)
  702. end
  703.  
  704. function ApplyCommandLineSettings(commandLine)
  705.     for setting,meta in pairs(GlobalSettings.Meta) do
  706.         if meta.commandLine then
  707.             local options = meta.commandLine
  708.  
  709.             for _,entry in ipairs(options) do
  710.                 local k = entry[1]
  711.                 local v = entry[2]
  712.  
  713.                 local value = commandLine[string.lower(k)]
  714.  
  715.                 if value then
  716.                     if not v then
  717.                         SetSetting(setting, value, string.format(" (due to -%s %s)", k, value))
  718.                     else
  719.                         SetSetting(setting, v, string.format(" (due to -%s)", k))
  720.                     end
  721.                 end
  722.             end
  723.         end
  724.     end
  725. end
  726.  
  727. function ApplyEnvironmentVariableSettings()
  728.     for setting,meta in pairs(GlobalSettings.Meta) do
  729.         if meta.envVar then
  730.             local envVarValue = os.getenv(meta.envVar)
  731.  
  732.             if envVarValue then
  733.                 SetSetting(setting, envVarValue)
  734.             end
  735.         end
  736.     end
  737. end
  738.  
  739.  
  740. function SetSetting(settingName, value, source)
  741.     if not GlobalSettings[settingName] then
  742.         error("Attempted set of unknown setting '" .. settingName .. "'")
  743.     else
  744.         GlobalSettings[settingName] = ValidateSetting(settingName, value)
  745.  
  746.         if log then
  747.             log:debug("Set setting " .. settingName .. " to value: " .. value .. (source or ""))
  748.         end
  749.     end
  750. end
  751.  
  752. function GetGlobalSetting(settingName)
  753.     if not GlobalSettings[settingName] then
  754.         error("Attempted get of unknown setting '" .. settingName .. "'")
  755.     else
  756.         return GlobalSettings[settingName]
  757.     end
  758. end
  759.  
  760. --------------------------------------------------------------------------
  761. -- Setting definitions
  762. --
  763.  
  764. DefineSetting {
  765.     "Cache", "Enabled",
  766.  
  767.     validValues = {
  768.         { "Enabled",        "Normal cache mode" },
  769.         { "Disabled",       "No caching" },
  770.         { "ReadOnly",       "Only read from caches (never upload)" },
  771.         { "WriteOnly",      "Only write to caches (useful for fixing problems)" }
  772.     },
  773.     description = "Cache Control",
  774.     commandLine = {
  775.         { "cacheMode" },
  776.         { "nocache",        "Disabled" },
  777.         { "readonlyCache",  "ReadOnly" },
  778.         { "writeOnlyCache", "WriteOnly" },
  779.         { "cache",          "Enabled" }
  780.     },
  781.     envVar = "PIPELINE_CACHE_MODE"
  782. }
  783. '>}},
  784. {'$file': {'name': 'Scripts/Packages/Frost/Core.lua',
  785.            'payload': <Blob '--
  786. -- Various bits of Lua scaffolding
  787. --
  788.  
  789. require "os"
  790. require "vfs"
  791.  
  792. module("Frost.Core", package.seeall);
  793.  
  794. -- Execute a script
  795. --
  796. --   If flags contains a "silent=true" flag, then no message
  797. --   will be emitted if the script can't be found
  798. --
  799.  
  800. -- Execute a script, optionally returning an error message if it fails
  801.  
  802. function import(script, friendlyName, flags)
  803.     local name = friendlyName or script
  804.  
  805.     local success, err = pcall(dofile,script)
  806.    
  807.     if not success and not (flags and flags.silent) then
  808.         error("Could not import script: " .. name .. " error: " .. err)
  809.     end
  810. end
  811.  
  812. -- Execute a new-style config file
  813.  
  814. local function executeCfg(file)
  815.     if log then
  816.         log:debug("  Executing new style (lua) config file")
  817.     end
  818.  
  819.     local script = file:read("*all")
  820.  
  821.     local func, err = loadstring(script)
  822.  
  823.     if func then
  824.         func()
  825.     else
  826.         error(err)
  827.     end
  828. end
  829.  
  830. -- Parse a single line containing a key-value pair (and possibly some comments)
  831.  
  832. function parseKeyValueCfgLine(line, targetTable)
  833.     -- Remove comments
  834.     line = string.gsub(line, "#.*", "")
  835.     line = string.gsub(line, "//.*", "")
  836.    
  837.     -- Split into key, value pairs
  838.     local key, value = string.match(line, "(%S+)%s+(.+)%s*");
  839.    
  840.     if key and value then
  841.         -- Handle dotted key names
  842.         local container, field = string.match(key, "(%w+)%.(%w+)");
  843.        
  844.         if container and field then
  845.             if not targetTable[container] then
  846.                 targetTable[container] = {}
  847.             end
  848.            
  849.             targetTable[container][field] = value;
  850.  
  851.             if log then
  852.                 log:debug(string.format("set %s.%s = %s (from key-value cfg line)", container, field, value))
  853.             end
  854.         else
  855.             targetTable[key] = value;
  856.  
  857.             if log then
  858.                 log:debug(string.format("set %s = %s (from key-value cfg line)", key, value))
  859.             end
  860.         end
  861.     end
  862. end    
  863.  
  864. -- Parse a string of key-value config entries
  865.  
  866. function parseKeyValueCfgString(str, targetTable)
  867.     for line in string.gmatch(str, "[^\
  868. ]*") do
  869.         parseKeyValueCfgLine(line, targetTable)
  870.     end
  871. end
  872.  
  873. -- Parse an old-style key-value CFG file
  874.  
  875. function readKeyValueCfg(file, targetTable)
  876.     if log then
  877.         log:debug("Reading cfg '" .. file .. "'")
  878.     end
  879.  
  880.     local f = vfs.open(file, "r")
  881.    
  882.     if not f then
  883.         -- File not found
  884.         if log then
  885.             log:debug("Failed to find file '" .. file .. "'")
  886.         end
  887.            
  888.         return
  889.     end
  890.  
  891.     local firstLine = true
  892.  
  893.     while true do
  894.         local line = f:read("*line")
  895.        
  896.         if not line then
  897.             break
  898.         end
  899.  
  900.         if firstLine and line == "#!/bin/lua" then
  901.             executeCfg(f)
  902.         end
  903.        
  904.         parseKeyValueCfgLine(line, targetTable)
  905.     end
  906.    
  907.     f:close();
  908. end
  909. '>}},
  910. {'$file': {'name': 'Scripts/Packages/Frost/Logging.lua',
  911.            'payload': <Blob '-- Logging package
  912.  
  913. local type, table, string, assert, _tostring = type, table, string, assert, tostring
  914.  
  915. require "vfs"
  916.  
  917. module("Frost.Logging", package.seeall)
  918.  
  919. -- The DEBUG Level designates fine-grained informational events that are most
  920. -- useful to debug an application
  921. DEBUG = "DEBUG"
  922.  
  923. -- The INFO level designates informational messages that highlight the
  924. -- progress of the application at coarse-grained level
  925. INFO = "INFO"
  926.  
  927. -- The WARN level designates potentially harmful situations
  928. WARN = "WARN"
  929.  
  930. -- The ERROR level designates error events that might still allow the
  931. -- application to continue running
  932. ERROR = "ERROR"
  933.  
  934. -- The FATAL level designates very severe error events that will presumably
  935. -- lead the application to abort
  936. FATAL = "FATAL"
  937.  
  938. local LEVEL = {
  939.     [DEBUG] = 1,
  940.     [INFO]  = 2,
  941.     [WARN]  = 3,
  942.     [ERROR] = 4,
  943.     [FATAL] = 5,
  944. }
  945.  
  946.  
  947. -------------------------------------------------------------------------------
  948. -- Creates a new logger object
  949. -------------------------------------------------------------------------------
  950. function new(append)
  951.  
  952.     if type(append) ~= "function" then
  953.         return nil, "Appender must be a function."
  954.     end
  955.  
  956.     local logger = {}
  957.     logger.level = DEBUG
  958.         logger.append = append
  959.  
  960.     logger.setLevel = function (self, level)
  961.         assert(LEVEL[level], string.format("undefined level `%s'", tostring(level)))
  962.         self.level = level
  963.     end
  964.  
  965.     logger.log = function (self, level, message)
  966.         assert(LEVEL[level], string.format("undefined level `%s'", tostring(level)))
  967.         if LEVEL[level] < LEVEL[self.level] then
  968.             return
  969.         end
  970.         if type(message) ~= "string" then
  971.           message = tostring(message)
  972.         end
  973.         return logger:append(level, message)
  974.     end
  975.  
  976.     logger.debug = function (logger, message) return logger:log(DEBUG, message) end
  977.     logger.info  = function (logger, message) return logger:log(INFO,  message) end
  978.     logger.warn  = function (logger, message) return logger:log(WARN,  message) end
  979.     logger.error = function (logger, message) return logger:log(ERROR, message) end
  980.     logger.fatal = function (logger, message) return logger:log(FATAL, message) end
  981.     return logger
  982. end
  983.  
  984.  
  985. -------------------------------------------------------------------------------
  986. -- Prepares the log message
  987. -------------------------------------------------------------------------------
  988. function prepareLogMsg(pattern, dt, level, message)
  989.  
  990.     local logMsg = pattern or "%date %level %message\
  991. "
  992.     message = string.gsub(message, "%%", "%%%%")
  993.     logMsg = string.gsub(logMsg, "%%date", dt)
  994.     logMsg = string.gsub(logMsg, "%%level", level)
  995.     logMsg = string.gsub(logMsg, "%%message", message)
  996.     return logMsg
  997. end
  998.  
  999.  
  1000. -------------------------------------------------------------------------------
  1001. -- Converts a Lua value to a string
  1002. --
  1003. -- Converts Table fields in alphabetical order
  1004. -------------------------------------------------------------------------------
  1005. function tostring(value)
  1006.   local str = ''
  1007.  
  1008.   if (type(value) ~= 'table') then
  1009.     if (type(value) == 'string') then
  1010.       str = string.format("%q", value)
  1011.     else
  1012.       str = _tostring(value)
  1013.     end
  1014.   else
  1015.     local auxTable = {}
  1016.     table.foreach(value, function(i, v)
  1017.       if (tonumber(i) ~= i) then
  1018.         table.insert(auxTable, i)
  1019.       else
  1020.         table.insert(auxTable, tostring(i))
  1021.       end
  1022.     end)
  1023.     table.sort(auxTable)
  1024.  
  1025.     str = str..'{'
  1026.     local separator = ""
  1027.     local entry = ""
  1028.     table.foreachi (auxTable, function (i, fieldName)
  1029.       if ((tonumber(fieldName)) and (tonumber(fieldName) > 0)) then
  1030.         entry = tostring(value[tonumber(fieldName)])
  1031.       else
  1032.         entry = fieldName.." = "..tostring(value[fieldName])
  1033.       end
  1034.       str = str..separator..entry
  1035.       separator = ", "
  1036.     end)
  1037.     str = str..'}'
  1038.   end
  1039.   return str
  1040. end
  1041.  
  1042. --
  1043. -- Print appender
  1044. --
  1045.  
  1046. function console(logPattern)
  1047.  
  1048.     return new( function(self, level, message)
  1049.                     print(prepareLogMsg(logPattern, os.date(), level, message))
  1050.                     return true
  1051.                 end
  1052.               )
  1053. end
  1054.  
  1055. function ingameConsole()
  1056.  
  1057.     return new( function(self, level, message)
  1058.                     ingamePrint(level, message)
  1059.                     return true
  1060.                 end
  1061.               )
  1062. end
  1063. '>}},
  1064. {'$file': {'name': 'Scripts/Pipeline/Configuration.lua',
  1065.            'payload': <Blob '--
  1066. -- Pipeline Configuration
  1067. --
  1068. --   This is an internal script used for configuring the pipeline. Normal
  1069. --   users should typically not edit this file, as most end-user settings
  1070. --   are exposed through the GlobalSettings.lua file
  1071. --
  1072.  
  1073. --
  1074. -- Import common settings
  1075. --
  1076.  
  1077. core.import(allScriptsRoot .. "GlobalSettings.lua", "global settings");
  1078.  
  1079. -- Import session startup script, if specified on commandLine
  1080. --
  1081. -- This is used by Drone to change settings
  1082.  
  1083. if commandLine.startupscript then
  1084.     core.import("/data/" .. commandLine.startupScript, _G)
  1085. end
  1086.  
  1087. core.import(scriptsRoot .. "Settings.lua")
  1088.  
  1089. --   -config commandLine switch is used by Drone to configure custom settings
  1090. if commandLine.config then
  1091.     core.readKeyValueCfg("/data/Scripts/" .. commandLine.config, _G)   
  1092. end
  1093.  
  1094. --------------------------------------------------------------------------
  1095. -- Handle commandline options
  1096. --
  1097. --   Commandline options effectively override any settings specified
  1098. --   elsewhere.
  1099. --
  1100.  
  1101. local function cmdLineSwitch(switchName, fieldName)
  1102.     if (commandLine[string.lower(switchName)]) then
  1103.         Pipeline[fieldName] = true
  1104.     end
  1105. end
  1106.  
  1107. local function cmdLineArg(switchName, fieldName)
  1108.     local entry = commandLine[string.lower(switchName)]
  1109.    
  1110.     if (entry) then
  1111.         Pipeline[fieldName] = entry
  1112.         --print("Set " .. fieldName .. " to " .. entry)
  1113.     end
  1114. end
  1115.  
  1116. cmdLineSwitch("debug", "DebugMode");
  1117. cmdLineSwitch("validateData", "ValidateData");
  1118. cmdLineSwitch("addToPerforce", "AddToPerforce");
  1119. cmdLineSwitch("noconsole", "NoConsole");
  1120. cmdLineSwitch("verbose", "Verbose");
  1121. cmdLineSwitch("trace", "EnableTracing");
  1122. cmdLineSwitch("nohal", "DisableHalDevice");
  1123. cmdLineSwitch("trim", "TrimLayout");
  1124. cmdLineSwitch("updateIndex", "UpdateIndexOnly");
  1125.  
  1126. cmdLineArg("opfilter", "OpFilter")
  1127.  
  1128. --
  1129. --  Parse commandline options that may occur multiple times ("list" options)
  1130. --
  1131.  
  1132. ----------------------------------------------------------------------------------------
  1133. --
  1134. -- Diagnostics dump
  1135. --
  1136.  
  1137. if Pipeline.Verbose then
  1138.     print ""
  1139.     print "Pipeline settings summary:"
  1140.     print "------------------------------------------------------"
  1141.    
  1142.     for k,v in pairs(Pipeline) do
  1143.         print(k, v)
  1144.     end
  1145.    
  1146.     print ""
  1147.  
  1148.     print "Command line:"
  1149.     print "------------------------------------------------------"
  1150.    
  1151.     for _,v in pairs(commandLine) do
  1152.         print(_,v)
  1153.     end
  1154.  
  1155.     print ""
  1156. end
  1157. '>}},
  1158. {'$file': {'name': 'Scripts/Pipeline/Settings.lua',
  1159.            'payload': <Blob '--
  1160. -- Internal Pipeline settings
  1161. --
  1162. --   This is not really the best place to change settings locally,
  1163. --   please see GlobalSettings.lua instead and use it if at all
  1164. --   possible
  1165. --
  1166.  
  1167. local Dx10PathEnable = false
  1168. local Dx10PlusPathEnable = true
  1169. local Dx10Dot1PathEnable = false
  1170. local Dx11PathEnable = true
  1171. local AutoPathEnable = false
  1172. local SkipAllPaths = false
  1173.  
  1174. Pipeline =
  1175. {
  1176.     Verbose = false,
  1177.     Rebuild = false,
  1178.     ShowReason = true,
  1179.     AddToPerforce = false,
  1180.  
  1181.     -- Debugging/profiling options
  1182.     Profiler = false,
  1183.     DebugMode = false,
  1184.     EmitPlaintextDbx = false,
  1185.     EnableTimingLog = false,
  1186.     BundleDebugging = false,
  1187.     ResourceDebugging = false,
  1188.  
  1189.     AsyncOpWrite = true,
  1190.     DumpOplogStats = false,
  1191.  
  1192.     --ServiceMode = true,
  1193. }
  1194.  
  1195. --------------------------------------------------------------
  1196.  
  1197. Core =
  1198. {
  1199.     LogLevel = "Info",
  1200.     StudioBus = "4803@10.20.96.148"  -- dice-bm150
  1201. }
  1202.  
  1203. Ant =
  1204. {
  1205. --  Setting this to true sometimes breaks reimport
  1206.     ShowSyncDialogOnReimport = false,
  1207. }
  1208.  
  1209. Havok =
  1210. {
  1211.     WriteShapeLog = false,
  1212.     WriteMemoryLog = false,
  1213.     WriteMaterialsLog = false,
  1214.     ErrorOnStaticValidationError = true,   
  1215.     DetailExport = true,
  1216.     LogTriangleDensity = true,
  1217.     HavokImportVersion = 1,
  1218. }
  1219.  
  1220. HavokGroupPhysicsEntity =
  1221. {
  1222.     WriteShapeLog = false,
  1223.     WriteMemoryLog = false,
  1224.     WriteMaterialsLog = false,
  1225.     WriteGroupGeneralLog = false,
  1226.     WritePartInfoLog = false,
  1227.     ErrorOnStaticValidationError = true,   
  1228.     DetailExport = true,
  1229.     LogTriangleDensity = true,
  1230.     HavokImportVersion = 1,
  1231.  
  1232.     AllowDefaultCollisionShape = true
  1233. }
  1234.  
  1235. Texture =
  1236. {
  1237.     SkipMipmapsPs3Enable = true,
  1238.     CudaEnable = true,
  1239.     WaitOnCudaEnable = false,
  1240.     MultithreadedCompressionEnable = true,
  1241.     DefaultTextureGroup = "TextureGroups/Default";
  1242. }
  1243.  
  1244. ObjectBlueprint =
  1245. {
  1246.     AllowDefaultPartMaterial = true,
  1247.     AllowDefaultEntityMaterial = true,
  1248. }
  1249.  
  1250. BlueprintImport =
  1251. {
  1252.     UseDefaultRaycastRoot = false,
  1253.     OptimizeGeometries = true,
  1254.     ErrorOnSceneMismatch = true,
  1255. }
  1256.  
  1257. Mesh =
  1258. {
  1259.     Verbose = false,
  1260.     ZOnlyMeshEnable = true,
  1261.     Ps3EdgeEnable = true,
  1262.     Ps3EdgeCompressPositionsEnable = true, 
  1263.     Ps3EdgeCompressIndicesEnable = true,   
  1264.     Ps3EdgeMinSubsetTriangleCount = 0,
  1265.    
  1266.     MinStreamingLodSize = 0,
  1267.    
  1268.     SootSkipShaderNames =
  1269.     {
  1270.         "Template",
  1271.         "Tmpl",
  1272.         "NoSoot"
  1273.     },
  1274.     WarningsAsErrorsEnable = false,
  1275.    
  1276.     -- EnlightenSaveInputMeshEnable = true,
  1277.     -- RadiosityPixelSize_Lower = 16.0,
  1278.     -- RadiosityPixelSize_Lowest = 8.0,
  1279.     -- RadiosityPixelSize_Low = 4.0,
  1280.     -- RadiosityPixelSize_Medium = 2.0,
  1281.     -- RadiosityPixelSize_High = 1.0,
  1282.     -- RadiosityPixelSize_Higher = 0.5,
  1283.     -- RadiosityPixelSize_Max = 0.25,
  1284. }
  1285.  
  1286. Enlighten =
  1287. {
  1288.     -- Set this to false to prevent any dynamic enlighten data from beeing built and loaded into the game.
  1289.     -- This is useful for retail builds if only static enlighten data is allowed.
  1290.     DynamicEnable = true,
  1291. }
  1292.  
  1293. Level =
  1294. {
  1295.     VoAnimTreesEnable = false,
  1296.  
  1297.     GroupTreeModelEntities = true,
  1298.     GroupStaticModelEntities = true,
  1299.     GroupMiddlegrowthModelEntities = true,
  1300.    
  1301.     OptimizeMaterialGrid = true,
  1302.  
  1303.     LogDetailedInstanceCounts = false
  1304. }
  1305.  
  1306. ShaderState =
  1307. {
  1308.     TerrainDebugColorEnable = false,
  1309.     TerrainOverdrawModeEnable = false,
  1310.     DynamicEnvmapModeEnable = false,
  1311.    
  1312.     StripUnusedTextures = true,
  1313.  
  1314.     VanillaShadowmapsEnable = false,
  1315. --  CascadedBox3ShadowmapsEnable = true,
  1316. --  CascadedBox4ShadowmapsEnable = true,    
  1317. }
  1318.  
  1319. ShaderProgramDatabase =
  1320. {
  1321.     ShaderDebugInfoEnable = false,
  1322.     DxShaderDebugInfoEnable = false,
  1323.  
  1324.     Dx10PathEnable = Dx10PathEnable,   
  1325.     Dx10PlusPathEnable = Dx10PlusPathEnable,
  1326.     Dx10Dot1PathEnable = Dx10Dot1PathEnable,
  1327.     Dx11PathEnable = Dx11PathEnable,
  1328.     AutoPathEnable = AutoPathEnable,
  1329.     SkipAllPaths = SkipAllPaths,
  1330.    
  1331.     Ps3OptimizationLevel = 3,
  1332.     Ps3BuildRandomizedShaders = false
  1333. }
  1334.  
  1335. ShaderDatabase =
  1336. {
  1337.     ShaderDebugInfoEnable = false,
  1338.     DxShaderDebugInfoEnable = false,
  1339.  
  1340.     Dx10PathEnable = Dx10PathEnable,   
  1341.     Dx10PlusPathEnable = Dx10PlusPathEnable,
  1342.     Dx10Dot1PathEnable = Dx10Dot1PathEnable,
  1343.     Dx11PathEnable = Dx11PathEnable,
  1344.     AutoPathEnable = AutoPathEnable,
  1345.     SkipAllPaths = SkipAllPaths,
  1346.  
  1347.     Ps3OptimizationLevel = 3,
  1348.     Ps3PackVertexElementsEnable = true,
  1349.     Ps3ForceHalfPrecisionEnable = false,
  1350.     Ps3ForceVertexDynamicBranchesEnable = false,
  1351.     Ps3ForcePixelDynamicBranchesEnable = false,
  1352.    
  1353.     ForceCompileInConstantsEnable = true,
  1354.     NonFiniteColoringEnable = false,
  1355.     ManualSourceChangeEnable = false,
  1356.     StateMetricsEnable = false,
  1357.     StateSolutionCacheEnable = false,
  1358.     SeparateWorldTransformEnable = false
  1359. }
  1360.  
  1361. Terrain =
  1362. {
  1363.     SplineDecalsSubdivisionCount = 1,
  1364.     MaskFunctionsEnable = false,
  1365. }
  1366.  
  1367. TerrainStreamingTree =
  1368. {
  1369.     OptimizeUsingProceduralMask = true
  1370. }
  1371.  
  1372. Award =
  1373. {
  1374.     OutputAwardXml = true,
  1375.     OutputRankXml = true,
  1376.     InvalidAwardCodeCharacters = "-. ",
  1377.     AllowEmptyAwardCodes = false,
  1378.     CheckStatCategories = true,
  1379.     SetSpecificDataToChildAwards = true,
  1380. }
  1381.  
  1382. Persistence =
  1383. {
  1384.     OutputXml = true,
  1385.     OutputBlazeProperties = true,
  1386.     DeltaGameReports = true,
  1387. }
  1388.  
  1389. Unlock =
  1390. {
  1391.     ExportUnlocks = true
  1392. }
  1393.  
  1394. EmitterSystem =
  1395. {
  1396.     DxAtlasSkipMipmaps = 0,
  1397.     Ps3AtlasSkipMipmaps = 0,
  1398.     XenonAtlasSkipMipmaps = 0, 
  1399. }
  1400.  
  1401. Audio =
  1402. {
  1403.     EnableDevelopmentFeatures = false,
  1404. }
  1405.  
  1406. UIActionscriptInjection =
  1407. {
  1408.     RemoveTraces = true;
  1409. }
  1410.  
  1411. VeniceLevel =
  1412. {
  1413.     GenerateCombatAreaTextures = false;
  1414. }
  1415.  
  1416. GameConfig =
  1417. {
  1418.     AnimationProjectPath = "Animations/AntAnimations",
  1419. }
  1420. '>}},
  1421. {'$file': {'name': 'Scripts/Pipeline/Startup.lua',
  1422.            'payload': <Blob '-- Pipeline startup script
  1423. --
  1424. --   This is executed very early, and can really only be used to
  1425. --   configure settings.
  1426. --
  1427. --   The settings specified here will override any settings in the
  1428. --   legacy settings file pipeline.config
  1429. --
  1430.  
  1431. core = require "Frost.Core"
  1432.  
  1433. require "os"
  1434. require "vfs"
  1435.  
  1436. Environment = {}
  1437.  
  1438. local userName = os.getenv("USERNAME")
  1439.  
  1440. if userName then Environment.UserName = userName end
  1441.  
  1442. branchName = os.getenv("BRANCH_NAME")
  1443.  
  1444. if not branchName then
  1445.     error("Configuration error: BRANCH_NAME environment variable not set -- fix the .diceconfig file for this branch!")
  1446. end
  1447.  
  1448. -- This is a verification tag to make sure the script is in sync with runtime
  1449. -- whenever something is changed that requires changes to be present on both
  1450. -- the script end and the runtime end, this should be updated. The value is
  1451. -- just an arbitrary string and has no semantic relevance
  1452.  
  1453. local expectVerificationTag = "22062007"
  1454.  
  1455. if verificationTag ~= expectVerificationTag then
  1456.     error("verification tag mismatch! Most likely, your data/Scripts folder is not right for your build!")
  1457. end
  1458.  
  1459. -- Execute configuration and setup scripts
  1460.  
  1461. allScriptsRoot = "/Data/Scripts/"
  1462. scriptsRoot = allScriptsRoot .. "Pipeline/"
  1463.  
  1464. core.import(scriptsRoot .. "Configuration.lua")
  1465.  
  1466. '>}},
  1467. {'$file': {'name': 'Scripts/Server/Master.lua',
  1468.            'payload': <Blob 'print("Loading scripts...")
  1469.  
  1470. serverSaveFilePath = "serverAdminSave.lua"
  1471.  
  1472. dofile("Scripts/Server/Startup.lua")
  1473. dofile("Scripts/Server/Shutdown.lua")
  1474. dofile("Scripts/Server/Server.lua")
  1475. dofile("Scripts/Server/Session.lua")
  1476.  
  1477. print("Done loading scripts.")'>}},
  1478. {'$file': {'name': 'Scripts/Server/Server.lua',
  1479.            'payload': <Blob 'require "vfs"
  1480. require "os"
  1481.  
  1482. banList = {}
  1483. levelList = {}
  1484. currentLevelIndex = 0
  1485. maxLevelIndex = 0
  1486.  
  1487. function Server_LoadLevel()
  1488.  
  1489. --  print("Server_LoadLevel called")
  1490.  
  1491. end
  1492.  
  1493. function Server_UnloadLevel()
  1494.  
  1495. --  print("Server_UnloadLevel called")
  1496.  
  1497. end
  1498.  
  1499.  
  1500. function Server_LevelLoaded()
  1501.  
  1502. --  print("Server_LevelLoaded called")
  1503.  
  1504. end
  1505.  
  1506. function Server_LevelUnloaded()
  1507.  
  1508. --  print("Server_LevelUnloaded called")
  1509.  
  1510. end
  1511.  
  1512.  
  1513. ticks = 0
  1514.  
  1515. function Server_ScriptTick()
  1516.  
  1517. --  print("Server_ScriptTick called; ticks = " .. ticks)
  1518.  
  1519.   ticks = ticks + 1
  1520.  
  1521. end
  1522.  
  1523. function Server_PlayerBanned(onlineId, name)
  1524.  
  1525.   print("Server_PlayerBanned called: Player " .. onlineId .. " banned")
  1526.  
  1527.   banList[onlineId] = { ["time"]=os.time(), ["name"]=name }
  1528.  
  1529.   writeServerData()
  1530.  
  1531. end
  1532.  
  1533. function Server_UnbanPlayer(id)
  1534.  
  1535.   if (banList[id] ~= nil) then
  1536.     print("Player " .. id .. " unbanned")
  1537.     banList[id] = nil
  1538.    
  1539.     if (banList[id] ~= nil) then
  1540.       print("Player was not removed for some reason")
  1541.     end
  1542.    
  1543.     writeServerData()
  1544.   else
  1545.     print("No player with id " .. id .. " is banned")
  1546.   end
  1547.  
  1548. end
  1549.  
  1550. function Server_ListBans()
  1551.  
  1552.   --Server_PlayerBanned(174636, "gunnar")
  1553.   --Server_PlayerBanned(345636, "olle")
  1554.  
  1555.   for k,v in pairs(banList) do
  1556.     currentTime = os.date("%c", v.time)
  1557.     print("[" .. k .. "]: " .. v.name .. "," .. currentTime)
  1558.   end
  1559.  
  1560. end
  1561.  
  1562. function Server_LoadNextLevel()
  1563.  
  1564.   if (levelList[currentLevelIndex] ~= nil) then
  1565.     print("Loading level: " .. levelList[currentLevelIndex])
  1566.     loadNextLevel(levelList[currentLevelIndex])
  1567.     if (currentLevelIndex < maxLevelIndex) then
  1568.       currentLevelIndex = currentLevelIndex + 1
  1569.     else
  1570.       currentLevelIndex = 1
  1571.     end
  1572.   else
  1573.     print("Levelindex " .. currentLevelIndex .. " do not exist")
  1574.   end
  1575.  
  1576. end
  1577.  
  1578. function Server_AddLevel(levelName)
  1579.  
  1580.   maxLevelIndex = maxLevelIndex + 1
  1581.   levelList[maxLevelIndex] = levelName
  1582.   print("Added level '" .. levelName .. "' to level list")
  1583.   writeServerData()
  1584.   if (currentLevelIndex == 0) then
  1585.     currentLevelIndex = 1
  1586.   end
  1587.  
  1588. end
  1589.  
  1590. function Server_RemoveLevel(levelIndex)
  1591.  
  1592.   if (levelList[levelIndex] ~= nil) then
  1593.     print("Removing level '" .. levelList[levelIndex] .. "' at index: " .. levelIndex)
  1594.     --table.remove(levelList, levelIndex)
  1595.     for i=levelIndex,(maxLevelIndex-1),1 do
  1596.       levelList[i] = levelList[i+1]
  1597.     end
  1598.     table.remove(levelList, maxLevelIndex)
  1599.     maxLevelIndex = maxLevelIndex - 1
  1600.    
  1601.     writeServerData()
  1602.     if (currentLevelIndex > maxLevelIndex) then
  1603.       currentLevelIndex = maxLevelIndex
  1604.     end
  1605.   else
  1606.     print("No level at index: " .. levelIndex)
  1607.   end
  1608.  
  1609. end
  1610.  
  1611. function Server_ListLevels()
  1612.    
  1613.   for k,v in pairs(levelList) do
  1614.     if (k == currentLevelIndex) then
  1615.       print("[" .. k .. "]: " .. v .. " <<")
  1616.     else
  1617.       print("[" .. k .. "]: " .. v)
  1618.     end
  1619.   end
  1620.  
  1621. end
  1622.  
  1623. function writeServerData()
  1624.  
  1625.   local currentPlatform = string.lower(dice.getCurrentPlatformName())
  1626.   if (currentPlatform == "xenon" or currentPlatform == "ps3") then
  1627.     return
  1628.   end
  1629.  
  1630.   local f = vfs.open(serverSaveFilePath, "w")
  1631.  
  1632.   if not f then
  1633.     -- File not found
  1634.     return
  1635.   end
  1636.  
  1637.   serializedTable = tableToString(banList)
  1638.  
  1639.   f:write("banList = " .. serializedTable .. "\
  1640. ")
  1641.  
  1642.   --print("Wrote to file: banList = " .. serializedTable)
  1643.  
  1644.   serializedTable = tableToString(levelList)
  1645.  
  1646.   f:write("levelList = " .. serializedTable .. "\
  1647. ")
  1648.  
  1649.   --print("Wrote to file: levelList = " .. serializedTable)
  1650.  
  1651.   f:close()
  1652.  
  1653. end'>}},
  1654. {'$file': {'name': 'Scripts/Server/Session.lua',
  1655.            'payload': <Blob 'require "vfs"
  1656. require "os"
  1657.  
  1658. function Session_PlayerJoined(id)
  1659.  
  1660.   print("Session_PlayerJoined called: Player " .. id .. " joined")
  1661.  
  1662. end
  1663.  
  1664. function Session_PlayerLeft(id)
  1665.  
  1666.   print("Session_PlayerLeft called: Player " .. id .. " left")
  1667.  
  1668. end
  1669.  
  1670. function Session_PlayerAuthenticated(id)
  1671.  
  1672.   print("Session_PlayerJoined called: Player " .. id .. " joined")
  1673.  
  1674.   if (banList[id] ~= nil) then
  1675.     print("Player " .. banList[id].name .. " is banned")
  1676.     kickPlayer(id)
  1677.   end
  1678.  
  1679. end'>}},
  1680. {'$file': {'name': 'Scripts/Server/Shutdown.lua',
  1681.            'payload': <Blob 'function Shutdown()
  1682.  
  1683.   print("Shutdown called")
  1684.  
  1685. end
  1686. '>}},
  1687. {'$file': {'name': 'Scripts/Server/Startup.lua',
  1688.            'payload': <Blob 'function Startup()
  1689.  
  1690.   print("Startup called")
  1691.  
  1692.   local currentPlatform = string.lower(dice.getCurrentPlatformName())
  1693.   if (currentPlatform == "xenon" or currentPlatform == "ps3") then
  1694.     return
  1695.   end
  1696.  
  1697.   Frost.Core.import(serverSaveFilePath, "Server Admin file", {silent=true})
  1698.   print("Loaded banList")
  1699.   for k,v in pairs(banList) do
  1700.     currentTime = os.date("%c", v.time)
  1701.     print("[" .. k .. "]: " .. v.name .. "," .. currentTime)
  1702.   end
  1703.  
  1704.   print("Loaded levelList")
  1705.   for k,v in pairs(levelList) do
  1706.     maxLevelIndex = maxLevelIndex + 1
  1707.     print("[" .. k .. "]: " .. v)
  1708.   end
  1709.  
  1710.   if (maxLevelIndex > 0) then
  1711.     currentLevelIndex = 1
  1712.   end
  1713.  
  1714. end
  1715. '>}},
  1716. {'$file': {'name': 'Scripts/UserOptions/DefaultValues.lua',
  1717.            'payload': <Blob 'core = require "Frost.Core"
  1718. logging = require "Frost.Logging"
  1719.  
  1720. function makeConstant(t)
  1721.     return setmetatable({},
  1722.     {
  1723.         __index = function (_, n)
  1724.             if t[n] == nil then
  1725.                 log:error("Invalid constant member '" .. tostring(n) .. "'")
  1726.             end
  1727.             return t[n]
  1728.         end,
  1729.  
  1730.         __newindex = function (t, n, v)
  1731.             log:error("Attempting to change constant " .. tostring(n) .. " to " .. tostring(v))
  1732.         end
  1733.     })
  1734. end
  1735.  
  1736. local constants = {
  1737.     Quality = makeConstant({
  1738.         Autodetect = -1,
  1739.         Low = 0,
  1740.         Medium = 1,
  1741.         High = 2,
  1742.         Ultra = 3,
  1743.         Custom = 4,
  1744.        
  1745.         On = 1,
  1746.         Off = 0,
  1747.     }),
  1748.  
  1749.     AnisotropicFilter = makeConstant({
  1750.         X1 = 0,
  1751.         X2 = 1,
  1752.         X4 = 2,
  1753.         X8 = 3,
  1754.         X16 = 4,
  1755.     }),
  1756.  
  1757.     AntiAliasingDeferred = makeConstant({
  1758.         Off = 0,
  1759.         MSAA2X = 1,
  1760.         MSAA4X = 2,
  1761.     }),
  1762.  
  1763.     AntiAliasingPost = makeConstant({
  1764.         Off = 0,
  1765.         Low = 1,
  1766.         Medium = 2,
  1767.         High = 3,
  1768.     }),
  1769.  
  1770.     AmbientOcclusion = makeConstant({
  1771.         Off = 0,
  1772.         SSAO = 1,
  1773.         HBAO = 2,
  1774.     }),
  1775.    
  1776.     MotionBlur = makeConstant({
  1777.         Off = 0,
  1778.         On = 1,
  1779.     }),
  1780. }
  1781.  
  1782. for k, v in pairs(constants) do
  1783.     _G[k] = v
  1784. end
  1785.  
  1786. dofile("Scripts/UserOptions/HardwareProfiles.lua")
  1787. specs = hardwareSpecs[hardwareProfile]
  1788. log:info("hardwareProfile : " .. hardwareProfile)
  1789. cpuCount = specs['cpuCount']
  1790. cpuQuality = specs['cpuQuality'] + hardwareCpuBias
  1791. availableMemory = specs['availableMemory']
  1792. adapterName = specs['adapterName']
  1793. gpuQuality = specs['adapterQuality'] + hardwareGpuBias
  1794. gpuCount = specs['gpuCount']
  1795. availableGpuMemory = specs['availableGpuMemory'] + hardwareGpuBias*256*1024*1024
  1796. deviceSettings = specs['deviceSettings']
  1797.  
  1798. log:info("cpus : " .. cpuCount)
  1799. log:info("memory : " .. availableMemory)
  1800. log:info("adapter : " .. adapterName)
  1801. log:info("gpu quality : " .. gpuQuality)
  1802. log:info("gpuCount : " .. gpuCount)
  1803. log:info("gpuMemory : " .. availableGpuMemory)
  1804.  
  1805.  
  1806.  
  1807. settings = {}
  1808.  
  1809. local function applySettings(settings)
  1810.     core.parseKeyValueCfgString(settings, _G) end
  1811.  
  1812. defaultSettings = {
  1813.     Render = {
  1814.         [Quality.Autodetect] = { -- Auto detect, we fill this in when we're done autodetecting
  1815.         },
  1816.  
  1817.         [Quality.Low] = {
  1818.             TextureQuality = Quality.Low,
  1819.             ShadowQuality = Quality.Low,
  1820.             EffectsQuality = Quality.Low,
  1821.             MeshQuality = Quality.Low,
  1822.             TerrainQuality = Quality.Low,
  1823.             UndergrowthQuality = Quality.Low,
  1824.            
  1825.             AntiAliasingDeferred = AntiAliasingDeferred.Off,
  1826.             AntiAliasingPost = AntiAliasingPost.Off,
  1827.             AnisotropicFilter = AnisotropicFilter.X2,
  1828.             AmbientOcclusion = AmbientOcclusion.Off,
  1829.            
  1830.             MotionBlurEnabled = MotionBlur.Off,
  1831.         },
  1832.  
  1833.         [Quality.Medium] = {
  1834.             TextureQuality = Quality.Medium,
  1835.             ShadowQuality = Quality.Medium,
  1836.             EffectsQuality = Quality.Medium,
  1837.             MeshQuality = Quality.Medium,
  1838.             TerrainQuality = Quality.Medium,
  1839.             UndergrowthQuality = Quality.Medium,
  1840.                        
  1841.             AntiAliasingDeferred = AntiAliasingDeferred.Off,
  1842.             AntiAliasingPost = AntiAliasingPost.Medium,
  1843.             AnisotropicFilter = AnisotropicFilter.X4,
  1844.             AmbientOcclusion = AmbientOcclusion.SSAO,
  1845.            
  1846.             MotionBlurEnabled = MotionBlur.Off,
  1847.         },
  1848.  
  1849.         [Quality.High] = {
  1850.             TextureQuality = Quality.High,
  1851.             ShadowQuality = Quality.High,
  1852.             EffectsQuality = Quality.High,
  1853.             MeshQuality = Quality.High,
  1854.             TerrainQuality = Quality.High,
  1855.             UndergrowthQuality = Quality.High,
  1856.            
  1857.             AntiAliasingDeferred = AntiAliasingDeferred.Off,
  1858.             AntiAliasingPost = AntiAliasingPost.High,
  1859.             AnisotropicFilter = AnisotropicFilter.X16,
  1860.             AmbientOcclusion = AmbientOcclusion.HBAO,
  1861.            
  1862.             MotionBlurEnabled = MotionBlur.On,
  1863.         },
  1864.    
  1865.         [Quality.Ultra] = {
  1866.             TextureQuality = Quality.Ultra,
  1867.             ShadowQuality = Quality.Ultra,
  1868.             EffectsQuality = Quality.Ultra,
  1869.             MeshQuality = Quality.Ultra,
  1870.             TerrainQuality = Quality.Ultra,
  1871.             UndergrowthQuality = Quality.Ultra,
  1872.            
  1873.             AntiAliasingDeferred = AntiAliasingDeferred.MSAA4X,
  1874.             AntiAliasingPost = AntiAliasingPost.High,
  1875.             AnisotropicFilter = AnisotropicFilter.X16,
  1876.             AmbientOcclusion = AmbientOcclusion.HBAO,
  1877.            
  1878.             MotionBlurEnabled = MotionBlur.On,
  1879.         },
  1880.        
  1881.         [Quality.Custom] = {
  1882.             -- 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)
  1883.             OverallGraphicsQuality = Quality.Custom + 1
  1884.         }
  1885.     }
  1886. }
  1887.  
  1888. settings["OverallGraphicsQuality"] = 0  -- Show as autodetect in UI
  1889. for setting, value in pairs(defaultSettings.Render[deviceSettings.baseQualityLevel]) do
  1890.     settings[setting] = value
  1891. end
  1892. for setting, value in pairs(deviceSettings.defaultSettings or {}) do
  1893.     settings[setting] = value
  1894. end
  1895.  
  1896. -- audio thread
  1897. if cpuCount < 4 then
  1898.     applySettings("Audio.AudioCoreThread 0")
  1899. else
  1900.     if (cpuCount < 6) then
  1901.         applySettings("Audio.AudioCoreThread 2")
  1902.     else
  1903.         applySettings("Audio.AudioCoreThread "..(cpuCount-1))
  1904.     end
  1905. end
  1906.  
  1907. -- audio
  1908. if cpuQuality < 4 then
  1909.     settings['AudioQuality'] = 0.0
  1910. else
  1911.     settings['AudioQuality'] = 1.0
  1912. end
  1913.  
  1914.  
  1915. -- physics
  1916. if cpuQuality < 4 then
  1917.     settings['PhysicsQuality'] = 0.0
  1918. else
  1919.     settings['PhysicsQuality'] = 1.0
  1920. end
  1921.  
  1922. -- animations
  1923. if cpuQuality < 4 then
  1924.     settings['AnimationQuality'] = 0.0
  1925. else
  1926.     settings['AnimationQuality'] = 1.0
  1927. end
  1928.  
  1929. -- textures
  1930. if adapterName == "Xenon" or adapterName == "PS3" then
  1931.     settings['TextureQuality'] = Quality.Medium
  1932. elseif availableGpuMemory <= 512*1024*1024 then
  1933.     settings['TextureQuality'] = Quality.Low
  1934. elseif availableGpuMemory <= 768*1024*1024 then
  1935.     settings['TextureQuality'] = Quality.Medium
  1936. elseif availableGpuMemory <= 1024*1024*1024 then
  1937.     settings['TextureQuality'] = Quality.High
  1938. else
  1939.     settings['TextureQuality'] = Quality.Ultra
  1940. end
  1941.  
  1942.  
  1943. -- resolution
  1944. settings['ResolutionWidth'] = defaultFullscreenWidth or 0
  1945. settings['ResolutionHeight'] = defaultFullscreenHeight or 0
  1946. settings['ResolutionHertz'] = defaultFullscreenRefreshRate or 0
  1947. settings['FullscreenScreen'] = 0
  1948. settings['FullscreenEnabled'] = defaultFullscreenEnabled or 0
  1949. settings['VSyncEnabled'] = defaultVSyncEnabled or 0
  1950.  
  1951. -- Test to override auto detected values (using lua to allow use of constants)
  1952. --core.readKeyValueCfg("/user/profile/settings/overrideAutodetect.cfg", settings) --will override autodetected values
  1953. function vfs_loadfile(filename)
  1954.     local f = vfs.open(filename, "r")
  1955.  
  1956.     if f == nil then
  1957.         return false, "File not found!"
  1958.     end
  1959.    
  1960.     function getNextChunk()
  1961.         return f:read(128)
  1962.     end
  1963.    
  1964.     return load(getNextChunk, filename)
  1965. end
  1966.  
  1967. local overrideFilename = "/user/profile/settings/overrideAutodetect.lua"
  1968. local executeAutoDetectOverride, e = vfs_loadfile(overrideFilename)
  1969.  
  1970. function bind(f, param)
  1971.     return function(...)
  1972.         f(param, ...)
  1973.     end
  1974. end
  1975.  
  1976. if executeAutoDetectOverride then
  1977.     overrideSettings = setmetatable({},
  1978.     {
  1979.         __index = constants,
  1980.         __newindex = bind(function(s, t, n, v)
  1981.             if s[n] == nil then
  1982.                 log:error("Trying to set unknown setting " .. n .. " to " .. tostring(n))
  1983.             elseif v == nil then
  1984.                 log:error("Trying to set setting " .. n .. " to nil")
  1985.             else
  1986.                 log:info("Overriding " .. n .. ": " .. tostring(v))
  1987.                 s[n] = v
  1988.             end
  1989.         end, settings)
  1990.     })
  1991.  
  1992.     setfenv(executeAutoDetectOverride, overrideSettings)
  1993.     local success, e = pcall(executeAutoDetectOverride);
  1994.     if not success then
  1995.         log:info("Failed to parse '" .. overrideFilename .. "' " .. e)
  1996.     end
  1997. else
  1998.     log:info("Override file error '" .. overrideFilename .. "': " .. e)
  1999. end
  2000.  
  2001. -- Last thing we do is to save the values we want for the autodetect setting
  2002. -- (use the same keys as used for the low settings)
  2003. for key, _ in pairs(defaultSettings.Render[Quality.Low]) do
  2004.     defaultSettings.Render[Quality.Autodetect][key] = settings[key]
  2005.     if settings[key] == nil then
  2006.         log:error("Setting " .. key .. " does not have an auto detected default value")
  2007.     end
  2008. end
  2009. '>}},
  2010. {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles.lua',
  2011.            'payload': <Blob 'function getGpuQuality(gpuName, gpuCount)
  2012.     if string.find(gpuName, "GeForce 8") or
  2013.        string.find(gpuName, "GeForce 9") then
  2014.         return 1
  2015.     elseif string.find(gpuName, "GeForce GTX 26") then
  2016.         return 2
  2017.     elseif string.find(gpuName, "GeForce GTX 2") or
  2018.            string.find(gpuName, "ATI Radeon HD 4870 X2") or
  2019.            string.find(gpuName, "ATI Radeon HD 5800 Series") or
  2020.            string.find(gpuName, "ATI Radeon HD 5900 Series") or
  2021.            string.find(gpuName, "AMD Radeon HD 68") or
  2022.            string.find(gpuName, "AMD Radeon HD 69") or
  2023.            string.find(gpuName, "GeForce GTX 4") or
  2024.            string.find(gpuName, "GeForce GTX 5") then
  2025.         if gpuCount > 1 then
  2026.             return 4
  2027.         else
  2028.             return 3
  2029.         end
  2030.     else
  2031.         return 1
  2032.     end
  2033. end
  2034.  
  2035. function getCpuQuality(cpuCount, cpuSpeed)
  2036.     return (cpuSpeed-1.2)*(cpuCount-1)
  2037. end
  2038.  
  2039. -- 2 cores, 3.0 gHz : 1.8
  2040. -- 2 cores, 3.6 gHz : 2.4
  2041. -- 4 cores, 2.0 gHz : 2.4
  2042. -- 4 cores, 3.2 gHz : 6
  2043. -- 8 cores, 1.8 gHz : 4.2
  2044. -- 8 cores, 3.2 gHz : 14!! awesome
  2045.  
  2046. vendorDB = {
  2047.     [0x1002] = dofile("Scripts/UserOptions/HardwareProfiles/ATI.lua"),
  2048.     [0x10DE] = dofile("Scripts/UserOptions/HardwareProfiles/nVidia.lua"),
  2049.     [0x8086] = dofile("Scripts/UserOptions/HardwareProfiles/Intel.lua")
  2050. }
  2051.  
  2052. -- Autodetect settings based on graphics card device id
  2053. function getDeviceSettings(vendorId, deviceId, adapterName)
  2054.     if adapterName == "Xenon" then
  2055.         return { baseQualityLevel = Quality.Medium, defaultSettings = {}, consoleOverrides = "" }
  2056.     elseif adapterName == "PS3" then
  2057.         return { baseQualityLevel = Quality.High, defaultSettings = {}, consoleOverrides = "" }
  2058.     else
  2059.         return (vendorDB[vendorId] and vendorDB[vendorId][deviceId]) or { baseQualityLevel = Quality.Medium, defaultSettings = {}, consoleOverrides = "" }
  2060.     end
  2061. end
  2062.  
  2063. hardwareSpecs = {
  2064.     [0] = {
  2065.         cpuCount = detectedCpuCount,
  2066.         cpuQuality = getCpuQuality(detectedCpuCount, detectedCpuFreq),
  2067.         availableMemory = detectedAvailableMemory,
  2068.         adapterName = detectedAdapterName,
  2069.         gpuCount = detectedGpuCount,
  2070.         adapterQuality = getGpuQuality(detectedAdapterName, detectedGpuCount),
  2071.         availableGpuMemory = detectedAvailableGpuMemory,
  2072.         deviceSettings = getDeviceSettings(detectedVendorId, detectedDeviceId, detectedAdapterName)
  2073.     },
  2074.  
  2075.     [1] = {
  2076.         cpuCount = detectedCpuCount,
  2077.         cpuQuality = getCpuQuality(2, 2.3),
  2078.         availableMemory = 512*1024*1024,
  2079.         adapterName = "Faked Low",
  2080.         gpuCount = 1,
  2081.         adapterQuality = 0,
  2082.         availableGpuMemory = 512*1024*1024,
  2083.         deviceSettings = { baseQualityLevel = Quality.Low, defaultSettings = {}, consoleOverrides = "" }
  2084.     },
  2085.  
  2086.     [2] = {
  2087.         cpuCount = detectedCpuCount,
  2088.         cpuQuality = getCpuQuality(2, 3),
  2089.         availableMemory = 1*1024*1024*1024,
  2090.         adapterName = "Faked Medium",
  2091.         gpuCount = 1,
  2092.         adapterQuality = 1,
  2093.         availableGpuMemory = 768*1024*1024,
  2094.         deviceSettings = { baseQualityLevel = Quality.Medium, defaultSettings = {}, consoleOverrides = "" }
  2095.     },
  2096.  
  2097.     [3] = {
  2098.         cpuCount = detectedCpuCount,
  2099.         cpuQuality = getCpuQuality(4, 3),
  2100.         availableMemory = 1.5*1024*1024*1024,
  2101.         adapterName = "Faked High",
  2102.         gpuCount = 1,
  2103.         adapterQuality = 3,
  2104.         availableGpuMemory = 1*1024*1024*1024,
  2105.         deviceSettings = { baseQualityLevel = Quality.High, defaultSettings = {}, consoleOverrides = "" }
  2106.     },
  2107.  
  2108.     [4] = {
  2109.         cpuCount = detectedCpuCount,
  2110.         cpuQuality = getCpuQuality(8, 3),
  2111.         availableMemory = 2*1024*1024*1024,
  2112.         adapterName = "Faked Ultra",
  2113.         gpuCount = 2,
  2114.         adapterQuality = 4,
  2115.         availableGpuMemory = 2*1024*1024*1024,
  2116.         deviceSettings = { baseQualityLevel = Quality.Ultra, defaultSettings = {}, consoleOverrides = "" }
  2117.     },
  2118. }
  2119.  
  2120. vendorDB = nil
  2121. '>}},
  2122. {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles/ATI.lua',
  2123.            'payload': <Blob '-- Settings database for ATI devices
  2124. return {
  2125. --  [0xHHHH] = { -- Example card
  2126. --      baseQualityLevel = Quality.Low,
  2127. --      defaultSettings = {
  2128. --          TextureQuality = Quality.Low,
  2129. --          ShadowQuality = Quality.Low,
  2130. --          EffectsQuality = Quality.Low,
  2131. --      },
  2132. --      consoleOverrides = [=[
  2133. --          WorldRender.MotionBlurEnable 0
  2134. --      ]=]
  2135. --  }
  2136.     [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI All-in-Wonder HD
  2137.     [0x9519] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9170
  2138.     [0x9452] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9250
  2139.     [0x9450] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9270
  2140.     [0x688D] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9350
  2141.     [0x688C] = { baseQualityLevel = Quality.Low }, -- AMD FireStream 9370
  2142.     [0x94C7] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2350
  2143.     [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2350 Series
  2144.     [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 Series
  2145.     [0x94C1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 Series
  2146.     [0x94CC] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 Series  
  2147.     [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 LE
  2148.     [0x94C9] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2400
  2149.     [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400
  2150.     [0x94C1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400
  2151.     [0x94C8] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2400 XT
  2152.     [0x94C1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2400 XT      
  2153.     [0x9589] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2600
  2154.     [0x9581] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2600
  2155.     [0x9583] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 2600 XT
  2156.     [0x9588] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2600 XT
  2157.     [0x958A] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2600 X2 Series
  2158.     [0x9400] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900
  2159.     [0x9405] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900 GT
  2160.     [0x9400] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900 XT
  2161.     [0x9400] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 2900 XT
  2162.     [0x9616] = { baseQualityLevel = Quality.Low }, -- ATI Radeon 3000 Graphics
  2163.     [0x9611] = { baseQualityLevel = Quality.Low }, -- ATI Radeon 3100 Graphics
  2164.     [0x9613] = { baseQualityLevel = Quality.Low }, -- ATI Radeon 3100 Graphics
  2165.     [0x9612] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3200 Graphics
  2166.     [0x9610] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3200 Graphics
  2167.     [0x9614] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3300 Graphics
  2168.     [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3400 Series
  2169.     [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3400 Series
  2170.     [0x95C4] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3400 Series
  2171.     [0x94C3] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3410
  2172.     [0x95C2] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3430
  2173.     [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3450
  2174.     [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3550
  2175.     [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3550
  2176.     [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3570
  2177.     [0x9589] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series    
  2178.     [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series      
  2179.     [0x9591] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series
  2180.     [0x9581] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series  
  2181.     [0x9583] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3600 Series  
  2182.     [0x9589] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3610
  2183.     [0x9591] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3650
  2184.     [0x9593] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3670
  2185.     [0x9501] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3690  
  2186.     [0x9505] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3690  
  2187.     [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3730
  2188.     [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD3750
  2189.     [0x9501] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3800 Series
  2190.     [0x9505] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3800 Series
  2191.     [0x9507] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3830
  2192.     [0x9505] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3850
  2193.     [0x9504] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 3850
  2194.     [0x9513] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 3850 X2
  2195.     [0x9506] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 3850 X2
  2196.     [0x9501] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 3870
  2197.     [0x950F] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 3870 X2
  2198.     [0x9508] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 3870
  2199.     [0x9509] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 3870 X2
  2200.     [0x9713] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon 4100
  2201.     [0x9712] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4200 Series
  2202.     [0x9710] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4200
  2203.     [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4230
  2204.     [0x9715] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4250      
  2205.     [0x95C5] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4250  
  2206.     [0x95C0] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4250  
  2207.     [0x9714] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4290
  2208.     [0x9552] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4300/4500 Series    
  2209.     [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4300/4500 Series      
  2210.     [0x9553] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4300/4500 Series    
  2211.     [0x9555] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD4300/HD4500 series
  2212.     [0x9552] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4300 Series
  2213.     [0x9555] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4300/4500 Series
  2214.     [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4450
  2215.     [0x9553] = { baseQualityLevel = Quality.Low }, -- ATI Mobility Radeon HD 4500/5100 Series
  2216.     [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4520
  2217.     [0x954F] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4550
  2218.     [0x9540] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4550  
  2219.     [0x9555] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4550  
  2220.     [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4570
  2221.     [0x9598] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4580
  2222.     [0x9540] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 4590
  2223.     [0x9490] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4600 Series
  2224.     [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4600 Series
  2225.     [0x9598] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4610
  2226.     [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4650
  2227.     [0x9480] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 4650
  2228.     [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4670
  2229.     [0x9488] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 4670
  2230.     [0x94B3] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4770
  2231.     [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4700
  2232.     [0x944E] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4700 Series
  2233.     [0x94B4] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4700 Series  
  2234.     [0x9490] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4710
  2235.     [0x9498] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4720
  2236.     [0x944E] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4730 Series
  2237.     [0x9505] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4730
  2238.     [0x9505] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4750  
  2239.     [0x9501] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4750  
  2240.     [0x94B3] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4770
  2241.     [0x94B5] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4770  
  2242.     [0x9440] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series        
  2243.     [0x9442] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series        
  2244.     [0x944C] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series          
  2245.     [0x9460] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series          
  2246.     [0x9462] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series            
  2247.     [0x944A] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4800 Series
  2248.     [0x944E] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4810 Series
  2249.     [0x944E] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4820
  2250.     [0x944C] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4830
  2251.     [0x94A0] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4830
  2252.     [0x944A] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4850
  2253.     [0x9442] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4850
  2254.     [0x9443] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 4850 X2
  2255.     [0x94A1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4860
  2256.     [0x945A] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 4870
  2257.     [0x9440] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4870  
  2258.     [0x9441] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 4870 X2
  2259.     [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5400 Series
  2260.     [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5400 Series
  2261.     [0x68E0] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5400 Series
  2262.     [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5400 Series
  2263.     [0x68E0] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5400 Series
  2264.     [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5430
  2265.     [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5450
  2266.     [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5470
  2267.     [0x68E1] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5470
  2268.     [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5490
  2269.     [0x68DA] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5500 Series
  2270.     [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5500 Series
  2271.     [0x68CA] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5500 Series
  2272.     [0x68F9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5530
  2273.     [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5570
  2274.     [0x68C7] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5570
  2275.     [0x68B9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5600/5700
  2276.     [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5600 Series
  2277.     [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5630  
  2278.     [0x68DA] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5630
  2279.     [0x68C1] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5650
  2280.     [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5670
  2281.     [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5690
  2282.     [0x68D8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5730
  2283.     [0x68C0] = { baseQualityLevel = Quality.Medium }, -- ATI Mobility Radeon HD 5700 Series
  2284.     [0x68BE] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5700 Series
  2285.     [0x68B8] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 5700 Series
  2286.     [0x68C1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5750
  2287.     [0x689E] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5800 Series
  2288.     [0x6899] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5800 Series
  2289.     [0x6898] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5800 Series
  2290.     [0x68A0] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
  2291.     [0x68A1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
  2292.     [0x68A0] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
  2293.     [0x68A1] = { baseQualityLevel = Quality.High }, -- ATI Mobility Radeon HD 5800 Series
  2294.     [0x6899] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5850X2
  2295.     [0x689C] = { baseQualityLevel = Quality.High }, -- ATI Radeon HD 5900 Series
  2296.     [0x9804] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6200 series Graphics
  2297.     [0x9805] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6200 series Graphics
  2298.     [0x68F9] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6230
  2299.     [0x68E1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6230
  2300.     [0x68F9] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6250
  2301.     [0x68E1] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6250
  2302.     [0x9802] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6250
  2303.     [0x68F9] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6290
  2304.     [0x9802] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300 series Graphics
  2305.     [0x9803] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300 series Graphics
  2306.     [0x68E5] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300M Series
  2307.     [0x68E4] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6300M Series
  2308.     [0x9802] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6310
  2309.     [0x68F9] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6350
  2310.     [0x68E4] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6350M
  2311.     [0x68E5] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6330M
  2312.     [0x68E4] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6370M
  2313.     [0x68DA] = { baseQualityLevel = Quality.Low }, -- ATI Radeon HD 6390
  2314.     [0x6770] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400 Series
  2315.     [0x6760] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400M Series
  2316.     [0x6779] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400 Series
  2317.     [0x6760] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6400M Series
  2318.     [0x6761] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6430M
  2319.     [0x6761] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6430M
  2320.     [0x6779] = { baseQualityLevel = Quality.Low }, -- AMD Radeon HD 6450
  2321.     [0x68C1] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6500M/5600/5700 Series
  2322.     [0x6759] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6500 Series
  2323.     [0x68C1] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6500M Series
  2324.     [0x68D9] = { baseQualityLevel = Quality.Medium }, -- ATI Radeon HD 6510
  2325.     [0x68C0] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6570M
  2326.     [0x68C0] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6570M/5700 Series
  2327.     [0x6750] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6600A Series
  2328.     [0x6758] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6600 Series
  2329.     [0x6741] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon 6600M and 6700M Series
  2330.     [0x6742] = { baseQualityLevel = Quality.Medium }, -- AMD Radeon HD 6625M Graphics
  2331.     [0x6740] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700M Series
  2332.     [0x68BA] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series
  2333.     [0x68BF] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series  
  2334.     [0x673E] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series  
  2335.     [0x68B8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700 Series
  2336.     [0x6741] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6700M Series
  2337.     [0x68BE] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6750
  2338.     [0x68BF] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6750
  2339.     [0x68BA] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6770
  2340.     [0x6740] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6770M
  2341.     [0x68B8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6770
  2342.     [0x68A8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800M Series
  2343.     [0x6738] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series
  2344.     [0x6739] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series
  2345.     [0x673E] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series
  2346.     [0x689B] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800 Series  
  2347.     [0x68A8] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6800M Series
  2348.     [0x6720] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900M Series
  2349.     [0x6718] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series
  2350.     [0x671F] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series  
  2351.     [0x671D] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6990
  2352.     [0x6718] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series
  2353.     [0x6720] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900M Series
  2354.     [0x6719] = { baseQualityLevel = Quality.High }, -- AMD Radeon HD 6900 Series
  2355. }
  2356. '>}},
  2357. {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles/Intel.lua',
  2358.            'payload': <Blob '-- Settings database for Intel devices
  2359. return {
  2360. --  [0xHHHH] = { -- Example card
  2361. --      baseQualityLevel = Quality.High,
  2362. --      defaultSettings = {
  2363. --          TextureQuality = Quality.Low,
  2364. --          ShadowQuality = Quality.Medium,
  2365. --          EffectsQuality = Quality.High,
  2366. --      },
  2367. --      consoleOverrides = [=[
  2368. --          WorldRender.MotionBlurEnable 0
  2369. --      ]=]
  2370. --  }
  2371. }
  2372. '>}},
  2373. {'$file': {'name': 'Scripts/UserOptions/HardwareProfiles/nVidia.lua',
  2374.            'payload': <Blob '-- Settings database for nVidia devices
  2375. return {
  2376. --  [0xHHHH] = { -- Example card
  2377. --      baseQualityLevel = Quality.Medium,
  2378. --      defaultSettings = {
  2379. --          TextureQuality = Quality.Low,
  2380. --          ShadowQuality = Quality.Medium,
  2381. --          EffectsQuality = Quality.Medium,
  2382. --      },
  2383. --      consoleOverrides = [=[
  2384. --          WorldRender.MotionBlurEnable 0
  2385. --      ]=]
  2386. --  }
  2387.     [0x004E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4000
  2388.     [0x009D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4500
  2389.     [0x00CD] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3450/4000 SDI
  2390.     [0x00CE] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1400
  2391.     [0x00F8] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3400/4400
  2392.     [0x014A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 440
  2393.     [0x014C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 540M
  2394.     [0x014D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 550
  2395.     [0x014E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 540
  2396.     [0x0165] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 285
  2397.     [0x0191] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GTX
  2398.     [0x0193] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GTS
  2399.     [0x0194] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 Ultra
  2400.     [0x0197] = { baseQualityLevel = Quality.Low }, -- NVIDIA Tesla C870
  2401.     [0x019D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 5600
  2402.     [0x019E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4600
  2403.     [0x01DB] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 120M
  2404.     [0x01DE] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 350
  2405.     [0x0245] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 210S / NVIDIA GeForce 6150LE
  2406.     [0x029C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 5500
  2407.     [0x029D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3500
  2408.     [0x029E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1500
  2409.     [0x029F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4500 X2
  2410.     [0x039C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 560M
  2411.     [0x039E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 560
  2412.     [0x0400] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GTS
  2413.     [0x0401] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GT
  2414.     [0x0402] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GT
  2415.     [0x0403] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600 GS
  2416.     [0x0404] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
  2417.     [0x0405] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500M GS
  2418.     [0x0406] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8300 GS
  2419.     [0x0407] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600M GT
  2420.     [0x0408] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9650M GS
  2421.     [0x0409] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8700M GT
  2422.     [0x040A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 370
  2423.     [0x040B] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 320M
  2424.     [0x040C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 570M
  2425.     [0x040D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1600M
  2426.     [0x040E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 570
  2427.     [0x040F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1700
  2428.     [0x0410] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330
  2429.     [0x0420] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 SE
  2430.     [0x0421] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8500 GT
  2431.     [0x0422] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
  2432.     [0x0423] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8300 GS
  2433.     [0x0424] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
  2434.     [0x0425] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8600M GS
  2435.     [0x0426] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400M GT
  2436.     [0x0427] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400M GS
  2437.     [0x0428] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400M G
  2438.     [0x0429] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 140M
  2439.     [0x042A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 130M
  2440.     [0x042B] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 135M
  2441.     [0x042C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400 GT
  2442.     [0x042D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 360M
  2443.     [0x042E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300M G
  2444.     [0x042F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 290
  2445.     [0x053A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 PV / NVIDIA nForce 630a
  2446.     [0x053B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 PV / NVIDIA nForce 630a
  2447.     [0x053E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7025 / NVIDIA nForce 630a
  2448.     [0x05E0] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 295
  2449.     [0x05E1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 280
  2450.     [0x05E2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 260
  2451.     [0x05E3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 285
  2452.     [0x05E6] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 275
  2453.     [0x05E7] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla C1060
  2454.     [0x05EA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 260
  2455.     [0x05EB] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 295
  2456.     [0x05F9] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro CX
  2457.     [0x05FD] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro FX 5800
  2458.     [0x05FE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro FX 4800
  2459.     [0x05FF] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro FX 3800
  2460.     [0x0600] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GTS 512
  2461.     [0x0601] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GT
  2462.     [0x0602] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GT
  2463.     [0x0603] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230
  2464.     [0x0604] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GX2
  2465.     [0x0605] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GT
  2466.     [0x0606] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GS
  2467.     [0x0607] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 240
  2468.     [0x0608] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTX
  2469.     [0x0609] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800M GTS
  2470.     [0x060A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTX 280M
  2471.     [0x060B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GT
  2472.     [0x060C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800M GTX
  2473.     [0x060F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTX 285M
  2474.     [0x0610] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GSO
  2475.     [0x0611] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8800 GT
  2476.     [0x0612] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GTX/9800 GTX+
  2477.     [0x0613] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GTX+
  2478.     [0x0614] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800 GT
  2479.     [0x0615] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 250
  2480.     [0x0617] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTX
  2481.     [0x0618] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTX 260M
  2482.     [0x0619] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 4700 X2
  2483.     [0x061A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3700
  2484.     [0x061B] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro VX 200
  2485.     [0x061C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3600M
  2486.     [0x061D] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 2800M
  2487.     [0x061E] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3700M
  2488.     [0x061F] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 3800M
  2489.     [0x0621] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230
  2490.     [0x0622] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
  2491.     [0x0623] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GS
  2492.     [0x0625] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GSO 512
  2493.     [0x0626] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 130
  2494.     [0x0627] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 140
  2495.     [0x0628] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTS
  2496.     [0x062A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9700M GTS
  2497.     [0x062B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GS
  2498.     [0x062C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9800M GTS    
  2499.     [0x062D] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
  2500.     [0x062E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
  2501.     [0x0631] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 160M
  2502.     [0x0635] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GSO
  2503.     [0x0637] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600 GT
  2504.     [0x0638] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1800
  2505.     [0x063A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 2700M
  2506.     [0x0640] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GT
  2507.     [0x0641] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400 GT
  2508.     [0x0643] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GT
  2509.     [0x0644] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GS
  2510.     [0x0645] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9500 GS
  2511.     [0x0646] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120
  2512.     [0x0647] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600M GT
  2513.     [0x0648] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600M GS
  2514.     [0x0649] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9600M GT
  2515.     [0x064A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9700M GT
  2516.     [0x064C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9650M GT
  2517.     [0x0651] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G 110M
  2518.     [0x0652] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 130M
  2519.     [0x0653] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120M
  2520.     [0x0654] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220M
  2521.     [0x0655] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120
  2522.     [0x0656] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 120
  2523.     [0x0658] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 380
  2524.     [0x0659] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 580
  2525.     [0x065A] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1700M
  2526.     [0x065B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400 GT
  2527.     [0x065C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 770M
  2528.     [0x065F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G210
  2529.     [0x06C0] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 480
  2530.     [0x06C4] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 465
  2531.     [0x06CA] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 480M
  2532.     [0x06CD] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 470
  2533.     [0x06D1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla C2050 / C2070
  2534.     [0x06D2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla M2070
  2535.     [0x06D8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 6000
  2536.     [0x06D9] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 5000
  2537.     [0x06DA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 5000M
  2538.     [0x06DC] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 6000
  2539.     [0x06DD] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 4000
  2540.     [0x06DE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla T20 Processor
  2541.     [0x06DF] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla M2070-Q
  2542.     [0x06E0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 GE
  2543.     [0x06E1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 GS
  2544.     [0x06E2] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400
  2545.     [0x06E3] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 SE
  2546.     [0x06E4] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8400 GS
  2547.     [0x06E6] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G100
  2548.     [0x06E7] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 SE
  2549.     [0x06E8] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200M GS
  2550.     [0x06E9] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300M GS
  2551.     [0x06EA] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 150M
  2552.     [0x06EB] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 160M
  2553.     [0x06EC] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G 105M
  2554.     [0x06EF] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G 103M
  2555.     [0x06F1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G105M
  2556.     [0x06F8] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 420
  2557.     [0x06F9] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 370 LP
  2558.     [0x06FA] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 450
  2559.     [0x06FB] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 370M
  2560.     [0x06FD] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro NVS 295
  2561.     [0x06FF] = { baseQualityLevel = Quality.Low }, -- NVIDIA HICx16 + Graphics
  2562.     [0x07E0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7150 / NVIDIA nForce 630i
  2563.     [0x07E1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7100 / NVIDIA nForce 630i
  2564.     [0x07E2] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 / NVIDIA nForce 630i
  2565.     [0x07E3] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 / NVIDIA nForce 610i
  2566.     [0x07E5] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 7050 / NVIDIA nForce 620i
  2567.     [0x0840] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200M
  2568.     [0x0844] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9100M G
  2569.     [0x0845] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200M G
  2570.     [0x0846] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
  2571.     [0x0847] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9100
  2572.     [0x0848] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8300
  2573.     [0x0849] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200
  2574.     [0x084A] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 730a
  2575.     [0x084B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
  2576.     [0x084C] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 980a/780a SLI
  2577.     [0x084D] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 750a SLI
  2578.     [0x084F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8100 / nForce 720a
  2579.     [0x0860] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
  2580.     [0x0861] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
  2581.     [0x0862] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M G
  2582.     [0x0863] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M
  2583.     [0x0864] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300
  2584.     [0x0865] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
  2585.     [0x0866] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M G  
  2586.     [0x0867] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
  2587.     [0x0868] = { baseQualityLevel = Quality.Low }, -- NVIDIA nForce 760i SLI
  2588.     [0x0869] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400  
  2589.     [0x086A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
  2590.     [0x086C] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9300 / nForce 730i
  2591.     [0x086D] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
  2592.     [0x086E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9100M G
  2593.     [0x086F] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 8200M G
  2594.     [0x0870] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400M        
  2595.     [0x0871] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9200
  2596.     [0x0872] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G102M
  2597.     [0x0873] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G102M  
  2598.     [0x0874] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
  2599.     [0x0876] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
  2600.     [0x087A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 9400
  2601.     [0x087D] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
  2602.     [0x087E] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION LE
  2603.     [0x087F] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION LE
  2604.     [0x08A0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 320M
  2605.     [0x08A4] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 320M    
  2606.     [0x0A20] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220
  2607.     [0x0A22] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 315
  2608.     [0x0A23] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 210
  2609.     [0x0A26] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 405
  2610.     [0x0A27] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 405
  2611.     [0x0A28] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230M
  2612.     [0x0A29] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330M
  2613.     [0x0A2A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 230M
  2614.     [0x0A2B] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330M
  2615.     [0x0A2C] = { baseQualityLevel = Quality.Low }, -- NVIDIA NVS 5100M
  2616.     [0x0A2D] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 320M  
  2617.     [0x0A34] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 240M
  2618.     [0x0A35] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 325M
  2619.     [0x0A38] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro 400
  2620.     [0x0A3C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 880M
  2621.     [0x0A60] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G210
  2622.     [0x0A62] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 205
  2623.     [0x0A63] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310
  2624.     [0x0A64] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
  2625.     [0x0A65] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 210
  2626.     [0x0A66] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310
  2627.     [0x0A67] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 315
  2628.     [0x0A68] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G105M
  2629.     [0x0A69] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G105M
  2630.     [0x0A6A] = { baseQualityLevel = Quality.Low }, -- NVIDIA NVS 2100M
  2631.     [0x0A6C] = { baseQualityLevel = Quality.Low }, -- NVIDIA NVS 3100M
  2632.     [0x0A6E] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 305M
  2633.     [0x0A6F] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION
  2634.     [0x0A70] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310M
  2635.     [0x0A71] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 305M  
  2636.     [0x0A72] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310M
  2637.     [0x0A73] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 305M
  2638.     [0x0A74] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce G210M
  2639.     [0x0A75] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 310M
  2640.     [0x0A76] = { baseQualityLevel = Quality.Low }, -- NVIDIA ION  
  2641.     [0x0A78] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 380 LP
  2642.     [0x0A7A] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce 315M
  2643.     [0x0A7C] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 380M
  2644.     [0x0CA0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330
  2645.     [0x0CA2] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 320
  2646.     [0x0CA3] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 240
  2647.     [0x0CA4] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 340
  2648.     [0x0CA5] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220
  2649.     [0x0CA7] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 330
  2650.     [0x0CA9] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 250M
  2651.     [0x0CAC] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 220
  2652.     [0x0CAF] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GT 335M
  2653.     [0x0CB0] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 350M
  2654.     [0x0CB1] = { baseQualityLevel = Quality.Low }, -- NVIDIA GeForce GTS 360M
  2655.     [0x0CBC] = { baseQualityLevel = Quality.Low }, -- NVIDIA Quadro FX 1800M
  2656.     [0x0DC0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 440
  2657.     [0x0DC4] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
  2658.     [0x0DC5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
  2659.     [0x0DC6] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
  2660.     [0x0DCD] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 555M
  2661.     [0x0DCE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 555M
  2662.     [0x0DD1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTX 460M
  2663.     [0x0DD2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 445M
  2664.     [0x0DD3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 435M
  2665.     [0x0DD6] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GT 550M
  2666.     [0x0DD8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 2000
  2667.     [0x0DDA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 2000M
  2668.     [0x0DE0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 440
  2669.     [0x0DE1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 430
  2670.     [0x0DE2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 420
  2671.     [0x0DE5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 530
  2672.     [0x0DEC] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 525M
  2673.     [0x0DED] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520M
  2674.     [0x0DEE] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 415M
  2675.     [0x0DF0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 425M
  2676.     [0x0DF1] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 420M
  2677.     [0x0DF2] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 435M
  2678.     [0x0DF3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 420M  
  2679.     [0x0DF4] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 540M
  2680.     [0x0DF5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 525M
  2681.     [0x0DF6] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 550M
  2682.     [0x0DF7] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520M
  2683.     [0x0DF8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 600
  2684.     [0x0DFA] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 1000M
  2685.     [0x0E22] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 460
  2686.     [0x0E23] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 460 SE
  2687.     [0x0E24] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 460
  2688.     [0x0E30] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 470M
  2689.     [0x0E31] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 485M
  2690.     [0x0E3A] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 3000M
  2691.     [0x0E3B] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 4000M
  2692.     [0x1040] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520
  2693.     [0x1050] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 520M  
  2694.     [0x1054] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 410M
  2695.     [0x1056] = { baseQualityLevel = Quality.Medium }, -- NVIDIA NVS 4200M
  2696.     [0x1057] = { baseQualityLevel = Quality.Medium }, -- NVIDIA NVS 4200M  
  2697.     [0x1080] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 580
  2698.     [0x1081] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 570
  2699.     [0x1082] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560 Ti
  2700.     [0x1084] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560
  2701.     [0x1086] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 570
  2702.     [0x1088] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 590
  2703.     [0x1089] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 580
  2704.     [0x1091] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Tesla M2090
  2705.     [0x109A] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 5010M
  2706.     [0x109B] = { baseQualityLevel = Quality.Medium }, -- NVIDIA Quadro 7000
  2707.     [0x10C0] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 9300 GS
  2708.     [0x10C3] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 8400GS
  2709.     [0x10C5] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce 405
  2710.     [0x10D8] = { baseQualityLevel = Quality.Medium }, -- NVIDIA NVS 300
  2711.     [0x1200] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560 Ti
  2712.     [0x1201] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560
  2713.     [0x1241] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 545
  2714.     [0x1243] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GT 545
  2715.     [0x1244] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 550 Ti
  2716.     [0x1245] = { baseQualityLevel = Quality.Medium }, -- NVIDIA GeForce GTS 450
  2717.     [0x1251] = { baseQualityLevel = Quality.High }, -- NVIDIA GeForce GTX 560M
  2718. }
  2719. '>}},
  2720. {'$file': {'name': 'Scripts/UserOptions/Options.lua',
  2721.            'payload': <Blob 'core = require "Frost.Core"
  2722. logging = require "Frost.Logging"
  2723.  
  2724. levelName = currentGameLevel or cmdLineOption('level') or Game.Level
  2725. if levelName then
  2726.     -- Level names without slashes are assumed to be shorthand for
  2727.     -- Levels/name/name to go with Venice's epic level naming convention
  2728.     if not string.find(levelName, "/") then
  2729.         levelName = "Levels/" .. levelName .. "/" .. levelName
  2730.     end
  2731.  
  2732.     Game.FastStartupEnable = true
  2733.     if not Game.Level then
  2734.         Game.Level = levelName
  2735.     end
  2736. end
  2737.  
  2738.  
  2739. function applySettings(settings)
  2740.     core.parseKeyValueCfgString(settings, _G)
  2741. end
  2742.  
  2743. function applyQualitySettings(name, qualityMap)
  2744.     local quality = settings[name]
  2745.     if quality == nil then
  2746.         log:error("Invalid setting '" .. name .. "'")
  2747.         return
  2748.     end
  2749.    
  2750.     local consoleCommands = qualityMap[quality]
  2751.     if consoleCommands == nil then
  2752.         log:error("Could not find console settings for '" .. name .. "' with quality " .. quality)
  2753.     else
  2754.         log:info("setting '" .. name .. "': " .. quality)
  2755.         applySettings(consoleCommands)
  2756.     end
  2757. end
  2758.  
  2759. dofile("Scripts/UserOptions/Options/Graphics.lua")
  2760. dofile("Scripts/UserOptions/Options/Physics.lua")
  2761. dofile("Scripts/UserOptions/Options/Sound.lua")
  2762. dofile("Scripts/UserOptions/Options/Animations.lua")
  2763.  
  2764. applySettings(deviceSettings.consoleOverrides or "")
  2765.  
  2766. if not cmdLineOption('noLocalCfg', false) then
  2767.     core.readKeyValueCfg("/local/local.cfg", _G)
  2768. end
  2769.  
  2770. if allowCommandlineSettings then
  2771.     for index,option in ipairs(commandLine) do
  2772.         local table,member = string.match(option, "^%-(%w+)%.(%w+)")
  2773.  
  2774.         if table and member then
  2775.             local value = commandLine[index+1]
  2776.             if not _G[table] then _G[table] = {} end
  2777.             _G[table][member] = value
  2778.         else
  2779.             local varName = string.match(option, "^%-([%w-]+)")
  2780.             if varName then
  2781.                 local value = commandLine[index+1]
  2782.                 if value then
  2783.                     _G[varName] = value
  2784.                 end
  2785.             end
  2786.         end
  2787.     end
  2788. end
  2789.  
  2790. '>}},
  2791. {'$file': {'name': 'Scripts/UserOptions/Options/Animations.lua',
  2792.            'payload': <Blob 'local quality = settings['AnimationQuality']
  2793. log:info("setting animation quality : "..quality)
  2794.  
  2795. -- IMPORTANT:
  2796. -- GameAnimation.TemporalLoddingFirstDistance *must* be slighly larger than the
  2797. -- distance where IK is disabled in the animation project (EnableFootplanting_ESIG)
  2798. -- for all quality levels.
  2799.  
  2800. if(quality > 0.8) then
  2801.     applySettings([=[
  2802.  
  2803.     GameAnimation.TemporalLoddingFirstDistance 31.0
  2804.     GameAnimation.TemporalLoddingSecondDistance 40.0
  2805.     GameAnimation.TemporalLoddingThirdDistance 60.0
  2806.     GameAnimation.TemporalLoddingFourthDistance 90.0
  2807.     GameAnimation.TemporalLoddingFifthDistance 120.0
  2808.     GameAnimation.TemporalLoddingSixthDistance 208.0
  2809.  
  2810.     GameAnimation.TemporalLoddingFirstDeltaTime = 0.02
  2811.     GameAnimation.TemporalLoddingSecondDeltaTime = 0.04
  2812.     GameAnimation.TemporalLoddingThirdDeltaTime = 0.06
  2813.     GameAnimation.TemporalLoddingFourthDeltaTime = 0.08
  2814.     GameAnimation.TemporalLoddingFifthDeltaTime = 0.10
  2815.     GameAnimation.TemporalLoddingSixthDeltaTime = 0.12
  2816.  
  2817.   ]=])
  2818. else
  2819.     applySettings([=[
  2820.  
  2821.     GameAnimation.TemporalLoddingFirstDistance 31.0
  2822.     GameAnimation.TemporalLoddingSecondDistance 40.0
  2823.     GameAnimation.TemporalLoddingThirdDistance 50.0
  2824.     GameAnimation.TemporalLoddingFourthDistance 90.0
  2825.     GameAnimation.TemporalLoddingFifthDistance 120.0
  2826.     GameAnimation.TemporalLoddingSixthDistance 208.0
  2827.  
  2828.     GameAnimation.TemporalLoddingFirstDeltaTime = 0.02
  2829.     GameAnimation.TemporalLoddingSecondDeltaTime = 0.04
  2830.     GameAnimation.TemporalLoddingThirdDeltaTime = 0.06
  2831.     GameAnimation.TemporalLoddingFourthDeltaTime = 0.08
  2832.     GameAnimation.TemporalLoddingFifthDeltaTime = 0.10
  2833.     GameAnimation.TemporalLoddingSixthDeltaTime = 0.12
  2834.  
  2835.   ]=])
  2836. end
  2837. '>}},
  2838. {'$file': {'name': 'Scripts/UserOptions/Options/Graphics.lua',
  2839.            'payload': <Blob '------ Common settings for all quality levels
  2840. applySettings([=[
  2841. ]=])
  2842.  
  2843.  
  2844. ------ Texture Quality
  2845. applyQualitySettings('TextureQuality', {
  2846.     -- up to 512 mb
  2847.     [Quality.Low]=[=[
  2848.         Texture.SkipMipmapCount 2
  2849.         TextureStreaming.PoolSize 150000
  2850.         TerrainStreaming.HeightfieldAtlasSampleCountXFactor 1
  2851.         TerrainStreaming.HeightfieldAtlasSampleCountYFactor 1
  2852.         TerrainStreaming.MaskAtlasSampleCountXFactor 1
  2853.         TerrainStreaming.MaskAtlasSampleCountYFactor 1
  2854.         TerrainStreaming.ColorAtlasSampleCountXFactor 1
  2855.         TerrainStreaming.ColorAtlasSampleCountYFactor 1
  2856.         VisualTerrain.TextureAtlasSampleCountXFactor 1
  2857.         VisualTerrain.TextureAtlasSampleCountYFactor 1
  2858.         VisualTerrain.TextureRenderJobCount 1
  2859.         VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 1
  2860.         VisualTerrain.Decal3dFarDrawDistanceScaleFactor 1.0
  2861.     ]=],
  2862.  
  2863.     -- up to 768 mb
  2864.     [Quality.Medium]=[=[
  2865.         Texture.SkipMipmapCount 1
  2866.         TextureStreaming.PoolSize 200000
  2867.         TerrainStreaming.HeightfieldAtlasSampleCountXFactor 1
  2868.         TerrainStreaming.HeightfieldAtlasSampleCountYFactor 2
  2869.         TerrainStreaming.MaskAtlasSampleCountXFactor 1
  2870.         TerrainStreaming.MaskAtlasSampleCountYFactor 2
  2871.         TerrainStreaming.ColorAtlasSampleCountXFactor 1
  2872.         TerrainStreaming.ColorAtlasSampleCountYFactor 2
  2873.         VisualTerrain.TextureAtlasSampleCountXFactor 1
  2874.         VisualTerrain.TextureAtlasSampleCountYFactor 2
  2875.         VisualTerrain.TextureRenderJobCount 2
  2876.         VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 2
  2877.         VisualTerrain.Decal3dFarDrawDistanceScaleFactor 1.2
  2878.     ]=],
  2879.    
  2880.     -- up to 1G
  2881.     [Quality.High]=[=[
  2882.         Texture.SkipMipmapCount 0
  2883.         TextureStreaming.PoolSize 300000
  2884.         TerrainStreaming.HeightfieldAtlasSampleCountXFactor 1
  2885.         TerrainStreaming.HeightfieldAtlasSampleCountYFactor 2
  2886.         TerrainStreaming.MaskAtlasSampleCountXFactor 1
  2887.         TerrainStreaming.MaskAtlasSampleCountYFactor 2
  2888.         TerrainStreaming.ColorAtlasSampleCountXFactor 1
  2889.         TerrainStreaming.ColorAtlasSampleCountYFactor 2
  2890.         VisualTerrain.TextureAtlasSampleCountXFactor 1
  2891.         VisualTerrain.TextureAtlasSampleCountYFactor 2
  2892.         VisualTerrain.TextureRenderJobCount 4
  2893.         VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 4
  2894.         VisualTerrain.Decal3dFarDrawDistanceScaleFactor 1.7
  2895.     ]=],
  2896.  
  2897.     -- 1 Gb or more
  2898.     [Quality.Ultra]=[=[
  2899.         Texture.SkipMipmapCount 0
  2900.         TextureStreaming.PoolSize 500000
  2901.         TerrainStreaming.HeightfieldAtlasSampleCountXFactor 2
  2902.         TerrainStreaming.HeightfieldAtlasSampleCountYFactor 2
  2903.         TerrainStreaming.MaskAtlasSampleCountXFactor 2
  2904.         TerrainStreaming.MaskAtlasSampleCountYFactor 2
  2905.         TerrainStreaming.ColorAtlasSampleCountXFactor 2
  2906.         TerrainStreaming.ColorAtlasSampleCountYFactor 2
  2907.         VisualTerrain.TextureAtlasSampleCountXFactor 2
  2908.         VisualTerrain.TextureAtlasSampleCountYFactor 2
  2909.         VisualTerrain.TextureRenderJobCount 4
  2910.         VisualTerrain.TextureRenderJobsLaunchedPerFrameCountMax 4
  2911.         VisualTerrain.Decal3dFarDrawDistanceScaleFactor 2
  2912.     ]=],
  2913. })
  2914.  
  2915. ------ Mesh Quality
  2916. applyQualitySettings('MeshQuality', {
  2917.     [Quality.Low]=[=[
  2918.         WorldRender.CullScreenAreaScale 1
  2919.         Mesh.GlobalLodScale 1
  2920.         Mesh.ShadowDistanceScale 1
  2921.         MeshStreaming.PoolSize 100000
  2922.        
  2923.         VegetationSystem.UseShadowLodOffset 1
  2924.         VegetationSystem.MaxActiveDistance 100
  2925.         VegetationSystem.MaxPreSimsPerJob 2
  2926.         VegetationSystem.SimulationMemKbClient 2048
  2927.  
  2928.         Render.EdgeModelViewDistance 50
  2929.     ]=],
  2930.     [Quality.Medium]=[=[
  2931.         WorldRender.CullScreenAreaScale 1.7
  2932.         Mesh.GlobalLodScale 1.7
  2933.         Mesh.ShadowDistanceScale 1.7
  2934.         MeshStreaming.PoolSize 100000
  2935.  
  2936.         VegetationSystem.UseShadowLodOffset 0
  2937.         VegetationSystem.MaxActiveDistance 200
  2938.         VegetationSystem.MaxPreSimsPerJob 3
  2939.         VegetationSystem.SimulationMemKbClient 2048
  2940.  
  2941.         Render.EdgeModelViewDistance 70
  2942.     ]=],
  2943.     [Quality.High]=[=[
  2944.         WorldRender.CullScreenAreaScale 3
  2945.         Mesh.GlobalLodScale 3
  2946.         Mesh.ShadowDistanceScale 3
  2947.         MeshStreaming.PoolSize 125000
  2948.  
  2949.         VegetationSystem.UseShadowLodOffset 0
  2950.         VegetationSystem.MaxActiveDistance 300
  2951.         VegetationSystem.MaxPreSimsPerJob 4
  2952.         VegetationSystem.SimulationMemKbClient 4096
  2953.  
  2954.         Render.EdgeModelViewDistance 100
  2955.     ]=],
  2956.     [Quality.Ultra]=[=[
  2957.         WorldRender.CullScreenAreaScale 4
  2958.         Mesh.GlobalLodScale 4
  2959.         Mesh.ShadowDistanceScale 4
  2960.         MeshStreaming.PoolSize 150000
  2961.  
  2962.         VegetationSystem.UseShadowLodOffset 0
  2963.         VegetationSystem.MaxActiveDistance 350
  2964.         VegetationSystem.MaxPreSimsPerJob 8
  2965.         VegetationSystem.SimulationMemKbClient 4096
  2966.        
  2967.         Render.EdgeModelViewDistance 150
  2968.     ]=],
  2969. })
  2970.  
  2971.  
  2972. ------ Effects Quality
  2973. applyQualitySettings('EffectsQuality', {
  2974.     [Quality.Low]=[=[
  2975.         EffectManager.EffectQuality 0
  2976.         EmitterSystem.QuadHalfResEnable 1
  2977.         WorldRender.SpotLightShadomapLevel QualityLevel_Low
  2978.     ]=],
  2979.     [Quality.Medium]=[=[
  2980.         EffectManager.EffectQuality 1
  2981.         EmitterSystem.QuadHalfResEnable 1
  2982.         WorldRender.SpotLightShadomapLevel QualityLevel_Medium
  2983.     ]=],
  2984.     [Quality.High]=[=[
  2985.         EffectManager.EffectQuality 2
  2986.         EmitterSystem.QuadHalfResEnable 1
  2987.         WorldRender.SpotLightShadomapLevel QualityLevel_High
  2988.     ]=],
  2989.     [Quality.Ultra]=[=[
  2990.         EffectManager.EffectQuality 2
  2991.         EmitterSystem.QuadHalfResEnable 0
  2992.         WorldRender.SpotLightShadomapLevel QualityLevel_Ultra
  2993.     ]=],
  2994. })
  2995.  
  2996.  
  2997.  
  2998. ------ Terrain Quality
  2999. applyQualitySettings('TerrainQuality', {
  3000.     [Quality.Low]=[=[
  3001.         VisualTerrain.DxDisplacementMappingEnable 0
  3002.         VisualTerrain.DxTessellatedTriWidth 12
  3003.         VisualTerrain.LodScale 1.0
  3004.     ]=],
  3005.     [Quality.Medium]=[=[
  3006.         VisualTerrain.DxDisplacementMappingEnable 0
  3007.         VisualTerrain.DxTessellatedTriWidth 12
  3008.         VisualTerrain.LodScale 1.1
  3009.     ]=],
  3010.     -- Only on DX11 cards
  3011.     [Quality.High]=[=[
  3012.         VisualTerrain.DxDisplacementMappingEnable 1
  3013.         VisualTerrain.DxTessellatedTriWidth 12
  3014.         VisualTerrain.LodScale 1.1
  3015.     ]=],
  3016.     [Quality.Ultra]=[=[
  3017.         VisualTerrain.DxDisplacementMappingEnable 1
  3018.         VisualTerrain.DxTessellatedTriWidth 9
  3019.         VisualTerrain.LodScale 1.1
  3020.     ]=],
  3021. })
  3022.  
  3023.  
  3024. ------ Terrain Decoration Quality
  3025. applyQualitySettings('UndergrowthQuality', {
  3026.     [Quality.Low]=[=[
  3027.         VisualTerrain.MeshScatteringBuildChannelCount 2
  3028.         VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 1
  3029.         VisualTerrain.MeshScatteringDensityScaleFactor 1
  3030.         VisualTerrain.MeshScatteringDistanceScaleFactor 1
  3031.     ]=],
  3032.     [Quality.Medium]=[=[
  3033.         VisualTerrain.MeshScatteringBuildChannelCount 4
  3034.         VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 2
  3035.         VisualTerrain.MeshScatteringDensityScaleFactor 1.2
  3036.         VisualTerrain.MeshScatteringDistanceScaleFactor 1.3
  3037.     ]=],
  3038.     [Quality.High]=[=[
  3039.         VisualTerrain.MeshScatteringBuildChannelCount 8
  3040.         VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 4
  3041.         VisualTerrain.MeshScatteringDensityScaleFactor 1.5
  3042.         VisualTerrain.MeshScatteringDistanceScaleFactor 1.7
  3043.     ]=],
  3044.     [Quality.Ultra]=[=[
  3045.         VisualTerrain.MeshScatteringBuildChannelCount 8
  3046.         VisualTerrain.MeshScatteringBuildChannelsLaunchedPerFrameCountMax 4
  3047.         VisualTerrain.MeshScatteringDensityScaleFactor 2.0
  3048.         VisualTerrain.MeshScatteringDistanceScaleFactor 2.3
  3049.     ]=],
  3050. })
  3051.  
  3052.  
  3053. ------ Shadow Quality
  3054. applyQualitySettings('ShadowQuality', {
  3055.     [Quality.Low]=[=[
  3056.         WorldRender.ShadowmapsEnable true
  3057.         WorldRender.ShadowmapViewDistance 100
  3058.         WorldRender.ShadowmapResolution 1024
  3059.         WorldRender.ShadowmapQuality 0
  3060.         WorldRender.TransparencyShadowmapsEnable 0
  3061.     ]=],
  3062.     [Quality.Medium]=[=[
  3063.         WorldRender.ShadowmapsEnable true
  3064.         WorldRender.ShadowmapViewDistance 100
  3065.         WorldRender.ShadowmapResolution 1024
  3066.         WorldRender.ShadowmapQuality 1
  3067.         WorldRender.TransparencyShadowmapsEnable 1
  3068.     ]=],
  3069.     [Quality.High]=[=[
  3070.         WorldRender.ShadowmapsEnable true
  3071.         WorldRender.ShadowmapViewDistance 200
  3072.         WorldRender.ShadowmapResolution 1536
  3073.         WorldRender.ShadowmapQuality 1
  3074.         WorldRender.TransparencyShadowmapsEnable 1
  3075.     ]=],
  3076.     [Quality.Ultra]=[=[
  3077.         WorldRender.ShadowmapsEnable true
  3078.         WorldRender.ShadowmapViewDistance 200
  3079.         WorldRender.ShadowmapResolution 2048
  3080.         WorldRender.ShadowmapQuality 1
  3081.         WorldRender.TransparencyShadowmapsEnable 1
  3082.     ]=],
  3083. })
  3084.  
  3085.  
  3086. ------ Antialiasing Deferred
  3087. applyQualitySettings('AntiAliasingDeferred', {
  3088.     [AntiAliasingDeferred.Off]=[=[
  3089.         WorldRender.MultisampleCount 1
  3090.     ]=],
  3091.     [AntiAliasingDeferred.MSAA2X]=[=[
  3092.         WorldRender.MultisampleCount 2
  3093.     ]=],
  3094.     [AntiAliasingDeferred.MSAA4X]=[=[
  3095.         WorldRender.MultisampleCount 4
  3096.     ]=],
  3097. })
  3098.  
  3099.    
  3100. ------ Antialiasing Post
  3101. applyQualitySettings('AntiAliasingPost', {
  3102.     [AntiAliasingPost.Off]=[=[
  3103.         WorldRender.FxaaEnable 0
  3104.     ]=],
  3105.     [AntiAliasingPost.Low]=[=[
  3106.         WorldRender.FxaaEnable 1
  3107.         WorldRender.FxaaQuality 0
  3108.     ]=],
  3109.     [AntiAliasingPost.Medium]=[=[
  3110.         WorldRender.FxaaEnable 1
  3111.         WorldRender.FxaaQuality 1
  3112.     ]=],
  3113.     [AntiAliasingPost.High]=[=[
  3114.         WorldRender.FxaaEnable 1
  3115.         WorldRender.FxaaQuality 2
  3116.     ]=],
  3117. })
  3118.  
  3119.  
  3120. ------ Ambient Occlusion
  3121. applyQualitySettings('AmbientOcclusion', {
  3122.     [AmbientOcclusion.Off]=[=[
  3123.         PostProcess.DynamicAOEnable 0
  3124.     ]=],
  3125.     [AmbientOcclusion.SSAO]=[=[
  3126.         PostProcess.DynamicAOEnable 1
  3127.         PostProcess.DynamicAOMethod DynamicAOMethod_SSAO
  3128.     ]=],
  3129.     [AmbientOcclusion.HBAO]=[=[
  3130.         PostProcess.DynamicAOEnable 1
  3131.         PostProcess.DynamicAOMethod DynamicAOMethod_HBAO
  3132.     ]=],
  3133. })
  3134.  
  3135.  
  3136. ------ Anisotropic filtering
  3137. ShaderSystem = ShaderSystem or {}
  3138. ShaderSystem.MaxAnisotropy = 2^settings['AnisotropicFilter'] -- 1, 2, 4, 8, 16
  3139.  
  3140.  
  3141. ------- Motion Blur
  3142. WorldRender = WorldRender or {}
  3143. WorldRender.MotionBlurEnable = settings['MotionBlurEnabled']
  3144. -- WorldRender.MotionBlurScale = settings['MotionBlur'] / 5
  3145. -- 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
  3146. WorldRender.MotionBlurScale = (settings['MotionBlur'] or 0.5) / 5
  3147.  
  3148.  
  3149. ------- Screen resolution
  3150. RenderDevice = RenderDevice or {}
  3151. RenderDevice.FullscreenWidth = settings['ResolutionWidth']
  3152. RenderDevice.FullscreenHeight = settings['ResolutionHeight']
  3153. RenderDevice.FullscreenRefreshRate = settings['ResolutionHertz']
  3154. RenderDevice.Fullscreen = settings['FullscreenEnabled']
  3155. RenderDevice.FullscreenOutputIndex = settings['FullscreenScreen']
  3156. RenderDevice.VSyncEnable = settings['VSyncEnabled']
  3157.  
  3158. PostProcess.UIBrightnessNorm = settings['Brightness']
  3159. '>}},
  3160. {'$file': {'name': 'Scripts/UserOptions/Options/Physics.lua',
  3161.            'payload': <Blob 'local quality = settings['PhysicsQuality']
  3162. log:info("setting physics quality : "..quality)
  3163. if(quality > 0.8) then
  3164.     applySettings([=[
  3165.             Physics.EnableFollowWheelRaycasts true
  3166.             Physics.EnableASyncWheelRaycasts true
  3167.   ]=])
  3168. else
  3169.     applySettings([=[
  3170.             Physics.EnableFollowWheelRaycasts false
  3171.             Physics.EnableASyncWheelRaycasts true
  3172.   ]=])
  3173. end
  3174. '>}},
  3175. {'$file': {'name': 'Scripts/UserOptions/Options/Sound.lua',
  3176.            'payload': <Blob 'local quality = settings['AudioQuality']
  3177. log:info("setting sound quality : "..quality)
  3178. if(quality > 0.8) then
  3179.     applySettings([=[
  3180.             Audio.MaxAudibleSoundCount 15
  3181.             Audio.AudioCoreCpuLoadLimit 50
  3182.   ]=])
  3183. else
  3184.     applySettings([=[
  3185.             Audio.MaxAudibleSoundCount 8
  3186.             Audio.AudioCoreCpuLoadLimit 30
  3187.   ]=])
  3188. end
  3189. '>}},
  3190. {'$file': {'name': 'Scripts/BuildMonkeyAutosmoke.cfg',
  3191.            'payload': <Blob '#!/bin/lua
  3192.  
  3193. core = require "Frost.Core"
  3194.  
  3195. log:debug("Parsing 'BuildMonkeyAutosmoke.cfg' settings")
  3196.  
  3197. local function applySettings(settings)
  3198.     core.parseKeyValueCfgString(settings, _G)
  3199. end
  3200.  
  3201. applySettings [=[
  3202.  
  3203. Core.IgnoreAlways           true
  3204.  
  3205. Core.Heartbeat              true
  3206. Core.HeartbeatInterval          20
  3207. Client.UseMouseAndKeyboardSystem    false
  3208.  
  3209. RenderDevice.NvidiaMinDriverVersion 18585
  3210.  
  3211. Client.IsPresenceEnabled false
  3212. Server.IsPresenceEnabled false
  3213.  
  3214. ]=]
  3215. '>}},
  3216. {'$file': {'name': 'Scripts/BuildMonkeyXenon.cfg',
  3217.            'payload': <Blob '#!/bin/lua
  3218.  
  3219. core = require "Frost.Core"
  3220.  
  3221. log:debug("Parsing 'BuildMonkeyXenon.cfg' settings")
  3222.  
  3223. local function applySettings(settings)
  3224.     core.parseKeyValueCfgString(settings, _G)
  3225. end
  3226.  
  3227. applySettings [=[
  3228.  
  3229. Core.IgnoreAlways           true
  3230. Client.UseMouseAndKeyboardSystem    false
  3231.  
  3232. SoldierTest.maxCountTestSoldier 23
  3233.  
  3234. Client.IsPresenceEnabled false
  3235. Server.IsPresenceEnabled false
  3236.  
  3237. ]=]
  3238. '>}},
  3239. {'$file': {'name': 'Scripts/Checkins.cfg',
  3240.            'payload': <Blob "Code Win32;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.Win32\Logs
  3241. Code Win64;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.Win64\Logs
  3242. Code Xenon;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.Xenon\Logs
  3243. Code PS3;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.Code.PS3\Logs
  3244. No Master Win32;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.Win32\Logs
  3245. # Removed these, since they don't trigger on checkins:
  3246. #No Master Xenon;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.Xenon\Logs
  3247. #No Master PS3;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.PS3\Logs
  3248. #No Master PS3 (GCC);//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.NoMaster.PS3GCC\Logs
  3249. #Editor;//Frostbite/Sandboxes/Venice/TnT/Code/;\\dice-monkeyfarm\Logs\Venice.EditorSmoke\Logs
  3250. Data Win32;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.Win32\Logs
  3251. Data Win64;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.Win64\Logs
  3252. Data Xenon;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.Xenon\Logs
  3253. Data PS3;//Venice/Sandboxes/Venice/Data/;\\dice-monkeyfarm\Logs\Venice.DataSmoke.PS3\Logs
  3254. ">}},
  3255. {'$file': {'name': 'Scripts/DisablePresence.cfg',
  3256.            'payload': <Blob 'Client.IsPresenceEnabled false
  3257. Server.IsPresenceEnabled false
  3258. '>}},
  3259. {'$file': {'name': 'Scripts/FrostTest.cfg',
  3260.            'payload': <Blob '#!/bin/lua
  3261.  
  3262. core = require "Frost.Core"
  3263.  
  3264. log:debug("Parsing 'FrostTest.cfg' settings")
  3265.  
  3266. local function applySettings(settings)
  3267.     core.parseKeyValueCfgString(settings, _G)
  3268. end
  3269.  
  3270. applySettings [=[
  3271.  
  3272. Game.LogFileEnable true
  3273. Client.IsInternetSimulationEnabled false
  3274. Server.IsInternetSimulationEnabled false
  3275.  
  3276. Server.PacketDrops                0
  3277. Server.DropSpikeChance            0
  3278. Server.DuplicationChance          0
  3279. Server.CorruptionChance           0
  3280. Client.PacketDrops                0
  3281. Client.DropSpikeChance            0
  3282. Client.DuplicationChance          0
  3283. Client.CorruptionChance           0
  3284.  
  3285. PerformanceTracker.JuiceLogPerformance false
  3286. Core.DisplayAsserts false
  3287. Core.EnableJuiceTelemetry true
  3288. Core.EnableJuice        true
  3289. CrashDump.WarnBeforeDoingMemoryDump false
  3290. Core.JuiceValidateAsAssert false
  3291. Core.ValidateAsWarning true
  3292.  
  3293. juice-alternative-naming-scheme true
  3294.  
  3295. Core.HardwareProfile Hardware_Low
  3296. Render.SkipMipmapCount  4
  3297.  
  3298. #Demo.RecordDemoFileName /temp/demo/BuildMonkeySession
  3299. #UdpSocket.ReusePort true
  3300. #Network.IncrementServerPortOnFail false
  3301.  
  3302. UI.SpawnOnPressEnter true
  3303.  
  3304. Inventory.postSpawnEquipping true
  3305.  
  3306. Game.DisablePreRound true
  3307. Player.ignoreLevelWarmUpTimers true
  3308. Player.allowDefaultSpawnPointSelection true
  3309.  
  3310. Window.Width 800
  3311. Window.Height 600
  3312. Window.Fullscreen false
  3313.  
  3314. Player.allowRandomSpawnPointSelection true
  3315.  
  3316. UI.SkipIntroVideoSequence true
  3317.  
  3318. ]=]
  3319.  
  3320. '>}},
  3321. {'$file': {'name': 'Scripts/FrostTestPerformance.cfg',
  3322.            'payload': <Blob '#!/bin/lua
  3323.  
  3324. core = require "Frost.Core"
  3325.  
  3326. log:debug("Parsing 'FrostTestPerformance.cfg' settings")
  3327.  
  3328. local function applySettings(settings)
  3329.     core.parseKeyValueCfgString(settings, _G)
  3330. end
  3331.  
  3332. applySettings [=[
  3333.  
  3334. Game.LogFileEnable true
  3335. Client.IsInternetSimulationEnabled false
  3336. Server.IsInternetSimulationEnabled false
  3337.  
  3338. Server.PacketDrops                0
  3339. Server.DropSpikeChance            0
  3340. Server.DuplicationChance          0
  3341. Server.CorruptionChance           0
  3342. Client.PacketDrops                0
  3343. Client.DropSpikeChance            0
  3344. Client.DuplicationChance          0
  3345. Client.CorruptionChance           0
  3346.  
  3347. ShaderSystem.DrawStats true
  3348. PerformanceTracker.Interval 99999
  3349. Render.PerfOverlayVisible true
  3350.  
  3351. PerformanceTracker.JuiceLogPerformance true
  3352. Core.DisplayAsserts false
  3353. Core.EnableJuiceTelemetry true
  3354. Core.EnableJuice        true
  3355. CrashDump.WarnBeforeDoingMemoryDump false
  3356. Core.JuiceValidateAsAssert false
  3357. Core.ValidateAsWarning true
  3358.  
  3359. juice-alternative-naming-scheme true
  3360. UdpSocket.ReusePort true
  3361. Network.IncrementServerPortOnFail false
  3362.  
  3363. UI.SpawnOnPressEnter true
  3364.  
  3365. Inventory.postSpawnEquipping true
  3366.  
  3367. Game.DisablePreRound true
  3368. Tickets.DisableTicketBleed true
  3369.  
  3370. ServerMetrics.TickTelemetryEnabled false
  3371. ServerMetrics.PerformanceTelemetryEnabled true
  3372. ServerMetrics.PerformanceProfileStateEnabled true
  3373. ServerMetrics.JuiceTelemetryEnabled true
  3374. ServerMetrics.DbxReportEnabled true
  3375.  
  3376. Player.allowRandomSpawnPointSelection true
  3377.  
  3378. Client.LoadingTimeOut 99999
  3379. Client.LoadedTimeOut 99999
  3380. Client.IngameTimeOut 99999
  3381. Server.IngameTimeOut 99999
  3382. Server.LoadingTimeOut 99999
  3383. BFServer.NoInteractivityTimeoutTime 999999
  3384.  
  3385. Online.Environment Development
  3386. Client.IsPresenceEnabled false
  3387. Server.IsPresenceEnabled false
  3388.  
  3389. ]=]
  3390. '>}},
  3391. {'$file': {'name': 'Scripts/Game.cfg',
  3392.            'payload': <Blob '#!/bin/lua
  3393.  
  3394. core = require "Frost.Core"
  3395.  
  3396. log:debug("Parsing 'Game.cfg' settings")
  3397.  
  3398. local function applySettings(settings)
  3399.     core.parseKeyValueCfgString(settings, _G)
  3400. end
  3401.  
  3402. local function append(table, value)
  3403.     table[#table+1] = value
  3404. end
  3405.  
  3406. --
  3407. -- Note that this is now actually a Lua script (signified by the first line
  3408. -- of this file), to allow conditionals and more advanced settings processing
  3409. --
  3410. -- There are two ways to set settings. One is by editing the key-value string
  3411. -- block below, the other is to actually use Lua code to set settings.
  3412. --
  3413.  
  3414.  
  3415. applySettings [=[
  3416.  
  3417. Game.Level Levels/Frontend/Frontend
  3418. #Game.DefaultLayerInclusion GameMode=ConquestLarge
  3419. #Level.Start E3_Demo
  3420.  
  3421. Server.DebrisClusterEnabled       true
  3422. Server.WaterPhysicsEnabled        true
  3423. Server.IsDesertingAllowed         false
  3424. Server.IsRenderDamageEvents       false
  3425. Server.IsStatsEnabled             false
  3426. Server.IsNetworkStatsEnabled      false
  3427. Server.IsAiEnabled                true
  3428. Server.AILooksIntoCamera          false
  3429. Server.IsDestructionEnabled       true
  3430. Server.IsTreeDestructionEnabled   true
  3431. Server.IsSoldierAnimationEnabled  true
  3432. Server.IsSoldierDetailedCollisionEnabled true
  3433. Server.DisableCutscenes           false
  3434. Server.HavokVisualDebugger        false
  3435. Server.ShowTriggerDebugText       false
  3436. Server.TimeoutGame                false
  3437. Server.TimeoutTime                9999.0 // 5.0
  3438.  
  3439. Server.JobEnable                  true
  3440.    
  3441. Server.ThreadedLoadingEnable      true
  3442.  
  3443. // Internet simulation (only active in multiplayer)
  3444. Server.IsInternetSimulationEnabled false
  3445. Server.MinLatency                 0.1
  3446. Server.MaxLatency                 0.2
  3447. Server.PacketDrops                0.01
  3448. Server.DropSpikeChance            0.03
  3449. Server.MinDropDuration            0.3
  3450. Server.MaxDropDuration            1.0
  3451. Server.ReorderingChance           0.01
  3452. Server.DuplicationChance          0.02
  3453. Server.CorruptionChance           0.01
  3454.  
  3455. enable-category-lookup-error-trigger false
  3456. Server.FallBackToSquadSpawn false
  3457.  
  3458. Server.Playlist DefaultPlayList
  3459. Server.forceCurrentMapOnLoad true
  3460. Server.forceStartMapOnLoad false
  3461.  
  3462. Player.allowDefaultSpawnPointSelection true
  3463. Player.ignoreLevelWarmUpTimers true
  3464.  
  3465. Client.IsSpectator                false
  3466. #Client.ScreenshotToFile          true
  3467. Client.OccludersEnabled           true
  3468. Client.DebrisClusterEnabled       true
  3469. Client.TerrainEnabled             true
  3470. Client.WaterPhysicsEnabled        true
  3471. Client.PauseGameOnStartUp         false
  3472. Client.RenderTags                 false
  3473. Client.EffectsEnabled             true
  3474. Client.EmittersEnabled            true
  3475. Client.OnDamageSpottingEnabled    false
  3476.  
  3477. #Client.ServerIp                   10.20.102.99
  3478. #Client.SecondaryServerIp          10.20.102.63
  3479.  
  3480. Client.DrawStats  false
  3481. Client.DrawFpsStats  true
  3482. Client.DrawObjectLimits  true
  3483. Client.DrawNetworkStats false
  3484.  
  3485. Client.Team                       0
  3486. Client.Kit                        0
  3487.  
  3488. Persistence.AllUnlocksAlwaysUnlocked false
  3489.  
  3490. #Client.SpawnPoint
  3491. Client.InvertPitch                false
  3492. Client.InvertPadPcRightStick      false
  3493. //Flip Y-axis for non-pilots (Infantry and Land Vehicles)
  3494. Client.Scheme0FlipY               false
  3495. //Flip Y-axis for pilots (Air Vehicles)
  3496. Client.Scheme1FlipY               false
  3497. Client.AimScale                   1.0
  3498. Client.HavokVisualDebugger        false
  3499. Client.HavokVDBShowsEffectsWorld  false
  3500.  
  3501. Client.IncomingFrequency 15.0
  3502. Client.IncomingRate 128000
  3503. Client.OutgoingRate 48000
  3504.  
  3505. Server.OutgoingFrequency 10.0
  3506. Server.OutgoingRate 128000
  3507. Server.IncomingRate 48000
  3508.  
  3509. // Internet simulation (only active in multiplayer)
  3510. Client.IsInternetSimulationEnabled false
  3511. Client.MinLatency                 0.1
  3512. Client.MaxLatency                 0.2
  3513. Client.PacketDrops                0.01
  3514. Client.DropSpikeChance            0.03
  3515. Client.MinDropDuration            0.3
  3516. Client.MaxDropDuration            1.0
  3517. Client.ReorderingChance           0.01
  3518. Client.DuplicationChance          0.02
  3519. Client.CorruptionChance           0.01
  3520.  
  3521. Client.ThreadedLoadingEnable      true
  3522. Client.VisualFrameInterpolation   true
  3523.  
  3524. Client.AsyncClientBulletEntity    true
  3525.  
  3526. UI.AmpServerEnabled               false
  3527. UI.AmpWaitForServerConnection     false
  3528. UI.AmpPort                        7534
  3529. UI.OnScreenTraces                 false
  3530. UI.ShowDebugStringTag             false
  3531. UI.OutputEnabled                  false
  3532. UI.VerboseOutputEnabled           false
  3533. // Language can be set to override the language that is getting sent from the web
  3534. UI.Language                       LanguageFormat_Undefined
  3535. UI.FontCacheTextureWidth          1024
  3536. UI.FontCacheTextureHeight         1024
  3537. UI.RenderCommandBufferSize        327680
  3538. UI.RenderVertexBufferSize         327680
  3539. UI.RenderIndexBufferSize          98304
  3540. UI.RenderPcBufferScale            4
  3541. UI.DisableMoviesOnConsoles        true
  3542. UI.MaxMinimapIconsPc              256
  3543. UI.MaxMinimapIconsConsole         64
  3544.  
  3545. //Timeout values
  3546. //Client.LoadingTimeOut 99999
  3547. //Client.LoadedTimeOut  99999
  3548. //Client.IngameTimeOut  99999
  3549. //Server.IngameTimeOut  99999
  3550. //Server.LoadingTimeOut 99999
  3551.  
  3552.  
  3553.  
  3554. Core.LogLevel                     Info
  3555. Core.EnableMemoryDump             false
  3556. Core.CrashOnFatalErrors           true
  3557. Core.ProfileDirectoryName         Battlefield 3
  3558. Core.BugSubmitTool                BST_B4Bug
  3559. Core.InitSeed                     xa37dd45ffe100bfffcc9753aabac325f07cb3fa231144fe2e33ae4783feead2b8a73ff021fac326df0ef9753ab9cdf6573ddff0312fab0b0ff39779eaff312a4f5de65892ffee33a44569bebf21f66d22e54a22347efd375981188743afd99baacc342d88a99321235798725fedcbf43252669dade32415fee89da543bf23d4ex
  3560.  
  3561. Game.LogFileEnable true
  3562. Game.LogFileCollisionMode LFCM_Rotate
  3563.  
  3564. Decal.RingBufferMaxVertexCount 15000
  3565. Decal.StaticBufferMaxVertexCount 1000000
  3566. Decal.DebugWarningsEnable false
  3567.  
  3568. ShaderSystem.DxFixupInputSignaturesEnable false
  3569. ShaderSystem.FrameMemoryBufferSize 16777216
  3570. ShaderSystem.DrawStats false
  3571. ShaderSystem.DrawAdvancedStats false
  3572.  
  3573. Render.JobEnable true
  3574. Render.PerfOverlayEnable 1
  3575. Render.PerfOverlayVisible 0
  3576. Render.DebugRendererEnable 1
  3577. Render.DrawFpsMethod 1
  3578.  
  3579. DebugRender.DxMaxVertexCount 262144
  3580.  
  3581. //Set the Near Plane to 0.06 to help fix the most major clipping issues on weapon animations. -akertz
  3582. Render.NearPlane 0.06
  3583.  
  3584. Render.XenonBufferTwoFramesEnable 1
  3585.  
  3586. RenderDevice.Dx10PlusEnable 1
  3587. RenderDevice.Dx10Dot0Enable 0
  3588. RenderDevice.Dx10Dot1Enable 1
  3589. RenderDevice.Dx11Enable 1
  3590. RenderDevice.DebugInfoEnable 0
  3591. RenderDevice.DebugBreakOnErrorEnable 0
  3592. RenderDevice.DebugBreakOnWarningEnable 0
  3593. RenderDevice.DebugBreakOnInfoEnable 0
  3594. RenderDevice.SwitchToRefEnable 0
  3595. RenderDevice.FullscreenModeEnable true
  3596. RenderDevice.MultiGpuValidationEnable false
  3597.  
  3598. Occlusion.NormalViewDistance 400
  3599. Occlusion.TerrainViewDistance 2000
  3600.  
  3601. WorldRender.MultisampleCount 1
  3602. WorldRender.ShadowmapSliceCount 3
  3603. WorldRender.ShadowmapViewDistance 100
  3604. WorldRender.ShadowmapWidth 1024
  3605. WorldRender.ShadowmapHeight 1024
  3606. WorldRender.ShadowmapsEnable true
  3607. #WorldRender.SubSurfaceRolloffKeyLight 0.33
  3608. #WorldRender.SubSurfaceRolloffLocalLight 1.0
  3609. WorldRender.ShadowmapExtrusionLength 400
  3610.  
  3611. MeshStreaming.Enable 1
  3612.  
  3613. TextureStreaming.Enable 1
  3614. TextureStreaming.PoolSize 200000
  3615. TextureStreaming.MinTextureSize 50000
  3616.  
  3617. # Should really be the new default value
  3618. VisualTerrain.DecalOffsetY 0.04
  3619.  
  3620. TerrainStreaming.DataLoadJobCount 192
  3621.  
  3622. Physics.RemoveRagdollWhenWoken false
  3623. Physics.RemoveFromWorldOnCollisionOverflow false
  3624. Physics.SingleStepCharacter true
  3625. Physics.HeightfieldRSXStreaming true
  3626. #Physics.EnableClientWheelRaycasts true2
  3627.  
  3628. ragdoll-settle-angularvelocity 0.05
  3629. ragdoll-settle-linearvelocity 0.05
  3630. ragdoll-settle-minactivetime 5
  3631.  
  3632. GameAnimation.RespawnOnResourceReload false
  3633. GameAnimation.UseAnimationDrivenCharacter true
  3634. GameAnimation.TemporalLoddingFirstDistance 10000
  3635. GameAnimation.TemporalLoddingSecondDistance 10000
  3636. GameAnimation.TemporalLoddingThirdDistance 10000
  3637. GameAnimation.TemporalLoddingFourthDistance 10000
  3638. GameAnimation.TemporalLoddingFifthDistance 10000
  3639. GameAnimation.TemporalLoddingSixthDistance 10000
  3640.  
  3641. EmitterSystem.EnableJobs true
  3642. EmitterSystem.QuadGroupsJoinNiceAndSimple true
  3643. EmitterSystem.QuadEnableZOcclusion false
  3644.  
  3645. Audio.ReverbAllocSize 983040
  3646.  
  3647. BFServer.NoInteractivityTimeoutTime 300
  3648. BFServer.NoInteractivityThresholdLimit 0.1
  3649. BFServer.DefaultVoiceChannel Squad
  3650.  
  3651. Game.IsGodMode                  false
  3652. Game.IsJesusMode                false
  3653. Game.useSingleWeaponSelector    true
  3654. Game.UseSpeedBasedDetailedCollision true
  3655. Game.AwardsTracking true
  3656. Game.HasUnlimitedAmmo           false
  3657. Game.HasUnlimitedMags           false
  3658. Game.AutoAimEnabled     false
  3659. Game.DifficultyIndex      -1 // Debug difficulty index to data GameConfigurations/Game_Difficulty_Settings.dbx
  3660. //Game.DisablePreRound      true
  3661.  
  3662. #Don't turn this on, use the weapon data to control the FOV instead.
  3663. #SoldierRender.WeaponFovEnable  false
  3664.  
  3665. UI.ConstructibleList Objects/Constructibles/Constructibles
  3666. UI.BatchingEnable true
  3667. UI.MaxVertexCount 32768
  3668. UI.RenderTargetMipmapGenEnable true
  3669. UI.PostProcessSystemEnable true
  3670. UI.PostProcessEnable true
  3671. UI.PostProcessMipmapgenEnable false
  3672.  
  3673. UIMessageComp.debugRendering    false
  3674.  
  3675. UICoopComp.UnlockAllLevels  true
  3676. UILevelComp.UnlockAllSpLevels   true
  3677.  
  3678. Client.UseMouseAndKeyboardSystem    true
  3679. Core.EnableDbErrorPolicy true
  3680.  
  3681. #Core.EnableJuice       false
  3682. Core.JuiceServerIP               10.20.96.145
  3683. Core.JuiceLogLevel      Info
  3684.  
  3685. Core.MemoryStatsEnabled true
  3686.  
  3687. DebugRender.TextQueueMaxLineCount 10
  3688. DebugRender.TextQueueTimeVisible 10.0
  3689. proximity-interact-distance 4.0
  3690.  
  3691. Occlusion.MaxTriangleCount 30000
  3692.  
  3693. Core.DisplayAsserts true
  3694.  
  3695. uiqueue-delay 10
  3696. kill-message-delay 0
  3697. audio-reverb-distance-falloff 0.01
  3698.  
  3699. Blaze.ServerAutoAccountCreation true
  3700.  
  3701.  
  3702. SoldierTest.spawnEnabled false
  3703. SoldierTest.scriptsEnabled false
  3704. controllableEntityJobsEnabled true
  3705.  
  3706. DisplayObjective false;
  3707. DisplayMapMarkers false;
  3708.  
  3709. #
  3710. # ANT settings
  3711. #
  3712.  
  3713. Ant.EnableJobs true
  3714.  
  3715. # Memory Budget Size is a pure cosmetical vars to help content creators manage the memory
  3716. antDebug.MemoryBudgetSize 20
  3717.  
  3718. # Vars
  3719. Ant.MaxInterpolationSlots 100
  3720. Soldier.cameraLagEffect 0
  3721. Ant.BlockOnJobs true
  3722. Ant.ClientEmulatesServer false
  3723. Ant.UseCameraFov false
  3724. Ant.UseWeaponFov false
  3725. Soldier.animate3pWhenIn1p true
  3726. Ant.InterpolatePoses true
  3727.  
  3728. // Allow variable length ticks to be used for console MP
  3729. Ant.AllowVariableTickLength true
  3730.  
  3731. Ant.ReducedInterpolationDistance 10.0
  3732. Ant.TrajectoryOnlyInterpolationDistance 100.0
  3733. Ant.CheckGiantSoldiers 0.0
  3734.  
  3735.  
  3736. Customization.dropGearVelocityScale 0.7
  3737.  
  3738. Core.Heartbeat          false
  3739. Core.HeartbeatInterval  2
  3740.  
  3741. Core.HardwareProfile Hardware_AutoDetect
  3742.  
  3743. // 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.
  3744. Network.ProtocolVersion 60
  3745.  
  3746. Network.TitleId 5
  3747. Network.ClientPort 25100
  3748. Network.ServerPort 25200
  3749. Network.MaxGhostCount 8192
  3750. Network.MaxClientCount 64
  3751. Network.UseFrameManager true
  3752. Network.MaxServerFrameSize 2048
  3753. //Network.MaxClientFrameSize 2048
  3754.  
  3755. //Network.ClientConnectionDebugFilePrefix client
  3756. //Network.ServerConnectionDebugFilePrefix server
  3757.  
  3758. //Demo.TimeDemo demos/perf/demo0
  3759. //Demo.PauseOnStartup true
  3760. //Demo.StartProfilingOnFrame 400
  3761. //Demo.StopProfilingOnFrame 600
  3762. //Demo.LockToPlayerName JLORD1
  3763. //Demo.ForcedDeltaTickCount 0
  3764. //Demo.RecordDemoFileName demos/perf/demo0
  3765. //Demo.PlaybackDemoFileName demos/perf/demo0
  3766.  
  3767. GameSettings.MaxPlayerCount 64
  3768. GameSettings.MaxSpectatorCount 4
  3769.  
  3770. Game.CurrentSKU WW
  3771. Core.AvailableLanguages *
  3772.  
  3773. VeniceOnline.PunkBusterActivateServer false
  3774. VeniceOnline.PunkBusterActivateClient false
  3775. VeniceOnline.ServiceNameOverride null
  3776. VeniceOnline.ClientGameConfigurationOverride null
  3777.  
  3778. Client.IsPresenceEnabled true
  3779. Server.IsPresenceEnabled true
  3780. Online.Environment OnlineEnvironment_Production
  3781. VeniceOnline.BlazeLogLevel 1
  3782.  
  3783. // TEMPORARY SETTINGS. NOT FOR RETAIL (but certainly for Alpha Trial)
  3784. BFServer.PingSite iad
  3785. blaze-connecting-messages true
  3786. LanServerBackend.fakeStatsDownload true
  3787.  
  3788. ]=]
  3789.  
  3790. if platform == 'Win32' then
  3791. applySettings [=[
  3792.     ShaderSystem.MaxAnisotropy 4
  3793.  
  3794.     Client.LoadMenu 0
  3795.     Client.IgnoreClientFireRateMultiplier true
  3796.  
  3797.     Blaze.ClientAutoAccountCreation true       
  3798.    
  3799.     VisualTerrain.VertexBufferHeightsEnable 0
  3800.     VisualTerrain.MeshScatteringInvisibleCellFovFactor 1
  3801.     VisualTerrain.PatchSlotCount 736
  3802.        
  3803.     # Due to differences in codecs and data sizes on Win32 compared to console this needs to be quite big
  3804.     Audio.WaveCacheSize 104857600
  3805.     Audio.WaveCacheHeadroom 5242880
  3806.     Audio.WaveCachePruneTimeLimit 0.0f
  3807.     Audio.DelayLineAllocSize 5242880
  3808.  
  3809.     WorldRender.SpotLightShadowmapEnable 1
  3810.     WorldRender.SpotLightShadowmapResolution 1024
  3811.  
  3812.     # we need to use fullres lensflares on PCs to make sure lensflares are rendered _after_ transparent foreground surfaces
  3813.     # related to http://frostbite.ea.com:8080/browse/BFIII-14492
  3814.     WorldRender.HalfResLensFlaresEnable 0
  3815.  
  3816.     RenderDevice.NvidiaMinDriverVersion 28538
  3817.     RenderDevice.AmdMinDriverVersion 11.7
  3818.     RenderDevice.MinDriverRequired 1
  3819.        
  3820.     # average method instead of minimum
  3821.     Render.DrawFpsMethod 1
  3822.    
  3823. ]=]
  3824.  
  3825.     local onlineEnvironment = cmdLineOption('onlineEnvironment')
  3826.     if onlineEnvironment then
  3827.         onlineEnvironment = string.lower(onlineEnvironment)
  3828.     end
  3829.     if onlineEnvironment == "dev" then
  3830.         applySettings [=[
  3831.             Online.Environment OnlineEnvironment_Development
  3832.         ]=]
  3833.     elseif onlineEnvironment == "test" then
  3834.         applySettings [=[
  3835.             Online.Environment OnlineEnvironment_Test
  3836.         ]=]
  3837.     end    
  3838.  
  3839.     local webMode = commandLine:lookup("webmode")
  3840.     if webMode then
  3841.         webMode = string.lower(webMode)
  3842.     end
  3843.  
  3844.     if webMode == "sp" then
  3845.         applySettings [=[
  3846.             VeniceOnline.EnableSnowroller 1
  3847.             Game.Level Levels/Web_Loading/Web_Loading
  3848.             Window.Minimized 1
  3849.             // TODO - Show intro movie once, and go directly to campain menu
  3850.         ]=]
  3851.    
  3852.     elseif webMode == "spoffline" then
  3853.         applySettings [=[
  3854.             Game.Level Levels/FrontEnd/FrontEnd
  3855.             // TODO - Always show intro movie
  3856.         ]=]
  3857.    
  3858.     elseif webMode == "coop" then
  3859.         applySettings [=[
  3860.             VeniceOnline.EnableSnowroller 1
  3861.             Game.Level Levels/Web_Loading/Web_Loading
  3862.             Client.QuitGameOnServerDisconnect true
  3863.             Window.Minimized 1
  3864.            
  3865.             // TODO - Prune these
  3866.             blaze-connecting-messages true
  3867.             Blaze.ClientAutoAccountCreation true
  3868.         ]=]
  3869.    
  3870.     elseif webMode == "mp" then
  3871.         applySettings [=[
  3872.             VeniceOnline.EnableSnowroller 1
  3873.             Game.Level Levels/Web_Loading/Web_Loading
  3874.             Client.QuitGameOnServerDisconnect true
  3875.             Window.Minimized 1
  3876.  
  3877.             // TODO - Prune these
  3878.             blaze-connecting-messages true
  3879.             Blaze.ClientAutoAccountCreation true
  3880.         ]=]
  3881.  
  3882.     else
  3883.         webMode = nil
  3884.     end
  3885.  
  3886.     -- Common webMode options.
  3887.     if webmode then
  3888.         applySettings [=[
  3889.             Core.DisplayAsserts 0
  3890.             Window.Minimized 1
  3891.         ]=]
  3892.     end
  3893. end
  3894.  
  3895.  
  3896. if platform == 'Ps3' or platform == 'Xenon' then
  3897. applySettings [=[
  3898.  
  3899.     Client.VSyncEnable 1
  3900.  
  3901.     Ant.MaxInterpolationSlots 32
  3902.  
  3903.     Audio.DelayLineAllocSize 1572864
  3904.  
  3905.     # saves 10 mb of memory on xenon
  3906.     UI.ScreenshotEnable 0
  3907.    
  3908.     Decal.RingBufferMaxVertexCount 8192
  3909.     Decal.StaticBufferMaxVertexCount 16384
  3910.        
  3911.     MeshStreaming.MaxPendingLoadCount 2
  3912.     TextureStreaming.MaxPendingLoadCount 2
  3913.    
  3914.     Network.MaxClientCount 24      
  3915.  
  3916.     WorldRender.ShadowmapAccumEnable 1
  3917.     WorldRender.ShadowmapResolution 608
  3918.     WorldRender.ShadowmapSliceCount 4
  3919.     WorldRender.ShadowmapQuality 1
  3920.  
  3921.     WorldRender.SpotLightShadowmapEnable 1
  3922.     WorldRender.MaxSpotLightShadowmapCount 2
  3923.     WorldRender.SpotLightShadowmapResolution 512
  3924.    
  3925.     VisualTerrain.LodScale 0.5
  3926.     VisualTerrain.TextureLevelOffset 2
  3927. ]=]
  3928. end
  3929.  
  3930. if platform == 'Ps3' then
  3931. applySettings [=[
  3932.  
  3933.     TextureStreaming.PoolSize 40000
  3934.     MeshStreaming.PoolSize 50000
  3935.     MeshStreaming.Ps3CellPoolSize 18000
  3936.  
  3937.     VegetationSystem.MaxActiveDistance 200
  3938.  
  3939.     Occlusion.MaxTriangleCount 5000
  3940.  
  3941.     Audio.WaveCacheSize 8925184
  3942.     Audio.WaveCacheHeadroom 131072
  3943.     Audio.WaveCacheRsxSize 20971520
  3944.     Audio.WaveCachePruneTimeLimit 0.0f
  3945.     Audio.WaveCacheRsxPruneTimeLimit 0.0f
  3946.    
  3947.     # ShaderSystem.FrameMemoryBufferSize 3670016
  3948.     ShaderSystem.FrameMemoryBufferSize 5000000
  3949.    
  3950.     Render.Ps3FrameLocalBufferSize 6291456
  3951.     Render.Ps3FrameMainBufferSize 6291456
  3952.     PostProcess.Ps3EdgeMlaaEnable 1
  3953.    
  3954.     Render.Ps3Res1280x704Enable 1
  3955.    
  3956.     GameTime.VSyncSubtractTime 1.0f
  3957. ]=]
  3958.  
  3959.     local superbundles = cmdLineOption('super')
  3960.     if not superbundles then
  3961.         applySettings [=[
  3962.         # Enable DVD emulation when running from Avalanche.
  3963.         Core.HttpDvdSimulation 1
  3964.         Core.HttpDvdSeekPenalty 200
  3965.  
  3966.         # Move textures/meshes to the third streaming lane to remove DVD penalties for them
  3967.         TurboLoader.SoakHddIo 2
  3968.     ]=]
  3969.     end
  3970. end
  3971.  
  3972. if platform == 'Xenon' then
  3973. applySettings [=[
  3974.  
  3975.     Render.XenonRingBufferSize 2621440
  3976.  
  3977.     VegetationSystem.MaxActiveDistance 100
  3978.  
  3979.     TextureStreaming.PoolSize 50000
  3980.     MeshStreaming.PoolSize 40000
  3981.  
  3982.     MeshStreaming.XenonFinalPoolSizeAdjustment 1000
  3983.     MeshStreaming.XenonRetailPoolSizeAdjustment 1000
  3984.     TextureStreaming.XenonFinalPoolSizeAdjustment 0
  3985.     TextureStreaming.XenonRetailPoolSizeAdjustment 15000
  3986.  
  3987.     Occlusion.MaxTriangleCount 5000
  3988.  
  3989.     Audio.WaveCacheSize 26214400
  3990.     Audio.WaveCacheHeadroom 65536
  3991.     Audio.WaveCachePruneTimeLimit 0.0f
  3992.  
  3993.     ShaderSystem.FrameMemoryBufferSize 6000000
  3994.     ShaderSystem.XenonDispatchCmdBufferSize 1048576
  3995.  
  3996.     WorldRender.XenonOutdoorLightTilingEnable 1
  3997.     WorldRender.FxaaEnable 1
  3998.    
  3999.     VisualTerrain.VertexBufferHeightsEnable 0
  4000.    
  4001.     PostProcess.LUTGammaR 1.3
  4002.     PostProcess.LUTGammaG 1.3
  4003.     PostProcess.LUTGammaB 1.3
  4004.     PostProcess.LUTGammaCurbOffset 0.1
  4005.    
  4006. ]=]
  4007.  
  4008.     local superbundles = cmdLineOption('super')
  4009.     if superbundles then
  4010.         applySettings [=[
  4011.             #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
  4012.             #Game.ForceDisableFreeStreaming true
  4013.         ]=]
  4014.     else
  4015.         applySettings [=[
  4016.             # Enable DVD emulation when running from Avalanche.
  4017.             Core.HttpDvdSimulation 1
  4018.             Core.HttpDvdSeekPenalty 200
  4019.             # Move textures/meshes to the third streaming lane to remove DVD penalties for them
  4020.             TurboLoader.SoakHddIo 2
  4021.         ]=]
  4022.     end
  4023. end
  4024.  
  4025.  
  4026. local level = cmdLineOption('level')
  4027. if level then
  4028.     log:debug("Level specified on commandline, enabling fast startup")
  4029.  
  4030.     -- Level names without slashes are assumed to be shorthand for
  4031.     -- Levels/name/name to go with Venice's epic level naming convention
  4032.     if not string.find(level, "/") then
  4033.         level = "Levels/" .. level .. "/" .. level
  4034.     end
  4035.  
  4036.     Game.Level = level
  4037. end
  4038.  
  4039. if config:lower() == 'retail' then
  4040.     if platform:lower() == 'ps3' then
  4041.         applySettings [=[
  4042.             Network.ProtocolVersion 1000
  4043.         ]=]
  4044.     end
  4045.     if platform:lower() == 'xenon' then
  4046.         applySettings [=[
  4047.             Network.ProtocolVersion 2000
  4048.         ]=]
  4049.     end
  4050. end
  4051.  
  4052. local dedicatedServer = cmdLineOption('dedicated')
  4053. if dedicatedServer then
  4054.     applySettings [=[
  4055.         #HACK: We need to set a level that always exists on the server, unfortunatley there is no such level so we just pick subway...
  4056.         Game.Level Levels/MP_Subway/MP_Subway
  4057.         Game.DefaultLayerInclusion GameMode=ConquestSmall0
  4058.    
  4059.         Server.ThreadingEnable false
  4060.         Ant.EnableJobs false
  4061.  
  4062.         ServerMetrics.Enabled false
  4063.         ServerMetrics.TransactionTelemetryEnabled true
  4064.  
  4065.         ServerMetrics.PerformanceTelemetryEnabled true
  4066.         ServerMetrics.PerformanceProfileStateEnabled true
  4067.     ]=]
  4068.    
  4069.  
  4070.     local protocolVersionCmd = cmdLineOption('protocolVersion')
  4071.     if protocolVersionCmd then
  4072.         Network.ProtocolVersion = protocolVersionCmd
  4073.    
  4074.     else
  4075.         local platformCmd = cmdLineOption('platform')
  4076.         local usingSuperBundles = cmdLineOption('super')
  4077.         if platformCmd and usingSuperBundles then
  4078.             if platformCmd:lower() == 'ps3' then
  4079.                 Network.ProtocolVersion = '1000'
  4080.             elseif platformCmd:lower() == 'xenon' then
  4081.                 Network.ProtocolVersion = '2000'
  4082.             elseif platformCmd:lower() == 'win32' then
  4083.                 Network.ProtocolVersion = '60'
  4084.             end
  4085.         end
  4086.     end
  4087. end
  4088. '>}},
  4089. {'$file': {'name': 'Scripts/Local.cfg',
  4090.            'payload': <Blob "// Try and not add things to game.cfg if it's not meant to be checked in!
  4091. // Add here settings that you would like to override
  4092.  
  4093.  
  4094. //
  4095. ">}},
  4096. {'$file': {'name': 'Scripts/LocalE3Win32.cfg',
  4097.            'payload': <Blob 'Client.DrawFps 0
  4098. ShaderSystem.DrawStats 0
  4099. Client.DrawObjectLimits 0
  4100. Core.DisplayAsserts 0
  4101. Window.Fullscreen 1
  4102. Core.MemoryStatsEnabled 0
  4103.  
  4104. -- Should be on for SP Levels
  4105. -- GameTime.ForceDeltaTickCount 1
  4106.  
  4107. -- Uncomment line below to remove all logging and prevent harmful log spam during MP test
  4108. -- Core.LogLevel CllFatalAssert
  4109.  
  4110.  
  4111.  
  4112. -- In case of emergency
  4113.  
  4114. -- WorldRender.TransparencyShadowmapsEnable 1
  4115. -- WorldRender.ShadowmapViewDistance 200
  4116. -- WorldRender.ShadowmapResolution 2048
  4117. -- WorldRender.ShadowmapQuality 1
  4118. -- WorldRender.ShadowmapViewDistance 100
  4119. -- WorldRender.FxaaEnable 1
  4120. -- WorldRender.MotionBlurEnable 1
  4121. -- PostProcess.DynamicAOEnable 1
  4122.  
  4123. -- WorldRender.MultisampleCount 4
  4124. '>}},
  4125. {'$file': {'name': 'Scripts/LocalEditor.cfg',
  4126.            'payload': <Blob "// Try and not add things to game.cfg if it's not meant to be checked in!
  4127. // Add here settings that you would like to override
  4128. // This file is executed when Frostbite is launched from FrostEd
  4129. ">}},
  4130. {'$file': {'name': 'Scripts/LocalGame.cfg',
  4131.            'payload': <Blob "// Try and not add things to game.cfg if it's not meant to be checked in!
  4132. // Add here settings that you would like to override
  4133. // This file is executed when Frostbite is executed separately (i.e not from FrostEd)
  4134. ">}},
  4135. {'$file': {'name': 'Scripts/PlaytestCommon.cfg',
  4136.            'payload': <Blob 'client-matchmaking-map0           paris_line2
  4137. client-matchmaking-map1           mp_berlin
  4138. blaze-server-state-change-logging true
  4139.  
  4140. ShaderSystem.Dx10DelayedShaderLoadingEnable false
  4141.  
  4142. Game.Level            Levels/GarrisonTest/GarrisonTest
  4143.  
  4144. Game.HasUnlimitedMags           false
  4145.  
  4146. Core.EnableJuice true
  4147. Core.EnableBitstreamTypeVerification false
  4148. Core.JuiceUserType      jutDev
  4149. Core.AssertLimit 5
  4150.  
  4151. Client.IsPresenceEnabled          true
  4152. Client.SecondaryServerIp          10.20.102.69
  4153. Client.MemoryStatsEnabled false
  4154. Server.IsPresenceEnabled          false
  4155.  
  4156. //Client.LoadingTimeout 240
  4157. //Client.LoadedTimeout  60
  4158. //Client.IngameTimeout  15
  4159. //Server.IngameTimeout  30
  4160. //Server.LoadingTimeout 60
  4161.  
  4162. // Internet simulation (only active in multiplayer)
  4163. Client.MinLatency                 0.1
  4164. Client.MaxLatency                 0.1
  4165.  
  4166. RenderDevice.NvidiaMinDriverRequired false
  4167.  
  4168. // Online.MatchmakeImmediately true
  4169. // Online.MatchmakingToken fooo
  4170. Online.BlazeWalUrl 10.20.102.120:1246
  4171. Online.EnableSnowroller true
  4172. Online.SnowrollerOrphanTimeout 10
  4173.  
  4174. LanServerBackend.fakeStatsDownload true
  4175. blaze-offline-notification true
  4176.  
  4177. // Game.EnableSurveys   true
  4178.  
  4179. // Client.IncomingRate 512000
  4180. // Server.OutgoingRate 512000
  4181.  
  4182. Client.IncomingRate 150000
  4183. Server.OutgoingRate 150000
  4184. Network.TimeNudgeGhostFrequencyFactor 0
  4185.  
  4186. Network.UseFrameManager true
  4187. // Network.MaxServerFrameSize 4096
  4188. Network.MaxServerFrameSize 2048
  4189. // Physics.SingleStepCharacter false
  4190.  
  4191. // Window.Fullscreen true
  4192. Window.FullscreenAutosize true
  4193.  
  4194. 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;
  4195.  
  4196.  
  4197. // Player.zeroRespawnTimeOnSuicide true
  4198.  
  4199. FragalyzerRecorder.StartAutoTrackOnSquadCreate true
  4200.  
  4201. DebugRender.TextQueueMaxLineCount 3
  4202.  
  4203. Player.ignoreLevelWarmUpTimers true
  4204.  
  4205. Core.HardwareCpuBias -1
  4206. Core.HardwareGpuBias -0.5
  4207.  
  4208. Network.TimeNudgeBias 0.05
  4209.  
  4210. Core.DialogLevel 9
  4211.  
  4212. 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;
  4213.  
  4214. Core.Heartbeat          true
  4215. Core.HeartbeatInterval  30
  4216.  
  4217. // for when using the beta.venice.dice.se site
  4218. // Server.BlazeServiceName bf3-beta-2009-pc
  4219.  
  4220. // newline
  4221. '>}},
  4222. {'$file': {'name': 'Scripts/PlaytestLocal.cfg',
  4223.            'payload': <Blob 'Game.HasUnlimitedMags true
  4224. Explosion.TriggerMaskVolumes true
  4225. Ant.ForceLodDistance 0
  4226. SoldierTest.spawnEnabled true
  4227. SoldierTest.scriptsEnabled true'>}},
  4228. {'$file': {'name': 'Scripts/PlaytestServer.cfg',
  4229.            'payload': <Blob '//Server Level
  4230. #Game.Level     Levels/Level_01/Level_01
  4231. Game.Level      Levels/Level_02/Level_02
  4232. #Game.Level     Levels/Level_03/Level_03
  4233. #Game.Level     Levels/Level_04/Level_04
  4234. #Game.Level     Levels/Level_05/Level_05
  4235. #Game.Level     Levels/Level_06/Level_06
  4236. Game.Level      Levels/Testrange_Rome_MP05/Testrange_Rome_MP05
  4237.  
  4238. //Game mode (16/64 player)
  4239. #Game.DefaultLayerInclusion       StartupMode=Game;GameMode=ConquestSmall
  4240. Game.DefaultLayerInclusion        StartupMode=Game;GameMode=KingOfTheHill
  4241. #Game.DefaultLayerInclusion       StartupMode=Game;GameMode=ConquestLarge
  4242.  
  4243. Network.MaxClientCount 24
  4244. GameSettings.MaxPlayerCount 24
  4245.  
  4246. Server.IsPresenceEnabled          true
  4247. Server.QueryPortOffset            100
  4248. Core.DisplayAsserts     false
  4249. CrashDump.WarnBeforeDoingMemoryDump false
  4250.  
  4251. // Allow players to spawn even if server blaze connection is down
  4252. Server.statisticsFallback true
  4253.  
  4254. ServerMetrics.Enabled true
  4255. ServerMetrics.PerformanceProfileStateEnabled true
  4256. ServerMetrics.PerformanceTelemetryEnabled true
  4257.  
  4258. // Internet simulation (only active in multiplayer)
  4259. Server.MinLatency                 0.1
  4260. Server.MaxLatency                 0.1
  4261.  
  4262. Demo.RecordDemoFilename demo/PlaytestRecording0
  4263. Demo.AllowOverwrite false
  4264.  
  4265. GameReport.DebugOutput true
  4266.  
  4267. # Server.Playlist Level_01_only
  4268. Server.forcePlaylist false
  4269. Server.forceStartMapOnLoad false
  4270. Game.DisablePreRound false
  4271.  
  4272. # SoldierTest.spawnEnabled true
  4273. # SoldierTest.scriptsEnabled true
  4274.  
  4275. // Just to remember the newline'>}},
  4276. {'$file': {'name': 'Scripts/ProtocolVersion.cfg',
  4277.            'payload': <Blob 'Network.Version           "V0.74"
  4278. Network.ProtocolVersion                       74
  4279. '>}},
  4280. {'$file': {'name': 'Scripts/PS3Game.cfg',
  4281.            'payload': <Blob '-url http://10.20.108.102:1338 -host 10.20.108.102 -branch VeniceRetailPc
  4282. '>}},
  4283. {'$file': {'name': 'Scripts/TestLevel.cfg',
  4284.            'payload': <Blob 'Game.FastStartupEnable            true
  4285. Game.Level                        ../EditorLevels/TestLevel
  4286. Server.IsAiEnabled                false
  4287. Server.IsGodMode                  true
  4288. UI.HudEnable                      false
  4289. '>}},
  4290. {'$file': {'name': 'Scripts/XenonGame.cfg',
  4291.            'payload': <Blob '-url http://10.20.108.102:1338 -host 10.20.108.102 -branch VeniceRetailPc
  4292. '>}},
  4293. {'$file': {'name': 'Scripts/Debug/cycleMpLevels',
  4294.            'payload': <Blob 'Core.LogLevel FatalAssert
  4295.  
  4296. server.loadLevel Levels/MP_001/MP_001
  4297. sleep 60
  4298. server.restartLevel
  4299. sleep 60
  4300. server.endRound 0
  4301. sleep 60
  4302. server.endRound 1
  4303. sleep 60
  4304.  
  4305. server.loadLevel Levels/MP_003/MP_003
  4306. sleep 60
  4307. server.restartLevel
  4308. sleep 60
  4309. server.endRound 0
  4310. sleep 60
  4311. server.endRound 1
  4312. sleep 60
  4313.  
  4314. server.loadLevel Levels/MP_007/MP_007
  4315. sleep 60
  4316. server.restartLevel
  4317. sleep 60
  4318. server.endRound 0
  4319. sleep 60
  4320. server.endRound 1
  4321. sleep 60
  4322.  
  4323. server.loadLevel Levels/MP_011/MP_011
  4324. sleep 60
  4325. server.restartLevel
  4326. sleep 60
  4327. server.endRound 0
  4328. sleep 60
  4329. server.endRound 1
  4330. sleep 60
  4331.  
  4332. server.loadLevel Levels/MP_012/MP_012
  4333. sleep 60
  4334. server.restartLevel
  4335. sleep 60
  4336. server.endRound 0
  4337. sleep 60
  4338. server.endRound 1
  4339. sleep 60
  4340.  
  4341. server.loadLevel Levels/MP_013/MP_013
  4342. sleep 60
  4343. server.restartLevel
  4344. sleep 60
  4345. server.endRound 0
  4346. sleep 60
  4347. server.endRound 1
  4348. sleep 60
  4349.  
  4350. server.loadLevel Levels/MP_017/MP_017
  4351. sleep 60
  4352. server.restartLevel
  4353. sleep 60
  4354. server.endRound 0
  4355. sleep 60
  4356. server.endRound 1
  4357. sleep 60
  4358.  
  4359. server.loadLevel Levels/MP_018/MP_018
  4360. sleep 60
  4361. server.restartLevel
  4362. sleep 60
  4363. server.endRound 0
  4364. sleep 60
  4365. server.endRound 1
  4366. sleep 60
  4367.  
  4368. server.loadLevel Levels/MP_Subway/MP_Subway
  4369. sleep 60
  4370. server.restartLevel
  4371. sleep 60
  4372. server.endRound 0
  4373. sleep 60
  4374. server.endRound 1
  4375. sleep 60
  4376.  
  4377. main.playCommands Scripts/Debug/cycleMpLevels
  4378. '>}},
  4379. {'$file': {'name': 'Scripts/Debug/cycleSpLevels',
  4380.            'payload': <Blob 'Core.LogLevel FatalAssert
  4381.  
  4382. server.loadLevel Levels/SP_New_York/SP_New_York
  4383. sleep 60
  4384. server.restartLevel
  4385. sleep 240
  4386. client.restartFromLastCheckpoint
  4387. sleep 60
  4388.  
  4389. server.loadLevel Levels/SP_Earthquake/SP_Earthquake
  4390. sleep 60
  4391. server.restartLevel
  4392. sleep 180
  4393. client.restartFromLastCheckpoint
  4394. sleep 60
  4395.  
  4396. server.loadLevel Levels/SP_Earthquake2/SP_Earthquake2
  4397. sleep 60
  4398. server.restartLevel
  4399. sleep 180
  4400. client.restartFromLastCheckpoint
  4401. sleep 60
  4402.  
  4403. server.loadLevel Levels/SP_Jet/SP_Jet
  4404. sleep 60
  4405. server.restartLevel
  4406. sleep 180
  4407. client.restartFromLastCheckpoint
  4408. sleep 60
  4409.  
  4410. server.loadLevel Levels/SP_Bank/SP_Bank
  4411. sleep 60
  4412. server.restartLevel
  4413. sleep 180
  4414. client.restartFromLastCheckpoint
  4415. sleep 60
  4416.  
  4417. server.loadLevel Levels/SP_Paris/SP_Paris
  4418. sleep 60
  4419. server.restartLevel
  4420. sleep 180
  4421. client.restartFromLastCheckpoint
  4422. sleep 60
  4423.  
  4424. server.loadLevel Levels/SP_Tank/SP_Tank
  4425. sleep 60
  4426. server.restartLevel
  4427. sleep 180
  4428. client.restartFromLastCheckpoint
  4429. sleep 60
  4430.  
  4431. server.loadLevel Levels/SP_Tank_b/SP_Tank_b
  4432. sleep 60
  4433. server.restartLevel
  4434. sleep 180
  4435. client.restartFromLastCheckpoint
  4436. sleep 60
  4437.  
  4438. server.loadLevel Levels/SP_Sniper/SP_Sniper
  4439. sleep 60
  4440. server.restartLevel
  4441. sleep 180
  4442. client.restartFromLastCheckpoint
  4443. sleep 60
  4444.  
  4445. server.loadLevel Levels/SP_Valley/SP_Valley
  4446. sleep 60
  4447. server.restartLevel
  4448. sleep 180
  4449. client.restartFromLastCheckpoint
  4450. sleep 60
  4451.  
  4452. server.loadLevel Levels/SP_Villa/SP_Villa
  4453. sleep 60
  4454. server.restartLevel
  4455. sleep 180
  4456. client.restartFromLastCheckpoint
  4457. sleep 60
  4458.  
  4459. server.loadLevel Levels/SP_Finale/SP_Finale
  4460. sleep 60
  4461. server.restartLevel
  4462. sleep 180
  4463. client.restartFromLastCheckpoint
  4464. sleep 60
  4465.  
  4466. main.playCommands Scripts/Debug/cycleSpLevels'>}},
  4467. {'$file': {'name': 'Scripts/Debug/cycleSpLevelsViaMainMenu',
  4468.            'payload': <Blob 'Core.LogLevel FatalAssert
  4469.  
  4470. server.loadLevel Levels/SP_New_York/SP_New_York
  4471. sleep 60
  4472. server.restartLevel
  4473. sleep 240
  4474. client.restartFromLastCheckpoint
  4475. sleep 60
  4476. server.loadLevel Levels/FrontEnd/FrontEnd
  4477. sleep 30
  4478.  
  4479. server.loadLevel Levels/SP_Earthquake/SP_Earthquake
  4480. sleep 60
  4481. server.restartLevel
  4482. sleep 180
  4483. client.restartFromLastCheckpoint
  4484. sleep 60
  4485. server.loadLevel Levels/FrontEnd/FrontEnd
  4486. sleep 30
  4487.  
  4488. server.loadLevel Levels/SP_Earthquake2/SP_Earthquake2
  4489. sleep 60
  4490. server.restartLevel
  4491. sleep 180
  4492. client.restartFromLastCheckpoint
  4493. sleep 60
  4494. server.loadLevel Levels/FrontEnd/FrontEnd
  4495. sleep 30
  4496.  
  4497. server.loadLevel Levels/SP_Jet/SP_Jet
  4498. sleep 60
  4499. server.restartLevel
  4500. sleep 180
  4501. client.restartFromLastCheckpoint
  4502. sleep 60
  4503. server.loadLevel Levels/FrontEnd/FrontEnd
  4504. sleep 30
  4505.  
  4506. server.loadLevel Levels/SP_Bank/SP_Bank
  4507. sleep 60
  4508. server.restartLevel
  4509. sleep 180
  4510. client.restartFromLastCheckpoint
  4511. sleep 60
  4512. server.loadLevel Levels/FrontEnd/FrontEnd
  4513. sleep 30
  4514.  
  4515. server.loadLevel Levels/SP_Paris/SP_Paris
  4516. sleep 60
  4517. server.restartLevel
  4518. sleep 180
  4519. client.restartFromLastCheckpoint
  4520. sleep 60
  4521. server.loadLevel Levels/FrontEnd/FrontEnd
  4522. sleep 30
  4523.  
  4524. server.loadLevel Levels/SP_Tank/SP_Tank
  4525. sleep 60
  4526. server.restartLevel
  4527. sleep 180
  4528. client.restartFromLastCheckpoint
  4529. sleep 60
  4530. server.loadLevel Levels/FrontEnd/FrontEnd
  4531. sleep 30
  4532.  
  4533. server.loadLevel Levels/SP_Tank_b/SP_Tank_b
  4534. sleep 60
  4535. server.restartLevel
  4536. sleep 180
  4537. client.restartFromLastCheckpoint
  4538. sleep 60
  4539. server.loadLevel Levels/FrontEnd/FrontEnd
  4540. sleep 30
  4541.  
  4542. server.loadLevel Levels/SP_Sniper/SP_Sniper
  4543. sleep 60
  4544. server.restartLevel
  4545. sleep 180
  4546. client.restartFromLastCheckpoint
  4547. sleep 60
  4548. server.loadLevel Levels/FrontEnd/FrontEnd
  4549. sleep 30
  4550.  
  4551. server.loadLevel Levels/SP_Valley/SP_Valley
  4552. sleep 60
  4553. server.restartLevel
  4554. sleep 180
  4555. client.restartFromLastCheckpoint
  4556. sleep 60
  4557. server.loadLevel Levels/FrontEnd/FrontEnd
  4558. sleep 30
  4559.  
  4560. server.loadLevel Levels/SP_Villa/SP_Villa
  4561. sleep 60
  4562. server.restartLevel
  4563. sleep 180
  4564. client.restartFromLastCheckpoint
  4565. sleep 60
  4566. server.loadLevel Levels/FrontEnd/FrontEnd
  4567. sleep 30
  4568.  
  4569. server.loadLevel Levels/SP_Finale/SP_Finale
  4570. sleep 60
  4571. server.restartLevel
  4572. sleep 180
  4573. client.restartFromLastCheckpoint
  4574. sleep 60
  4575. server.loadLevel Levels/FrontEnd/FrontEnd
  4576. sleep 30
  4577.  
  4578. main.playCommands Scripts/Debug/cycleSpLevelsViaMainMenu'>}},
  4579. {'$file': {'name': 'Scripts/Debug/eorLevel',
  4580.            'payload': <Blob 'Core.LogLevel FatalAssert
  4581.  
  4582. server.endRound 1
  4583. sleep 90
  4584.  
  4585. main.playCommands Scripts/Debug/eorLevel'>}},
  4586. {'$file': {'name': 'Scripts/Debug/joinMultiplayer',
  4587.            'payload': <Blob 'client.joinMultiplayer 10.20.104.109
  4588. sleep 60
  4589. client.exitGame
  4590. sleep 30
  4591.  
  4592. main.playCommands Scripts/Debug/joinMultiplayer'>}},
  4593. {'$file': {'name': 'Scripts/Debug/restartCheckpoint',
  4594.            'payload': <Blob 'Core.LogLevel FatalAssert
  4595.  
  4596. client.restartFromLastCheckpoint
  4597. sleep 30
  4598.  
  4599. main.playCommands Scripts/Debug/restartCheckpoint'>}},
  4600. {'$file': {'name': 'Scripts/Debug/restartLevel',
  4601.            'payload': <Blob 'Core.LogLevel FatalAssert
  4602.  
  4603. server.restartLevel
  4604. sleep 60
  4605.  
  4606. main.playCommands Scripts/Debug/restartLevel'>}},
  4607. {'$file': {'name': 'Scripts/Debug/stressEnterAndDestroyVehicles',
  4608.            'payload': <Blob 'Core.LogLevel FatalAssert
  4609.  
  4610. server.spawnsoldier 0 1 0
  4611. server.spawnsoldier 0 1 0
  4612. server.spawnsoldier 0 2 0
  4613. server.spawnsoldier 0 2 0
  4614. server.spawnsoldier 0 2 0
  4615. sleep 1
  4616.  
  4617. server.playerEnterClosestVehicle 1 true
  4618. server.playerEnterClosestVehicle 2 true
  4619. server.playerEnterClosestVehicle 3 true
  4620. server.playerEnterClosestVehicle 4 true
  4621. server.playerEnterClosestVehicle 5 true
  4622. sleep 1
  4623.  
  4624. server.damageSoldier 1 2000 true
  4625. server.damageSoldier 2 2000 true
  4626. server.damageSoldier 3 20
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement