《棋牌游戏服务器》玩法服务器架构

大体上我们的玩法有两种模式,一种是小桌,比如斗地主,一局游戏需要2~6个人;另一种是大桌,所有用户都可以在一桌来玩。

所以“桌”是一个比较核心的概念,玩法服务器的结构也是围绕这个核心来展开的。

以桌为核心的玩法架构

上图是这个架构设计的核心要素,GameTable类位于这个设计的核心;左侧GameTableManager是一个桌的集合类,里面逻辑并不多;table类包含桌的核心数据,包括玩家、当前局的状态等,这个类在具体玩法中一般需要派生。

GameStateMachine类是一个状态机,棋牌的游戏流程是一个状态在管理,由消息驱动,后面会细讲。GameTableThread是table的消息处理线程,保证了每个table的消息都是单线程处理,没有并发。

玩法状态机

GameStateMachine是一个状态机的管理器,其实就是一组状态实例的集合;这些状态全部都继承自AbstractTableState。玩法需要多少个状态,与玩法本身的规则相关,一个状态对应了一组当前可以处理的消息。为了简化状态的代码,我们抽取了GameRequestProcessor这样的工具类。

最后,建议每个玩法都包含一个异常状态和一个等待状态。异常状态用来处理状态机异常状况,清理数据,保证优雅退出;等待状态是牌局开始的第一个状态,检查牌局是否具备了开始的条件。

消息的处理流程

游戏的过程其实就是消息处理的过程,所有的消息会被封装成TableMessage实例,推送到tableThread,后者再转发给当前的State。

SwitchState消息一般是状态机自己产生的;TimeOut消息是计时系统产生的;Request是来自客户端的消息;Join虽然也是来自客户端,但是特殊一点,要先交给匹配系统MatchSystem;

Kick消息一般来自Redis消息通道,用户被封禁时产生;Quit消息是网关发来的;MagicCommand是内部指令,也来自Redis消息通道;Dummy是一个哑消息,无特别含义。

BigRoom

上面有一个模块叫做BigRoom,这个模块是玩法服务器与网关对接的模块,同时初始化了玩法运行的一个上下文环境。由于历史原因,命名不是特别好。

原文地址:https://www.cnblogs.com/longhuihu/p/10423628.html

时间: 2024-10-17 02:20:58

《棋牌游戏服务器》玩法服务器架构的相关文章

棋牌游戏该如何选择服务器

Web网页服务器: 棋牌高防服务器q8803582        也属于前台服务器,负责游戏的介绍,客户端的下载,游戏账号注册等!对服务器的硬件配置要求不高,但要求网络好.带宽好.下载快.用双线线路!        游戏服务器:         主要负责游戏的运营,客户玩游戏都是这台服务器提供服务,对硬件配置要求高,要能够保证客户游戏正常访问,游戏过程中流畅,租用高防高配置服务器,保证在被攻击时不会出现封IP断线整个游戏不能服务的情况!!        游戏数据库服务器:         实时存

棋牌游戏要怎样选择服务器

近些年来,棋牌游戏行业得到了快速的发展,而随着棋牌游戏平台的日渐火爆,国内几家知名的棋牌开发公司(如网狐科技),已在市场中占据优势,他们不仅拥有良好的产品研发技术,同时在技术上都是不相上下的.那么,面对众多的棋牌游戏开发商,运营商又应该如何选择呢? 1. 货比三家,选择正规的idc服务运营商 在选择服务器租用运营商时,要根据实际情况进行购买,可先挑选几家声名在外的idc服务运营商进行比较.要尽量选择正规的运营公司,这样的公司所提供的服务器和后期服务更有保障.当我们租用服务器之后,能够确保在后期的

MG电子摆脱游冰球突破游戏基本玩法介绍

很多人都玩过MG电子摆脱游戏.mg冰球突破和MG冰上曲棍球,但是不知道大家有没有发现他们其实是一个游戏来的.只不过有几个名字而已.而且现在摆脱有2个版本,一个是mg摆脱,还有一个是mg摆脱H5.两个游戏厂家都是同一个,只不过mg摆脱H5是优化版,画面优质一点,爆率的话我玩了这么久没发现什么不一样的这个要靠你们自己去发现了,我一般都是2个换着玩.当然还有一个豪华版,就是摆脱的升级版了,今天我们暂且不说,下面介绍一下mg摆脱H5冰球突破的基本玩法跟奖励机制.关于摆脱规则请看下面图片摆脱是一种包含五个

棋牌游戏电玩厅扑鱼定平台系统开发

环德专业开发定制系统:咨询联系:禤顾问:13533????825257,微信:gaqi12345678(如:皮皮果(千年果,英伦果).金芒果.荣耀果.梦境果.人参果.富有葡萄园.御花园.御果园.蟠桃乐土.九樱果园.金桔庄园.石榴庄园.财富庄园.火龙庄园.玫瑰庄园.东麓庄园.玖玖茶园.名花有主.欢乐菇.花果山.天山雪莲.哈巴狗.好多鱼.天鹅湖.一文鸡.金福鸡.吉利兔.迷你猪.猪猪侠.鳄鱼大亨.高兴养羊.有钱花.愿望国度.幸运星.大富豪.夺金城堡.魔法宝石屋.魔幻世界.魔兽世界.天宫之城.海岛帝国.

类Kingdom Rush塔防游戏的数值设计(一)——玩法概述和基础战斗模型建立

玩法概述---- Kingdom Rush,即皇家守卫军,IronHide出的一款塔防游戏.其涂鸦的风格.独特的英雄和士兵系统.较为庞大的战斗场面,在塔防游戏中独树一帜,取得了巨大的成功. 在这里,基于Kingdom Rush的核心玩法,推拟出游戏所需的核心战斗数值(包括战斗内成长数值). 首先,需要明确游戏的玩法. 游戏大概的战斗场景如下 战斗地图区域划分 1.出怪点:2.预设路径:3.防御塔建造点:4.防守点 战斗单位划分 我方 1.防御塔:2.英雄:3.士兵 敌方 1.怪物 游戏玩法概述

FarmEOS游戏玩法制作

FarmEOS软件定制开发██13710813997 郑生]FARMEOS系统平台开发,FARMEOS平台软件开发 目前基于EOS的DApps基本都是交易所和菠菜,真正好玩的游戏应用基本没有,FarmEOS有望填补这个空白. FarmEOS是一个玩家即股东的区块链游戏平台,它基于EOS公链提供高效迅速的游戏环境,并采用Bancor算法进行游戏挖矿,每投注一个EOS将获得若干FARM代币,且根据投注金额和所得FARM价格获得一定量的分红权重,享受平台收益,以此激励更多玩家参与游戏. FarmEOS

《Invert》开发日志01:核心玩法设计

前面提过,这个游戏的核心玩法基于我做的第一个Unity游戏,名字就叫<Invert>,现在在应用宝上面还能搜到.不过那个游戏也不是我原创的,它的玩法设计来自github上的一个开源项目(https://github.com/gorried/inverter),那时候我正在上培训班,它本来是我的一个课下练习.当时主要是为了熟悉游戏从制作到发布的流程,所以几乎完全模仿了原项目的设计,连方块的配色都没改(因为我觉得那配色挺好看的,还特意用Photoshop取了人家的色值). 但是现在回过头来看,这种

棋牌游戏服务器架构设计

转载自:简书一位同行的文章 一,棋牌类服务器的特点 1,棋牌类不分区不分服 一般来说,棋牌游戏都是不分区不分服的.所以棋牌类服务器要满足随着用户量的增加而扩展的需要. 2,房间模式 即在同一局游戏中就是在同一个房间中,同一个房间中的人可以接收到其他人的消息. 3,每个房间的操作必须是顺序性 这个特性类似与一般游戏的回合制,每个玩家的操作都是有顺序性的. 二,需要解决的技术点 1,数据共享 因为棋牌类游戏不分区不分服,我们在设计服务器的时候,是按世界服的思想去设计,即服务器是一个n多台物理机的集群

棋牌游戏服务器架构: 详细设计(二) 应用层设计

这里的应用层,指的是CenterServer.LogonServer.LogServer.RoomServer等几个服务器,另外还包括游戏模块的设计.不过游戏模块和前4个服务器的设计很不相同.这里先说一下服务器应用的详细设计. 这上面提到的4个服务器都需要响应客户端(这里的客户端的意思是泛指)的请求,进行数据库操作,同时还要能够配置,以及显示系统运行的状态信息等.这里会采用MVC模式来组织应用层逻辑 . 图1  Application层基本结构 IController从ITCPServiceOb