棋牌游戏前后端技术介绍

1前端技术介绍

  1. Cocos2d

Cocos2d-x+lua 版本稳定,技术相对成熟,可以ios  adroid  pc三端打包,支持热更新,相关技术人员多,相对比较好招人。

Cocos Creator + js 现在触控官方主推的引擎,官方工具支持最完善,上手比较简单,目前版本在不断迭代,同时新版本对老版本兼容性差,可以ios  android  pc  web(h5) 四端打包,支持热更新,相关技术人员相对Cocos2d-x+lua少。

  1. Unity3d

2 后端技术介绍

2.1 服务器系统选择

windows 和 linux,windows系统本身比较大, 同样的硬件配置相对linux系统性能会底一些、 安全性上说linux 比 windows高、 集群维护linux工具比windows多,可维护性强等

所以选择linux,linux系统比较常见的就是ubuntu和redhat体系,ubuntu系统版本生命周期长(3-4年),如果过了生命周期,就没有安全补丁,服务器就有安全风险。 centos是redhat企业级源码中遵循开源标准编译释放出来,成本低同时也享受RHEL服务支持,现在比较稳定的最新版本是centos 7.xx

2.2 数据库

稳定、高性能、可持久化、尽量满足多的数据结构、方便运营维护

  1. Nosql

Redis: 内存数据库,支持string、 set、 list、 sortset、 hash数据结构, 单进程单线程,单个操作具有原子性(注意某一个操作响应过慢会影响整个redis的响应),可持久化(相对简单),支持集群,使用起来比较简单。

Mongo:内存数据库,可以支持复杂数据结构以及类似sql的操作语句,单进程多线程,单个操作不具有原子性,有一套复杂完备的持久化机制,支持集群,使用起来相对复杂。

Memcache:内存数据库, 支持简单的数据结构,不具有持久化机制。

.......................................................................................................................................................

  1. 关系型

  Mariadb(mysql):开源,稳定,使用广,大家熟悉等

2.3  服务器引擎和语言

  1. 服务器引擎

自己研发:

如果有一套成熟稳定的自研框架,可以作为备选。

开源引擎:

开源框架基本都具有稳定、成熟、易用的特点,同时针对大部分业务功能都有成熟的解决方案。

Skynet: 底层c实现,提供完整的lua接口,业务层可以完全用lua开发。

Pomelo: 底层Node.js实现, 可以用js完成业务开发。

Kbengine: 底层c++实现,可以用python完成业务开发。

  1. 语言

比较重的c/c++ java等,开发效率底、容错底、对开发人员水平要求相对高。

比较轻的js、lua、python等,开发效率高、容错性高、对开发人员水平要求低。

 

  1. 框架技术选择

是否符合我们业务需求(承载能力、高稳定性、可维护性高、开发时间短等)?

是否符合我们现有技术的技术栈(学习成本低, 开发上手快)?

是否能够统一前后端技术?

是否使用群体广,还在维护期?

是否框架完成度高,周边功能完善?

........................................

2.4 协议

棋牌这类交互及时性要求高,同步简单的游戏基本都选择 tcp 长连接作为网络连接。在连接之上就是我们的协议:

Websocket (tcp建立后需要有一次http请求握手)

 

棋牌游戏前后端技术介绍

传统二进制数据流(包的前4个字节表示包体长度)

 

 

棋牌游戏前后端技术介绍

websocket协议相对传统数据流安全性要高很多,它可以利用掩码对消息体加密,在接入一些第三方doss和cc防护平台时使用websocket的成本会比传统socket协议低很多。

对于msghead消息体和具体协议消息体,目前比较广泛使用protobuf,首先protobuf提供的语言版本多,稳定、效率高,编解码以后协议包体小。另外,协议的向前向后兼容性好。

 

2.4 框架设计

基本思想:

  1. 简单
  2. 水平扩展
  3. 逻辑处理串行,无阻塞,异步
  4. Lock free

 

3 现有框架设计

    1.    Centos 7
    2.    Skynet+lua
    3.    Redis+mariadb(mysql)做为游戏数据存储,mongo做为流水日子存储
    4.    客户端和服务器tcp长连接,protobuf作为协议编解码工具,websocket和传统二进制数据流都支持

3.1 架构设计图

  1. 框架核心业务图棋牌游戏前后端技术介绍
  2. 框架总图棋牌游戏前后端技术介绍