新浪新闻客户端

手机棋牌游戏服务器架构你知道多少?!

手机棋牌游戏服务器架构你知道多少?!
2019年01月10日 12:42 新浪网 作者 乡村农家游

  据有关数数据显示,2016年中国棋牌游戏市场规模为58.6亿元,比2015年增长了19.1亿元,用户规模达2.58亿,同比增长5.9%,可以说,平均每5个人中就有一个棋牌游戏用户。如此庞大的用户群体也是手机棋牌游戏市场在2017年有更加长远的发展前景。这也促使的创业者走进棋牌游戏行业,今天重庆扬速科技来说说我们的服务器架构有哪些特点要点。

  手机棋牌游戏服务器架构你知道多少?!

  重庆扬速科技棋牌游戏开发

  棋牌类服务器的特点

  棋牌类不分区不分服

  一般来说,棋牌游戏都是不分区不分服的。

  房间模式

  即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息。

  每个房间的操作必须是顺序性

  这个特性类似与一般游戏的回合制,每个玩家的操作都是有顺序性的。

  1、功能设计

  登陆。一般都是需要接第三方登陆,登陆这一块是http操作,我们统一提供一个web服务,用来做登陆验证。因为在登陆时,调用第三方的http服务,这个过程可能很慢,如果放在逻辑服务器的话,可能会卡业务逻辑任务。因为可能不同的玩家业务请求可能同在一个线程中,如果有任务卡了,那么这个任务以后新来的请求请会卡住,导致消息延迟。

  获取游戏公告,也放在web服务中。公告一般是游戏登陆的时候向服务器获取一次。把它放在web服务器中,与业务逻辑分离的好处是,当业务逻辑服务器维护或更新的时候,不影响用户的登陆,和获取公告,这样用户体验会好一些。

  创建用户唯一的id,因为棋牌类游戏服务器是世界服,无分区,所以用户的id必须是全局唯一的。可以利用redis的incr方法,原子的递增,如果不想被别人根据userid的递增推算出有多少注册用户,递增的梯度可以随机,比如每次递增的值从1到1024中随机一个。

  创建房间,当房间主创建房间时,房间的id需要在任何台服务器上可以查询到,所以创建房间成功后,房间id要存储在共享内存redis中,每个房间id对应一个房间所在的ip地址或服务器id.这样,当有用户要进入房间,在查询房间id时,可能判断这个房间是否和自己登陆的游戏服务器相同。

  查找加入房间。根据房间id查询房间,查找到房间后,获取房间所在的ip地址或服务器id,如果发现和自己所登陆的服务器一样,直接可以加入房间。如果不一样,把这个房间所在的ip和端口返回给客户端,让客户端重新与房间所在的服务器建立连接,使用登陆时的token验证用户。

  游戏脚本调用。在验证游戏是否合法时,客户端与服务器都要验证,验证的算法是一样的,所以可以使用脚本来写,写一份脚本,在服务器与客户端中同时使用。可以使用lua。同一个算法使用同一个脚本 ,这样在开发新的同类型棋牌游戏时,只需要替换一下这个脚本就行了,不用再重复开发。

  2、后台管理系统

  这个一般是根据运营需求开发的,每个公司不一样。不过有一点,后台管理系统可能要和游戏服务器通信,这种通信方式最好是采用redis的订阅/发布机制。

  3、玩家同屏

  玩家同屏是棋牌游戏中的一个重点,对于做过那些大型的arpg,或mmo游戏的程序员来说,这并不是什么难事。因为同屏就是服务器对客户端的消息进行转发。

  以上是重庆扬速科技为大家分享的一些专业性的知识,重庆扬速科技的每一款棋牌游戏都是专业的游戏开发工程师费尽心思的成果,就是为了给创业者一个好的创业平台,给用户提供一个好的游戏体验。

特别声明:以上文章内容仅代表作者本人观点,不代表新浪网观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与新浪网联系。
权利保护声明页/Notice to Right Holders

举报邮箱:jubao@vip.sina.com

Copyright © 1996-2024 SINA Corporation

All Rights Reserved 新浪公司 版权所有