文明5mod吧 关注:2,314贴子:6,494

从零开始做MOD(一)

只看楼主收藏回复

之前有童鞋做MOD的时候遇到了各种各样的问题。
从理论上讲,直接看《Modders Guide》比什么都强。个人也不是很喜欢写这种只告诉你怎么做、不告诉你为什么的“教程”。
不过这次反正要做一个新文明,所以把相关过程截下来,如果你做的时候遇到什么问题,可以做一对比,也许会发现错在哪。
需要的工具是SDK,下载地址在本吧置顶的MOD制作资料里。


IP属地:浙江1楼2014-08-18 12:31回复
    1. 首先我们建立一个新的项目



    注意,Title和Description写的一定要长,不然不让通过。
    点击finish就完事了。


    IP属地:浙江2楼2014-08-18 12:37
    回复
      1. 写一个新的文明
      先新建4个文件夹,不要问为什么。


      在XML下新建一个名为Civilization.xml的文件


      接下来我们要以一个白板文明为基准新建一个文明,比如美国。因此先打开游戏本体目录下的这个文件:

      拷贝以下节点内容到刚才的Civilization.xml里。如果你害怕没找全,那么最好以CIVILIZATION_AMERICA为关键字在此文件里搜索一下。
      文明定义:

      城市名定义:

      免费建筑定义,一般为宫殿。

      起始科技定义,一般为农业

      起始单位定义。这个比较怪,默认棒子是必须有的,移民反而是在这里定义送给你的。至于肖肖尼比较奇葩,搞不清楚怎么弄的。


      IP属地:浙江3楼2014-08-18 12:40
      收起回复
        领袖定义。按说C5把文明和领袖分开定义应该是为了达到“一个领袖对应多个文明”或者“一个文明对应多个领袖”这种效果,但实际上是一一对应的。不管那么多,我们直接抄过来。

        偏好宗教定义。美国是个新教国家,所以偏好新教。

        间谍名定义。这个非常重要,不定义的话进启蒙后会跳出。

        UU覆写。这是在Civilization_UnitClassOverrides标签下定义的,分别是B17和民兵。

        起始沿河,因为官方把起始地形关联去了,我们也不用抄了。

        把相关内容抄到XML里,得到以下文件:

        这里简单说以下XML的规则。最外层节点一般为GameData,往内一层的节点是表名,如Civilizations、Civilization_BuildingClassOverrides、Civilization_CityNames等,分别表示文明定义、UB定义、城市名定义等。表内是对应SQL语言的一种写法,一般是Row节点,表示往这个表里插入一行数据。Row内的元素表示这行数据的内容,以美国文明定义为例,官方定义了ID, Type, Description等属性。
        换句话说,常见的的结构是
        <GameData>
        <TableName>
        <Row>

        </Row>
        </TableName>
        </GameData>
        个人写XML时的一个常见错误是忘了写Row标签。这并不报错,但会导致整个XML文件无法被正确解析。
        如果看不懂也没关系,反正抄就行了。
        因为我们是要做一个新文明,所以转到Civilizations标签下,我们把美国的定义改成神灵庙的定义:

        然后把其他CIVILIZATION_AMERICA替换成CIVILIZATION_DIVINE SPIRITMAUSOLEUM
        一种简单的方法当然是ctrl+h批量替换,但注意不要改这个属性

        当然,最重要的是把<ID>0</ID>和<DawnOfManAudio>AS2D_DOM_SPEECH_UNITED_STATES</DawnOfManAudio>
        这两行删掉,不要问为什么。


        IP属地:浙江4楼2014-08-18 12:42
        回复
          3. 写一个新的领袖
          单独的文明定义并不能被正确加载,所以我们还需要写一个领袖。
          新建一个Leader.xml的文件(过程略)
          抄法和文明定义是类似的,找到这个文件:

          整个文件都是对华盛顿的定义,所以直接把这个文件抄过来就行了。

          因为我们是在原版所在的文件夹里找的,BNW里还新定义了一些东西,因此我们还需要把这个文件的内容抄进去


          类似的,我们将LEADER_WASHINGTON替换成MikoLEADER_MIKO_TOYOSATOMIMI,以达到新建领袖的目的。
          由于领袖已经改了,所以我们把文明定义里的领袖复写重写一下:


          IP属地:浙江5楼2014-08-18 12:45
          收起回复
            这里提醒一下,处于各种考虑,无论是MOD作者还是玩家,当MOD文件被改变后,最好把以下文件架,至少是cache文件夹删掉,否则天知道会出什么问题。

            进游戏后勾选刚刚做好的MOD,最好再勾上IGE,方便调试

            这样我们就看到两个美国,可以猜一猜哪个是真货。


            IP属地:浙江7楼2014-08-18 12:53
            收起回复
              5. 文本定义:
              为了方便我们只定义中文,因为本人英语水平很烂
              同时因为本人打了塞爱维汉化补丁,所以只管这个,没打补丁的童鞋的作法是类似的。
              建立一个SChinese.xml文件
              建立这个标签

              当然,如果是英文的话,标签为Language_en_US,如果是繁中(官方中文)的话,标签为Language_ZH_Hant_HK
              文本定义的格式和一般定义不太一样,Tag可以写到Row节点的属性里,Row里只有一个Text节点。Tag可以看做其他表里的Type,但必须要以TXT_KEY_开头。

              写完以后是这样的:

              当然你想多写点也无所谓,个人比较懒而已
              类似的,把SChinese.xml添加到项目读取列表里,接着就可以替换文本了

              替换完大概是这样

              当然其他两个文件也要换一下,这里就省略了。
              编译,运行,可以看到我们的文明出现了:

              载入画面:

              接着去文明百科里,可以看到一大串TXT_KEY_???的文本。

              这是因为游戏会根据领袖定义里的CivilopediaTag标签的内容,生成一系列新的文本,因此我们还得在SChinese.Xml加入这些文本。

              改完以后就成了这样


              IP属地:浙江8楼2014-08-18 12:57
              收起回复
                这样我们就做好了一个新的文明,尽管它的素材全部是用原版游戏的、没有UU/UB/UI。


                IP属地:浙江9楼2014-08-18 12:58
                回复
                  二婶二婶二婶二婶二婶二婶二婶二婶二婶二婶
                  其实我想看xml部分。


                  IP属地:江苏11楼2014-08-18 15:27
                  收起回复
                    教程大赞,授予鱼不如授之渔,一定要好好学习一下


                    12楼2014-08-18 20:42
                    回复
                      mark一下。
                      晚上有空我也试一试!


                      IP属地:德国14楼2014-08-20 12:40
                      回复
                        生成的时候显示error : Civ5Path must be defined. Use the Project Properties window to set it to the location where Civlization 5 is installed怎么办 我用的盗版


                        IP属地:美国16楼2014-08-24 13:58
                        回复


                          @Jerry20110434


                          IP属地:浙江17楼2014-08-24 14:17
                          收起回复

                            右边没东西了


                            20楼2014-09-07 15:02
                            收起回复