为了防止低能逗逐胡搅蛮缠,不懂装懂,一次过用大篇幅阐述标签Owner的含义
结论写在前面:
Owner的作用就是控制一个单位是否可以被生成的开关,他的含义就是使用国家(防杠:俗称归属)进行判断一个单位是否可以被生成(防杠:产生单位不限于通过工厂建造、初始生成等),一个单位的Owner在列表中即视为检查通过,可以被生成(防杠:进入下一个检查直至全部通过)。
给新手的建议:
对于modder而言,不需要深究Owner的意义,只需要按照规则文件中原游戏的设置方式对照的去设置即可,比如:建造厂的Owner为本阵营所有国家,建筑和单位为全部国家即可。
===========我是分割线===========
以下为详解:
一、Owner的作用域,主要(防杠:主要意为不限于)有以下三个位置:
1、AI构建列表,如:0x505A08
2、生成初始单位,如:0x5D7186
3、构建一个单位,如:0x6888DC
二、Owner的工作原理很简单,检查将要生成的单位的Owner列表,是否匹配参战方的Owner列表,有交集则允许下一步,没有交集则中断逻辑,阻止生成该对象。
三、举例说明(防杠:为便于理解,做了通俗简化处理,不会完全精确到程序步骤,只做概念解析)
1、游戏初始
开局选择法国,此时你(参战方)的Owner列表,为French,开局第一步是生成初始单位。
游戏会从AllowedToStartInMultiplayer=yes(防杠:该项默认为yes,通常在非初始单位上需设置为no)的单位列表中找出可以生成的单位。比如从:
[LTNK] Owner=YuriCountry
[MTNK] Owner=British,French,Germans,Americans,Alliance
[HTNK] Owner=Russians,Confederation,Africans,Arabs
三个中进行匹配,得到含有French的单位为[MTNK],于是校验通过,检查下一步TechLevel、Cost等(防杠:先后顺序不代表实际逻辑先后)内容,直到所有检查完全通过,可以生成该单位(其他生成逻辑亦如此)。
于是开局时便得到了[MTNK]作为初始单位。
2、为什么不是动员兵
读取配置可知,动员兵[E2] Owner=Russians,Confederation,Africans,Arabs
从上可知,你当前的Owner为French,French与Russians,Confederation,Africans,Arabs无法匹配,被Owner检查阻止,逻辑会因此被中断,此时你无法获得动员兵(防杠:此处仅说明Owner作用,不包含有无工厂、有无钱、是否满足Prerequisit、TechLevel等其他条件)。
3、展开基地车
当你拥有了第一个建筑,盟军建造厂[GACNST],此时你的Owner列表,会从French被扩展为[GACNST] Owner=British,French,Germans,Americans,Alliance
从上可知,British,French,Germans,Americans,Alliance与动员兵的Russians,Confederation,Africans,Arabs依旧无法匹配,不满足条件会被Owner检查阻止,所以无法建造动员兵。
4、放下电厂、兵营
然后你放下了兵营[GAPILE],观察[GAPILE]([GAPOWR])会发现,二者的Owner列表比[GACNST]要包含更多,于是此时你的Owner列表,将会被扩展为Owner=British,French,Germans,Americans,Alliance,Russians,Confederation,Africans,Arabs,YuriCountry
从上可知,当前的Owner可以与动员兵的Owner进行匹配,你便拥有了动员兵的建造权限,你在生成动员兵的过程中,不再被Owner检查阻止,于是继续检查,但检查Prerequisit时,却因为动员兵的Prerequisit是NAHAND,虽然此时Owner不阻止但因为没有[NAHAND],于是仍被阻止,还是造不了动员兵(直到你获取了[NAHAND]),余下的检查亦如是。
5、总结
游戏的默认做法,是将所有的国家都加入Owner,此举主要是保证了在游戏进行的过程中,不会出现由于Owner匹配失败而导致某些单位无法被生成等问题(生成\生产单位异常时应优先检查Owner是否补全),modder只需要按照原版设置对应照搬补完即可。
===========我是分割线===========
关于为什么会有人认为“我修改了Owner,初始军队改变了,说明Owner就是管初始军队的”,从上可知Owner的作用域不止有初始单位的构建,绝大部分生成单位的逻辑中都会检查该项目,与Owner同样的还有TechLevel、Cost等,他们并不止作用于初始单位、也会作用于其他逻辑中,所以他们的作用,并不是管初始军队的,他们是管所有单位是否可以生成的总闸。
更改了Owner导致初始军队变化,只是因为在检查过程中没有通过检查的结果表现,游戏在生成初始军队的时候,除了Owner之外也会检查如AllowedToStartInMultiplayer、TechLevel、Cost等等其他的检查项目,只要改变任一项目,均会影响到是否会获得该初始单位的结果,因此是否可以因为“我修改了TechLevel,初始军队变了”说明“TechLevel就是管初始军队的”、“Cost就是管初始军队的”,下次再见到这种言论,不用客气。
|