Juya Cai

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

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

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

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

ECS架构--MMO服务器开发技术点记录(三)

本篇是踏入MMO服务器开发的第一步,在设计服务器的各种状态服务之前,我想先介绍一个设计模式:ECS设计模式。ECS是游戏客户端的经典设计模式,读者可能会好奇,客户端的设计模式为什么要在服务器这里使用呢?这是为了方便实现客户端和服务端的逻辑同步,方便状态的同步。也就是我们需要在服务端也实现一套EcS系统,和客户端的ESC保持一致。 ECS架构 / Entity - Component - S...

网络框架及消息处理系统--MMO服务器开发技术点记录(一)

本篇文章记录MMO服务器项目开发中学习的技术点和遇到的问题。大致分成几个模块进行记录。 包管理和构建工具 采用cocan和cmake进行依赖库的管理和源代码的构建工作。 网络框架 任何联网应用离不开网络通信协议,该服务器选用TCP作为通信协议。通过IO多路复用实现多客户端的并发通信,为了减轻开发负担(服务器的网络框架和普通互联网的网络框架本质上没有太大的区别),这里采用libevent...