rimworld吧 关注:276,560贴子:5,118,294

【指南】从modder视角聊聊怎么排查游戏报错和模组冲突

只看楼主收藏回复

相信大家都或多或少遇到过mod冲突的问题,其实大部分红字并不可怕,排查起来也很方便,正所谓久病成医,今天想水一下mod开发者是怎么排查和解决这些报错的,下面细说。


IP属地:美国1楼2021-10-30 18:40回复
    大体目录:
    一、红字的前世今生
    1. 日志中颜色的含义
    2. 它从哪里来,有什么影响
    3. 报错的两大种类
    4. 常见误区
    二、常见进入游戏时报错
    1、Harmony Illegal Sequence Byte
    2、Already have short hash
    3、Duplicate packageid
    4、其他
    三、常见运行游戏时报错
    1. MissingMethod
    2. System.NullReference
    3. 其他
    四、排查红字的有用工具
    1. Hugslib日志发布
    2. 排序神器Rimpy
    3. Visual exception


    IP属地:美国2楼2021-10-30 18:41
    回复
      2026-01-11 01:36:29
      广告
      不感兴趣
      开通SVIP免广告
      围观学习


      IP属地:吉林来自Android客户端3楼2021-10-30 19:00
      回复
        最好有修复指南,可以自己修mod


        IP属地:陕西来自Android客户端4楼2021-10-30 19:17
        回复
          1. 日志中颜色的含义
          老调重弹了,不过还是简单说一下,基本有三种颜色,白、黄、红,分别代表消息、警告和报错。

          就像这样,其实什么颜色并不重要,要看报错的具体内容。通常来说,
          1. 白色的消息一般只在载入游戏时写入日志,一般是一些游戏版本,某些mod也可能提示一下它的版本,载入是否成功,它是否为另一个的mod提供了兼容性等信息,通常在游戏中不会出现,除非某些mod的调试信息忘了删。一般可以直接忽略
          2. 黄色的警告,通常是发生了某些异常的情况,但并不造成严重的后果,只是提醒一下可能有问题,有时候本体也会提醒你某些方法已经过时等等
          3. 红色的报错,报错通常意味着非常严重的异常,可能导致严重的游戏卡顿或问题等等,需要修复;除了某些罕见情况,比如rocketman火箭人就用红色字体表示载入成功


          IP属地:美国5楼2021-10-30 19:22
          回复
            2. 红字是怎么来的,它会对游戏有什么影响呢
            红字一般意味着游戏的异常,本体也有许多bug,它们可能来自开发者的疏忽或某些根本没想到的情况,但更多的红字来自于mod;最轻度的红字是mod没有满足某些本体的要求,比如说本体要求不能有两个相同的mod,当id相同时它会自动忽略一个并报错,比如mod写了某些本体认为不合理会出错的定义;中度影响的报错可能包括找不到一些定义(缺少前置等),于是在游戏中我们体验不到mod的某些功能;重度影响的报错通常是涉及dll的,mod尝试使用某些代码完成一些花里胡哨的功能,但代码运行时出现了问题,如果这个报错的代码mod经常调用的话,每次都会出错,通常会导致小人不动、mod功能失效、游戏卡顿、闪退等严重后果。


            IP属地:美国6楼2021-10-30 19:37
            回复
              3. 红字的两大种类
              一般分为两种,载入时报错和运行时报错。载入时报错是游戏读取定义时的出错,我们进入游戏主界面就能看到,通常不会有重度影响,最多缺少某些mod的功能;运行时报错是指读取存档后在游戏过程中写入日志的报错,这些通常可能有重度影响,需要重视。一般来说,读取存档后会有一些白色字体的消息,以此为分界,白色字体前面的为载入时报错,后面的是运行时报错。


              IP属地:美国7楼2021-10-30 19:41
              回复
                学习


                IP属地:新疆来自Android客户端9楼2021-10-30 19:55
                回复
                  2026-01-11 01:30:29
                  广告
                  不感兴趣
                  开通SVIP免广告
                  4.常见误区

                  报错的前面有一个数字,它代表这条报错发生了多少次。
                  ”红字强迫症“,有的玩家每看到一条红字都会想办法去掉它,其实没有必要,有时候排查半天可能是本体的问题呢是吧,如果只是偶尔发生一次的报错,也许可以忽略它。
                  ”能玩就没事“,我经常看到有人顶着999的报错在玩,因为这种通常会让游戏变卡,个人感觉会很影响游戏乐趣。
                  ”使用本地备份“,每次本体更新都会修复某些bug,因为动了代码,可能会让一些mod暂时失效,但小版本的改动一般订阅量高的mod作者会在一两天内就修好;mod更新可能也会出现问题,但如果有玩家及时反馈,mod作者也能在较短时间内修复(如果他很忙可能也不会在那段时间更新mod了)所以个人感觉是不太用担心的。一直用备份的mod意味着你锁死了一个版本,如果那个版本恰好是比较稳定的还好,如果是mod或本体本来就有bug,当mod作者更新修复时就完全享受不到了,只能说各有好坏吧。
                  在这里可以顺便说一下本体更新的程序,开发者并不会测试mod的兼容性,他们将改动推送到不稳定分支,discord里的测试玩家去玩,看他们自己的存档和游玩有没有什么问题,如果有会及时反馈给开发者或mod作者让他们更新,所以大型mod往往会在游戏正式更新后跟上版本,但如果是冷门的mod,测试玩家自己也没订阅的,就会测试不到了


                  IP属地:美国10楼2021-10-30 19:59
                  收起回复
                    火留


                    IP属地:浙江来自iPhone客户端11楼2021-10-30 20:09
                    回复
                      现在举一些常见的载入时报错的例子。
                      1. Harmony,关键词:Illegal byte sequence encountered in the input

                      这条是我在吧里经常见到的报错,我至少回答了十次以上了,往往帖子名称是”为什么我只装一个harmony也报错啊!!!!!“。
                      原因:这条红字从表面上看看不出啥,其实是因为游戏安装的路径含有非法字符,对国内玩家来说,通常是将游戏安装在了含有中文的路径下面。
                      解决方法:可以搜一下steam如何移动安装文件夹位置,确保路径没有中文。


                      IP属地:美国12楼2021-10-30 20:10
                      收起回复
                        支持


                        IP属地:澳大利亚来自Android客户端13楼2021-10-30 20:24
                        回复
                          常见载入时报错:
                          2. xxx already has short hash

                          这条报错是因为你的mod列表里同时激活了两个相同的mod,导致游戏载入了两个一样的dll,比如这个来自吧里的图,他同时激活了精心准备和中文版的精心准备。还有个可能是某个mod作者忘记设置copy local了,导致它的文件夹里复制了一份游戏本体的dll,因此游戏的dll被载入两次,比如1.3刚出来时候的show draftee weapon。
                          严重性:中等,如果不管的话可能会有一些奇怪的现象(比如右边的提醒有两次),不过不太影响游戏
                          解决方法:检查有没有两个相同的mod,打开它们的文件夹看看是否有两个相同的dll文件,或含有游戏本体Assembly-CSharp.dll文件


                          IP属地:美国14楼2021-10-30 20:40
                          收起回复
                            赶上直播


                            IP属地:广东来自Android客户端15楼2021-10-30 20:52
                            回复