星系内驾驶的只读验收
以下命令只读取当前实例的接口与真实地点,不选择目标、不准备控制、不配置模块、不发送驾驶输入。先由统一构建流程更新工具箱和游戏内插件;不要在正在运行的研究程序输出目录中重新构建。
在仓库根目录使用明确的当前游戏 PID 和新的证据目录:
$gamePid = 0 # 替换为本次核对过身份的实际实例;不自动选择同名进程
if ($gamePid -le 0) { throw '请先填入已核对身份的当前游戏 PID。' }
$evidence = Join-Path (Get-Location) 'artifacts/local-flight-readiness-current'
New-Item -ItemType Directory -Path $evidence -ErrorAction Stop | Out-Null
pwsh -NoProfile -File research/Read-NativeNavigationState.ps1 -TargetProcessId $gamePid -Operation describe -OutputPath (Join-Path $evidence 'describe.json')
pwsh -NoProfile -File research/Read-NativeNavigationState.ps1 -TargetProcessId $gamePid -Operation read -OutputPath (Join-Path $evidence 'before.json')
$research = Join-Path (Get-Location) 'research/NativeAcceptance/bin/Release/net10.0-windows/NativeAcceptance.exe'
& $research current-system-read $gamePid (Join-Path $evidence 'locations.json')
if ($LASTEXITCODE -ne 0) { throw '地点读取未通过;保留原始证据,不标记驾驶可用。' }
pwsh -NoProfile -File research/Read-NativeNavigationState.ps1 -TargetProcessId $gamePid -Operation read -OutputPath (Join-Path $evidence 'after.json')
current-system-read 使用真实 Journal、NativeCurrentSystemSource 和只读进程内存。其输出带 flightInputsSent=0、gameCallsInvoked=0、screenUse=false。不要用会执行选择或飞行的 accept-local-* 命令替代这一步。
接口事实与实时状态
首先核对 describe.json 的 verified、processId、gameSha256 和实例身份。普通星系内自主驾驶应使用独立的 NativeSystemFlightControlDriver(..., useNativeSupercruiseAssist:false);只读检查调用 InspectAsync 即可,无需选择、Prepare 或开启 SCO。
应用驾驶契约必须同时满足:
localApplicationFlightControl=true、localApplicationFlightSchema=1、physicalInputSourceGuardSchema=1。localNavigationSchema=1,且localTargets、applicationSteeringAxes、referenceGeometry、adaptiveFlightControl、nativeSteering、independentShipHealth、continuousShipHealth、chargeAndCommitInterlock均为 true。- 返回非空的构建证据;SCO 配置不是基本几何驾驶的前置条件。
Core 对应的事实是 ApplicationFlightControlVerified 与 LocalFlightReady。TelemetryReady、TelemetryIssue 独立表达本帧场景和姿态/热量是否已就绪。已支持的接口在加载或短暂遥测空档时应保留支持事实并等待新帧;不能把旧帧当作新帧使用。ControlUnavailableReason 表达缺少契约或使用了不适用驱动的原因。
历史字段 localCruiseControl=false、localNativeAssists=false 不应单独否定新的应用驾驶契约。SystemNavigationCapabilities.Ready 同时要求多种目标能力,不适合直接作为所有目标“前往”按钮的条件;对选中目标使用 UnsupportedReason(target, assists),并结合实时遥测与目的地策略。站点仍需实际 Docking 配置和硬件,未验证的 Surface/Orbit 不能因基本驾驶契约成立而启用。
locations.json 的 result.PlayerPosition、result.PlayerForward 来自与地点相同星系坐标系的已验证主船 BodyPose。它们是可空事实:缺失时不绘制虚构主船点或默认朝向。Locations[].Position 缺失的地点只保留列表条目;当前没有新增猜测半径、轨道或尺寸。3D 图若压缩距离或使用示意大小,必须保留清楚的标注。
Source 在内存读取前后均核对主船、Commander/Ship/LoadGame、星系、参考世界、实体、原生时间与序号单调性,并要求当前数据足够新。过渡暂态应保留证据和等待状态;该只读命令失败不等于已证明接口不支持,也不能据此跳过输入来源、健康、燃料、热量或人工接管保护。
本文仅说明只读能力与坐标验收;没有执行任何新实飞,也不把接口声明等同于所有船型、目标或环境均已实飞验证。