Luminol-Core/docs/optimizations.md
2026-06-30 18:32:29 +08:00

159 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 优化模块配置
位置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 | 跳过位移和旋转都未变的复合包 |