HTML5技术

谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现 - 千年风雅丶(2)

字号+ 作者:H5之家 来源:H5之家 2017-07-23 10:01 我要评论( )

这部分为服务器的网络通信底层实现,也是游戏服务器的核心内容,下面将结合具体的代码以及代码注释一一介绍底层的实现,可能会涉及到一些C#的网络编程知识,对C#语言不熟悉没关系,笔者对C#的运用也仅仅停留在使用

  这部分为服务器的网络通信底层实现,也是游戏服务器的核心内容,下面将结合具体的代码以及代码注释一一介绍底层的实现,可能会涉及到一些C#的网络编程知识,对C#语言不熟悉没关系,笔者对C#的运用也仅仅停留在使用阶段,只需通过C#这门简单易懂的语言来窥探整个服务器通信底层搭建起来的过程,来到我们的NetFrame网络通信框架,这部分干货很多,我将用完整的代码和详尽的注释来阐明其意。

  

  • 1.四层Socket模型
  •  

      将SocketModel分为了四个层级,分别为:

      (1)type:一级协议 用于区分所属模块,如用户模块

      (2)area:二级协议 用于区分模块下的所属子模块,如用户模块的子模块为道具模块1、装备模块2、技能模块3等

      (3)command:三级协议  用于区分当前处理逻辑功能,如道具模块的逻辑功能有“使用(申请/结果),丢弃,获得”等,技能模块的逻辑功能有“学习,升级,遗忘”等;

      (4)message:消息体 当前需要处理的主体数据,如技能书

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace NetFrame.auto { public class SocketModel { 一级协议 用于区分所属模块 type {get;set;} 二级协议 用于区分 模块下所属子模块 area { get; set; } 三级协议 用于区分当前处理逻辑功能 command { get; set; } 消息体 当前需要处理的主体数据 message { get; set; } public SocketModel() { } public SocketModel(byte t,int a,int c,object o) { this.type = t; this.area = a; this.command = c; this.message = o; } public T GetMessage<T>() { return (T)message; } } }

       同时封装了一个消息封装的方法,收到消息的处理流程如图所示:

  • 2.对象序列化与反序列化为对象  
  •   序列化: 将数据结构或对象转换成二进制串的过程。

      反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • createjs 小游戏开发实战 - beidan

      createjs 小游戏开发实战 - beidan

      2017-07-07 08:00

    • 前端实现连连看小游戏(1) - beidan

      前端实现连连看小游戏(1) - beidan

      2017-06-22 09:03

    • 网页版扫雷游戏 - 季末的寂寞

      网页版扫雷游戏 - 季末的寂寞

      2017-04-21 13:00

    • Html5游戏框架createJS组件--EaselJS - 叶超Luka

      Html5游戏框架createJS组件--EaselJS - 叶超Luka

      2017-03-22 12:01

    网友点评
    "