Juya Cai

技能系统及其同步--MMO服务器开发技术点记录(七)

技能系统可以单独开发个组件。下面来介绍一下常见的CombatComponent的设计思路。和移动组件一样,技能组件的同步同样需要进行插值、预测。 我们的技能系统先设计的简单些,只有普攻和特殊技能。 普攻 普攻的执行逻辑是这样的: 客户端发起普攻请求,包含目标信息和技能信息,同时本地播放普攻动画; 服务端接收到请求后,进行合法性校验,执行普攻逻辑; 服务端生成攻击事件,并将...

场景服务--MMO服务器开发技术点记录(五)

Service / 服务 服务器其实也可以称为一个服务,为客户端提供某些功能。通常一个服务会运行在一个端口上供客户端访问。像下面我们要深入的场景服务,是一个独立运行的单点服务。游戏服务器涉及的服务通常还包括登录服务,大厅服务等。服务类继承自TcpServer类,属于应用层,与网络层解耦开来。这里可以设计一个连接器的接口,实现服务可以自定义所需的通信协议,如TCP、UDP、Websocket...

网络同步之状态同步--MMO服务器开发技术点记录(四)

状态同步 网络同步是服务器开放老生常谈的技术点,也是MMO游戏中至关重要的一环。它确保了所有玩家在同一场景中的状态一致性,使得玩家之间的交互能够实时反映在游戏世界中。网络同步方案大致分为两类:帧同步和状态同步。关于帧同步,可以参考这篇博客帧同步 本篇主要讲解在我们的MMO服务器中,状态同步是如何实现的。 在ECS架构篇中,我们讲到游戏系统由多个实体组成,实体内由多个组件组成。不同玩家实...

移动同步--MMO服务器开发技术点记录(六)

联想这样的场景,在联机游戏中,其他玩家会在它们的场景中看见我的角色,我会我的场景中操纵我的角色。如果要实现两个客户端之间的移动同步,我们需要在服务器也创建一个同样的角色。这样同一个角色就存在三个不同的实例,任意一个实例的状态变化都需要同步到另外两个实例。这个思路类似于UE引擎中的NetRole。我们假设这三个实例的角色分别为: enum class Role { authority...

消息编码规则--MMO服务器开发技术点记录(二)

我在网络框架这一篇中介绍如何使用7-bits编码方法解决tcp的粘包问题,不仅仅是tcp的字节流,我们内部自己的消息也存在这样的问题。我将在本节具体介绍我们如何继续使用7-bits编码方法将设计的消息结构体编码成一个可解析的字节流。 假设现在有这样一个消息,负责回复客户端的加入请求。我们称之为join_reply消息。所有proto消息都由两部分构成,消息名和消息体。消息名用于标识消息的类...