搞 FPS 的,只要一提到 Buff 系统,
十有八九会遇到这几个灵魂拷问:
- “Buff 到底该谁说了算?客户端?服务器?”
- “我这边用 C#,怎么优雅地写一套 Buff 系统,不把自己写死?”
- “加速、减伤、持续掉血这些东西,怎么在客户端显示、在服务器结算?”
- “多人对战怎么防止有人改本地数据把自己变成永远加速、永远无敌?”
今天就用大白话 + 小例子 + C# 伪代码,
把这件事从头到尾掰开讲:
FPS 游戏 Buff 系统
客户端与服务器的具体逻辑实现(C# 视角)
——从“加 10% 移速”到“一整套多人对战 Buff 架构”
文章偏实战向,但会尽量讲人话,
不搞什么高大上的架构空话。
一、先统一个大前提:Buff 的“真相”一定在服务器
多人 FPS 的铁律:
客户端是“画画的、播动画的、负责爽感的”;
服务器是“记账的、算数的、负责公平的”。
Buff 属于哪一类?
- 改血量、改伤害、改移速、改是否能放技能……
- 全部会影响输赢,属于“公平性关键逻辑”。
所以结论非常明确:
Buff 的真正生效、叠加、结束判定,一定要在服务器做。