tag

网络编程

共 192 篇文章。
全部文章JavaGo书稿TypeScript游戏开发独立开发者小游戏游戏设计Godot性能优化RustKafkaPython游戏引擎
mmo

《MMO 服务器开发》14.1 服务器时间线与时钟同步

「现在几点」这个问题在服务器上比想象中难:墙钟会被 NTP 校时、被 GC 暂停打断,客户端时钟和服务端更是各走各的。本节把逻辑时间与墙钟彻底分离,用单调钟搭一条只向前走的时间线,用 NTP 四时间戳估出客户端时钟偏移,并用确定性测试演示一次向后跳变是怎么被时间线吸收掉的。

7 分钟阅读
MMO 游戏服务端 网络编程
mmo

《MMO 服务器开发》13.2 服务器回滚与和解

预测让客户端先走一步,但权威永远在服务端:一旦服务端的答案和本地不一致,客户端必须回滚到权威状态、把未确认的输入重放一遍。本节把 13.1 的输入缓冲接到和解逻辑上,讲清裁剪-复位-重放三步、用一条测试给回滚的代价定上界(重放条数只跟 RTT 有关),并给出和解误差阈值的取法与「小误差平滑、大误差瞬移」的判据。

10 分钟阅读
MMO 游戏服务端 网络编程
mmo

《MMO 服务器开发》13.1 输入缓冲与本地预测

客户端先走一步能掩盖一个 RTT 的延迟,代价是服务端必须记住每个玩家「已经确认到哪一条输入」。本节给 aegis 的 predict 包写一个真实的输入缓冲:客户端给每次输入编号、本地立刻前进、把未确认的输入排进重放队列,服务端回一个确认号。最后用固定随机种子跑 500 步确定性回放,验证「服务端同意时客户端预测与权威状态逐字节相等」。

9 分钟阅读
MMO 游戏服务端 网络编程
mmo

《MMO 服务器开发》9.3 世界时钟与 Tick 预算

世界时钟把不稳定的墙钟时间折算成固定步长的逻辑时间,让「第 N 帧发生了什么」完全确定、可重放。本节从零实现一个逻辑帧时钟:固定步长与累加器、单帧步数上限、追帧 / 丢弃 / 降频三种超支策略,以及时间缩放;并用确定性测试演示「死亡螺旋」是怎么形成的、丢弃策略又是怎么把它掐断的。

7 分钟阅读
MMO 游戏服务端 网络编程
mmo

《MMO 服务器开发》9.1 心跳超时与技能冷却

心跳超时、技能冷却、Buff 到期是三类时间尺度完全不同的定时任务,却常被同一套「一个任务一个 time.Timer」的写法一锅端。本节先厘清三种尺度,再给 aegis 写两个真正省掉定时器的结构:惰性判定的冷却表与单节拍扫描的心跳看门狗,并用本机基准对比每定时器一个堆节点与共享扫描的成本。

9 分钟阅读
MMO 游戏服务端 网络编程