贴吧用户_0U43AyN 54魔塔新手
啥玩意啊,咋回事啊
关注数: 94 粉丝数: 97 发帖数: 8,648 关注贴吧数: 61
打开游戏后还在黑屏时直接弹出崩溃报告 问题发生的一些前提条件: 1.我是预购玩家,今天之前一直可以还算正常的联机和游玩,hr500+ 2.我使用UU加速器 3.我从来没有打过任何mod,任何框架,从来没有对游戏文件进行任何修改,纯绿玩 4.我使用笔记本,显卡rtx4080 问题发生的过程: 1.我今天打开游戏,想进入小队大厅,于是搜索大厅->按照小队搜索 2.由于网络问题,卡在搜索界面长达10分钟(图1),我不想再等,于是alt+tab切换到steam页面,使用steam结束了荒野的游戏进程 3.尝试重启游戏,启动游戏后,还在黑屏时,立刻弹出崩溃报告(图2),无法进入游戏。 在问题发生后,我尝试过以下办法,全部无效,仍然产生一模一样的崩溃: 1.重启 2.更新显卡驱动 3.删除shader.cache文件(由于黑屏时就崩溃,甚至无法生成新的shader.cache) 4.检查游戏完整性 5.替换回备份存档 我还尚未尝试重装整个游戏,不过如果这两天仍然无法解决问题,作为最后手段我会尝试重装整个游戏 最后是崩溃报告CrashReport.txt的最后几行: [Process Information] D:\SteamLibrary\steamapps\common\MonsterHunterWilds\MonsterHunterWilds.exe ExceptionPointer: 00000001541CD870 ExceptionRecord: ExceptionCode : C0000005 ExceptionFlags : 00000000 ExceptionAddress: 00007FFEB38F98CA Callstack's: Stack[0] : 0x00007ffeb38f98ca ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\sl.common.dll ) Stack[1] : 0x00007ffeb23c3c44 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\sl.dlss_g.dll ) Stack[2] : 0x00007ffeb23c4533 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\sl.dlss_g.dll ) Stack[3] : 0x00007ffeb23c83a4 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\sl.dlss_g.dll ) Stack[4] : 0x00007ffebe6a7cd8 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\sl.interposer.dll ) Stack[5] : 0x000000014024b379 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\MonsterHunterWilds.exe ) Stack[6] : 0x0000000149e42112 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\MonsterHunterWilds.exe ) Stack[7] : 0x00000001401da881 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\MonsterHunterWilds.exe ) Stack[8] : 0x000000014aaf515e ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\MonsterHunterWilds.exe ) Stack[9] : 0x000000014ab19643 ( D:\SteamLibrary\steamapps\common\MonsterHunterWilds\MonsterHunterWilds.exe ) Stack[10] : 0x00007fff18967374 ( C:\WINDOWS\System32\KERNEL32.DLL ) Stack[11] : 0x00007fff18d3cc91 ( C:\WINDOWS\SYSTEM32\ntdll.dll ) Windows Last Error : 0x0000000000000000 Message : Exception Data SHA3 : QUiByT+wF59UWJxNZ40y/YzJ7MbIuw1UYywy56h3iIwQYYlQ0r8VSwTD7kzu0DpSkY/fdYxOOQQtUX+CJ2Axh6dPBHdrRa9BfDWjzb+atbMb5FQnvf1G/mVitH3TpEMultzWkjgs4yztUX+CJ2Axh6oPBHdrRaOq9c3DweINYZb
新巡回开局电路自动控制反应堆超载/起火原因分析,以及解决方案 使用电路控制自动反应堆的大家应该都注意到了,自从1.7.7.0版本(2024的12月冬季更新,github:Commit f6349b2)开始,在新巡回开始时,反应堆会嘟嘟嘟地过热几秒,并有可能伴随着电网超载,烧接线盒。 这都是因为在在那次更新中,作者添加了这么几行:(第254行:http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgithub.com%2FFakeFishGames%2FBarotrauma%2Fblob%2Fmaster%2FBarotrauma%2FBarotraumaShared%2FSharedSource%2FItems%2FComponents%2FMachines%2FReactor.cs%23L254&urlrefer=09730455dee6189e0cbdecf79ee54bcf) //rapidly adjust the reactor in the first few seconds of the round to prevent overvoltages if the load changed between rounds //(unless the reactor is being operated by a player) if (GameMain.GameSession is { RoundDuration: <5 } && lastUser is not { IsPlayer: true }) { UpdateAutoTemp(100.0f, (float)(Timing.Step * 10.0f)); } 这个翻译一下在新巡回开始的5秒内,如果没有玩家操纵反应堆,就用自动控制(UpdateAutoTemp,就是反应堆右上角自带的那个自动控制)的算法,以超快的速度(自动控制是2.0f,他这里是100.0f),以10倍时间步(Timing.Step * 10.0f)进行自动控制。 看起来挺美好是吧,帮你在巡回开始的时候超快地自动调整裂变速率和涡轮速率,使得你一开始没有断电问题。 但问题在于这个自动控制UpdateAutoTemp函数,想必用过自带自动控制的大家都知道这个自动控制有多烂,不单你燃料棒放多了它会抽搐,而且还可能过热。 我这里简单描述一下这个函数在干什么,如果想要更多细节直接看Reactor.cs里UpdateAutoTemp的定义。 首先涡轮控制部分使用的是让涡轮趋近于期望的涡轮值,调节方式为比例控制,而期望的涡轮值以最快20%/s的速度追赶负载。一句话总结在调整速度很快的时候它是匹配上负载的。 而裂变速率部分问题就大了,首先裂变速率的期望值竟然是(30+燃料热值-20)/2,你没看错,也就是说即使只放一根铀棒,它的期望值竟然是(10+80)/2=45,也就是说裂变速率会往这里调,而随着你燃料棒放的更多这个值会不断上涨,这搁哪都会过热。 但是你可能会问,在战役中如果只放一根铀棒打开自动控制好像也不会过热啊,你说的没错,这是因为UpdateAutoTemp中有两个判断阻止这种情况发生,第一个判断是温度超过5000度时,自动控制会立刻调低裂变速率(类似乒乓控制),所以你会看到温度在5000度附近反复横跳;第二个判断是把裂变速率变化率限制到小于5%/s。 然而你可能注意到盲点了,温度的最大变化速度是1000/s,而自动控制在(新巡回开始的5秒内)生效,也就是说无论如何第一个判断都不会发生,这将导致裂变速率自动控制5秒后直接跳到30左右,涡轮从温度堆固定的100调节到匹配功率,然后自动控制就撒手不管了,但是涡轮不是100且在上升,同时也导致温度还在上升,于是导致过热/电网超载。 蠢爆了。 但游戏还得玩,所以只能屎上雕花。 我的解决方案依靠microLua进行计算,所以我只说一下思路,原版电路的实现我没有做: 1.1比1复现UpdateAutoTemp函数,对前5秒的涡轮和裂变速率变化进行模拟,以得到5秒结束后涡轮和裂变速率 2.5秒结束后,先让涡轮匹配负载,别直接往上拉,卡住输出功率不让电网过载。 3.等到温度降低,回到期望值3%附近后,再开始转向温度堆控制模式,开始拉高涡轮输出。 在这种解决方案下,可以做到无超载,且在即使插了4雷素燃料棒情况下,过热10秒以内。过热本身没有影响,它的唯一影响是过热太久会起火/炸反应堆。 温度的最大变化速率是1000/s,而温度上限10000,温度6000度以上算过热,所以估算下过热一般不会超过8秒。 而官船里除了Berilia(起火7秒)Remora(起火8秒)之外,所有的船反应堆起火时间都在10秒及以上,所以不必担心。 如果无论如何还是担心,那可以少放燃料棒,在放1根雷素棒的情况下,过热时间不会超过5秒。
荒野联机问题:有不用加速器且不关闭跨平台联机的流畅联机办法吗 荒野吧没人理我,发到这里试试 楼主断断续续从发售玩到现在,主玩大剑,hr250多,玩过世界,玩过崛起,感觉这一作的网络最烂,烂到无以复加 在这一个月里,每次上线进入大厅都很正常,可以看到玩家也可以看到聊天,有时加入任务也可以正常游玩,但总是延迟很高,出现怪物瞬移或者卡住不动的情况,而且有时任务结束或者任务中会弹出S3087-0-0等的错误。 而且在任务结束后,虽然我依然在大厅里,仍然可以看到玩家也可以看到聊天,但是无法加入大厅内的任何任务,全部显示R35A6-0-0:3。等待几分钟到十几分钟后又恢复到开头的情形,如此循环往复。这使得我没法连贯地联机。这一个月我就硬顶着差不多1秒的延迟玩。 不想用加速器的原因是需要额外花钱,不关闭跨平台联机是因为有朋友开着。 当然我直到现在也没试过加速器,不知道是否管用,也想请教下吧友哪个加速器比较好用? 楼主平常使用Steamcommunity 302 Ver.13.0.02与梯子,这两个分别尝试都出现和上面叙述的一样的情况。 dns使用Google Public DNS (8.8.8.8, 8.8.4.4) 楼主也尝试过自救,以下是楼主试过但没有用的方法: 1.关闭隐私设置:参考BV1pqXkYAEi1 有一定效果,可以快速领取每日奖励和进入大厅,但仍然出现S3087-0-0等与R35A6-0-0:3错误。 2.禁用ipv6,已禁用,无效。 3.更改网络配置文件为“专用”,来源:http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgamewith.net%2Fmonster-hunter-wilds%2F49047&urlrefer=cd8b32b8be7f977537587490e18d858f 已更改,无效。 4.对monster hunter wilds打开网络防火墙:无效,从一开始就是打开的。 5.更改防火墙出站入站规则,打开4500与3074端口:参考BV1quZTYAExW 已更改,无效
联机网络问题:有不用加速器且不关闭跨平台联机的流畅联机办法吗 楼主断断续续从发售玩到现在,主玩大剑,hr250多,玩过世界,玩过崛起,感觉这一作的网络最烂,烂到无以复加 在这一个月里,每次上线进入大厅都很正常,可以看到玩家也可以看到聊天,有时加入任务也可以正常游玩,但总是延迟很高,出现怪物瞬移或者卡住不动的情况,而且有时任务结束或者任务中会弹出S3087-0-0等的错误。 而且在任务结束后,虽然我依然在大厅里,仍然可以看到玩家也可以看到聊天,但是无法加入大厅内的任何任务,全部显示R35A6-0-0:3。等待几分钟到十几分钟后又恢复到开头的情形,如此循环往复。这使得我没法连贯地联机。 不想用加速器的原因是需要额外花钱,不关闭跨平台联机是因为有朋友开着。 当然我直到现在也没试过加速器,不知道是否管用,也想请教下吧友哪个加速器比较好用? 楼主平常使用Steamcommunity 302 Ver.13.0.02与梯子,这两个分别尝试都出现和上面叙述的一样的情况。 dns使用Google Public DNS (8.8.8.8, 8.8.4.4) 楼主也尝试过自救,以下是楼主试过但没有用的方法: 1.关闭隐私设置:参考BV1pqXkYAEi1 有一定效果,可以快速领取每日奖励和进入大厅,但仍然出现S3087-0-0等与R35A6-0-0:3错误。 2.禁用ipv6,已禁用,无效。 3.更改网络配置文件为“专用”,来源:http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fgamewith.net%2Fmonster-hunter-wilds%2F49047&urlrefer=cd8b32b8be7f977537587490e18d858f 已更改,无效。 4.对monster hunter wilds打开网络防火墙:无效,从一开始就是打开的。 5.更改防火墙出站入站规则,打开4500与3074端口:参考BV1quZTYAExW 已更改,无效
使用microLua单组件双模自动反应堆 我又来做自动反应堆了,这回还是自我设限为普通船的反应堆,不玩数值怪玩法,力图用控制论解决问题,可战役内改装。 我在用Pontryagin最大化原理尝试得到反应堆滑条这个动力系统的对于线性变化目标的最优控制时,最后算出来的式子有些复杂,不仅包含差分还包含对数。而可惜的是潜渊症那和部件放置顺序有关的电路运行顺序让我难以得到稳定的差分电路,以及孱弱的运算元件让我没法写下数学表达式,遂只能转战microLua,用lua这个脚本语言进行计算和信号处理。 于是就有了现在的这个使用microLua控制的单组件双模自动反应堆,写一下玩一玩。 创意工坊发布页:http://tieba.baidu.com/mo/q/checkurl?url=https%3A%2F%2Fsteamcommunity.com%2Fsharedfiles%2Ffiledetails%2F%3Fid%3D3345381549&urlrefer=32145cd2321eea166ec7260853dd19b6 优点: 1.只需一个microLua组件,一个开关和5条线,兼容反应堆升级,战役内随时随地可改装,燃料棒想插多少插多少(除了单铀棒)。 2.可手动开关的双模式反应堆,温度堆模式(20%/s)变化快,节能模式(5%/s)燃料消耗慢,且模式切换时反应堆温度几乎不变。负载不一定需要接入反应堆负载输出,如果需要,可自行输入设置(比如2倍电压超载和主动电池稳压)。 3.使用Pontryagin最大化原理得到的针对线性变化负载的理论上最优控制,开环控制,实际使用中调整速度可能是最快的,几乎无过冲,且在负载变化速度够小时(温度堆模式<20%/s,节能模式<5%/s)可几乎完美匹配负载。 缺点: 1.需要安装microLua 2.未对反应堆关机后重启时进行处理,可能会过热几秒 3.未做单铀棒适配,因为我不咋用单铀棒 下面是一些图片 温度堆模式负载与功率节能模式负载与功率microLua接线总览使用方法: 1.安装microLua、Cs For Barotrauma、Lua For Barotrauma 2.将最下方的lua代码复制下来,改变第一行的reactorMaxOutput的值为你要控制的反应堆的功率(如果有升级用升级后的) 3.放置一个microLua,改好的代码复制到你的microLua组件的source内 4.如图接线:microLua的输入1接到反应堆负载输出或者你想要设置的负载值,输入2接到反应堆燃料输出,输入3接到一个开关(输入1时切换到节能模式),输出1接到设置裂变速率,输出1接到设置涡轮输出 5.完成! microLua内的代码: local reactorMaxOutput = 10000 --反应堆功率,如有升级变更可更改 local turbineFixed = 100 --温度堆模式下固定的涡轮输出,如果用不到反应堆满输出可降低此值以减少温度堆模式下燃料消耗 local scrollbarSpeed = 5 local eps = 0.00000001 local magicPara = 0.96 local lastLoad = 0 local interiorFissionRate = 0 local targetFissionRate = 0 local interiorTurbine = 0 local targetTurbine = 0 local reacotrMode = 0 local function clamp(x, min, max) if x < min then return min end if x > max then return max end return x end local function sign(x) if x < 0 then return -1 end if x > 0 then return 1 end return 0 end local function getStaticFissionRate(turbine, temperature, fuelHeat) return (turbine+temperature)*50/fuelHeat end inp = {} function upd(deltaTime) local load=clamp(inp[1]/reactorMaxOutput, 0, 1) local heat=inp[2] reacotrMode = inp[3] local Dload=(load-lastLoad)/deltaTime local staticFissionRate=getStaticFissionRate(interiorTurbine,50*load,heat) local DFissionRate=clamp(getStaticFissionRate(targetTurbine-interiorTurbine,50*Dload,heat),-(scrollbarSpeed-eps),(scrollbarSpeed-eps)) local fissionRateSign=sign(DFissionRate+interiorFissionRate-targetFissionRate) local signalFissionRate = staticFissionRate+DFissionRate-magicPara*(scrollbarSpeed*fissionRateSign-DFissionRate)*math.log((targetFissionRate-interiorFissionRate-fissionRateSign*scrollbarSpeed)/(DFissionRate-fissionRateSign*scrollbarSpeed)) signalFissionRate = clamp(targetFissionRate+0.5*(1+scrollbarSpeed/clamp(math.abs(interiorFissionRate-targetFissionRate),0.2,scrollbarSpeed))*(signalFissionRate-targetFissionRate),0,100) local signalTurbine = turbineFixed if reacotrMode==1 then local staticTurbine=100*load local DTurbine=clamp(100*Dload,-(scrollbarSpeed-eps),(scrollbarSpeed-eps)) local turbineSign=sign(DTurbine+interiorTurbine-targetTurbine) signalTurbine = staticTurbine+DTurbine-magicPara*(scrollbarSpeed*turbineSign-DTurbine)*math.log((targetTurbine-interiorTurbine-turbineSign*scrollbarSpeed)/(DTurbine-turbineSign*scrollbarSpeed)) signalTurbine = clamp(targetTurbine+0.5*(1+scrollbarSpeed/clamp(math.abs(interiorTurbine-targetTurbine),0.2,scrollbarSpeed))*(signalTurbine-targetTurbine),0,100) end targetFissionRate=targetFissionRate+clamp(signalFissionRate-targetFissionRate,-scrollbarSpeed*deltaTime,scrollbarSpeed*deltaTime) interiorFissionRate=interiorFissionRate+(targetFissionRate-interiorFissionRate)*deltaTime targetTurbine=targetTurbine+clamp(signalTurbine-targetTurbine,-scrollbarSpeed*deltaTime,scrollbarSpeed*deltaTime) interiorTurbine=interiorTurbine+(targetTurbine-interiorTurbine)*deltaTime lastLoad=load out[1] = signalFissionRate out[2] = signalTurbine table.clear(inp) end
1 下一页