iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
1
自我挑戰組

卡牌連線遊戲開發經驗分享系列 第 3

#3 為什麼 if-else 越寫越複雜?

在切入推理引擎之前,我們先談談 if-else 的寫法在卡牌遊戲下會遇到什麼樣的狀況?

假設我今天新出了一張帶有「嘲諷」的生物,原本攻擊玩家的行動就要加上一條判斷式
if 場上沒有嘲諷生物
then 可以攻擊玩家
else 不可以攻擊玩家

如果後面新出了一種可以無視嘲諷的生物,但當他攻擊力超過5點就會自動失效
if (該生物具備「無視嘲諷」and 攻擊小於5點) or 場上沒有嘲諷生物
then 可以攻擊玩家
else 不可以攻擊玩家

如果哪天加了一種可以阻擋「無視嘲諷」的生物
if (該生物具備「無視嘲諷」and 攻擊小於5點 and 場上沒有「阻擋無視嘲諷」生物) or
場上沒有嘲諷生物
then 可以攻擊玩家
else 不可以攻擊玩家

但隨著遊戲的複雜性增加,要加入的判斷規則會更加複雜,開發時也越來越難檢查是否有程式漏洞?

卡牌遊戲到後面多半會進入一種很複雜的狀態,有些生物可以讓場上生物直接獲得「衝鋒」,或是附加額外的特殊效果。傳統的判斷式寫法會變得很難處理這種問題

試圖導入以規則為主的運作引擎,或許可以讓問題的複雜度變得簡單一些吧,那時候的我是這樣子想的。

//抱歉寫稿時間有限,篇幅沒辦法寫很長。會盡量讓自己的文章內容再充實一些的


上一篇
#2 為什麼卡牌遊戲這麼難開發?
下一篇
#4 教練,我想寫卡牌遊戲
系列文
卡牌連線遊戲開發經驗分享30

1 則留言

1
Emi
iT邦新手 4 級 ‧ 2019-09-19 12:15:53

用自己的思路思考了一下...如果最後有太多 if else 判斷,是否乾脆設定成數值,也就是嘲諷值與抗嘲諷值呢?
不曉得後面會不會有解答,坐等之後的文章XD

sixwings iT邦新手 3 級 ‧ 2019-09-20 14:03:25 檢舉

你提的解決方案確實是有人用過的,一般卡牌遊戲在這部份攻防大概最多兩層,超過兩層玩家也不好理解。要練功的話可以拿魔風、爐石的規則來練自己的開發

其實我舉的例子不算常出現的狀況,但暫時想不到好的,只能先拿自己之前開發的遊戲做舉例。系列文原本是要講我開發的那款遊戲,但那遊戲太冷門,不過後來調整方向才變成分享開發經驗

我要留言

立即登入留言