Cocos2d
Cocos2d-x+lua 版本稳定,技术相对成熟,可以ios adroid pc三端打包,支持热更新,相关技术人员多,相对比较好招人。
Cocos Creator + js 现在触控官方主推的引擎,官方工具支持最完善,上手比较简单,目前版本在不断迭代,同时新版本对老版本兼容性差,可以ios android pc web(h5) 四端打包,支持热更新,相关技术人员相对Cocos2d-x+lua少。
Unity3d
windows 和 linux,windows系统本身比较大, 同样的硬件配置相对linux系统性能会底一些、 安全性上说linux 比 windows高、 集群维护linux工具比windows多,可维护性强等
所以选择linux,linux系统比较常见的就是ubuntu和redhat体系,ubuntu系统版本生命周期长(3-4年),如果过了生命周期,就没有安全补丁,服务器就有安全风险。 centos是redhat企业级源码中遵循开源标准编译释放出来,成本低同时也享受RHEL服务支持,现在比较稳定的最新版本是centos 7.xx
稳定、高性能、可持久化、尽量满足多的数据结构、方便运营维护
Nosql
Redis: 内存数据库,支持string、 set、 list、 sortset、 hash数据结构, 单进程单线程,单个操作具有原子性(注意某一个操作响应过慢会影响整个redis的响应),可持久化(相对简单),支持集群,使用起来比较简单。
Mongo:内存数据库,可以支持复杂数据结构以及类似sql的操作语句,单进程多线程,单个操作不具有原子性,有一套复杂完备的持久化机制,支持集群,使用起来相对复杂。
Memcache:内存数据库, 支持简单的数据结构,不具有持久化机制。
.......................................................................................................................................................
关系型
Mariadb(mysql):开源,稳定,使用广,大家熟悉等
服务器引擎
自己研发:
如果有一套成熟稳定的自研框架,可以作为备选。
开源引擎:
开源框架基本都具有稳定、成熟、易用的特点,同时针对大部分业务功能都有成熟的解决方案。
Skynet: 底层c实现,提供完整的lua接口,业务层可以完全用lua开发。
Pomelo: 底层Node.js实现, 可以用js完成业务开发。
Kbengine: 底层c++实现,可以用python完成业务开发。
语言
比较重的c/c++ java等,开发效率底、容错底、对开发人员水平要求相对高。
比较轻的js、lua、python等,开发效率高、容错性高、对开发人员水平要求低。
框架技术选择
是否符合我们业务需求(承载能力、高稳定性、可维护性高、开发时间短等)?
是否符合我们现有技术的技术栈(学习成本低, 开发上手快)?
是否能够统一前后端技术?
是否使用群体广,还在维护期?
是否框架完成度高,周边功能完善?
........................................
棋牌这类交互及时性要求高,同步简单的游戏基本都选择 tcp 长连接作为网络连接。在连接之上就是我们的协议:
Websocket (tcp建立后需要有一次http请求握手)
传统二进制数据流(包的前4个字节表示包体长度)
websocket协议相对传统数据流安全性要高很多,它可以利用掩码对消息体加密,在接入一些第三方doss和cc防护平台时使用websocket的成本会比传统socket协议低很多。
基本思想:
简单水平扩展逻辑处理串行,无阻塞,异步Lock free
Centos 7 Skynet+lua Redis+mariadb(mysql)做为游戏数据存储,mongo做为流水日子存储 客户端和服务器tcp长连接,protobuf作为协议编解码工具,websocket和传统二进制数据流都支持
框架核心业务图框架总图
评论