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

9.7 KiB
Raw Blame History

🐱 Neko Core

喵核心 · 为高负载生存 / 战争服打造的 Folia 定制服务端

碰撞加速 · 网络优化 · 实时可观测 · 一键调优


MC Base Java License

AUTO · GPU · FFM · JAVA · VANILLA —— 碰撞后端,游戏内热切换


🎯 这是什么

Neko Core 是在 Luminol 1.21.8Folia 分支)之上的定制服务端,把三套各自为政的优化整合成一个能打的整体:

体系 来自 解决什么
🚀 AR 碰撞加速 AcceleratedRecoiling 高实体密度下的碰撞计算瓶颈
🌐 网络优化 Kitin 弱网卡顿、带宽爆炸、地形/粒子刷屏
🧹 LagFixer / ESU LagFixer + ESU 实体堆积、爆炸卡服、挂机跟踪、冗余发包

构建基线 Java 25,全程对照 Paper/Folia 原版做实测,数字不掺水。


性能亮点AR 碰撞加速

不是"叠加一层 native",而是真正替换掉原版那次昂贵的空间查询——tick 前用 native 广相位算出 per-region 碰撞图线程隔离Folia 安全),pushEntities 直接 O(1) 查图,原版推挤/拥挤伤害逻辑完全保留。

实测(对照已优化的 Paper/Folia 原版MSPT 越低越好):

场景8000 实体散布                     场景3000 实体密集
┌──────────┬─────────┬─────────┐        ┌──────────┬─────────┬─────────┐
│ 后端     │  MSPT   │ vs 原版 │        │ 后端     │  MSPT   │ vs 原版 │
├──────────┼─────────┼─────────┤        ├──────────┼─────────┼─────────┤
│ FFM   🥇 │  78.5ms │  3.19×  │        │ FFM   🥇 │  24.1ms │  3.05×  │
│ JAVA     │ 204.6ms │  1.23×  │        │ VANILLA  │  73.6ms │  1.00×  │
│ VANILLA  │ 250.8ms │  1.00×  │        │ JAVA     │  94.0ms │  0.78×  │
└──────────┴─────────┴─────────┘        └──────────┴─────────┴─────────┘
                  FFM 稳定 ~3× 领先原版

📌 不是"数十倍"——因为对照组是已经有空间索引优化的 Paper/Folia不是裸原版。3× 是实打实可复现的硬提升。


🧩 功能一览

🚀 碰撞加速(默认开)

  • 多后端:AUTO / GPU / FFM / JAVA / VANILLA,启动优先 FFM、失败自动回退
  • FFM批量内存拷贝 + 零分配路径 + 碰撞数削峰
  • 密度门控:只有局部密集的实体走加速,稀疏实体走原版(零行为偏差)

🌐 网络优化(config/Network.yml

  • 区块惰性加载 — 小范围反复横跳不重发地形包
  • 高频实体包减量 — 船/矿车在农场不再每 tick 强制同步;高速 TNT/掉落物/经验球跳过冗余包
  • 粒子限流打包 — 视野/距离/遮挡剔除后再发,治领地特效刷屏
  • 区块发送限速 + QoS — 全局限速 + 按 IP/域名/线路分组限流、级联限流
  • 玩家自适应限流 — 按延迟/抖动动态收紧弱网玩家的发送率与跟踪范围
  • 多端口监听 — 额外端口可单独配 PROXY Protocol v2FRP 与直连共存)

🧹 LagFixer / ESU默认关按需开

  • EntityLimiter — 每区块实体上限 + 周期溢出清扫(带削峰:单次清扫有移除上限,爆发不卡)。生成闸门用 per-chunk/per-tick 计数缓存,实体爆发时不再全 region 扫描O(N²)→O(N)
  • EntityCull 视锥剔除 👁️ — 玩家视野锥外、且超出近距豁免半径的实体不发包给该客户端(背后的怪不占带宽/不卡客户端)。转身即恢复(每 tick 重判),近距离始终可见防贴脸突现。多人混战 / 刷怪海减客户端压力专用
  • MobAiThrottle 🧟 — 远离玩家的怪物寻路/索敌降频(按非活跃时长分级),玩家靠近立即恢复。惊变100天 / 刷怪海专治,移动控制仍每 tick 不抽搐
  • MobAiReducer — 精简生物 AI 目标
  • ExplosionOptimizer — 爆炸威力上限 / 防连锁 / 管理模式
  • AFK 实体跟踪降频 — 全员挂机且实体远时降频,活动即恢复
  • ESU 零位移包裁剪 — 跳过零位移/零旋转的实体移动包
  • ESU 生物 velocity 包降频 🚦 — 走路的怪不再每 tick 发速度包(变化太小/发得太频就跳过,~20包/秒→7包/秒);击退/爆炸/坠落立即发,玩家与投射物不受影响。丧尸海/混战第二大带宽源

📊 实时可观测

  • 出站带宽实时监控 — 当前 Mbps、峰值、本次累计用量
  • 内置 spark profiler 🔥 — 原生集成Folia 安全),/spark 直接可用:profiler 采样找热点、health 看 TPS/MSPT/CPU/内存。无需装插件,战争爆发时一条命令定位瓶颈

🎮 命令

# 碰撞后端
/nekobackend status                          # 当前后端与关键配置
/nekobackend set <AUTO|GPU|FFM|JAVA|VANILLA> # 运行时热切换
/nekobackend reload                          # 重载后端选择器

# 实时带宽
/nekobackend bandwidth                       # 出站带宽:现在 / 峰值 / 累计

# 内置 spark profiler无需插件Folia 安全)
/spark profiler --timeout 60                 # 采样 60s 找 MSPT 热点(出网页报告)
/spark health                                # TPS / tick 时长 / CPU / 内存
/spark tps                                   # 实时 TPS

# 一键开关优化模块(无需改配置重启)
/nekobackend toggle <module> <on|off>
#   module ∈ entity_limiter / entity_cull / explosion_optimizer / afk_entity_tracking /
#            mob_ai_reducer / mob_ai_throttle / skip_zero_delta_packets

🔧 构建与启动

环境JDK 25。在 Luminol-ver-1.21.8 目录:

./gradlew applyAllPatches
./gradlew :luminol-server:jar :luminol-server:createBundlerJar :luminol-server:createPaperclipJar \
          --no-daemon --no-configuration-cache

启动(推荐 paperclip

java -jar NekoCore-paperclip-1.21.8-R0.1-SNAPSHOT.jar --nogui

首启自动生成 config/Network.yml;碰撞与 LagFixer/ESU 配置在 luminol_config/

📦 已构建好的产物见 Releases


⚠️ 使用须知

  • 追求原版还原度AR 的实体挤压表现与原版不完全一致,可将后端设为 VANILLA
  • 任何优化异常:把对应模块 enabledfalse(或 /nekobackend toggle ... off)即可回退,无需回滚 jar。
  • 性能数字:来自本机无头环境实测,对照组为已优化的 Paper/Folia 碰撞(非裸原版)。真实大型服收益理论更高,但需生产环境验证。

📝 更新日志

版本 内容
v1.0.8 🚦 ESU 生物 velocity 包降频:走路的怪不再每 tick 发速度包,丧尸海/混战第二大带宽源;/nekobackend toggle entity_velocity_packet 开关
v1.0.7 🐛 修复插件兼容性:服务端版本号在缺少 folia-api 元数据时退化成 Unknown-Version,导致按语义版本解析版本号的插件(如 SkinsRestorer启动崩溃parseInt(""))。现回退到合法版本号 1.21.8-R0.1-SNAPSHOT
v1.0.6 修复 EntityLimiter 生成闸门的 O(N²):原本每生成一个实体都全 region 扫一遍(实体爆发时限制器自己成卡顿源),改为 per-chunk/per-tick 计数缓存,爆发场景 O(N²)→O(N)
v1.0.5 👁️ EntityCull 视锥/距离剔除:视野外远处实体不发包给客户端,/nekobackend toggle entity_cull on 游戏内开关
v1.0.4 🔥 内置 spark profiler 原生集成Folia 安全),/spark 开服即用;修复启动日志在 Windows GBK 控制台的乱码
v1.0.3 🧟 MobAiThrottle远离玩家的怪物 AI 降频惊变100天 / 刷怪海专治)
v1.0.2 EntityLimiter 溢出清扫削峰 + /nekobackend toggle 模块热开关
v1.0.1 出站带宽实时监控(当前 / 峰值 / 累计 Mbps
v1.0.0 首版AR 碰撞加速 + Kitin 网络优化 + LagFixer/ESU 整合

🙏 致谢上游

Neko Core 站在巨人的肩膀上,向以下项目致敬:

  • Luminol — 本项目的基底Folia 分支 + 可配置原版特性 + API
  • Folia / Paper — 区域化多线程服务端核心
  • AcceleratedRecoiling — 碰撞加速架构灵感
  • Kitin — 网络优化体系
  • LagFixer / ESU — 实体限制与发包优化

各上游许可GPL/LGPL均予以尊重相关署名保留在对应源码中。

📎 Luminol API 接入(点击展开)
repositories {
    maven { url = "https://repo.menthamc.org/repository/maven-public/" }
}
dependencies {
    compileOnly("me.earthme.luminol:luminol-api:$VERSION")
}

🐱 Neko Core · 让你的服务器跑得像猫一样轻

Built with Claude Code