tensaix2j avatar

用 Decentraland SDK 制作一个多人连线扑克游戏

tensaix2j

Published: 25 May 2020 › Updated: 25 May 2020用 Decentraland SDK 制作一个多人连线扑克游戏

用 Decentraland SDK 制作一个多人连线扑克游戏


上回说到如何制作一个象棋的游戏。还没阅读的可以到以下链接。
@tensaix2j/5hgiq9-decentraland-part-3


今天来说说如何制作一个德州扑克游戏

image.png

基本上要制作一个 Texas Holdem , 就不能像上次那样完全在client side 实现,

那是因为象棋里,大家所看到的 Global Shared State 是一致的。 基本上只是 PlayerA 跟 PlayerB 轮流update 这个 global shared state 仅此而已

Poker 就不能让大家看到彼此的底牌了。只有 server 看到所有人的 state ,client 只可以看到自己底牌的部分。 所以还是要写server script 来负责控制全局的状态。

那么,跟往常一样, 首先也是去github 看看有没有现成的代码可以直接使用, 找了找,是有很多, 但 都写的太复杂了。 最后还是决定自己写一个练习练习一下 。

那我暂时就把这个分成两大部分 ,

  1. Server 端
  2. Client 端,即是 Decentraland SDK 的部分。

Server 端要负责什么呢? 基本上可以分成以下这些 :

  1. 设立一个Websocket Listener 来接收玩家connection request
  2. 洗牌, 发牌。 这个可以用 Hoyle.js 里的Deck 和 Card 来完成。包挂 Hole Card 和 Community Card
  3. 控制游戏的 State 进度 ( Ready, Pre-Flop, Flop, Turn, River, Reveal) 。
  4. 接收玩家的指令 ( Check, Call, Fold, Raise, All-In , Sit , Stand )
  5. 检查所有玩家的 Bet 来决定以上哪些指令是valid 的 。
  6. 计算玩家手上的牌的 hand (Hand 就是 5 到 7 张牌可以叫出什么pattern 例如 Flush, 4 of a kind, Full House)来决定开牌后谁赢,这个用 Hoyle.js 的 HandMaker 就可以了。
  7. 决定Small Blind , Big Blind , Button ,UnderTheGun 的位置。因为这个决定论到谁下注。
  8. 处理 Split pot 问题, 比如说 PlayerA All-in 后, 会把Pot split 出去,让其他还有钱的玩家继续 raise 然后进另一个pot , 假设最后PlayerA 赢,他只能赢他有参与bet 的部分。。
  9. 如果玩家没动作 ,20 秒countdown 后要自动帮他 check ,如不能则 fold。

    基本上很多都靠 Hoyle.js 所以我选择了用 nodejs 来完成。

    Client 端需要把给state 用各种 Decentraland SDK 里 3D 模型呈现出来, 以后有空在写。。。

    先写到这,以后有空在写。。。

    谢谢阅读。

    Leave 用 Decentraland SDK 制作一个多人连线扑克游戏 to:

    Written by

    A Casual Coder / Crypto Trader / Game Developer / 3D Hobbyist

    Read more #cn posts


    Best Posts From tensaix2j

    We have not curated any of tensaix2j's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.

    More Posts From tensaix2j