Elixir游戏服设计六
到目前为止,我们完成了玩家的数据和进程建模,现在我们可以开始增加一种玩法上去了。
为什么我们还不做客户端接入、协议指定呢?为什么还没有网关和数据存储呢。在我接手的游戏,
这些通常已经定下来了,我没法改变。在我开始这个系列时,我也常常陷入这些细节而不知所措,感觉不把所有设施搞完备没法写代码。
但其实,这些和游戏服的逻辑关系不大。游戏服的本质就玩家建模、玩法等,有了这些就已经足够跑逻辑,跑测试了;
至于其他则属于外围的、较独立的东西,属于可以稍后考虑的。至于进程注册查找机制,由于它是分布式系统的关键,因此早点考虑还是
必要的,尤其它还影响你编码的风格。好了,不废话了。开始描述下扑克玩法,我们那里管它叫“抓木虱",如下
玩家数: 好像没有什么限制,只要牌够?
牌数:每人开始发2张牌,最多可以补1张,也就是总共3张
单张牌的点数:A 到 10 为 1到10, J Q K 为 10
2张牌的点数 (P1 + P2) mod 10 如 6 + 3 = 9, J + 9 = 9
3张牌的点数(P1 + P2 + P3) mod 10
牌型:
- 天公9点: 2张牌点数为9,在任何人补牌前翻出才算;
- 天公8点: 2张牌点数为8, 在任何人补牌前翻出才算
- 同花顺: 3张牌连续点数并且是同花色
- 三条: 3张点数一样的
- 顺子:非同花3张连续牌
- 同花: 3张同花色
- 其他:三张或2张直接计算点数
规则是这样的:
天公9点 > 天公8点 > 同花顺 > 三条 > 顺子 > 其他点数(三张或者两张点数)
同牌型一样大
牌局规则:
1. 每人发2张牌后,如果9点或者8点,可翻牌则算天公9点或天公8点
2. 可补一张牌,凑成三张牌;补牌为按座位顺序补
3. 最后比大小计算输赢
输赢计算
0. 基本注都一样
1. 每个玩家赢所有比你小的,输所有比你大的,平和你一样的
2. 输赢以牌大的计算;天公赢1倍, 同花顺赢16倍,三条赢8倍, 同花赢4倍, 顺子赢2倍?
基本是这样的,如果规则有误回头加工。这是个运气成分更多点的赌法,当然也有些技巧,
我知道如果是真钱赌博,该游戏非常刺激,不管怎样,让我们开始吧。
我们需要抽象一个牌局,就以桌子来说吧。
1。 桌子分4人 6人 8人桌?
2。桌子基本注 分档次
3. 桌子状态: 等待 --》 人数够了--》准备(超时检测,没有准备的踢出) --》发牌 --》翻牌和补牌登记 --》按顺序补牌 --》 比大小
4. 条件限制:
- 赌注不够不让进
- 结算后赌注不够踢出
- 牌局中使用其他需要消耗筹码的功能要求必须满足结算要求
5. 其他功能:
- 打赏荷官?需要消耗
- 聊天
- 发表情 ? 需要消耗
6. 翻牌和补牌登记,当玩家掉线怎么玩?
等超时一并处理,处理规则 天公 直接翻牌, 5点 50%补牌, 小于5点补牌 大于5点不补
7. 广播:牌局和结算信息
文档先整理到这,去写写代码再继续,下章见。