栗子現場直播 千篇一栗
有很多簡單的道理,若不是被遺忘,不是察覺不到,就是知易行難。

2009年7月5日 星期日

極廣義卡片遊戲引擎

  所謂「極廣義卡片遊戲引擎」,就是一個(希望)能夠 support 所有卡片遊戲的引擎。

  在卡片遊戲上,一般都會有六種卡片:能看的卡片,和不能看的卡片;能動的卡片,和不能動的卡片;朝上的卡片,和朝下的卡片。本文旨趣在「能看」和「朝上下」的情況。
  而這個引擎,就是提供一個版面。該版面可以被使用者分為若干的區塊,不同的區塊可以有不同的 read access 權限。在遊戲進行期間,卡片會落在不同的區塊上,使用者可以使卡片在不同的區塊上移動,讓遊戲進行。
  一個區域,有三種權限:
  • 完全讀取(R)
  • 不能讀取+可知區內卡片數量(r)
  • 不能讀取+不可知區內卡片數量(0)。
  要注意的是,這個引擎並不會參與遊戲規則的維護工作。
  說到這裡,大家會一頭霧水。以下就來一個示範。

  就以鋤大 D 為例,整個版圖會是這樣的狀況。

  每個人都擁有自己一個區域,等如自己手上的牌。在自己的區域裡,就只有自己能夠看到,其他人都看不到,只是看到牌子數量。進行遊戲時,大家就是根據鋤大 D 的規則把牌子丟去出牌區,使所有人能看見。出完牌就獲勝。
  要注意的是,這個引擎並不會控制遊戲的流程。引擎容許一個玩家出錯牌,把出牌區的牌收到自己的手上,甚至把別人的牌搶去亂丟。但這個引擎本來就預設玩家和玩家之間存在著互信。實際上,即使在現實的物理世界,以上奇怪的狀況都不會違反物理法則,只是會遭人白眼。

  再說個例子,麻雀是這個狀況。

  現在每人多了一個自己的放牌區,用來放「碰」「上」「槓」的牌。
  中間多了一個抽牌區,不消說,是用來抽牌的。

  說到這裡,要是大家不是一頭霧水的話,就可能有疑問:如何派牌?
  為了做派牌的動作,還需要多一個特殊區域:隨機區。隨機區能存放多個牌,所有使用者都可以從隨機區拉出牌子出來,拉出的牌子是隨機的。
  就以鋤大 D 為例,開局時,各人就各自從隨機區拉出 13 隻牌。
  而在麻雀,開局時,各人就各自從隨機區拉出 12 隻牌。然後不論是模牌還是補牌,都是在隨機區拉牌出來。

  說到這個東東的好處嘛...
  • 支援所有卡片遊戲 (希望)
  • 能記錄所有的流程
  • 發明新 board game 時,不消 10min 設定就能立刻試玩。
  • 感覺上要制作這樣的程式,也好像不太困難...

  就這樣。

1 則留言:

Sauter 提到...

I thought about this some years ago too...