17173 > 游戏资讯 > 官方公告 > 正文

《星际制造》版本更新 - v0.303.38 - Java 21 迁移与性能优化

2026-06-14 05:40:56 神评论
17173 新闻导语

《星际制造》v0.303.38大更新:Java 21迁移带来性能飞跃,新增舰队侦察AI、图形预设、Mod API及建造模式优化,立即体验更流畅的太空建造!

本次更新在游戏的大多数领域引入了显著的性能提升,并将游戏运行环境从 Java 7 全面升级至 Java 21。

Java 21 迁移

游戏现在基于 Java 21 构建并运行。这意味着旧版的 v1、v2 和 v3 启动器将不再适用。您必须使用新的 v4 启动器。

针对服务器所有者/服务商

游戏文件中包含了更新后的启动脚本。此外,还提供了一套完整的 Docker 设置。

游戏现在需要特殊的 JVM 参数才能运行。没有这些参数,游戏将无法启动!

-javaagent:StarMade.jar

例如,您服务器的启动参数可能如下所示:

-Xmx8g -javaagent:StarMade.jar -jar StarMade.jar -server -autoupdatemods

此外,对于使用 -Xincgc 的服务器托管商:您必须移除此参数,因为它在 Java 21 中已不再有效!

相反,我们建议在受限/共享 CPU 设置下尝试 -XX:+UseZGC。它需要更多的内存空间,但可以减少与垃圾回收(GC)相关的卡顿。




舰队与 AI
舰队侦察

新的 RECON(侦察)舰队指令状态使舰队能够侦察扇区并生成详细报告:
  • 可以为舰队下达带有目标扇区列表和实体过滤器(全部/仅根实体/已停靠)的 RECON 指令。
  • 舰队会穿过每个扇区,停留扫描并记录 FleetReconLog 条目,同时避免直接交战。
  • 完成的侦察任务会生成保存的报告,可通过“舰队选项”GUI 中的新查看报告按钮进行查看。
  • 巡逻任务现在在发生交战时也会生成侦察式日志,并在周期结束时生成摘要报告。

AI 避障与扇区抵达

  • AI 飞船现在在航行过程中使用专门的避障转向层主动避开与其他飞船的碰撞。
  • 修复了扇区抵达检测,防止飞船冲过目的地。
  • 修正了飞船 AI 的制动行为:飞船现在在接近目标时会平滑减速,而不是直接撞上去。
  • 至少装有一个弹头方块且没有武器的飞船现在会尝试用弹头撞击敌人,撞击后会自动禁用 AI 模块,以防止在没有弹头的情况下持续撞击。

巡逻与贸易改进

  • 巡逻状态 Bug 修复,包括用于巡逻报告的集成舰队日志记录。
  • 简化了玩家贸易舰队的移动目标分配;在舰队克隆操作时对货物进行深拷贝。

AI 变更

  • 重启后,实体中的舰队成员身份会被清除,以防止自动重新分配指令。
  • 为舰队移动指令添加了扇区坐标验证。
  • 将 AI 配置常量集中到 VoidElementManager 中以便于调整。
  • 默认 AI 瞄准精度提高至 3000(改善了远距离瞄准)。

舰队隐身指令

  • 修复了舰队隐身指令调用,玩家现在应该能够正常让舰队开启/关闭干扰,以及开启/关闭隐身。




图形与渲染
改进的图形预设

  • 为现有图形预设添加了更多选项,并新增了一个“自动”设置,可自动检测用户的系统规格。根据显存(40分)、系统内存(25分)、CPU 核心数(25分)、可用的 OpenGL 版本(10分)等对系统进行评分(0-100),并映射为:极高(85+)、非常高(73+)、高(60+)、中(45+)、低(30+)、极低(<30)。

方块模型视觉状态框架

新的方块视觉状态系统允许 Mod 为方块分配多种模型视觉状态:
  • BlockVisualStateDef:定义具有版本控制的视觉状态的数据类。
  • BlockVisualStateAPI:具有状态版本控制、缓存失效和通过 LodStateTokenStore 进行权威令牌管理的 API 接口。
  • BlockVisualStateDefDialog:用于创建和编辑模型视觉状态定义的编辑器内对话框。

帧缓冲区与资源改进

  • FBO 深度缓冲区现在在重新创建时会重置,以防止过时的状态伪影。
  • 来自帧缓冲区操作的非关键性 GL 错误现在会被记录而不是抛出,提高了稳定性。
  • 着色器卸载方法已转换为使用 unloadWithoutExit 以实现更安全的资源清理。

区块上传限制与照明系统改进

  • GPU 区块上传现在按帧进行限制(默认:15 次上传/帧),以防止当大型实体进入渲染范围时出现单帧 CPU/GPU 峰值(卡顿)。可通过新的 G_SEGMENT_UPLOADS_PER_FRAME 引擎设置进行配置。
  • 添加了新设置 G_LIGHTING_THREAD_COUNT,用于配置计算区块照明所使用的 CPU 线程数(默认:4 线程)。
  • 彻底重构了内部照明计算的资源使用,以减轻 GC 压力。




Modding API
StarLoader Mixin 集成

现在 Mod 可全面支持 Mixin:
  • StarMixinService、StarMixinServiceBootstrap 和 StarMixinGlobalPropertyService 实现了 SpongePowered Mixin 服务接口。
  • StarMixinAgent、StarMixinAuditTrail 和 MixinClassTransformer 将 Mixin 类转换连接到带有完整诊断信息的启动类加载器中。
  • Mod 可以声明在加载时自动注册并应用的 Mixin 配置 JSON 文件。
  • SMModLoader 将虚拟 Mod 中的 mixin 配置传播到其 ModSkeleton 中。
  • 旧的类替换系统已被完全移除。

每个方块的自定义 JSON 元数据

方块现在可以携带任意 JSON 元数据:
  • SegmentController 将方块自定义数据存储在去重池(blockCustomDataPool)中,按方块索引,并支持完整的保存/加载序列化。
  • EditableSendableSegmentController 接受 pendingBlockCustomData 并在放置方块时应用它(包括对称镜像)。
  • /give_item_data 为玩家提供带有指定自定义数据的物品。
  • /set_item_data 允许修改玩家当前物品的自定义数据。
  • /set_item_slot_data 允许修改特定库存插槽的自定义数据。
  • ManagerContainer 可以读取自定义方块数据标签,用于工厂/精炼厂逻辑。

库存系统扩展

  • 在方块配置和 ElementInformation 中添加了 inventoryType 和 inventorySlotsLimit 字段,使 Mod 能够定义具有库存功能的自定义方块。
  • SavedInventory:用于在创造模式下持久化保存每个玩家自定义物品存储的新类,带有面板 UI。
  • 更新库存插槽时保留自定义数据;引入了 InventorySlotContainer 接口以提高模块化程度。

工厂/精炼厂 API

  • 在公共 API 中添加了 registerRefinery(...) 和 registerFactory(...) 方法。
  • 弃用了旧的 newRefinery 和 newFactory 方法。
  • 将 factoryStandardControlledBy 和 factoryStandardControlling 字段设为公共,以实现更广泛的 API 访问。

Mod 加载改进

  • 现在依赖项会在 Mod 实例化之前加载,防止在 Mod 初始化时出现类未找到错误。
  • 加载界面现在显示 Mod 加载和初始化期间各阶段的详细进度。
  • Mod 现在可以在重新登录时正确重新加载,因此玩家在重新登录时无需重启客户端。




建造模式与 UI
控制方案预设与按键重映射

  • 新增 CONTROL_SCHEME_PRESET 引擎设置,提供“新版”和“经典”选项。
  • KeyboardMappings.applyControlSchemePreset(...) 在提交设置时将飞船控制重映射以匹配所选方案。

建造模式帮助

  • 建造模式帮助文本现在仅在高级模式下显示,以减少新玩家的 HUD 杂乱。

目录上传与模板选择下拉菜单改进

  • 为目录上传和模板选择下拉菜单添加了搜索栏,使查找特定蓝图或模板更容易。此外,目录系统现在使用 Java 的并行流 API 以实现更快的加载。

Markdown 渲染器

添加了一个 GUI Markdown 渲染器,支持:
  • 列表:带有正确缩进和项目符号样式的有序和无序列表。
  • 代码块:带边框的代码块。
  • 表格:具有标题行的完整网格布局。
  • 引用块:缩进/带样式的引用块。
  • 方块精灵 (![block:BlockName]):渲染内联 3D 方块图标。
  • SVG 代码块:通过 JSVG 渲染为 GL 纹理(失败时优雅降级为普通代码块)。
  • 图像:可显示来自本地存储或在线的 .png 图像。
  • 链接 ([text](url))、删除线 (~~text~~)、内联代码以及所有 6 级标题。

游戏内指南

  • 添加了一个游戏内指南系统以取代旧的视频教程。鼓励玩家通过 PR 为这些指南做出贡献,因为并非所有文档都是最新或完整的。




游戏性与机制
显示模块新功能

  • 显示模块现在可以拥有多个 标签,以更改不同文本部分的样式属性。
  • 添加了一个新的 rot 选项,以度数为单位旋转显示模块文本。
  • 显示模块现在可用于将轨道旋转器覆盖到特定的角度(度)。只需将带有所需角度的显示模块放置在激活旋转的激活模块旁边即可。
  • 传感器输出:将传感器连接到一个显示模块和一个被探测方块(例如护盾、电源、轨道旋转器)。传感器会将探测到的值写入显示模块。
    • 对于轨道旋转器/炮塔,输出为当前旋转角度(0-360度)。
    • 对于其他方块,输出为传感器测得的值。

逻辑光束

  • 添加了逻辑光束 - 一种可以使用激活光束在实体间快速传输逻辑信号的新方块。

派系地图颜色选择器

  • 派系现在可以选择其领土在地图上显示的颜色,并修复了导致颜色缓慢恢复的 Bug。

牵引光束改进

  • 被牵引的飞船状态现在会同步到客户端;在光束激活期间,服务器会暂时接管位置权限以防止抖动。
  • 牵引光束配置现在使用推力比而不是质量比。

武器伤害性能全面优化

  • 更新了所有三种武器类型的代码路径,以复用对象并优化代码,避免不必要的内存分配。特别是爆炸和酸性伤害计算,通过每帧分配大量临时对象导致了巨大的 GC 压力。
  • 特别是在酸性伤害传播代码中,每次迭代时的 toPropagate.removeLong(0) 会移动整个数组,使传播循环变为 O(n^2)。通过在循环期间按索引读取条目 (getLong(i)),然后在最后使用单个 removeElements(0, count) 批量移除所有处理过的条目,我们将移除成本从每次迭代的 O(n) 降低到了总计 O(n)。对于一个命中 500 个方块且队列中有 2000 个条目的传播波,旧代码会执行大约 1,000,000 次元素移动,而新代码在相同场景下仅需执行约 2000 次。

目标显示变更

  • 在目标距离指示器下方添加了一个额外的显示,根据目标的当前航向和速度,显示弹丸(仅限加农炮和导弹)击中目标所需行驶的距离。

星际科技系统修复

  • 星际科技系统现在可以正确修复方块之间的连接。
  • 对修复处理代码实施了实质性的性能改进和优化,以大幅减少对象分配并减轻 GC 压力。
  • 改进了 AI 舰队的修复指令处理。

护盾系统

  • 重大的护盾命中现在会更频繁地广播给附近的客户端以提供视觉反馈,减少护盾不同步。
  • 禁用了远程飞船的客户端护盾重新计算,以防止覆盖网络同步的值。

弹头变更

  • 弹头现在将作为一个整体组爆炸,而不是多个较小的爆炸,且总体爆炸计算性能应得到极大提升。

修复建造形状工具径向菜单 ( ` )

  • 对建造形状工具径向菜单 ( ` ) 实施了多项修复,工具在视觉和功能上应更加一致。

推力共享 Bug 修复

  • 修复了长期存在的已停靠推力共享 Bug,因此已停靠的推进器不再提供巨大的推力。

Mod 映射修复

  • 一些带有 Mod 方块的飞船映射被错误解析,导致方块在不同的世界和 Mod 安装之间随机交换。现已修复。




服务器与稳定性
崩溃检测与报告

  • CrashLogger 会自动捕获第一个未处理的服务器异常,并将详细的崩溃报告写入 ./logs/crash-report-{timestamp}.log。
  • 报告包括系统信息、JVM 参数、图形信息、完整堆栈跟踪、原因链和线程转储。
  • 后续产生的连锁异常会被抑制,以保持日志的可读性。
  • 通过 StarLoader 触发新的 ServerCrashEvent,以便 Mod 对崩溃做出反应。

玩家出生距离检查

  • 添加了玩家出生时的最大距离检查;客户端不应再因等待远程控制器加载而停滞。




性能改进

  • 在许多热点路径中显著减少了对象分配和 CPU 压力。
  • 优化了 ElementCollectionMesh 中区块处理的对角邻居处理和邻居计数逻辑。
  • 重构了 BlockBuffer 和 RepairBeamHandler 以提高清晰度并减少开销。
  • 区块更新(当非玩家操作引起时)和元素集合处理现在使用批处理方式,而不是尽可能快地处理。这将以稍微延迟照明和区块更新为代价,提高客户端和服务器的性能。默认情况下,两者均设置为每 1000 毫秒(1 秒)处理一次,并可根据需要在配置中调整。




平台/操作系统修复

  • Linux: 修复了保存的凭据在计算机重启后无法持久化的问题。
  • Intel Mac: 修复了退出全屏时在 AppKit 主线程之外调用 NSWindow.setStyleMask 导致的崩溃。
  • Intel Mac: 修复了加载 AquaLookAndFeel 失败时的启动崩溃(优雅降级)。
  • 所有平台: 修复了当显示器名称与任何已知显示条目不匹配时 getCurrentDisplay() 中的 NPE 问题。




已知问题

  • 遗憾的是,报告的阴影问题在某些 GPU 上难以修复,因此它们已被暂时禁用,直到找到合适的解决方案。敬请期待后续修复。
  • 由于 LWJGL2 的限制,此版本目前不支持 ARM Mac。我们希望在未来的更新中能够支持它们。




如果您发现任何问题,请在问题追踪器中报告。

一如既往,感谢您游玩 StarMade!
【来源:steam】
我想了解这个游戏:
官网 专区 下载 礼包
关于星际制造的新闻
17173不想再闭门造车了!想请您来【QQ群:1075303978】当“骨灰级体验官”。你觉得新版丑、难用、没内味?直接骂,我们听着。新功能你先用、改版方案你投票,有效反馈还能攒积分兑换点卡/周边好礼。 一键入群