insurgencysandstorm吧 关注:16,988贴子:183,073

打造属于自己的本地游戏体验

只看楼主收藏回复


土豪枪王镇楼


IP属地:广东1楼2021-07-31 16:28回复
    本贴主要研究如何提高本地游戏中的自定义程度,让大家在本地游戏中玩得尽兴(也可能更容易厌倦)。主要通过添加mutator模式,以及添加/更改Game.ini文件中的参数取值来更改游戏中的装备配置、AI难度等游戏规则。其实这些网上早就有了,只不过大都用于服务器建立,仅有部分玩家知道如何运用于本地游戏,虽然吧里也有介绍更改Game.ini里面的一些参数的帖子,但细节还不是很全面,比较零碎…综上,俺就来氵一贴,整合一下前人的经验,并将自己的一些见解分享给大家。


    IP属地:广东2楼2021-07-31 16:30
    回复
      首先介绍如何添加mutator模式,由于游戏内控制台需要输入代码才能加mutator,本贴仅介绍最粗暴的方式——更改启动选项,见下图,Steam主页界面左侧游戏栏目中对应条目右键->属性。

      弹出窗口:


      IP属地:广东3楼2021-07-31 16:32
      回复
        启动选项里可输入多条指令,指令间用一个空格隔开,如“-dx12 -mutators=????”(-dx12只是启动引擎的DirectX12渲染机制,提高硬件多线程效率,需要硬件支持,可以去掉)。指令若带有多个参数,参数间用一个英文逗号隔开,如“-mutators=AllYouCanEat,FastMovement,FullyLoaded,Vampirism”,这里的-mutators=???指令就是用来添加mutator模式的。
        游戏已内置了多个mutator模式供服务器选择使用,至于具体有哪些请参考其他建服教程,本帖只列举介绍部分模式:

        个人推荐:
        不想受到装备点数限制的直接用AllYouCanEat。
        想要同时持有不同职业的装备的就用FullyLoaded,但是这样就无法呼叫支援
        喜欢边跑边射的就用FastMovement提高行动速度。
        喜欢打僵尸的就用Frenzy。
        CS玩家请用LockedAim,NoAim
        不想那么容易死的可用Vampirism或BulletSponge(两个都用也行,就是敌人太难死了)。
        有自虐倾向的请用Broke,HotPotato,NoDrop,Ultralethal
        另外,部分mutator可通过Game.ini文件修改规则/参数,如Vampirism模式,可修改生命值的上限,以及是否可以通过友军伤害增加生命值


        IP属地:广东4楼2021-07-31 16:45
        收起回复
          下面介绍Game.ini文件的定位与修改(与服务器端的设置基本无异)
          这个文件在C:\Users\“你的用户名”\AppData\Local\Insurgency\Saved\Config\WindowsClient下。需要注意:AppData文件夹是默认隐藏的!!!
          在文件资源管理器里逐次打开,或者直接在路径输入栏里输
          %LOCALAPPDATA%\Insurgency\Saved\Config\WindowsClient\
          然后按回车Enter即可跳转


          IP属地:广东5楼2021-07-31 16:54
          收起回复
            Game.ini文件用于重新自定义游戏内的一些参数的取值,内容形式一般为“参数名称=取值”,并通过“[/???/???]”的路径形式区分所属功能模块部分,已知简化后的大致模块结构(个人理解)可如下图表示:


            IP属地:广东6楼2021-07-31 16:56
            收起回复
              再下面就开始介绍本人已知的内容及相关参数的意义。
              !!!注意:
              (1)以英文分号“;”开头的一整行(hang)为注释,仅用于备注,不起其他任何作用。
              (2)每个参数的类型和取值范围不尽相同,异常赋值可能导致bug或者不起作用。
              (3)名字以b开头的参数,如bAllowStrafing,一般为bool类型,取值有两:True意为真,False为假。
              (4)非b开头的参数类型要么是整数int/浮点数float之类的数值类型(一般是非负的),要么是字符串(路径/代码)/列表/字典等类型(这些在此不作深入研究)。
              (5)对于某些取值在0.0~1.0的参数,尽量不要取极值,否则可能出bug。这种情况一般发生在名字含DPR的参数(用于设置重生所需达到的阵亡占比),其他的参数一般可以取极值。
              (6)对于用来设定时间的参数,一般以秒为单位。
              (7)对于跟距离有关的参数(视距、听力范围),度量方式尚不明确(也许是相同的)。
              (8)对于作用尚不明确的参数,最好不更改其取值,保持默认取值,或者整行删掉(即不对该参数进行重新赋值)。
              下一楼的内容可直接粘贴到Game.ini里(无意外的话),最好先把已有的内容删掉。


              IP属地:广东7楼2021-07-31 17:02
              收起回复
                ;AI系统设置
                [/Script/AIModule.AISystem]
                ;允许bot在移动中扫射压制敌人
                bAllowStrafing=True
                ;作用尚不明确
                bAcceptPartialPaths=True
                ;作用尚不明确
                bEnableBTAITasks=True
                ;作用尚不明确
                bFinishMoveOnGoalOverlap=True
                ;-----------------------------------------------------------------
                ;AI控制器设置
                [/Script/AIModule.AIController]
                ;允许bot在静止时对敌人扫射
                bAllowStrafe=True
                ;作用尚不明确
                bLOSflag=True
                ;作用尚不明确
                bSkipExtraLOSChecks=False
                ;作用尚不明确
                bWantsPlayerState=True
                ;启用高级战术
                bAdvancedTactics=True
                ;作用尚不明确
                bSetControlRotationFromPawnOrientation=True
                ;-----------------------------------------------------------------
                ;AI感知组件设置
                [/Script/AIModule.AIPerceptionComponent]
                ;bot周遭感知角度(单位:度)
                PeripheralVisionAngle=360
                ;-----------------------------------------------------------------
                ;AI听觉设置
                [/Script/AIModule.AISenseConfig_Hearing]
                ;基本听力范围(单位尚不明确)
                HearingRange=768
                ;极限听力范围(单位尚不明确)
                LoSHearingRange=1500
                ;-----------------------------------------------------------------
                ;AI视力设置
                [/Script/AIModule.AISenseConfig_Sight]
                ;bot视角(单位:度)
                PeripheralVisionAngleDegrees=170
                ;最后已知点附近的可透视范围(单位尚不明确):如果敌人处于最后被bot发现所在的位置附近的该范围数值内,他会被bot看到,默认值为500
                AutoSuccessRangeFromLastSeenLocation=10
                ;基本视距范围(单位:尚不明确)
                SightRadius=2700
                ;极限视距范围(单位:尚不明确)
                LoseSightRadius=3000
                ;-----------------------------------------------------------------
                ;AI环境检查管理器设置
                [/Script/AIModule.EnvQueryManager]
                ;检查环境的时间间隔,越低的数值会消耗越多的CPU资源
                QueryCountWarningInterval=5.0


                IP属地:广东8楼2021-07-31 17:10
                收起回复
                  ;-----------------------------------------------------------------
                  ;模式HeadshotOnly设置
                  [/Script/Insurgency.Mutator_HeadshotOnly]
                  ;近战产生伤害
                  bCheckMeleeDamage=False
                  ;-----------------------------------------------------------------
                  ;模式HotPotato设置
                  [/Script/Insurgency.Mutator_HotPotato]
                  ;掉落手雷种类(代码),默认为Security的M67手雷
                  GrenadeClass=/Game/Game/Actors/Projectiles/BP_Projectile_M67.BP_Projectile_M67_C
                  ;从地上拾起扔回去的武器种类(代码),默认为Security的M67手雷
                  ThrowbackWeaponClass=/Game/Game/Actors/Weapons/Grenade/BP_Grenade_M67.BP_Grenade_M67_C
                  ;敌人被爆头时无手雷掉落
                  bIgnoreHeadshots=False
                  ;仅有bot被击杀时掉落手雷
                  bBotsOnly=False
                  ;-----------------------------------------------------------------
                  ;模式Vampirism设置
                  [/Script/Insurgency.Mutator_Vampirism]
                  ;可通过友军伤害来增加自身生命值
                  bCountFriendlyFire=False
                  ;最大生命值
                  MaxHealth=125
                  ;-----------------------------------------------------------------
                  ;模式Frenzy设置
                  [/Script/Insurgency.Mutator_Frenzy]
                  ;启用bot
                  bBots=True
                  ;自动填充bot敌人数量
                  SoloEnemies=16


                  IP属地:广东9楼2021-07-31 17:12
                  收起回复
                    ;-----------------------------------------------------------------
                    ;游戏模式通用设置
                    [/Script/Insurgency.INSGameMode]
                    ;服务器名称(本地游戏可忽略)
                    ServerHostname=[INS] Coop (http://www.insurgency.pro)
                    ;作用尚不明确
                    Rulesets=
                    ;开启屏幕右上角的击杀反馈信息
                    bKillFeed=True
                    ;开启观众状态下的击杀反馈信息
                    bKillFeedSpectator=True
                    ;在被击杀后显示杀你的敌人的信息
                    bKillerInfo=True
                    ;在被击杀后显示杀你的敌人与你之间的距离
                    bKillerInfoRevealDistance=True
                    ;启用友军伤害反弹
                    bEnforceFriendlyFireReflect=False
                    ;触发友军伤害反弹的最低伤害总量
                    MinimumTotalFriendlyFireDamageToReflect=0
                    ;占领目标所需时间
                    ObjectiveCaptureTime=30
                    ;无人占点下目标重置所需时间,-1表示禁用重置目标
                    ObjectiveResetTime=-1
                    ;每多一名玩家占点对占点的加速比率
                    ObjectiveSpeedup=0.25
                    ;占点速度达到最大所需玩家数
                    ObjectiveMaxSpeedupPlayers=6
                    ;作用尚不明确
                    ObjectiveRadioSpeedup=0.6
                    ;目标图标可见性,ShowActiveOnly即仅显示当前目标
                    FloatingObjectiveVisibility=ShowActiveOnly
                    ;启用限制区域,玩家在进入该类区域时会被禁止使用武力
                    bAllowRestrictedAreas=True
                    ;当一方的增援波数耗尽时,另一方的限制区域将解除
                    bDisableRestrictedAreasOnWaveDepletion=True
                    ;重生后只要玩家一移动则解除出生保护
                    bLoseSpawnProtectionOnMove=False
                    ;作用尚不明确,可能是解除出生保护前保护持续时间
                    LoseSpawnProtectionOnMoveGrace=5.0
                    ;禁用载具
                    bDisableVehicles=False
                    ;地上武器的存在时间
                    DroppedWeaponLifespan=240
                    ;刚载入游戏的热身时间
                    WarmupEnterTime=0.0
                    ;默认玩家以观众身份加入
                    bStartPlayersAsSpectators=False


                    IP属地:广东10楼2021-07-31 17:15
                    收起回复
                      ;-----------------------------------------------------------------
                      ;多人游戏模式设置
                      [/Script/Insurgency.INSMultiplayerMode]
                      ;记录游戏回放相关设置(本地游戏直接忽略)
                      bAutoRecordReplaysDedicated=True
                      bHandleDedicatedServerReplays=True
                      ;游戏开始前的准备时间
                      GameStartingIntermissionTime=12
                      ;回合开始前的准备时间
                      PreRoundTime=10
                      ;回合结束后的预留时间,用于显示当前回合战绩情况
                      PostRoundTime=15
                      ;游戏结束后的预留时间,用于显示整局游戏的战绩和经验结算(本地游戏没有经验)
                      PostGameTime=15
                      ;启用友军伤害
                      bAllowFriendlyFire=True
                      ;友军伤害调整比率,与原伤害数值相乘后产生友军伤害
                      FriendlyFireModifier=0.8
                      ;友军伤害反弹调整比率,与原伤害数值相乘后产生反弹伤害
                      FriendlyFireReflect=0
                      ;投票选择地图(本地游戏直接忽略)
                      bMapVoting=True
                      ;使用地图列表循环(本地游戏直接忽略)
                      bUseMapCycle=True
                      ;允许双方通过麦克风交流(本地游戏直接忽略)
                      bVoiceIntermissionAllowAll=True
                      ;玩家无动作静止时的处理相关设置(本地游戏直接忽略)
                      IdleLimit=150
                      IdleLimitLowReinforcements=90
                      IdleLimitLastOneStandingCombatZone=60
                      IdleLimitLastOneStandingSpawnZone=10
                      IdleCheckFrequency=30
                      ;游戏自动检查是否有一方仅剩一人存活,触发bgm
                      bCheckLastPersonStanding=True
                      ;离场者惩罚规则相关设置(本地游戏直接忽略)
                      LeaverPenaltyPlayerLeaveTime=840
                      LeaverPenaltyGameStartTimeLimit=60
                      LeaverPenaltyPlayerLeftTimeLimit=120
                      ;游戏开始所需最少玩家数
                      MinimumPlayers=1
                      ;单局游戏可进行的回合数
                      RoundLimit=3
                      ;胜利回合数限制,超过则结束当局游戏
                      WinLimit=2
                      ;初始给予补给点数
                      InitialSupply=36
                      ;最多可持有补给点数
                      MaximumSupply=50
                      ;启用补给点数增长
                      bSupplyGainEnabled=True
                      ;奖励的补给点数立刻到账
                      bAwardSupplyInstantly=True
                      ;单次奖励一个补给点所需得分数
                      SupplyGainFrequency=250
                      ;允许使用第三人称观看视角
                      bAllowThirdPersonSpectate=True
                      ;允许死亡视角
                      bAllowDeathCamera=True
                      ;启用高级出生机制,作用尚不明确
                      bUsesAdvancedSpawning=True
                      ;每个回合都交换一次队伍,0为禁用,1为启用
                      SwitchTeamsEveryRound=0
                      ;得分板相关设置(此处不作研究)
                      ScoreboardConfig=(bDisplayRoundsWon=True,bDisplayTeamScore=True,bDisplayTeamPoints=True,PointsText="",bDisplayPlayerScore=True,bDisplayPlayerKAD=True,bDisplayPlayerObjectives=True,bAlwaysShowExtendedInfo=True,bDisplayObjectiveBriefing=True)
                      ;忽略控制台清除bot的命令
                      bIgnoreBotPurge=False
                      ;忽略控制台结束回合的命令
                      bIgnoreRoundOver=False
                      ;跟玩家得分相关的设置(此处不作研究)
                      bUsePlayerStartScoring=False
                      MaxPlayerStartsToScore=20
                      ;游戏结束后的经验结算界面持续显示时间
                      PostGameTimeExp=15
                      PostGameTimeMatch=2
                      ;得分度量设置,如("Kill",10)说明击杀一名敌人得10分,其他自行翻译体会
                      ScoringAmounts=(("Kill", 10),("OffensiveKill",5),("DefensiveKill", 5),("Assist",5),("DriverAssist", 5),("FireSupportKill",5),("ObjectiveCapture", 50),("ObjectiveDestroy", 100),("ObjectiveReset",20),("ObjectiveCaptureTick", 10),("ObjectiveResetTick",10))
                      ;自动分配玩家职业
                      bAutoAssignClass=False
                      ;若已自动分配玩家职业,则跳转至装备菜单
                      bPromptKitMenuIfAutoAssignedClass=False
                      ;允许使用火力支援
                      bFireSupportAllowed=True
                      ;启用bot
                      ;bBots=True
                      ;已启用bot的条件下,自动填充bot直至每一方队伍人数达到指定的数量
                      BotQuota=14
                      ;bot难度(0.0~1.0)
                      AIDifficulty=0.98


                      IP属地:广东11楼2021-07-31 17:18
                      收起回复
                        ;-----------------------------------------------------------------
                        ;Push推进模式设置
                        [/Script/Insurgency.INSPushGameMode]
                        ;回合内单次增加的时间,即进攻方每占领一个点,当前回合时间增加相应的量
                        RoundTimeExtension=360
                        ;每个目标点给予进攻方的增援(重生)波数
                        AttackerWavesPerObjective=7
                        ;进攻方重生一次所需达到的阵亡人数占比(0.0~1.0)
                        AttackerWaveDPR=0.15
                        ;进攻方重生所需时间
                        AttackerWaveTimer=20
                        ;每个目标点给予防守方的增援(重生)波数
                        DefenderWavesPerObjective=7
                        ;防守方重生一次所需达到的阵亡人数占比(0.0~1.0)
                        DefenderWaveDPR=0.15
                        ;防守方重生所需时间
                        DefenderWaveTimer=30
                        ;最后一波重生距上一次重生的最少间隔时间
                        LastStandSetupDelay=10
                        ;最后一波之前的重生距上一次重生的最少间隔时间
                        AdvanceAttackerSpawnsDelay=30
                        bBots=True
                        BotQuota=11
                        AIDifficulty=0.98
                        ;-----------------------------------------------------------------
                        ;Frontline前线模式设置
                        [/Script/Insurgency.INSFrontlineGameMode]
                        ;双方初始增援波数
                        StartingWaves=15
                        ;单次占领目标奖励波数
                        CapturingBonusWave=2
                        ;好像是落后的一方的重生所需时间
                        RegressSpawnsTimer=20
                        ;-----------------------------------------------------------------
                        ;Skirmish遭遇战模式设置
                        [/Script/Insurgency.INSSkirmishGameMode]
                        ;默认初始增援波数
                        DefaultReinforcementWaves=5
                        ;单次占领目标奖励波数
                        CaptureBonusWaves=1
                        ;-----------------------------------------------------------------
                        ;TeamDeathmatch团队竞赛模式设置
                        [/Script/Insurgency.INSTeamDeathmatchGameMode]
                        ;胜利所需击杀数
                        WinLimit=300


                        IP属地:广东12楼2021-07-31 17:19
                        回复
                          ;-----------------------------------------------------------------
                          ;合作模式设置
                          [/Script/Insurgency.INSCoopMode]
                          GameStartingIntermissionTime=12
                          ;乘坐载具进入战场(此功能很久之前就删了,目前已无作用)
                          bUseVehicleInsertion=False
                          ;bot敌人数目下限与上限(按照玩家数目自动按比例调整bot敌人数目)
                          MinimumEnemies=10
                          MaximumEnemies=20
                          ;达到bot敌人数量上限的所需玩家数
                          MaxPlayersToScaleEnemyCount=10
                          ;启用bot
                          bBots=True
                          ;自动填充bot直至己方队伍人数达到指定的数量(参数起作用前提:bBots=True)
                          FriendlyBotQuota=5
                          ;固定敌人数目(参数起作用前提:bBots=True)
                          SoloEnemies=14
                          ;强制设定回合初始时间
                          SoloRoundTime=1800
                          ;当所有玩家阵亡时强制以失败结束回合
                          bLoseWhenAllPlayersDead=False
                          ;bot单次持续警戒时长,在这段时间内bot反应速度会变快
                          AlarmDuration=60
                          ;bot难度(0.0~1.0)
                          AIDifficulty=0.88
                          ;使bot服从人类玩家的装备限制规则(否则在特定武器模式下,bot的装备选择不受限制)
                          bBotsUseHumanLoadouts=True
                          ;根据玩家的游戏等级解锁职业,否则职业选择无等级限制
                          bRestrictClassByPlayerLevel=False
                          ;初始装备点数
                          InitialSupply=36


                          IP属地:广东13楼2021-07-31 17:21
                          回复
                            ;-----------------------------------------------------------------
                            ;Checkpoint检查站模式设置
                            [/Script/Insurgency.INSCheckpointGameMode]
                            ;回合持续时间
                            RoundTime=1800
                            ;一般目标的防守持续时间
                            DefendTimer=90
                            ;最后一个目标的防守持续时间
                            DefendTimerFinal=180
                            ;目标被占领后,敌人开始撤退前的预留时间
                            RetreatTimer=15
                            ;敌方bot重生所需达到的阵亡占比(0.0~1.0)
                            RespawnDPR=0.2
                            ;敌方bot重生所需时间
                            RespawnDelay=1
                            ;敌方反攻时,敌方bot重生所需达到的阵亡占比(0.0~1.0)
                            CounterAttackRespawnDPR=0.8
                            ;敌方反攻时,敌方bot重生所需时间
                            CounterAttackRespawnDelay=1
                            ;目标被己方占领或摧毁后,下一个目标里的敌人反扑的持续时间,0表示敌人只会乖乖的在下一个点防守
                            PostCaptureRushTimer=60
                            ;己方占领目标后,若遭遇敌人反攻,则重生阵亡的己方队友
                            bCounterAttackReinforce=True
                            ;当玩家在占领目标时,敌人重生数目的乘数/倍数的下限与上限(即敌人重生数目=敌人阵亡人数×乘数)
                            ObjectiveTotalEnemyRespawnMultiplierMin=1
                            ObjectiveTotalEnemyRespawnMultiplierMax=1
                            ;当最后一个目标是军火点时,该目标点刷新敌人数量的乘数/倍数(即敌人总数=原敌人总数×乘数)
                            FinalCacheBotQuotaMultiplier=1.5
                            ;bot在玩家来目标点的路上设伏的相关设置
                            BotAmbushRatioCheckpointMaxDeaths=0.8
                            BotAmbushRatioCheckpointMinDeaths=0.4
                            BotAmbushRatio=0.35
                            BotAmbushRadius=9000
                            ;个人对于以上参数的解读:bot会在距离目标点9000的范围设伏,数量占总数的35%,先前阵亡的40%~80%会被安插在埋伏中
                            ;bot攻击范围
                            BotTerritoryRadius=14000.0
                            ;bot在未发现玩家时的瞎逛范围
                            BotWanderRadius=13000.0
                            ;随机确定敌方反攻方式
                            bUseRandomCounterAttackTypes=True
                            ;己方增援(重生)波数
                            SoloWaves=5
                            ;己方重生所需时间
                            SoloReinforcementTime=7
                            ;单次目标占领奖励增援波数
                            SoloWaveIncrementOnObjectiveCapture=3


                            IP属地:广东14楼2021-07-31 17:21
                            收起回复
                              ;-----------------------------------------------------------------
                              ;CheckpointHardcore硬核检查点模式设置
                              [/Script/Insurgency.INSCheckpointHardcoreGameMode]
                              ;己方重生时,使用默认的特定装备替换原先自定义的装备
                              bStripWeaponsOnRespawn=False
                              ;己方重生时默认装备配置(参数起作用前提:bStripWeaponsOnRespawn=True)
                              RespawnLoadoutsDataAsset=CheckpointHardcoreLoadouts'/Game/Game/Data/Gamemodes/HardcoreCheckpoint_Loadouts.HardcoreCheckpoint_Loadouts'
                              RespawnLoadoutsDataAssetPath=/Game/Game/Data/Gamemodes/HardcoreCheckpoint_Loadouts.HardcoreCheckpoint_Loadouts
                              ;指定默认提供的装备,默认取值解读:莫辛纳甘步枪、马卡洛夫手枪、M18烟雾弹(参数起作用前提:bStripWeaponsOnRespawn=True)
                              RandonPrimaryWeaponsToGiveOnSpawn=((Item=/Game/Game/Actors/Weapons/SniperRifle/BP_Firearm_Mosin.BP_Firearm_Mosin_C),(Item=/Game/Game/Actors/Weapons/SideArm/BP_Firearm_Makarov.BP_Firearm_Makarov_C),(Item=/Game/Game/Actors/Weapons/Grenade/BP_Grenade_M18.BP_Grenade_M18_C))
                              ;作用尚不明确
                              PlayersWhoHaveSpawnedWithLoadout=
                              ;补给点之间间隔的目标数的下限与上限
                              MinObjectiveForCrate=1
                              MaxObjectiveForCrate=3
                              ;单个目标点内的弹药箱数量的下限与上限
                              MinAmmoPerObjective=8
                              MaxAmmoPerObjective=12
                              ;弹药箱出现的机率(0.0~1.0)
                              AmmoBoxSpawnChance=1.0
                              SoloWaves=5
                              SoloReinforcementTime=8
                              SoloWaveIncrementOnObjectiveCapture=2
                              ;-----------------------------------------------------------------
                              ;Outpost前哨模式设置
                              [/Script/Insurgency.INSOutpostGameMode]
                              ;第一波时,敌方bot重生所需达到的阵亡占比(0.0~1.0)
                              BotDPRRespawnFirst=0.6
                              ;最后一波时,敌方bot重生所需达到的阵亡占比(0.0~1.0)
                              BotDPRRespawnFinal=0.1
                              ;敌方进攻总波数
                              TotalWaves=10
                              ;敌方偶尔派出特殊兵种
                              bUseSpecialWaves=True
                              ;敌方派出特殊兵种的总波数
                              SpecialWaveFrequency=5
                              bBots=True
                              SoloEnemies=15
                              FriendlyBotQuota=6


                              IP属地:广东15楼2021-07-31 17:22
                              收起回复