抛砖引玉 ShipModelData分析
starvalor吧
全部回复
仅看楼主
level 1
偶尔啃葱 楼主
作为一个没用过unity的半吊子...资源模型部分已经超纲,因此不会涉及相关内容,只能确定ShipModelData(舰船模板)和2d贴图与 3D模型在不同的地方加载。
以游戏内月神(Thoth, ID 94)为模板,进行魔改。先贴一张初始数据图。
缓更
2025年08月16日 20点08分 1
level 1
偶尔啃葱 楼主
首先是名字。
Thoth是埃及神话的神祗,翻译在根目录\Language\chinese_main.txt内,不涉及代码,自行替换。包含游戏内的一些残留英文,也是在这里。
顺便一提,游戏内的所有文本都是硬编码读取语言包替换, 因此图内对不齐是...程序员的锅,你切成英语就齐了,并且字体也要丰富不少。
2025年08月16日 20点08分 2
level 8
能改基础属性这些是吧,期待哦[阴险]
2025年08月16日 20点08分 3
没有写稿,一边写还要一边校对一下,想到哪写到哪,因此很混乱,但该提的都会提。
2025年08月16日 21点08分
level 1
偶尔啃葱 楼主
需要工具 dnSpy (反编译源码、修改源码), Visaul Studio(编译mod)。
游戏内第一次、可能也是唯一一次初始化ShipDataModel类,在ShipDB类的LoadDatabaseForce()方法,因此,代码修改我们定在LoadDatabaseForce()方法之后,如果直接修改源码则在LoadDatabaseForce()末尾处添加即可。
首先通过{ ShipModelData shipModelData = shipModels.Find((ShipModelData s) => s.id == 94) ; }获取到月神模板。
而Harmony库访问私有成员则需要额外操作。
——————————————————————
首先是 月神的三条词缀,分别为 遭遇更强敌人、护甲加成、穿甲加成。
如以下代码
CSharp的数组为定长数组,因此我们需要重新new一个。
如图,所有ShipBonus的类都是以这个开头、相关类可以通过dnSpy查看, 大多数都是简单数值加成。
类名绝大部分清晰明了,其中EnhancementSolt是游戏内通过材料改造船体的槽位,初始默认3个;ShipEnhancementEffect则是对改造的数值百分比增强。
ShipBonusDB.Get(int index)则是获取游戏内置的词缀,使用方法如上,不过数值较低,查看也很麻烦,因此更建议手动添加。
... ...
首先自然自己魔改得很强,那敌人也要更强才对,因此extraBounty我设了个4,默认我猜是1?袭击强度是会乘上extraBounty......所以这条填得很离谱。
月神词缀属性足够强了,因此就不魔改了,保留一下改造槽位扩展。
——————————————————————————
顺带一提,除了蓝字词缀,还有黄字词缀,位于蓝字词缀之后。
不过游戏内目前有且仅有新建角色时,添加的那条“AddTrait(129);”,即“低于售价”,这条词缀也是通过ShipBonusDB类添加的。
某种程度上也是为后续内容搭的框架。
——————————————————————————
... ...
瞎叭叭一下,说是ShipBonus,尤其是ShipBonusDB内置的buff,实际上是包含了很多船员、船长(玩家)的增益,蛮混乱的。
2025年08月16日 21点08分 4
袭击强度似乎影响敌方舰队规模与等级? 这个很难测试,相关代码也不是很想去读... ...
2025年08月16日 21点08分
我错了,shipModels.Find(),应该为ShipDB.shipModels.Find()
2025年08月17日 03点08分
level 1
偶尔啃葱 楼主
然后是ShipClass,即船级、类别。
影响 【炮塔热量冷却速率、热能上限、武器射程、稳定性】等白字内容,是根据类别预制的,不可修改,或是全部修改(?不要吧.. ..)。
其中游戏内启用了6个级别,但实际上有第七个级别——Kraken;
相关代码{shipModelData.shipClass = ShipClassLevel.Kraken;},
不会报错,各位可以去试一试,但我魔改的毕竟是小船,就不动了。
2025年08月16日 21点08分 5
吐槽一下...月神真的小船吗?轻巡能用大型的设备了,以至于52设备空间都不够用。数值远超小船,仔细看看原版属性,也是怪物,可惜ShipClass只是3,再强也无法撼动无畏舰,因此我才来魔改的...
2025年08月16日 21点08分
level 1
偶尔啃葱 楼主
还是贴个图吧,也别太懒。
... ...
原版叫克拉肯级(某著名海怪),这个翻译... ...
还是回头找个时间让AI跑一下翻译或是校对一下吧,这个翻译好傻。
2025年08月16日 21点08分 6
这游戏的汉化作者就在本贴吧,你翻翻还能看到他的消息,我记得是7月底好像
2025年08月17日 02点08分
@guojingxiaohao 啊...这...尴尬了,不过,感觉可以稍微润色一下。巨无霸级虽然没什么问题,但感觉多少有点土气了。
2025年08月17日 03点08分
level 1
偶尔啃葱 楼主
然后是 ShipRole(舰船角色) 与 manufacturer(阵营归属)
其中月神可能因为数值太离谱了,因此没有ShipRole的加成。
而阵营归属则是机械巫师。
这两条和ShipClass是一样的,也固定buff。要么不改要么全改。
——————————————————————————————
以【快艇】举例,他这两项分别为
【战士(shipModelData.ShipRole = ShipRole.Fighter)】( 穿甲10% 与 巨物杀手)
【独立(shipModelData.manufacturer = TFaction.Independent)】(改造槽位+1)
——————————————————————————————
顺带补充一下,巨物杀手之类,也是可以通过上面的蓝色词条获取。
2025年08月16日 21点08分 7
level 1
偶尔啃葱 楼主
接下来是舰船的基础属性,这个没什么好说的。
不过确实是基础属性,具体的转向啊相关属性则是由重量等相关属性计算得来。
直接贴图,有注释。
2025年08月16日 21点08分 8
level 1
偶尔啃葱 楼主
开始偷懒了...如图。
因为比较长,就不直接加注释了。
ShipModelData.crewSpace就是舰船能用的船员类型与数量。
ShipModelData.passengers就是乘客座位。
其中从上到下,船员类型分别为:【副驾驶、炮手、机械师、驾驶员、导航员、管理员、文员(参谋和教练)】
其实船员类型远不止这几种,还有副船长之类(不如副驾驶)。
还有很多很多没实装的类型,有闲可以去自己试试,但这几项几乎已经覆盖全部加成了。
————————————————
炮员的加成是按顺序添加炮台,具体什么规则没细测,同一炮台只吃一个炮手加成,建议和炮台相等就行,更多的也没用。
————————————————
额外补充,虽然这个后续内容,但是提前说一下,固定炮台是不吃炮手加成的(比如月神的5、6号固定炮台)。
2025年08月16日 22点08分 9
level 1
偶尔啃葱 楼主
漏了个机库。
机库分【舰船机库】、【无人机机库】两类。
【舰船机库】的规则是,可以携带【船级-2】的飞机,比如3级的月神,可以带1级的穿梭机...... ....... emmmmm...
【无人机机库】则需要设备配合,而设备自带机库容量,也不会放飞更多的无人机,所以也无用(免费的容量?)。
——————————————
//舰船机库
shipModelData.hangarShipSpace = 50;
//无人机机库
shipModelData.hangarDroneSpace = 50;
——————————————
需要注意的是货舱、武器舱、机库都会增加船的所占空间大小,因此也不是越高越好。
... ...
emmm,感觉还漏了什么... 想起再说吧。
2025年08月16日 22点08分 10
level 1
偶尔啃葱 楼主
好叻,接下来是重头戏,也算是“难点”了。
关于武器槽位的修改,这部分比较麻烦。实际上我也没完全弄懂,尤其是涉及Unity的GameObject\Transform相关。
but! It work.
————————————————————
首先是获取到武器槽位
普通炮台指几乎所有炮台,包括“固定的脊峰炮台”。
而“固定炮台”则十分奇怪,因为...他没有炮台,因为没有炮台,所以也不吃炮手加成。
解决方法嘛,那当然是给他添加一个炮台。
如上代码,需要注意的是,添加完炮台之后记得给他一个索引。
————————————————————
如图,我们修改的是月神5号炮台位,但并不希望修改炮台的基础属性,因此这几条就把它变为一个普通的定点炮台。
好叭,也不是那么普通,因为后续要针对这个炮位额外强化,因此标星,并且加上了数量与容量限制。
2025年08月16日 22点08分 11
炮台取值上限应该为1f。因为默认指为1,不做额外设定也确实能打360°。
2025年08月16日 22点08分
level 1
偶尔啃葱 楼主
如图,已注释。
值得注意的是,充能、射击、冷却三件套要么默认、要么都设置一下,不然会直接哑火。
到这里,你已经可以自定义脊峰炮台了,实际上,上面就是V6B-A的脊峰翻版,当然还有更多属性,请dnSpy里查看。
2025年08月16日 23点08分 12
level 1
偶尔啃葱 楼主
如图,... 这里很微妙啊, 因为我对unity真的不了解。
但!能用!
这个就是游戏内多管炮台的实现原理了。不过一般的多管炮台比如V6B-A的,是从3个炮口射出,也就是说、额外的炮台的transform的值是不一样的。
额外炮台也没限制,想加多少加多少,而且消耗等效单一武器。
也就是说,记得上debuff,不然太超模了。
哪怕这里-25%的伤害,依然等效225%伤害。
————————————————————
喔,上面又忘了, 这里补一句,蓄力攻击自带约60%伤害加成。
细心的朋友已经发现了,脊峰和多重射击完全不冲突... ...
————————————————————
贴个上面修改的实机示例
7级克拉肯级的射程加成+脊峰....这是初始采矿光束... ...
简易激光整出了点射型的射速... ...
2025年08月16日 23点08分 13
level 1
偶尔啃葱 楼主
到此为止,已经可以

出绝大部分想要的舰船数据了。
如果想修改一些常见的舰船...并且不想其他人刷出来...我没测试,也没翻相关代码...日后再说。
如果添加新船的话,要修改的地方就多了狸,我发这个贴,就是想看看能不能引一个大佬出来解决问题。
————————————
还有一些无关紧要的属性,诸如shipModelData.rarity这种... 有兴趣可以自行添加。
最后,全部的代码以及mod... 有人会需要吗? 应该没有吧,没有的话,我就偷个懒不发了。
2025年08月16日 23点08分 14
level 6
大佬,后面的图能截图截完整吗,看一会儿就忘了这一堆在哪一类了,谢谢大佬,spinal mount 我昨天还在找在哪里改,今天就看到你的贴了
2025年08月17日 02点08分 15
我贴后面了
2025年08月17日 03点08分
1 2 尾页