文明6吧 关注:506,847贴子:4,505,269

【教程】开了mod导致报错,怎么排查?

只看楼主收藏回复


各位吧友好,经常见到有吧友反应说加了mod后无法创建游戏。作为一个modder,我具有一些排查错误的经验,这个帖子就教大家,怎么排查是哪个mod导致的问题,然后向作者正确反映问题。报错镇楼。


IP属地:安徽1楼2024-04-01 16:01回复
    首先,我们要清楚地定义什么是mod导致的报错。而要定义这一点,又需要先了解文明游戏的一些概念,那就是启动器,主界面,加载界面,游戏内(局内)。
    1.什么是启动器?
    启动器就是点击steam中的启动游戏,会先弹出来一个窗口,然后点击启动器中的开始游戏才正式进入游戏。

    2.什么是主菜单/主界面/mainmenu
    主菜单,就是播完一个人掉进冰里的动画(开场动画)之后,进入的一个蓝色的界面。

    3.加载界面
    这个也好理解,就是播放“从水下”的那个界面

    4.游戏内,或者说局内。
    这个很好理解,就是你开始正式玩游戏的地方。


    IP属地:安徽2楼2024-04-01 16:09
    回复
      由于最近两年Firaxis的骚操作,比如引入启动器(是的,远古版本的文明6是没有启动器的),以及每月挑战,现在有相当一部分玩家进入主界面都是有困难的。
      我可以简单讲一下启动器的问题,详细的可以看吧里置顶贴的导航。关于文明6游戏中一些非游戏问题合集_文明6吧_百度贴吧 (baidu.com)
      启动器,和microsoft visual c++ 2015 redistributable是有很大关系的。因此,玩家需要先安装这个的对应版本(一般都是64位系统,就是x64)。
      然后,启动器是有选择的,dx11和dx12。详细区别大家不需要知道,只需要知道,dx11更稳定,dx12对设备要求更高(也可能在某些方面性能更好,虽然我是没感觉到),而很多游戏,也包括文明6,都有dx11和dx12两个版本。低配置的电脑选dx11就完事了。


      IP属地:安徽3楼2024-04-01 16:17
      收起回复
        接下来是重量级的每月挑战。
        每月挑战是一种很神奇的东西,每次启动游戏的时候,游戏会自动检测你有没有下载最新的每月挑战,如果没有的话,就会自动帮你下载。下载的位置在C:\Users\xxx\AppData\Local\Firaxis Games\Sid Meier's Civilization VI\Challenges。
        有的吧友会说了,我直接给他删了,看他还发不发电
        但是很可惜,文明6太智能辣,检测到你删了,就会帮你贴心地重下一遍,它温我哭
        所以,每月挑战的问题大致也来自于此。我猜测,很多人进不了主菜单的问题,就是它疯狂下载每月挑战,但是由于某些原因下不下来(比如,网络、加速器、电脑防火墙设置、或者强行跳过启动器),所以一直卡住。可以尝试等待1小时,如果1小时也解决不了,那我也不知道怎么办。
        然后,有的吧友会说,有个“删除每月挑战”的mod,是不是打上这个mod就好了?
        错误的,“删除每月挑战”mod的原理是,让你在图形用户界面上看不见它,眼不见心不烦,但是它该下载还是下载的。


        IP属地:安徽4楼2024-04-01 16:29
        回复
          在高级设置里跳过启动器启动就行了


          IP属地:上海来自Android客户端5楼2024-04-01 16:34
          回复
            说完启动器和每月挑战,现在我们回到主题——mod上来。
            我们需要讲一下mod的加载环境。有一些mod会在前端/FrontEnd(或者简单理解为主菜单)加载一些修改UI的文件,比如ynmap,better front end。
            这些mod是有可能会影响主菜单的,比如每月挑战刚出的时候,有些吧友主菜单一片空白,这就是修改FrontEnd的mod导致的。
            除此之外的mod,都基本不会影响主菜单到无法玩游戏的地步!这一点很重要,因为我发现有些玩家报错的时候,认为是mod导致了进不去主菜单,其实这完全是启动器或者每月挑战的问题。


            IP属地:安徽6楼2024-04-01 16:38
            回复
              接下来是重点:无法创建游戏。
              简要提一下文明6mod的两大内容:lua文件和数据库(.xml .sql)。
              数据库是文明6游戏的主体,各种东西的属性都是在数据库中定义的。比如,图书馆的变量名,文本名称、文本描述,造价,产出2科技值等等。
              lua文件则主要用于UI,少部分用于高级的游戏功能。


              IP属地:安徽来自Android客户端7楼2024-04-01 16:46
              回复
                文明6中90%以上的无法创建游戏的问题都是数据库错误导致的。而lua导致创建游戏失败还是很少见的,并且工坊发出来的mod一般也不会有这种问题。
                所以,我们只讲数据库的排错


                IP属地:安徽来自Android客户端8楼2024-04-01 16:48
                回复
                  当我们点下“开始游戏”,然后在黑屏几秒之后,出现报错,这时候我们就可以开始排查错误了。
                  我们需要一个特殊的软件,agent ransack,免费下载,搜东西非常好用。网址不发了,免得被吞楼。



                  IP属地:安徽9楼2024-04-01 16:59
                  回复
                    我们寻找到Database.log,它在C:\Users\xxx\AppData\Local\Firaxis Games\Sid Meier's Civilization VI\Logs。
                    然后看内容,其中的[Configuration]和[Localization]都可以暂时不需要管,他们分别是FrontEnd的数据库,以及文本本地化。
                    重点是[Gameplay]开头的东西,它是局内(InGame)的数据库。
                    当它出现Error字样的时候,代表局内数据库有问题。注意,这里报错不一定进不去游戏!弱的错误可以被游戏忽略,只有游戏忍不了的强错误才会导致进不去游戏。


                    IP属地:安徽10楼2024-04-01 17:04
                    回复
                      支持技术帖


                      IP属地:四川来自Android客户端11楼2024-04-01 17:06
                      回复
                        收藏了,支持


                        IP属地:北京来自Android客户端12楼2024-04-01 17:10
                        回复
                          神贴,必须申精!


                          IP属地:上海来自Android客户端13楼2024-04-01 17:11
                          回复
                            我们可能还是需要一点数据库的科普,当然,不感兴趣的话也可以略过这楼。简单来说,数据库是由很多表(table)组成的。然后一些表比较基础,一些表比较高级,高级的表会引用基础的表。
                            表具有主键,也可能具有外键。
                            主键是一行数据的唯一标识,比如,每个学生都有学号,“学生信息”这个表就可以用学号作为主键,作为标识,当然是不能重复的。文明6中,区域的变量名就是主键,它保证了“区域”表中单个区域的唯一性。
                            外键是表之间的引用关系。比如“学生信息表”中,学生的来源地是某一列,那么它就可以引用一个“学生来源地表”的某一列作为外键。也就是说,学生来源必须是几十个省中的某一个,不然就会报错。在文明6中,CivilizationTraits这个表绑定了文明和ua,所以它有两个外键,也就是说文明必须在文明表中定义,ua必须在特质表中定义。
                            文明6在创建游戏时,会检测这些表的主键。外键有没有错误,没有的话,就会尝试生成游戏。


                            IP属地:安徽14楼2024-04-01 17:13
                            回复


                              IP属地:天津来自Android客户端15楼2024-04-01 17:14
                              回复