# FishROV RVO2 本地避障 Benchmark 报告

FR
FishROV Benchmark RVO2 local avoidance
统计口径：排除 timeSeconds = 0 的启动采样。比较表均标注“固定条件”和“唯一变量”。

2026-06-13 / AvoidanceBenchmarkLogs

# RVO2 本地避障结果：按唯一变量拆开看

这版报告不再把编辑器和百元机混成一张表。先在百元机内部比较算法、数量、维度；再在编辑器内部看同样趋势；最后才做同配置的跨环境差异。

移动端主依据百元机 / 720x1600
趋势参考编辑器 / 750x617
推荐默认档 300 鱼 + XYZ3D
压测红线 500 鱼开始警戒

Executive Summary

## 结论摘要

先给结论，再看证据。所有跨表比较都避免同时改变多个核心变量。

300 百元机可用档。RVO2 / FreeSwim / XZ25D 第二次运行达到 30.1 FPS，空间重叠均值 1.1。
500 百元机压测线。XYZ3D 在 FreeSwim 仍有 26.2 FPS，但 1% Low 已降到 15.8。
XYZ3D 同场景同数量下空间重叠最低，Dense/CrossFlow 1000 都明显优于 XZ2D/XZ25D。
6-14x 同配置下，编辑器 FPS 约为百元机 6 倍左右；百元机 simulation ms 约为编辑器 10-14 倍。
推荐口径：玩法默认目标按百元机结果定，不按编辑器定。编辑器只用于观察算法随数量和维度变化的趋势。

Phone Only / Controlled Variables

## 百元机内对比

同一设备环境内比较，避免把硬件差异混进算法结论。

### 算法变量：无避障 vs RVO2

固定：百元机 / FreeSwim / XZ25D / 300 鱼。唯一变量：避障策略。

策略 | FPS | 1% Low | 空间重叠 | 最小间距 | 判断
--- | --- | --- | --- | --- | ---
无避障 | 7.0 | 0.5 | 80.9 | -0.674 | 不可用
RVO2 第一次 | 26.4 | 14.4 | 1.6 | -0.298 | 有尖峰
RVO2 第二次 | 30.1 | 23.6 | 1.1 | -0.017 | 可用

RVO2 不是只减少重叠，也显著改善了百元机上的可运行性。第一次与第二次 RVO2 结果不同，后续建议保留重复运行取中位数。

### 数量变量：FreeSwim / XYZ3D

固定：百元机 / RVO2 / FreeSwim / XYZ3D。唯一变量：鱼数量。
100 鱼
30.2 FPS
500 鱼
26.2 FPS
800 鱼
11.8 FPS
1500 鱼
8.9 FPS

数量 | FPS | 1% Low | Sim ms | P95 ms | 空间重叠
--- | --- | --- | --- | --- | ---
100 | 30.2 | 28.6 | 4.43 | 7.82 | 0.0
500 | 26.2 | 15.8 | 22.70 | 37.08 | 0.7
800 | 11.8 | 5.2 | 54.07 | 104.84 | 7.7
1500 | 8.9 | 3.1 | 103.64 | 189.01 | 84.2

### 维度变量：Dense 1000

固定：百元机 / RVO2 / DenseCircleStress / 1000 鱼。唯一变量：维度。

维度 | FPS | Sim ms | P95 ms | 空间重叠 | 判断
--- | --- | --- | --- | --- | ---
XYZ3D | 14.2 | 55.33 | 103.78 | 87.1 | 质量最好
XZ25D | 12.1 | 69.90 | 144.30 | 474.4 | 偏高
XZ2D | 11.8 | 70.63 | 131.34 | 1190.3 | 最差

### 维度变量：CrossFlow 1000

固定：百元机 / RVO2 / CrossFlow / 1000 鱼。唯一变量：维度。

维度 | FPS | Sim ms | P95 ms | 空间重叠 | 判断
--- | --- | --- | --- | --- | ---
XYZ3D | 13.1 | 60.92 | 117.81 | 38.5 | 质量最好
XZ25D | 11.9 | 77.62 | 202.03 | 384.4 | 尾延迟高
XZ2D | 12.2 | 60.66 | 118.03 | 714.1 | 重叠高

Editor Only / Controlled Variables

## 编辑器内对比

编辑器不用于移动端性能结论，但可以看数量增长和维度变化的趋势是否一致。

### 数量变量：FreeSwim / XYZ3D

固定：编辑器 / RVO2 / FreeSwim / XYZ3D。唯一变量：鱼数量。

数量 | FPS | 1% Low | Sim ms | P95 ms | 空间重叠
--- | --- | --- | --- | --- | ---
100 | 169.4 | 93.4 | 0.62 | 0.84 | 0.0
300 | 134.0 | 72.7 | 1.53 | 2.17 | 0.0
500 | 129.7 | 67.8 | 2.33 | 2.41 | 0.2
1000 | 71.5 | 33.0 | 4.73 | 4.98 | 5.1
2000 | 40.5 | 17.7 | 12.18 | 25.97 | 55.3
5000 | 18.2 | 5.7 | 36.22 | 86.95 | 774.7

### 维度变量：Dense 1000 / 2000

固定：编辑器 / RVO2 / DenseCircleStress / 同数量。唯一变量：维度。

数量 | 维度 | FPS | Sim ms | P95 ms | 空间重叠
--- | --- | --- | --- | --- | ---
1000 | XYZ3D | 85.2 | 5.38 | 8.21 | 29.5
1000 | XZ25D | 83.8 | 4.97 | 5.43 | 264.6
1000 | XZ2D | 79.8 | 5.41 | 7.25 | 851.9
2000 | XYZ3D | 55.1 | 11.14 | 26.22 | 154.2
2000 | XZ25D | 50.2 | 12.17 | 26.58 | 765.8
2000 | XZ2D | 48.7 | 10.34 | 11.58 | 2093.6

编辑器趋势与百元机一致：XYZ3D 的空间重叠始终最低；XZ2D 在 Dense 场景中最容易堆叠。不同的是，编辑器性能余量会掩盖百元机上的真实性能红线。

Cross Environment / Same Config

## 编辑器 vs 百元机

同配置跨环境对比只能说明设备差异，不用于证明算法优劣。

固定：RVO2 / 同场景 / 同维度 / 同数量。唯一变量：运行环境。

配置 | 编辑器 FPS | 百元机 FPS | FPS 倍率 | 编辑器 Sim ms | 百元机 Sim ms | Sim 倍率 | 空间重叠：编辑器 / 百元机
--- | --- | --- | --- | --- | --- | --- | ---
FreeSwim / XYZ3D / 100 | 169.4 | 30.2 | 5.6x | 0.62 | 4.43 | 7.1x | 0.0 / 0.0
FreeSwim / XYZ3D / 500 | 129.7 | 26.2 | 5.0x | 2.33 | 22.70 | 9.7x | 0.2 / 0.7
Dense / XYZ3D / 1000 | 85.2 | 14.2 | 6.0x | 5.38 | 55.33 | 10.3x | 29.5 / 87.1
Dense / XZ25D / 1000 | 83.8 | 12.1 | 6.9x | 4.97 | 69.90 | 14.1x | 264.6 / 474.4
Dense / XZ2D / 1000 | 79.8 | 11.8 | 6.8x | 5.41 | 70.63 | 13.1x | 851.9 / 1190.3

读法：跨环境对比的唯一变量是“运行环境”，因此它只回答“编辑器结果离百元机有多远”。它不能替代百元机内的算法、数量、维度对比。

Method

## 控制变量口径

### 百元机内对比

环境固定百元机

用于回答移动端真实可用性：算法是否有效、数量红线在哪里、哪个维度质量最好。

### 编辑器内对比

环境固定编辑器

用于观察趋势，不直接判断移动端上线规模。

### 跨环境对比

配置固定环境变化

用于量化编辑器到百元机的性能折损，避免把桌面余量误当移动端余量。

Next Actions

## 建议动作

### 玩法默认档

按百元机结果，把默认目标定为 300 鱼 + XYZ3D。500 鱼作为压测档，不作为默认玩法规模。

### 优化方向

500+ 鱼需要分级避障：远场降频或关闭 RVO，只对近场、玩家交互区和高风险鱼群启用。

### 后续 Benchmark

补齐设备、构建类型、VSync、targetFrameRate、Burst/Jobs 状态，并对同配置至少跑 3 次取中位数。

数据源：编辑器批次来自 C:\Users\13999\AppData\LocalLow\DefaultCompany\FishROV\AvoidanceBenchmarkLogs；百元机批次来自 C:\Users\13999\AppData\Local\Temp。