# 优化模块配置

位置：luminol_config/optimizations/*.toml。每个模块一段，逐条说明。

---

## accelerated_collision — AR 碰撞加速（默认开）

native 广相位替换原版昂贵的实体碰撞空间查询。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | true | 是否启用碰撞加速 |
| backend | FFM | 后端：AUTO/GPU/FFM/JAVA/VANILLA。FFM 最快，失败自动回退 |
| max_collision | 32 | 每个实体每 tick 最多处理的碰撞交互数（削峰） |
| grid_size | 1 | 空间哈希网格的格子边长（格） |
| density_window | 4 | 密度平滑窗口（tick） |
| density_threshold | 16 | 局部实体密度达到此值才走加速，稀疏走原版（零行为偏差） |
| max_threads | 1 | FFM 后端最大工作线程，0=所有 CPU |

游戏内：/nekobackend set <后端> 热切换。

---

## entity_limiter — 每区块实体上限 + 溢出清扫（默认关）

限制每区块同类实体数量，超出生成时拦截，并周期清扫溢出。生成闸门用 per-chunk/per-tick 计数缓存，实体爆发不会 O(N^2) 卡顿（v1.0.6）。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | false | 是否启用 |
| creatures | 200 | 每区块生物上限 |
| items | 100 | 每区块掉落物上限 |
| vehicles | 50 | 每区块载具（船/矿车）上限 |
| projectiles | 50 | 每区块投射物上限 |
| whitelist | ARMOR_STAND,ITEM_FRAME,GLOW_ITEM_FRAME | 豁免实体类型（不计数、不清除） |
| overflow_enabled | true | 是否启用周期溢出清扫 |
| overflow_interval_seconds | 30 | 清扫间隔（秒） |
| overflow_multiplier | 1.5 | 清扫阈值 = 上限 × 此值（超出才清） |
| overflow_creatures | true | 清扫是否包含生物 |
| overflow_items | true | 清扫是否包含掉落物 |
| overflow_vehicles | false | 清扫是否包含载具 |
| overflow_projectiles | true | 清扫是否包含投射物 |
| spare_named | true | 跳过自定义命名（改名牌）的实体 |
| overflow_max_per_sweep | 2000 | 单次清扫最多移除数（削峰），0=无限 |

---

## entity_cull — 视锥/距离实体剔除（默认关）

玩家视野锥外、且超出近距豁免半径的实体不发包给该客户端，省带宽和客户端压力。转身即恢复，近距离始终可见。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | false | 是否启用 |
| half_fov_degrees | 70 | 视野锥半角（度）。70≈140 度锥，比客户端 FOV 宽，留转身余量 |
| near_radius | 16 | 此半径内的实体永远发送，防贴脸突现 |
| cull_players | false | 是否也剔除其他玩家（PvP 默认不剔） |
| cull_vehicles | false | 是否剔除船/矿车（默认不剔） |
| vertical_culling | false | 是否也按俯仰角（垂直）剔除（默认否） |

---

## entity_velocity_packet — ESU 生物 velocity 包降频（默认开）

走路的怪不再每 tick 发速度包。客户端靠位置包插值，velocity 只为平滑，微小变化无感。投射物/玩家不受影响。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | true | 是否启用 |
| min_delta_sqr | 0.003 | 速度变化平方小于此值则跳过。0=只用间隔限制 |
| min_interval_ticks | 3 | 同一怪两个速度包的最小间隔 tick（非冲击时）。3≈最多 7 包/秒 |
| impulse_delta_sqr | 0.04 | 速度变化平方≥此值视为冲击（击退/爆炸/坠落），立即发 |

---

## mob_ai_throttle — 远怪 AI 降频（默认关）

离玩家越远的怪，寻路/索敌跑得越稀。复用 EAR 非活跃时长信号，玩家靠近立即恢复。专治惊变100天/刷怪海。移动控制仍每 tick，不抽搐。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | false | 是否启用 |
| inactive_ticks_tier1 | 20 | 无玩家附近超过此 tick 进入一级降频（约 1 秒） |
| tier1_interval | 2 | 一级：每 2 tick 跑一次完整 AI |
| inactive_ticks_tier2 | 100 | 进入二级降频阈值（约 5 秒） |
| tier2_interval | 4 | 二级：每 4 tick 一次 |
| inactive_ticks_tier3 | 400 | 进入三级（最深）降频阈值（约 20 秒） |
| tier3_interval | 8 | 三级：每 8 tick 一次。越大越省但反应越慢 |

---

## mob_ai_reducer — 精简生物 AI 目标（默认开）

裁剪生物的 AI goal/target 选择器，保留必要行为。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | true | 是否启用 |
| animals | true | 是否精简动物 AI |
| monsters | false | 是否精简怪物 AI（默认否，怪物要保持攻击性） |
| villagers | false | 是否精简村民 AI（默认否，村民交易/补货依赖 AI） |
| disable_collides | false | 是否禁用被精简实体的碰撞推挤 |
| silent | false | 是否让被精简实体静音 |
| keep_dedicated | true | 保留专用/关键 goal |
| ai_list_mode | false | 白名单模式（只保留 ai_goal_list 里的 goal） |
| ai_goal_list | RandomLookAroundGoal,FloatGoal | 白名单模式下保留的 goal 类名 |
| breed_enabled | true | 是否保留繁殖行为 |
| breed_range | 8.0 | 繁殖触发检测半径 |
| tempt_enabled | true | 是否保留被食物吸引（tempt）行为 |
| tempt_range | 10.0 | tempt 触发半径 |
| tempt_trigger_both_hands | true | 双手持食物都能触发 tempt |

---

## afk_entity_tracking — 挂机实体跟踪降频（默认关）

全员挂机且实体较远时降低实体跟踪更新频率；有人活动立即恢复。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | false | 是否启用 |
| afk_threshold_seconds | 60 | 玩家无操作超过此秒数判定为挂机 |
| always_track_radius | 7.0 | 此半径内的实体始终全速跟踪 |
| update_interval_ticks | 5 | 降频后实体更新间隔（tick） |

---

## explosion_optimizer — 爆炸优化（默认关）

限制爆炸威力、防连锁爆炸、可选管理模式（大爆炸只模拟效果不真算）。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| enabled | false | 是否启用 |
| yield_limit_enabled | true | 是否限制爆炸威力上限 |
| yield_limit_default | 4.0 | 默认威力上限 |
| yield_limit_per_type | END_CRYSTAL=6.0, WITHER_SKULL=1.0 | 按爆炸源类型单独设上限 |
| anti_chain_enabled | true | 是否防连锁爆炸 |
| anti_chain_radius | 8.0 | 连锁检测半径 |
| anti_chain_cooldown_ticks | 10 | 连锁冷却时长（tick） |
| management_enabled | false | 管理模式：超阈值的大爆炸只模拟效果不真实破坏 |
| management_threshold | 6.0 | 进入管理模式的威力阈值 |
| simulate_damage | true | 管理模式下是否仍对实体造成伤害 |
| simulate_knockback | true | 管理模式下是否仍施加击退 |
| simulate_sound | true | 管理模式下是否仍播放爆炸音效 |

---

## skip_zero_delta_packets — ESU 零位移包裁剪（默认开）

跳过完全没变化的实体移动/旋转包（零信息冗余包）。

| 选项 | 默认 | 说明 |
| :--- | :--- | :--- |
| skip_zero_move | true | 跳过零位移的相对移动包 |
| skip_zero_rotation | true | 跳过旋转未变的旋转包 |
| skip_zero_move_and_rotation | true | 跳过位移和旋转都未变的复合包 |
