• 【甘南天气】最新甘南今天天气,实时提供甘南气温、空气质量、24小时天气预报、生活指数查询 2019-11-21
  • 标致5008当选法国总统座驾 防弹装甲加身外观低调 2019-11-10
  • 台州公务员管理再也不用“往返跑”了!“最多跑一次”撬动组织人事改革 全省首个试点 2019-11-10
  • 美容养颜 别忘了桃胶皂角米雪耳羹 2019-11-04
  • 贵州绿博会将设河北主宾馆 展示河北省大健康产业发展现状 2019-10-20
  • 2018英雄联盟季中冠军赛宣传片:成就传奇! 2019-10-20
  • [微笑]原因很简单:房产的升值是由关联资源的增加形成的,跟房屋的产权人没有任何关系,肯定就不能让其从中获利! 2019-10-12
  • 高铁座位让是美德,不让是权利-光明时评 2019-10-07
  • 中央纪委通报11起违反中央八项规定精神问题 2019-09-27
  • 这类中国人嫌弃的房产,正在被外国人热抢... ——凤凰房产海外 2019-09-23
  • 网约车司机因接客时间起纠纷 持棒球棍殴打乘客 2019-09-14
  • 个税法迎第七次大修 起征点调至每年6万元 2019-09-14
  • “改革开放40年山东教育成就展”启动 2019-09-13
  • 专家:遏制官员假离婚现象亟须增设离婚审计 2019-08-24
  • 申纪兰:人民代表就要代表人民 2019-08-24
  • 棋牌游戏服务器架构设计

    4887铁l算盘资料四肖中特 www.sioyo.tw 作者:富贵互娱来源:富贵互娱公司时间:2018-12-30 16:21阅读(0次)

      棋牌游戏开发中由于棋牌类的游戏数据少,计算量也小,所以完全可以不使用内存缓存,而直接使用redis共享内存,用户的所有数据都缓存在redis中。更新也同步更新到redis中,这样不管一个用户登陆哪一台业务服务器,都能获得自己的最新数据。今天我们一起来了解下棋牌游戏服务器架构设计。

    棋牌游戏开发

    一、棋牌类服务器的特点
    1、棋牌类不分区不分服
      一般来说,棋牌游戏都是不分区不分服的。所以棋牌类服务器要满足随着用户量的增加而扩展的需要。
    2、房间模式
      即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息。
    3、每个房间的操作必须是顺序性
       这个特性类似与一般游戏的回合制,每个玩家的操作都是有顺序性的。

    二、需要解决的技术点
    1、数据共享
       因为棋牌类游戏不分区不分服,我们在设计服务器的时候,是按世界服的思想去设计,即服务器是一个n多台物理机的集群。当用户登陆服务器,创建房间时,可能根据负载均衡算法,它可以在任何一台服务器上面。所以,不管用户登陆到哪一台服务器上面了,都可以获得自己的数据。我们可以使用redis来做数据共享。
    2、如何进入房间
       在同一局游戏中,我们要求所有人都在同一个房间中,我们可以规定在同一个房间中的用户,必须登陆到同一台物理服务器上面。在创建房间完成之后,其他人根据房间号查找房间的时候,可以根据房间号,获取这个房间所在的服务器ip和端口,判断一个当前用户登陆的服务器ip与房间所在的服务器ip是否相同,如果相同,就不做切换,如果不一样,客户端就使用ip和端口,连接到房间所在的服务器上面。
    3、保证房间操作的顺序性
      创建房间成功之后,接下来的操作都要保证它的顺序性,所以房间需要有一个它自己的消息个队列。我们可以把每个房间到达服务器的消息封装为一个任务,把这个任务放到消息队列中,然后有一个任务执行者去按顺序执行这些任务。

    三、系统架构
    1、功能设计
    a、登陆
      一般都是需要接第三方登陆,登陆这一块是http操作,我们统一提供一个web服务,用来做登陆验证。因为在登陆时,调用第三方的http服务,这个过程可能很慢,如果放在逻辑服务器的话,可能会卡业务逻辑任务。因为可能不同的玩家业务请求可能同在一个线程中,如果有任务卡了,那么这个任务以后新来的请求请会卡住,导致消息延迟。
    b、获取游戏公告,也放在web服务中。公告一般是游戏登陆的时候向服务器获取一次。把它放在web服务器中,与业务逻辑分离的好处是,当业务逻辑服务器维护或更新的时候,不影响用户的登陆,和获取公告,这样用户体验会好一些。
    c、创建用户唯一的id,因为棋牌类游戏服务器是世界服,无分区,所以用户的id必须是全局唯一的??梢岳胷edis的incr方法,原子的递增,如果不想被别人根据userid的递增推算出有多少注册用户,递增的梯度可以随机,比如每次递增的值从1到1024中随机一个。
    d、创建房间,当房间主创建房间时,房间的id需要在任何台服务器上可以查询到,所以创建房间成功后,房间id要存储在共享内存redis中,每个房间id对应一个房间所在的ip地址或服务器id.这样,当有用户要进入房间,在查询房间id时,可能判断这个房间是否和自己登陆的游戏服务器相同。
    e、查找加入房间,根据房间id查询房间,查找到房间后,获取房间所在的ip地址或服务器id,如果发现和自己所登陆的服务器一样,直接可以加入房间。如果不一样,把这个房间所在的ip和端口返回给客户端,让客户端重新与房间所在的服务器建立连接,使用登陆时的token验证用户。
    f、游戏脚本调用,在验证游戏是否合法时,客户端与服务器都要验证,验证的算法是一样的,所以可以使用脚本来写,写一份脚本,在服务器与客户端中同时使用??梢允褂胠ua。同一个算法使用同一个脚本 ,这样在开发新的同类型棋牌游戏时,只需要替换一下这个脚本就行了,不用再重复开发。
    2、后台管理系统
      这个一般是根据运营需求开发的,每个公司不一样。不过有一点,后台管理系统可能要和游戏服务器通信,这种通信方式最好是采用redis的订阅/发布机制。这样可以把某个消息事件同时发送到所有的业务服务器上面。根据用户所在的服务器进行处理。
    3、玩家同屏
      玩家同屏是棋牌游戏中的一个重点,对于做过那些大型的arpg,或mmo游戏的程序员来说,这并不是什么难事。因为同屏就是服务器对客户端的消息进行转发。一个房间四个人,一个人出的牌或操作能被其他三个人同时看到
    4、数据同步和持久化
      由于棋牌类的业务少,数据更新少,所以查询可以有redis缓存,减少数据库查询的压力,而更新实行实时更新到数据库,前期不需要开发数据库持久化服务。等用户积累到一定程序之后,发现更新数据库比较慢的时候,再单独做一个数据库持久化服务。

    四、服务器架构
    1、登陆时,客户端首先向登陆的web服务器请求登陆信息,登陆成功之后,返回登陆的token,为了适应大规模的web请求和登陆服务的稳定,可以使用nginx做负载均衡。
    2、登陆成功之后,请求负载均衡服务器,获取一台连接的业务服务器。这个负载均衡服务器可以和登陆web在一个进程中,也可以独立出来。
    3、拿到登陆成功的token和需要连接的业务服务器的ip和端口之后,再去连接业务服务器。连接成功之后,要使用token到登陆服务器去验证,这个用户是否登陆了。
    4、同一个房间的用户要连接到同一台物理服务器上面。在上面已经说过了。
    5、redis用来做共享缓存。
    6、mysql做持久化存储。
    7、数据库持久化服务器,统一做数据入库操作。

      以上内容为棋牌游戏服务器架构设计,具体详情与富贵互娱公司联系。

    本文标签:棋牌游戏开发
    上一篇下一篇
    声明:
    一、本网站转载的文章仅代表作者本人的观点,本站不保证文章等内容的有效性。
    二、属在本网站发表的文章(包括转载),版权归原作者所有。
    三、本网站部分内容转载于网络,但都会注明作/译者和原出处。如有不妥之处,敬请指出。
    四、本网站标明“富贵互娱”出处的文章,均为富贵互娱原创,未经允许,严禁转载,经过同意后转载的,请注明出处,并带上原文链接。

    产品推荐

    最新资讯

    • 棋牌游戏开发不打无准备的仗

        棋牌游戏开发市场日趋火爆。许多白种人小企业家在创业过程中往往会因为

      2019-11-21
    • 棋牌游戏的发展应该考虑哪些方面?

        随着手机的普及,公共娱乐逐渐向手机终端转移。手机游戏的发展已经成为

      2019-11-21
    • 棋牌游戏哪怕是小白也不怕了

        棋牌游戏开发市场的趋势在不断上升,很多的小白也在不断的进入棋牌游戏

      2019-11-20
    • 现有棋牌和定制棋牌游戏开发区别

        现在包括产品和游戏在内的一切都在以极快的速度更新,所以为了让自己的

      2019-11-20
    • 我们应该从这3个角度去开发棋牌游戏

      对比典型的最终行程和旅游网页,在线棋牌游戏具有高度的用户的忠诚度,高用户收费能力

      2019-11-19
  • 【甘南天气】最新甘南今天天气,实时提供甘南气温、空气质量、24小时天气预报、生活指数查询 2019-11-21
  • 标致5008当选法国总统座驾 防弹装甲加身外观低调 2019-11-10
  • 台州公务员管理再也不用“往返跑”了!“最多跑一次”撬动组织人事改革 全省首个试点 2019-11-10
  • 美容养颜 别忘了桃胶皂角米雪耳羹 2019-11-04
  • 贵州绿博会将设河北主宾馆 展示河北省大健康产业发展现状 2019-10-20
  • 2018英雄联盟季中冠军赛宣传片:成就传奇! 2019-10-20
  • [微笑]原因很简单:房产的升值是由关联资源的增加形成的,跟房屋的产权人没有任何关系,肯定就不能让其从中获利! 2019-10-12
  • 高铁座位让是美德,不让是权利-光明时评 2019-10-07
  • 中央纪委通报11起违反中央八项规定精神问题 2019-09-27
  • 这类中国人嫌弃的房产,正在被外国人热抢... ——凤凰房产海外 2019-09-23
  • 网约车司机因接客时间起纠纷 持棒球棍殴打乘客 2019-09-14
  • 个税法迎第七次大修 起征点调至每年6万元 2019-09-14
  • “改革开放40年山东教育成就展”启动 2019-09-13
  • 专家:遏制官员假离婚现象亟须增设离婚审计 2019-08-24
  • 申纪兰:人民代表就要代表人民 2019-08-24
  • 梭哈棋牌游戏大厅 发彩票官网 河南十一选五 十五子棋的规则 澳洲幸运8软件下载 双色球官方网站 宁夏11选5走势图任选基本走势图 排球比分怎么算 微信彩票投诉 极速快3官网