本篇分三部分:
- 架构设计:一套联网近战系统由哪些模块组成、数据怎么流动、关键代码怎么写;
- 案例分析:拆解 ValveSource SDK 2013中公开的近战代码(半条命 2 撬棍 + HL2MP 延迟补偿),逐行讲它为什么这么写,再看它有哪些局限;
- 扩展:如果要把它升级成"真实挥砍轨迹",架构上需要改哪些地方。
说明:案例代码根据 Source SDK 2013 公开源码整理,做了删减和中文注释,常量取自 SDK;延迟补偿部分的公式是对源码逻辑的简化表述。架构设计部分是通用设计思路,不是某个商业游戏的内部实现。
第一部分:架构设计
一、先确定设计目标
架构不是凭空画的,先要列清楚"要什么、不要什么":
| 目标 | 具体要求 |
|---|---|
| 手感 | 按下攻击0 延迟出动画和音效;屏幕上砍中,大概率就算中 |
| 公平 | 伤害由服务器决定;外挂不能远程砍、隔墙砍、加速砍 |
| 一致 | <