【棋牌游戏】JAVA服务器设计与开发(一)

####开篇语
大概在16年时候,新型房卡模式打开棋牌游戏新里程,整个棋牌行业迅速改变模式,出现近两三年激烈的竞争景象,据统计全国大大小小棋牌游戏公司,专职棋牌公司近两万多家,这都不算后起大大小小游戏公司加紧棋牌研发行列。新型棋牌模式有一个很明显的特色,那就是地方区域“特点”化,几乎近定制化的模式打破以腾讯为主的多年霸占市场。最多见的地方区域棋牌划分:广东,湖南,四川,山西大唐等,不一样省份玩法不一,甚至同一省份不一样地方也有区别。这也致使大游戏公司不会轻易入驻这样的市场,而新型创业公司抓住切入点反而成功,好比最典型的闲来棋牌公司发展历程。好景不会一直持续,当前受国家对棋牌游戏增强管制,以及行业拼杀竞争激烈,棋牌行业发展有所缩减,创业公司加入棋牌行业日j渐见底,也出现倒闭一潮,预计未来能存活的公司很少,但从整个棋牌市场“总量”的需求看,存活下的公司后期应该是万幸前途无量。这里再也不多谈行业如何,言归正传,我以技术身份,解说《棋牌游戏》研发技术如何更优实现统一架构。web

####技术选型
服务器端技术:算法

游戏行业有个不成文的几乎近统一建议,服务器选择基本使用C++跟JAVA,后来出现新的技术GO,但从大市场来看,C++作服务器居多,从性能考虑C++确实比较快,可是咱们也发现不少游戏公司使用JAVA做为服务器技术。服务器

我的认为,微服务的出现使得服务端技术选型变得多样,若是不是太追求性能,反而JAVA更被看好。缘由是任何一家公司都须要创建一个管理平台,好比客服平台,帐号平台,数据中心管理平台等,而这类平台的技术选择基本用JAVA实现(固然国内如今也时兴Python)。就当前技术中,JAVA统一架构平台化更容易实现更稳定,各中心部门在对接上有统一的标准,可提升开发效率,节省成本;再则,JAVA的开发效率比C++的要高,敏捷,人员配置上相对C++经验不足亦可完成,且有统一架构指导不易出错,而C++的开发公认要求门槛高,是须要经验丰富的团队才能完成高效的成果,代价相对高。架构

举个例子,好比一家棋牌公司成立,就要有两大中心须要创建:一个游戏中心,一个是数据平台中心。若是这两个中心使用人员的技术不能统一,很容易走向两个各管各的部门,这样,不管在总体架构建设,仍是业务对接上,很难有一个核心标准,业务穿插成堆乱套,人员调动不利;反之,统一技术架构,对任何组织创业公司,在各个方面考虑上都是有不少好处。大概估计,三十人技术团队,统一技术与否,团队节省成本差至少5人,若是JAVA的统一架构作的好,这我的数差可达十人之多(16时候《陌陌》直播服务器核心开发在5人左右)。svg

统一架构的好处还有,根据多年参与项目经验,大多数公司到了必须重构阶段,不少也是由于前期技术不统一,形成后期业务穿插成堆乱套,技术人员存留不足等,结果形成成本加大不得已重构,成本代价依旧很高。微服务

固然,技术选型还要参考最主要的一点,核心负责人精通的技术,不能为了统一架构技术而选择不熟悉的技术,哪怕是不统一架构也要选择最熟悉的技术对应实现最核心的东西,由于咱们了解过,多数技术创业成功的公司,前期技术稳定可靠性相当重要,产品的稳定与否直接关系公司存亡。性能

结论,针对棋牌游戏特色,核心算法对性能的要求不是特强特色,应属于非强网类游戏,没必要过于追求性能。那么,若是技术选型等同或者没有特别考虑地方,强烈建议统一技术,统一架构组织,JAVA的平台化建设是一个更优选择。xml

客户端技术:游戏

客户端技术能够使用当前流行的驱动语言Cocos-Lua或者Cocos-JS。据了解Cocos-JS的通用性更高,也源至JS的流行跟通用。鉴于本文重点谈棋牌服务器架构,对客户端技术不作过多说明。开发