
zinx-Golang游戏服务器框架
文章平均质量分 81
转载作者的预雀地址:https://www.yuque.com/aceld
本专栏主要针对zinx-Golang服务器框架的学习笔记
无休止符
不要让任何事情,成为你不去学习的理由!!!
展开
-
18-zinx-Golang-MMO-玩家下线业务
2 - player处理玩家下线src/mmo_game_zinx/core/player.go三、目录结构与完整源码点击下载完整源码:mmo_game_zinxV5.0点击下载对应客户端:mmo_game_u3d_client原创 2022-06-06 11:40:44 · 184 阅读 · 0 评论 -
17-zinx-Golang-MMO-移动位置同步与广播
2 - 广播当前玩家的移动信息src/mmo_game_zinx/core/player.go3 - main中添加移动路由src/mmo_game_zinx/main.go三、测试结论通过测试:我们可以看到任何的客户端移动都会同步到其他客户端,说明位置同步实现没有问题四、目录结构与完整源码点击下载完整源码:mmo_game_zinxV4.0点击下载对应客户端:mmo_game_u3d_client...原创 2022-06-06 11:19:51 · 455 阅读 · 0 评论 -
16-zinx-Golang-MMO-上线位置信息同步
2 - 同步玩家上线的位置消息src/mmo_game_zinx/main.go:增加调用同步周边玩家src/mmo_game_zinx/core/player.go:实现方法 —— 同步玩家上线的位置信息三、测试结论测试截图:可以看到每个player都可以看到其他player的上线点击下载完整源码:mmo_game_zinxV3.0点击下载对应客户端:mmo_game_u3d_client...原创 2022-06-06 10:01:07 · 503 阅读 · 0 评论 -
15-zinx-Golang-MMO-世界聊天系统
二、世界管理模块1 - 实现思路需求分析:因为世界聊天消息需要广播给其他玩家,我们就需要获取到所有的玩家,这里使用世界模块来进行管理2 - 添加世界管理对象mmo_game_zinx/core/world_manager.go三、业务集成世界管理模块1 - 玩家上线添加到世界管理模块mmo_game_zinx/main.go2 - 聊天业务API与实现实现思路src/mmo_game_zinx/main.go:玩家上线后绑定一个玩家ID的pid属性src/m原创 2022-06-02 14:47:53 · 474 阅读 · 0 评论 -
14-zinx-Golang-MMO项目构建与用户上线
基于golang实现zinx的MMO游戏用户上线登录功能原创 2022-06-01 19:03:55 · 838 阅读 · 0 评论 -
13-zinx-Golang-MMO游戏Proto3协议
MMO游戏案例的Proto3协议介绍原创 2022-06-01 10:23:14 · 293 阅读 · 0 评论 -
12-zinx-Golang-MMO服务器-Protocuf
目录前言一、Protocuf简介二、Protobuf环境安装1 - windows下安装Protobuf前言在进入游戏业务编写前,我们还需要了解下数据传输协议一、Protocuf简介Protobuf:Google Protocol Buffer (简称 Protobuf)是google旗下的⼀款轻便⾼效的结构化数据存储格式,平台⽆关、语⾔⽆关、可扩展,可⽤于通讯协议和数据存储等领域。所以很适合⽤做数据存储和作为不同应⽤,不同语⾔之间相互通信的数据交换格式,只要实现相同的协议格式即同⼀ prot原创 2022-06-01 09:53:37 · 362 阅读 · 0 评论 -
11-zinx-Golang-MMO服务器-AOI算法实现
目录一、AOI算法简介二、网络法实现AOI算法三、实现AOI格子结构1 - 实现AOI格子结构分析2 - 实现AOI格子结构体四、实现AOI管理模块1 - AOIManager属性分析2 - AOIManager方法分析3 - 实现AOIManager的初始化4 - 单元测试AOIManager的初始化五、根据当前格子计算周围的格子1 - 情况1:格子四周都有格子2 - 情况2:格⼦在AOI区域的四个顶⻆3 - 情况3:格子周围缺一列或一行4 - 根据格⼦的gID得到当前周边的九宫格信息5 - 单元测试根据原创 2022-05-28 22:19:23 · 1249 阅读 · 3 评论 -
10-zinx基于Golang-链接属性配置
目录前言一、实现思路二、链接添加链接配置接⼝三、链接实现配置接口四、测试链接属性配置五、目录结构六、完整源码前言当我们在使⽤链接处理的时候,希望和链接绑定⼀些⽤户的数据,或者参数。那么我们现在可以把当前链接设定⼀些传递参数的接⼝或者⽅法一、实现思路二、链接添加链接配置接⼝zinx/ziface/iconnection.gopackage zifaceimport "net"//定义链接模块的抽象层type IConneciton interface { //启动链接 让当原创 2022-05-28 18:24:21 · 214 阅读 · 0 评论 -
9-zinx基于Golang-链接管理与Hook
目录前言一、链接管理模块1 - 实现思路2 - 接口:zinx/ziface/iconnmanager.go3 - 实现:zinx/znet/connmanager.go二、Zinx框架集成链接管理模块1 - 实现思路2 - Server集成ConnManager3 - Connection集成ConnManager三、自定义链接前后的业务1 - 实现思路2 - iserver接口注册conn的hook方法3 - server实现4 - 选定start和stop的Hook方法调用位置四、测试Hook五、项目原创 2022-05-28 18:07:02 · 651 阅读 · 0 评论 -
8-zinx基于Golang-消息队列多任务
目录前言一、实现思路二、创建消息队列1 - MsgHandle增加消息队列和worker池2 - 将消息队列和worker数量配置化三、Worker工作池实现1 - 定义启动⼯作池的接⼝2 - 实现工作池3 - 将消息交给消息队列处理4 - 工作池开启四、项目目录结构五、完整源码前言之前zinxV0.7我们已经实现了读写分离,对应每个client,我们有3个go程,分别是reader、writer、DoMsgHandle假设服务器有10W个client请求,那么server就会有10W个reader原创 2022-05-28 16:32:07 · 444 阅读 · 0 评论 -
7-zinx基于Golang-读写分离模型
目录前言一、实现思路二、项目结构三、源码修改zinx/znet/connection.go四、完整源码前言之前connection使用StartReader对客户端的数据接下来我们就要对Zinx做⼀个⼩⼩的改变,就是与客户端进修数据交互的Gouroutine由⼀个变成两个,⼀个专⻔负责从客户端读取数据,⼀个专⻔负责向客户端写数据。这么设计有什么好处,当然是⽬的就是⾼内聚,模块的功能单⼀Server依然是处理客户端的响应,主要关键的⼏个⽅法是Listen、Accept等。当建⽴与客户端的套接字后,那原创 2022-05-27 23:33:17 · 524 阅读 · 0 评论 -
6-zinx基于Golang-多路由实现
目录前言一、实现思路二、消息管理模块实现1 - 添加接口ziface/imsgHandler.go2 - 实现接口znet/msgHandler.go三、Zinx集成消息管理模块前言之前在已经给Zinx配置了路由模式,但是之前的Zinx只能绑定一个路由的处理业务方法显然这是无法满足基本的服务器需求,需要给Zinx添加多路由的方案查看之前的Server定义,路由Router只有一个//iServer的接口实现,定义一个Server的服务器模块type Server struct { //服务原创 2022-05-27 22:43:50 · 436 阅读 · 0 评论 -
5-zinx基于Golang-消息封装
目录前言一、创建消息类型二、消息的粘包三、封包拆包的实现1 - 接口:ziface/idatapack.go2 - 实现:znet/datapack.go3 - 单元测试:znet/datapack_test.go四、消息封装集成到Zinx框架前言之前我们使用Request来保存服务器的数据,很显然使用[]byte来接收数据,没有长度也没有消息类型,接下来就要针对这个消息进行封装一、创建消息类型消息思路:一个基本的message包,会包含消息ID、数据、数据长度三个成员,并提供基本的sette原创 2022-05-27 18:50:19 · 589 阅读 · 0 评论 -
4-zinx基于Golang-全局配置
目录前言一、全局配置实现思路二、项目目录结构说明三、源码修改说明1 - 新增全局配置对象2 - 新增json配置文件3 - server.go替换初始化参数四、完整源码前言为了减少大频率修改参数的麻烦,接来下需要对zinx增加配置模块和全局获取zinx参数的对象一、全局配置实现思路二、项目目录结构说明三、源码修改说明1 - 新增全局配置对象zinx/utils/globalobj.go在这里插入代码片2 - 新增json配置文件conf/zinx.json{ "N原创 2022-05-26 18:34:30 · 332 阅读 · 0 评论 -
3-zinx基于Golang-请求与路由模块实现
目录前言一、IRequest消息请求抽象类1 - IRequest需求分析2 - irequest.go3 - request.go二、router路由模块1 - router模块分析2 - irouter.go3 - router.go三、源码修改四、Router模块总结1 - 总结xmind2 - 项目结构六、完整源码1 - ziface接口2 - znet实现3 - 测试类前言在zinxV0.2中conn链接的业务处理HandleFunc是固定写死的,接下来我们需要自定义一个conn处理业务的接原创 2022-05-26 15:39:45 · 509 阅读 · 0 评论 -
2-zinx基于Golang-链接模块实现
目录一、链接模块实现思路二、模块结构三、源码修改说明四、完整源码1 - iserver.go2 - server.go3 - iconnection.go4 - connection.go5 - server.go6 - client.go一、链接模块实现思路二、模块结构三、源码修改说明1-新增iconnection链接接口:定义链接的方法2-新增connection链接实现:实现链接3-znet/server.go中将链接后的业务处理交给connection对象来处理 //3 阻塞原创 2022-05-26 12:03:48 · 325 阅读 · 0 评论 -
1-zinx基于Golang-基础的server实现
目录前言一、Zinx架构简介二、基础server实现思路前言转载作者的预雀地址:https://www.yuque.com/aceldZinx的Github —— Git: https://github.com/aceld/zinx码云(Gitee) —— Git: https://gitee.com/Aceld/zinx文章主要针对Zinx框架学习的总结一、Zinx架构简介为什么要做Zinx:引用作者原话“我们为什么要做Zinx,Golang目前在服务器的应用框架很多,但是应用在原创 2022-05-25 23:07:20 · 431 阅读 · 0 评论