iT邦幫忙

第 11 屆 iThome 鐵人賽

2
自我挑戰組

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

#28 卡片機制:解析、實作方向

  • 分享至 

  • xImage
  •  

實作前我們需要先稍微分析一下各種機制之間的差異。了解機制本質上的差異,才能確定實作脈絡,進而寫出作品。

前一篇 #ref-1 我們將觸發分成四類:一次性/時效性/常駐型觸發/常駐型BUFF

註:在還沒開發實作前,這種分類通常只是方便自己簡化系統,等到實作時才會發現細節跟自己想的不一樣。缺乏專案開發經驗時,算是難免的過程,會繞很多次彎,這只能透過不斷開發累積經驗來克服。

戰吼/二選一

前面研究事件觸發變成有點慣性思考,一開始覺得這要掛事件監聽器,等待「生物進場」事件觸發。但後來才發現不對,那這樣什麼時候掛上監聽器?如果要掛事件監聽的話,抽到卡片的時候就要自動掛上了。但為了觸發而觸發,這樣子不是乾脆用法術瞬發的效果就好了?想到這裡突然就通了,原來把「戰吼」當做附贈的法術卡就好了,然後召喚生物本身也可以視為一種法術效果。那這樣,把法術、召喚生物通通當成效果就好啦!

二選一因為性質跟戰吼十分接近,所以就放在一起了。因為戰吼的效果十分多樣,後面實作效果的時候再一一討論好了。

衝鋒/衝刺/風怒/無法攻擊

卡關最兇的是衝鋒,一開始也覺得這要掛事件監聽,等待「生物進場」事件觸發。但衝鋒效果一樣也是進場觸發後就沒效果了,掛監聽器似乎不是好辦法。後來苦思的結果,想出「行動點」的概念:召喚生物時,按照設定初始化「行動點」,每回合配發固定行動點。

初始配置/每回合配給行動點:

  • 一般生物: 0 點 / 1 點
  • 衝鋒生物: 1 點 / 1 點
  • 衝刺生物: 1 點 / 1 點
  • 風怒生物: 0 點 / 2 點
  • 無法攻擊生物: 0 點 / 0 點

由於衝刺是在後期新增的機制,限制生物攻擊英雄。需要再加入限制機制,後面再一併談吧。

死亡之聲/祕密/常駐型觸發

這部份就是爐石的重頭戲了,前面研究的事件監聽器,終於在這邊派上用場。監聽對象可以包含友方、敵方、全場。由於觸發的細項很雜,所以先把大分類抓出來,後面小分類再一個一個處理了。

遊戲流程

  • 回合開始
  • 回合結束

進場

  • 召喚生物

動作

  • 攻擊
  • 被攻擊(角色.英雄.手下被攻擊/英雄被手下攻擊)
  • 受傷
  • 友方生物死亡
  • 自己死亡
  • 治療
  • 施放法術(無.有指定目標)

場面

  • 回合開始,場面上有祕密時
  • 對手當回合使用達 X 張卡片時

比較需要注意的是,一般掛事件監聽器,通常是掛在單一物件身上。但遇到那種不限特定對象的監聽,設計就會變麻煩。例如:北郡教士全場只要有任何一個手下治療就可以抽牌。但全場手下都要掛一個治療事件監聽,這樣的解法似乎不太漂亮。所以用類似群組監聽器的概念或許會漂亮一些,在遊戲送出事件時,群組監聽器會優先處理,然後再轉手給下面的個別監聽器。群體監聽器在祕密的應用是最廣的,我相信這樣可以有效簡化遊戲的事件監聽。

然後要注意的是,有些事件不會只觸發一個監聽器,這時候可以用「信號」做到一對多的部份。回合開始蠻適合作成信號的。

潛行/嘲諷/無法攻擊/無法被指定/凍結

這被我歸類在比較特殊的類別,它比較像是「阻斷器」。它會限制一些生物行為表現的機制,攻擊潛行生物是不合法的、有嘲諷怪攻擊後排是不合法的、無法攻擊/凍結狀態下不能攻擊。判斷合法不合法絕對在遊戲是最優先執行的,因為那是卡牌規則的展現。

它會在玩家行動回合 event loop 的時候運作,把不可以做的動作擋下來。同時在主控端也會優先檢查是否有非法的動作。

聖盾/法傷/靈氣

這類通常就是狀態,新增額外的變數去管理就可以了。

攻擊力等同生命/降低消耗

這類觸發隨時根據場面狀態調整。攻擊力等同生命需要監聽補血/傷害事件,降低消耗比較經典的範例是巨人系列,需要監聽遊戲內的場面狀態改變事件,像是出牌、召喚、英雄生命改變…等。


觸發效果

以下是遊戲全部在運作的效果,大致上就是改變狀態的操作。他實作難度低,只是操作品項繁雜,實作時候還是要多費點心思測試。

  • 傷害/破壞
  • 數值提升(生物)
  • 數值提升(英雄)
  • 場面控制(手下)
  • 手牌資源
  • 水晶資源

上一篇
#ref-1 爐石戰記的卡片觸發整理
系列文
卡牌連線遊戲開發經驗分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
sixwings
iT邦研究生 3 級 ‧ 2019-10-18 18:11:00

本篇內容量比較多,多花了很多時間思考實作重點。

然後目前已經寫了30篇了,只是有些被我歸類到番外篇、參考資料。我希望寫到 #30 以鐵人賽心得作為正式收尾。

下篇應該會用虛擬碼,把這篇講的遊戲機制實作出來。相關架構還請參考之前寫的DEMO

感謝大家的支持

0
sixwings
iT邦研究生 3 級 ‧ 2019-11-22 14:47:09

給有關注這系列的朋友們:
  抱歉鐵人賽之後處於修養+趕其他案子的狀態,預計月底把案子處理完之後回來把系列文的實作弄出來。有興趣的朋友們再繼續關注囉

1
阿展展展
iT邦好手 1 級 ‧ 2020-03-04 10:02:33

爐石 爐起來!! 衝鋒!!!

sixwings iT邦研究生 3 級 ‧ 2020-03-06 11:13:12 檢舉

抱歉,最近富奸症狀又變嚴重了...
下一部分是先弄好連線部分,也希望有追這系列的讀者繼續支持歐!

我要留言

立即登入留言