Starsector Nihilism Guidance
首页
GitHub 项目
首页
GitHub 项目
  • 首页
  • 基础及舰船相关
    • MOD 骨架和入口文件
    • 制作一艘基本舰船
    • 制作一艘航母与战机
    • 制作一艘相位舰
    • 制作火炮、光束与导弹
    • 为舰船加入内置武器、船插与战机
    • 补充描述文本
  • 无需入门的代码修改
    • 以船插为例初步熟悉代码
    • 制作完整船插
    • 制作最小战术系统
    • 为武器加入命中与光束特效
  • 势力与生涯星系
    • 注册一个势力
    • 配置势力舰队
    • 制作 MOD 入口类的最基础适配
    • 制作一个生涯星系
    • 补完描述文本
  • 战役与无代码对象
    • 制作测试战役装配
    • 为模拟战与标题画面加入装配
    • 为舰船加入外观风格
    • 制作一艘模块船
    • 制作一种星体类型
    • 制作一个自定义实体
  • 音频资源与播放
    • 准备 OGG 音频资源
    • 注册音频资源
    • 为游戏对象加入音频
  • Java 工程化
    • 确认 Java 与编译依赖
    • 迁移代码文件到 src
    • 配置 Gradle 工程
    • 构建 JAR 并声明产物
  • 全局服务
    • 制作 MOD 入口类
    • 使用 Global 访问游戏服务
    • 读取设置
    • 调用声音播放器
    • 记录和定位 MOD 日志
  • 战斗运行时
    • 读取战斗引擎状态
    • 读取战斗对象
    • 制作每帧战斗插件
    • 修改舰船数值
    • 配置武器脚本
    • 配置战斗监听器
    • 制作分层渲染插件
  • 战斗内容扩展
    • 详解舰船插件
    • 详解战术系统
    • 详解武器动画
  • 生涯世界与基础服务
    • 读取生涯世界状态
    • 构建生涯地点
    • 配置生涯势力
    • 放置生涯实体
  • 生涯舰队与舰队成员
    • 生成生涯舰队
    • 管理舰队中的成员
    • 舰队状态的重算过程
    • 维护舰队成员状态
    • 读取并修改舰船装配
  • 市场与商品
    • 创建生涯市场
    • 读写货舱内容
    • 注册市场商品
    • 实现专用子市场
    • 制作专用产业
    • 注册特殊物品
    • 实现市场条件
  • 人物与技能
    • 配置人物基础
    • 让人物承担角色
    • 制作角色技能
  • 生涯脚本与情报事件
    • 编写生涯逐帧脚本
    • 监听生涯事件
    • 选择生涯插件
    • 管理舰队活动情报
  • 酒吧事件与任务
    • 组织生涯交互对话
    • 实现对话插件
    • 接入酒吧事件
    • 构建阶段任务
    • 接入酒吧任务
  • Rules 系统、命令与内存
    • 组织 Rules 规则表
    • 编排 Rules 对话
    • 接入 Rules 生涯场景
    • 编写 Rules 命令
    • 使用 MemoryAPI 保存状态
  • 文件读取与写入
    • 读取 MOD 内文本
    • 读取 MOD 内 JSON 文件
    • 读取 MOD 内 CSV
    • 读写 common 数据
    • 实现本地化机制
  • 常用依赖库
    • 接入常用依赖库
    • 使用 LazyLib 几何工具
    • 使用 LazyLib 查询战场
    • 使用 LazyLib 保存公共 JSON
    • 注册 GraphicsLib 光照数据
    • 创建 GraphicsLib 动态光源
    • 制作 GraphicsLib 纹理映射
    • 配置 MagicLib 自动尾迹
    • 创建 MagicLib 运行时尾迹
    • 配置 MagicLib 数据赏金
    • 使用 MagicLib 辅助生涯开发
    • 使用 MagicLib 战斗小工具
  • 可选依赖与 Nexerelin
    • 接入可选依赖
    • 登记 Nexerelin 势力与外交配置
    • 配置 Nexerelin 的两种星区开局
    • 配置 Nexerelin 战略 AI 与扩张规模
    • 登记 Nexerelin 地面战单位与产业
    • 为 Nexerelin 特遣队添加命名与事件响应
    • 制作即时生效的 LunaLib 设置面板
  • 着色器与渲染
    • 使用 Java OpenGL
    • 使用 GLSL 进阶
    • 使用 VBO 和 VAO 保存顶点
    • 使用 SSBO 传递参数
    • 使用实例化进行绘制
    • 选择 BoxUtil 渲染方案

制作一艘相位舰

本节将引导您制作一艘相位舰船,即右键系统为 PHASE 类的舰船。

本节预期阅读时间:~8 分钟。

本节预期操作时间:~10 分钟。

学习目标

完成后,您将能够:

  • 制作相位舰,并配置相位防御数据与两张相位光效贴图;
  • 从可观察症状判断错误位于防御数据还是光效资源。

前置知识

  • [C1-S2] 的舰船编辑器操作与普通舰船制作流程;
  • [C1-S2] 的 ship_data.csv 登记规则;
  • [C1-S2] 的 Addship 使用方法与 starsector.log 排错方法。

获取贴图

我们再次花费宝贵的 30 秒,糊出一张贴图:

锻件级相位护卫舰贴图

命名并将贴图放入正确的位置

位置建议

所有相位相关舰船都应该被放入 phase 文件夹,有助于后续维护。

锻件级贴图在相位舰目录中的位置

锻件-级 (Forging) 相位护卫舰,ID 为 GearIn_forging。

制作相位舰船文件

相位舰的舰船文件,与寻常舰船相比没有任何区别。

即使是相位舰,也必须设置合理的护盾范围。

舰船编辑器中的锻件级相位护卫舰

制作相位舰船的数据

天下数据一大抄。相信您已经能熟练地复制 小精灵-级 相位舰的数据,然后稍作修改:

name,id,designation,tech/manufacturer,system id,fleet pts,hitpoints,armor rating,max flux,8/6/5/4%,flux dissipation,ordnance points,fighter bays,max speed,acceleration,deceleration,max turn rate,turn acceleration,mass,shield type,defense id,shield arc,shield upkeep,shield efficiency,phase cost,phase upkeep,min crew,max crew,cargo,fuel,fuel/ly,range,max burn,base value,cr %/day,CR to deploy,peak CR sec,CR loss/sec,supplies/rec,supplies/mo,c/s,c/f,f/s,f/f,crew/s,crew/f,hints,tags,logistics n/a reason,codex variant id,rarity,breakProb,minPieces,maxPieces,travel drive,number
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#Lasher,lasher,Frigate,Low Tech,ammofeed,5,1750,300,2100,1750,140,55,,120,110,90,60,90,200,FRONT,,210,0.4,1,,,25,50,40,25,1,25,10,9000,8,10,240,0.25,4,4,,,,,,,,"lowtech_bp, merc, ind",,,,0.4,2,2,,204
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#Hammerhead,hammerhead,Destroyer,Midline,ammofeed,10,5000,500,4200,4167,250,95,,90,60,40,30,60,400,FRONT,,300,0.4,0.8,,,50,100,100,60,2,30,9,40000,5,12,360,0.25,10,10,,,,,,,,"midline_bp, merc, ind",,,,0.5,2,3,,300
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#Eagle,eagle,Cruiser,Midline,maneuveringjets,14,8000,1000,11000,14000,700,155,,60,40,30,15,20,1200,FRONT,,270,0.4,0.8,,,150,250,150,100,3,33,8,100000,3,12,480,0.25,20,20,,,,,,,,"rare_bp, merc, ind",,,,0.5,2,3,,401
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
#Conquest,conquest,Battlecruiser,Midline,maneuveringjets,24,12000,1200,20000,30000,1200,315,,45,20,15,6,4,2500,OMNI,,90,0.4,1.4,,,400,500,300,300,10,30,8,300000,3,15,600,0.25,40,40,,,,,,,,"rare_bp, merc",,,,0.5,2,4,,503
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

锻件,GearIn_forging,相位护卫舰,未知,ammofeed,6,2000,350,1200,2000,100,35,,90,120,90,45,90,200,PHASE,phasecloak,90,,,0.075,0.075,4,10,10,20,1,20,9,26000,10,20,180,0.25,6,6,,,,,,,PHASE,GearIn_bp,,,,0.5,2,2,,228

工匠,GearIn_artizan,驱逐舰,未知,ammofeed,10,5000,500,3800,4167,200,95,,80,60,40,30,60,400,FRONT,,300,0.4,0.8,,,50,100,100,60,2,30,9,40000,5,12,360,0.25,10,10,,,,,,,,"GearIn_bp",,,,0.5,2,3,,300
守炉人,GearIn_furnaceman,轻型航母,未知,targetingfeed,11,4500,400,3000,2813,225,75,2,75,50,30,25,25,450,FRONT,,300,0.4,0.8,,,90,150,40,40,2,20,9,52000,5,15,360,0.25,11,13,,,,,,,CARRIER,"GearIn_bp",,,,0.5,2,3,,318

在本例中,锻件-级 相位护卫舰全船上下只有一个中型实弹武器槽位,因此它将专注于疯狂的实弹火力。

为了加强手感,它的战术系统被替换为 加速填弹器 来在需要的时候提供超级输出,同时也弥补失去小型导弹的爆发不足。

不过为了让这个过程显得更加紧张刺激,它的幅能耗散被直接砍到 100,来让它必须斟酌何时开火。

最后再略微抬升一些相位产生幅能,一艘还算有驾驶手感的相位船就做好了。

相位舰船的 shield type 必须填写 PHASE,defense id 必须填写实际右键相位系统,例如原版 phasecloak。CSV 中的相位激活与维持幅能字段也必须填写。

该行的 tags 同样建议填写为 GearIn_bp。

设置相位光效贴图

但上述准备还不够,此时进入游戏必然出现报错。

因为相位舰船还需要 2 个额外的光效贴图文件,作为进入相位后的亮紫色/粉色尾迹。所幸粗糙贴图的处理一直都不是什么难事:

锻件级相位护卫舰的第一张相位光效贴图锻件级相位护卫舰的第二张相位光效贴图

在明亮模式下看不到它们吗?

如果您不愿意切换黑暗模式,编者将帮您切换:

黑色背景下的锻件级相位光效贴图

光效贴图文件

光效贴图文件必须位于和相位舰船同一位置。

光效贴图文件的文件名必须是 相位舰船的贴图文件名+_glow1 和 相位舰船的贴图文件名+_glow2。即使您以后自定义战术系统文件,也会发现这个限制绝无可能破除,修改读取后缀也没用。

光效贴图文件应当是纯白色的,否则将出现影响观感的颜色异常。

相位出入与光效在战斗中的表现如下。

锻件级相位护卫舰在战斗中进入相位

验证方案

前置数据:已经完成 GearIn_forging 的船体、装配和 ship_data.csv 登记,并启用 Console Commands MOD。

  1. 使用控制台命令 Addship GearIn_forging 获取该相位护卫舰。
  2. 进入战斗部署它,右键进入/退出相位,确认外观为相位而非护盾,右键激活的是相位系统。

预期结果:

  • 船体成功加载;
  • 右键可进入/退出相位,出现亮紫粉色光效,与 _glow1/_glow2 贴图一致;
  • 日志中没有 GearIn_forging 相关的错误。

故障分析

  • 相位舰加载时报缺图:_glow1、_glow2 名称或目录错误,两张图必须与主贴图同目录并使用规定后缀。

    • 解决方案:改正贴图路径和大小写后重启。
  • 相位舰加载报错:两列写反时,加载期抛 Key [shield type] has invalid value [phasecloak];defense id 写 PHASE 则实例化时抛空指针。

    • 解决方案:正确写法:前者写 PHASE,后者填实际相位系统 ID(如 phasecloak),再重新生成舰船。

总结

本节在普通舰船链的基础上完成了一种专用约束的完整流程:相位舰必须同时满足 CSV 防御字段与命名资源约定。

虽然相位舰给人一种非常酷炫的感觉,但它的本质和常规带盾舰船一样简单,甚至严格来说它还更那么不稳定一些。另外,相位舰船最好内置 phasefield 插件;内置船插的处理见 [C1-S6]。

建议参考项

  • data/hulls/ship_data.csv:舰船数据表,相位舰行需填写 PHASE/phasecloak 与相位幅能字段。
  • data/shipsystems/phasecloak.system:相位系统定义,phaseHighlight/phaseDiffuse 提供光效后缀 (_glow1/_glow2)。
  • Starsector/starsector-core/starsector.log:游戏日志,排查加载错误与最终 ID 报错。
  • Starsector/mods/Console Commands/data/console/commands.csv:Addship 控制台命令条目。
在 GitHub 上编辑此页
上次更新: 2026/10/12 09:27
贡献者: 1847905557
上一页
制作一艘航母与战机
下一页
制作火炮、光束与导弹