Skip to content

Releases

SFS-Agent v0.6.8

Choose a tag to compare

@LShangPiao LShangPiao released this 19 Oct 12:48

修复:点火点了却飞不起来

  • ignite 改为直接 EnableEngine + 写入 �ngine.throttle_Out,不再注入回车。
    回车在 SFS 里是「分级控制程序」,会先分离当前级再点燃下一级,
    实测点着之后 �ngines_on 又变回 0。
  • 关键缺失:旧代码只置 �ngineOn,没写 hrottle_Out。
    游戏 HUD 上推力显示 120t、推重比 1.4,飞船却纹丝不动 —— 就是引擎有「点燃」
    标志但油门输出为 0。现在点火后同步写入油门并 RecalculateEngineThrottle。
  • propulsion.thrust 按油门折算,推重比随之真实
    (50% 油门时 HUD 显示 60t,旧版会误报 120t / 推重比 1.39)。
  • /ping 的 version 改读 Main.Semver,不再硬编码。
  • README(中/英)同步按键语义:回车 = 分级(分离当前级),点火用 ignite。

实测

8 件 / 3 级「基础火箭」:set_throttle 1.0 + ignite → hrust 1176.8 kN、
wr 1.408、�ngines_on 1/1,火箭从 67 m 爬升到 565 m、64.8 m/s,
与 HUD 的 Thrust 120t / TWR 1.48 一致。

v0.6.4

Choose a tag to compare

@LShangPiao LShangPiao released this 18 Oct 16:26

??

  • ????:stack=auto/top/bottom ???????????,?????????????(???????,??????????)?
  • ????:/build ? stage_count ???? 0(? List ? Array ??),???????
  • ???:/build ?? �odies / loose_parts,???????????,????????????
  • ???:? PartSave.name ??? SFS.* ???,???? TranslationVariable ???????
  • ????:partHolder.modules ???,????????? key ?,??????(150 ??? 25 ?)?
  • ????:?? Rocket.resources ?,???? null?
  • ????:EngineModule.thrust ???,?????? kN;????????? g?

??

  • POST /command ?? engine_on:????????,???????
    ????????????????,ignite(??)?????,????

??

  • ????:??? Mods/SFS-Agent/SFS-Agent.dll?

SFS-Agent v0.6.3

Choose a tag to compare

@LShangPiao LShangPiao released this 18 Oct 09:37

修好了「分级读不到 / 发动机读不到 / 点火没反应」

这次的问题一半在模组、一半在老的接口约定,逐条说:

1. 分级列表是空的(最要命)

模组加载蓝图时只把零件 spawn 出来,没把蓝图里的 StageSave[] 应用给新火箭 —— 火箭的 Staging.stages 是空列表,游戏不知道哪台引擎属于哪一级,于是一台引擎都不点火、推力恒 0、油门拉满也没用。
现在 Spawn() 之后会调 ApplyStages():优先 Staging.Load(StageSave[], Part[], bool),失败退 CreateStages(StageSave[], Part[])。

2. /build 的 stage_count 恒为 0

原判定写的是 stages is Array,而 Staging.stages 是 List<Stage>。改成按 ICollection.Count 计数,建造场景改读 StagingDrawer.main.staging。

3. /state 顶层 stage 永远是 -1

它取自 Staging.stageId,而 SFS.World.Staging 上根本没有这个成员。已废弃,请改用 stages 对象(count / current_index / current_parts / summary)。

4. 引擎数虚高、燃料读不到

  • engines_total:partHolder.modules 是 Dictionary,同一 EngineModule 挂在多个 key 下被重复计数(24 件报 30、182 件报 150)。改用引用去重。
  • fuel_percent:之前只读 BoosterModule(固体助推器),液体燃料在 Rocket.resources 的 globalGroups 里,新增 ReadLiquidFuel()。

5. 点火指令错得最离谱:空格不是点火,回车才是

实测 SFS 1.6.00.16 里 空格只切换油门闸门,回车才执行分级程序(点火、分离、点燃下一级)。所以过去「油门 79%、引擎一台没醒」不是错觉。

  • stage / ignite / staging_program → 回车
  • 新增 throttle_toggle → 空格,保留原语义

验证

实机 蓝星1号:分级 11 级(此前恒 0)、25 台引擎(此前 150)、燃料 99.4%(此前 null)。基础火箭 执行 ignite 后 engines_on 1/1、thrust 120 kN。

安装

把 zip 解压到 Mods,或用 SFS-Agent.dll 覆盖 Mods/SFS-Agent/ 下同名文件。配置文件 sfs-agent.ini 首次运行自动生成,已有配置不会被覆盖(想保留就只换 dll)。

SFS-Agent v0.6.2

Choose a tag to compare

@LShangPiao LShangPiao released this 08 Oct 05:23

SFS-Agent v0.6.2

预设蓝图改为模组内置,不再写进玩家的蓝图目录。

变更

预设不再污染玩家的蓝图列表

v0.6.0 / v0.6.1 会把内置蓝图写进 Saving/Blueprints/,
于是玩家自己的蓝图列表里会莫名多出一条,删除后下次启动又冒出来。

现在预设放在模组自己的目录:

Mods/SFS-Agent/presets/基础火箭/Blueprint.txt
Mods/SFS-Agent/presets/二级火箭/Blueprint.txt
Mods/SFS-Agent/presets/三级火箭/Blueprint.txt

用 DefaultFolder 包成 IFolder 交给游戏自己的 Blueprint.TryLoad 解析,
完全不碰玩家的蓝图文件夹。升级时会自动清理旧版本投放的那份
(只在内容与内嵌预设逐字节一致时才删,玩家改过就不动)。

内置三枚递进预设

预设 零件 说明
基础火箭 8 单级,最适合新手
二级火箭 11 两级分离
三级火箭 24 三级,含整流罩

接口:

  • GET /presets —— 列出预设
  • POST /preset_load {"name":"基础火箭"} —— 直接加载到建造页面

修复:加载预设会让游戏崩溃

BuildState.SpawnBlueprint 内部会创建 Unity Mesh
(PartsLoader -> PipeMesh -> new Mesh()),
在 HTTP 后台线程调用会直接崩掉游戏。

现在改为入队 + 帧循环主线程执行(和模组里其他 Unity 操作一致)。
配套插件 v0.5.0 新增 list_sfs_presets / load_sfs_preset 两个工具。

安装

Mods\SFS-Agent\SFS-Agent.dll,然后重启游戏。

GPL-3.0 · 星河拓航Studio

SFS-Agent v0.6.1

Choose a tag to compare

@LShangPiao LShangPiao released this 08 Oct 05:09

SFS-Agent v0.6.1

调整内置示例蓝图。

变更

内置蓝图换成入门级基础火箭(8 个零件、3 级):

Fuel Tank x4 + Stage Separator + Hawk Engine
+ CapsuleNew + Parachute

命名为 示例火箭-基础火箭,会出现在蓝图列表里,
新手直接加载即可起飞 —— 比之前那枚 31 零件的多级火箭好上手得多。

原先内嵌的复杂示例已移除。

回顾 v0.6.0

内置蓝图自动投放

新装用户常常一枚蓝图都没有。模组自带一枚示例火箭,
首次列出蓝图时自动投放到:

Saving/Blueprints/示例火箭-基础火箭/Blueprint.txt

只在文件不存在时写入,绝不覆盖你自己的蓝图。

修复:中文蓝图名全部失效

请求解析器以前不处理 \uXXXX 转义,而 Python 的 json.dumps
与 httpx 的 json= 参数默认就会把中文写成 \uXXXX ——
于是「示例」变成字面的 \u793a\u4f8b,所有中文名蓝图都加载不了。
现已正确解析转义。

修复:加载蓝图会叠加而非替换

BuildState.SpawnBlueprint 是追加语义,连续加载两次零件数会翻倍。
现在加载前先 BuildState.Clear,实测连续加载结果稳定。

安装

Mods\SFS-Agent\SFS-Agent.dll,然后重启游戏。

GPL-3.0 · 星河拓航Studio

SFS-Agent v0.6.0

Choose a tag to compare

@LShangPiao LShangPiao released this 08 Oct 04:54

SFS-Agent v0.6.0

这一版让「造火箭」终于有可靠起点。

新增:内置示例蓝图

新装的用户常常一枚蓝图都没有,此时「让猫娘造个火箭」无从下手。
模组现在自带一枚官方结构的示例火箭(31 个零件、9 级),
首次列出蓝图时自动投放到:

Saving/Blueprints/SFS-Agent 示例/Blueprint.txt

它会自然出现在游戏和接口的蓝图列表里,直接加载即可。
只在文件不存在时写入,绝不覆盖你自己的蓝图 —— 删掉了下次还会补回来。

修复:中文蓝图名全部失效

模组的请求解析器以前只做字符串切片,不处理 \uXXXX 转义。
而 Python 的 json.dumps 以及 httpx 的 json= 参数默认就会把中文写成
\uXXXX —— 于是「示例」变成了字面的 \u793a\u4f8b,
所有中文名的蓝图都加载不了(静默回退到 DefaultFolder)。

现在解析器正确处理 \uXXXX 与常规转义,中文名和英文名一样可靠。

修复:加载蓝图会叠加而非替换

BuildState.SpawnBlueprint 是追加语义。连续加载两次,
零件数从 172 涨到 203 —— 火箭上多出一整枚。
现在加载前会先调用 BuildState.Clear,连续加载结果稳定(实测两次都是 31 个零件)。

说明

  • 示例蓝图仅供参考,可在游戏里自由修改另存
  • 手拼任意火箭仍不推荐,蓝图里很多零件(引擎 / 舱体 / 降落伞)不带尺寸参数,
    无法凭空推算贴合位置
  • 配置走 http://127.0.0.1:21578/

安装

Mods\SFS-Agent\SFS-Agent.dll,然后重启游戏。

GPL-3.0 · 星河拓航Studio

SFS-Agent v0.5.1

Choose a tag to compare

@LShangPiao LShangPiao released this 18 Sep 16:44

SFS-Agent v0.5.1

根据终端用户反馈修正三处问题。

修正

蓝图列表可能为空

GetBlueprintsList 依赖游戏内部缓存,未打开过 Load 对话框时返回空列表,
用户会看到「一个蓝图都没有」。现在加了磁盘兜底:直接从

<游戏目录>/Saving/Blueprints/<名字>/

扫描。若仍然为空,错误信息里会带上具体路径,便于排查。

遥测开销影响帧率

v0.5.0 新增的分级 / 燃料 / 目标遥测每帧都遍历全部零件模块,用户反馈帧率下降。
现在降频到每 15 帧一次(约 4Hz)—— 这些量变化慢,够用。

已知限制

  • 从零手拼火箭仍不推荐,请优先用「加载蓝图」
  • 游戏内没有设置界面,配置走 http://127.0.0.1:21578/

安装

Mods\SFS-Agent\SFS-Agent.dll,然后重启游戏。

GPL-3.0 · 星河拓航Studio

SFS-Agent v0.5.0

Choose a tag to compare

@LShangPiao LShangPiao released this 18 Sep 06:50

SFS-Agent v0.5.0

补上此前读不到的三组遥测。

新增

分级状态

stageId 此前死钉在 -1 —— 原因是读的是 Staging 上的字段,
而真正的分级在 Staging.stages(List)里。现在 /state 返回:

"stages": {
  "count": 3,
  "current_index": 0,
  "current_parts": 42,
  "summary": "#0(42件) / #1(8件) / #2(3件)"
}

推进系统

Thrust / TWR 此前恒为 0。现在从 EngineModule 与 BoosterModule 读取:

"propulsion": {
  "thrust": 356.2, "twr": 1.45,
  "engines_on": 5, "engines_total": 5,
  "fuel_percent": 0.87, "rcs_fuel_percent": 1.0, "isp": 220
}
  • fuel_percent —— 当前级剩余燃料
  • rcs_fuel_percent —— RCS 推进剂余量
  • engines_on / engines_total —— 活跃发动机数

导航目标(对接用)

选中目标后返回距离与相对速度:

"target": {
  "name": "Station Core",
  "distance": 1240.5,
  "relative_speed": 32.1,
  "closing_speed": -4.2
}

closing_speed 为正表示正在接近。

已知限制

  • 各字段的实际数值随游戏版本可能不同,若某项恒为 null 说明该版本结构有变化
  • 从零手拼火箭仍不推荐,请优先用「加载蓝图」
  • 游戏内没有设置界面,配置走 http://127.0.0.1:21578/

安装

Mods\SFS-Agent\SFS-Agent.dll,然后重启游戏。

GPL-3.0 · 星河拓航Studio

SFS-Agent v0.4.7

Choose a tag to compare

@LShangPiao LShangPiao released this 18 Sep 06:07

SFS-Agent v0.4.7

这一版解决持续推力与采样不可比两个实操痛点。

新增

按键长按 / 松开

此前只有「按下并保持固定时长后自动抬起」—— 对转向、油门这类持续推力操作,
脉冲式按一下在高速飞行时几乎推不出位移,也算不准该转多少度。

现在拆成三个接口:

接口 作用
POST /key_down 按下并一直按住,不自动松开
POST /key_up 松开指定的键
POST /release_all 松开全部(急停)
curl -X POST -H "Content-Type: application/json" \
     -d '{"vk":87}' http://127.0.0.1:21578/key_down    # 按住 W
curl http://127.0.0.1:21578/state                      # 看数据
curl -X POST -H "Content-Type: application/json" \
     -d '{"vk":87}' http://127.0.0.1:21578/key_up      # 松开

返回值会说明当前状态:already_held(本来就在按)、was_held(松开时确实按着)、
held(当前全部按住的键)。

游戏内时间戳

/state 新增两个字段:

"game_time": 1351,
"held_keys": ["W"]
  • game_time —— 游戏内时间。两次读数一减就知道中间游戏跑了多久,
    不会再拿跨越很久的两次采样直接对比,得出「速度方向瞬移 80 度」这类荒谬结论。
  • held_keys —— 当前按住的键,操作有没有真的生效一眼可见。

已知限制

  • 从零手拼一枚能飞的火箭仍不完整 —— 蓝图里零件坐标是贴合点,间距由零件自身
    高度决定,而高度变量名并不统一。请优先使用「加载蓝图」。
  • 部分遥测字段尚不可靠:stage 常为 -1、推重比在速度上升时报 0。
    这些字段来自游戏内部,含义与刷新时机还在排查中,暂不建议作为判断依据。
  • 游戏内没有设置界面。配置请走 http://127.0.0.1:21578/。

安装

<Steam>\steamapps\common\Spaceflight Simulator\Spaceflight Simulator Game\Mods\SFS-Agent\SFS-Agent.dll

必须放在 Mods\SFS-Agent\ 子目录里,然后重启游戏。

配套 N.E.K.O. 插件:https://github.com/LShangPiao/n.e.k.o_plugin_sfs_bridge(v0.2.0)

GPL-3.0 · 星河拓航Studio (Galaxy Exploration Studio)

SFS-Agent v0.4.6

Choose a tag to compare

@LShangPiao LShangPiao released this 17 Sep 05:10

SFS-Agent v0.4.6

这一版把两处写死的时长改成可配置,并清理了不准确的展示项。

新增

刷新间隔可配置

配置页的刷新间隔现在可以在 sfs-agent.ini 里调整:

# 配置页的刷新间隔(毫秒),范围 30-600000,默认 1500
# 调小可以做实时性能展示(30ms 约合 33fps);调大能省 CPU
poll_interval_ms=1500
  • 范围 30ms ~ 10 分钟
  • 保存后立即生效,不用刷新页面
  • 轮询改用 setTimeout 自排:请求慢时自动退让,不会堆积
  • 页面切到后台时自动暂停高频轮询

改进

界面文案里的 <code> 正常渲染

「如何接入」一节里的 <code>GET /ui</code> 此前会直接显示成文本,
现在正确渲染为代码样式。

移除

浏览器页不再显示「分级」

分级 与 分级数 两项已从页面移除 —— 游戏返回的 stageId 不可靠,
显示出来反而误导。相关数据仍可通过 GET /state 获取。

修复

  • 页面配置卡与游戏设置卡可能不渲染的问题(初始化调用缺失)
  • 页面脚本括号不匹配导致整个界面空白

已知限制

  • 从零手拼一枚能飞的火箭仍不完整 —— 蓝图里零件坐标是贴合点,间距由零件自身
    高度决定,而高度变量名并不统一。请优先使用「加载蓝图」。
  • 游戏内没有设置界面。配置请走 http://127.0.0.1:21578/。

安装

<Steam>\steamapps\common\Spaceflight Simulator\Spaceflight Simulator Game\Mods\SFS-Agent\SFS-Agent.dll

必须放在 Mods\SFS-Agent\ 子目录里,然后重启游戏。

配套 N.E.K.O. 插件:https://github.com/LShangPiao/n.e.k.o_plugin_sfs_bridge(v0.1.1)

GPL-3.0 · 星河拓航Studio (Galaxy Exploration Studio)