美文网首页zinx-golang
【Zinx应用-MMO游戏案例-(4)Proto3协议定义】Go

【Zinx应用-MMO游戏案例-(4)Proto3协议定义】Go

作者: 刘丹冰Aceld | 来源:发表于2019-03-04 18:21 被阅读0次
    Zinx源代码

    github
    https://github.com/aceld/zinx
    gitee码云
    https://gitee.com/Aceld/zinx


    在线开发教程

    【B站】
    zinx视频教程-Golang轻量级TCP服务器框架-适合自学者

    【YouTube】
    zinx开发YouTube中国版

    微信端文档

    技术资源分享.jpg

    【Zinx教程目录】
    完整教程电子版(在线高清)-下载
    Zinx框架视频教程(框架篇)(完整版下载)链接在下面正文
    Zinx框架视频教程(应用篇)(完整版下载)链接在下面正文
    Zinx开发API文档
    Zinx第一章-引言
    Zinx第二章-初识Zinx框架
    Zinx第三章-基础路由模块
    Zinx第四章-全局配置
    Zinx第五章-消息封装
    Zinx第六章-多路由模式
    Zinx第七章-读写分离模型
    Zinx第八章-消息队列及多任务
    Zinx第九章-链接管理
    Zinx第十章-连接属性设置


    【Zinx应用案例-MMO多人在线游戏】
    (1)案例介绍
    (2)AOI兴趣点算法
    (3)数据传输协议protocol buffer
    (4)Proto3协议定义
    (5)构建项目及用户上线
    (6)世界聊天
    (7)上线位置信息同步
    (8)移动位置与AOI广播
    (9)玩家下线
    (10)模拟客户端AI模块


    五、MMO游戏的Proto3协议

    MsgID Client Server 描述
    1 - SyncPid 同步玩家本次登录的ID(用来标识玩家)
    2 Talk - 世界聊天
    3 MovePackege - 移动
    200 - BroadCast 广播消息(Tp 1 世界聊天 2 坐标(出生点同步) 3 动作 4 移动之后坐标信息更新)
    201 - SyncPid 广播消息 掉线/aoi消失在视野
    202 - SyncPlayers 同步周围的人位置信息(包括自己)

    MsgID:1

    SyncPid

    • 同步玩家本次登录的ID(用来标识玩家), 玩家登陆之后,由Server端主动生成玩家ID发送给客户端

    • 发起者: Server

    • Pid: 玩家ID

    message SyncPid{
        int32 Pid=1;
    }
    

    MsgID:2

    Talk:

    • 同步玩家本次登录的ID(用来标识玩家), 玩家登陆之后,由Server端主动生成玩家ID发送给客户端

    • 发起者: Client

    • Content: 聊天信息

    message Talk{
        string Content=1;
    }
    

    MsgID:3

    MovePackege:

    • 移动的坐标数据

    • 发起者: Client

    • P: Position类型,地图的左边点

    • ActionData: 动作类型

    message MovePackege{
        Position P=1;
        int32 ActionData=2;
    }
    
    message Position{
        float X=1;
        float Y=2;
        float Z=3;
        float V=4;
    }
    

    MsgID:200

    BroadCast:

    • 广播消息

    • 发起者: Server

    • Tp: 1 世界聊天, 2 坐标, 3 动作, 4 移动之后坐标信息更新

    • Pid: 玩家ID

    message BroadCast{
        int32 Pid=1;
        int32 Tp=2;
        oneof Data {
            string Content=3;
            Position P=4;
            int32 ActionData=5;
        }
    }
    

    MsgID:201

    SyncPid

    • 广播消息 掉线/aoi消失在视野

    • 发起者: Server

    • Pid: 玩家ID

    message SyncPid{
        int32 Pid=1;
    }
    

    MsgID:202

    • 同步周围的人位置信息(包括自己)

    • 发起者: Server

    • ps: Player 集合,需要同步的玩家

    message SyncPlayers{
        repeated Player ps=1;
    }
    
    message Player{
        int32 Pid=1;
        Position P=2;
    }
    


    关于作者:

    作者:Aceld(刘丹冰)
    简书号:IT无崖子

    mail: danbing.at@gmail.com
    github: https://github.com/aceld
    原创书籍gitbook: http://legacy.gitbook.com/@aceld

    原创声明:未经作者允许请勿转载, 如果转载请注明出处

    相关文章

      网友评论

        本文标题:【Zinx应用-MMO游戏案例-(4)Proto3协议定义】Go

        本文链接:https://www.haomeiwen.com/subject/untwuqtx.html