HurricaneSwordsEx 单次施放服务端循环 100 次 spawnParticle:每次调用广播粒子包 #3

Closed
opened 2026-09-08 18:47:26 +00:00 by layue13 · 1 comment
Owner

问题描述

HurricaneSwordsEx.java:78-84 在服务端 for 循环 100 次调用 worldObj.spawnParticle("explode",...)——服务端 spawnParticle 每次向周围玩家广播 S2APacketParticles。100 次循环 = 100 个独立粒子包,而客户端粒子渲染完全可以用更少包或客户端本地生成。

技术分析

代码位置:

  • 文件:src/main/java/mods/flammpfeil/slashblade/exsa/specialattack/HurricaneSwordsEx.java:78-84
  • 方法:doSpacialAttack

调用链:
SA 释放(服务端)
→ for i in 0..100: worldObj.spawnParticle("explode", ...)
→ 每次调用 → S2APacketParticles 广播给 tracking 范围内全部玩家

影响规模

单次施放 100 包 × 周围玩家数。多玩家同时施放:P 玩家 × 100 包/次。单次成本低(SA 有冷却),列低危。

根因分析

网络同步:服务端逐粒子广播,无批量。

优化方向

  1. 粒子改客户端生成(服务端发单个自定义标记包),或
  2. 减少数量/复用一次广播多粒子的方式(1.7.10 原生包单粒子,建议改客户端渲染事件)。
    保持视觉表现不变。不影响 Forge API/Mod API/存档。

验证方案

施放时抓包/网络统计对比包数量。

## 问题描述 HurricaneSwordsEx.java:78-84 在服务端 for 循环 100 次调用 `worldObj.spawnParticle("explode",...)`——服务端 spawnParticle 每次向周围玩家广播 S2APacketParticles。100 次循环 = 100 个独立粒子包,而客户端粒子渲染完全可以用更少包或客户端本地生成。 ## 技术分析 代码位置: - 文件:src/main/java/mods/flammpfeil/slashblade/exsa/specialattack/HurricaneSwordsEx.java:78-84 - 方法:doSpacialAttack 调用链: SA 释放(服务端) → for i in 0..100: worldObj.spawnParticle("explode", ...) → 每次调用 → S2APacketParticles 广播给 tracking 范围内全部玩家 ## 影响规模 单次施放 100 包 × 周围玩家数。多玩家同时施放:P 玩家 × 100 包/次。单次成本低(SA 有冷却),列低危。 ## 根因分析 网络同步:服务端逐粒子广播,无批量。 ## 优化方向 1. 粒子改客户端生成(服务端发单个自定义标记包),或 2. 减少数量/复用一次广播多粒子的方式(1.7.10 原生包单粒子,建议改客户端渲染事件)。 保持视觉表现不变。不影响 Forge API/Mod API/存档。 ## 验证方案 施放时抓包/网络统计对比包数量。
Author
Owner

Archive 组织仓已过时(Daniel 2026-09-23),整组织 issue 统一关闭。

Archive 组织仓已过时(Daniel 2026-09-23),整组织 issue 统一关闭。
layue13 added the
type
perf
priority
p3
labels 2026-10-06 21:07:43 +00:00
layue13 changed title from [性能][低] HurricaneSwordsEx 单次施放服务端循环 100 次 spawnParticle:每次调用广播粒子包 to HurricaneSwordsEx 单次施放服务端循环 100 次 spawnParticle:每次调用广播粒子包 2026-10-06 21:07:43 +00:00
This repo is archived. You cannot comment on issues.
No labels
priority
p3
type
perf
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Archive/slashblade-exsa#3