萬智牌設計中的數學問題(上)
讓我先講一個小故事吧。在中學的時候,我曾一度對數學產生疑惑:“為什麼我要上那麼多的數學課?!什麼地方能用上數學?!”那時我一心想著寫電影劇本,而我認為只要會數劇本頁數和算薪水就可以了,我才用不著那麼多數學呢!但我最終還是堅持學完了數學。而有趣的是,我現在的工作正需要很多數學。我在不久以前為了這期播客做了一個採訪,採訪後我開始思考一個問題:“萬智牌需要多少數學?”我沒法確定這個問題的答案,但肯定需要非常多。所以我今天想讓你們知道:如果想要設計萬智牌,學數學確實有一定的價值。我之前經常用不同的角度來考察萬智牌,但我從沒有從數學角度上考察過。所以我今天要討論一下萬智牌中需要用到的大量數學。
讓我們從我的工作——洞察設計中的數學開始,然後我會談論與玩家們相關的數學。關於洞察設計中的數學,我們應該知道的第一件事情是:這是一個集換式卡牌遊戲(TCG)。在一般的遊戲中,所有使用者都會買到完全一樣的產品,有完全一樣的體驗。但是在TCG中,情況完全不是這樣:你開到了一些卡,而你的朋友開到不一樣的卡。每一個玩家都會通過一系列隨機的卡牌來獲得不同的遊戲體驗。這對於設計萬智牌是一個挑戰——畢竟如果我知道每一個人都會得到一樣的東西,那麼我就不需要用到數學了。但我們確實需要做很多計算,因為當我的團隊想要製作系列中的一個主題時,我需要關心這個主題出現在補充包裡的頻率。畢竟我不願意看到我在一個系列中設計了一個主題,而你開了10個補充包以後還看不到任何這個主題的單卡。舉例來說,神河群英錄是一個傳奇主題,其中的絕大部分傳奇生物是金牌,少部分是銀牌。但是,你要開多少包才能意識到神河的傳奇主題呢?並不是每一個包的金都是生物,並且即使你開到了金色傳奇生物,這也不奇怪,畢竟每個系列都有這樣的牌。當你開啟了多少個包後你才會意識到:噢等等,這是不是一個傳奇生物主題的系列?我們想給玩家的體驗是,當你開了第一包以後,你對這個系列的主題已經有一定了解了。當你開了3到4包以後,你已經能夠確定這個主題了。
對於起源才入坑的我,勇丸也許是我對神河的少數一點點印象了
因此我們需要計算某個主題的期望值。期望的含義是,當你開啟一個補充包時,我們有可能開到多少我們在乎的單卡。比方說我有一個主題——神器,結界,傳奇……無論這個主題是什麼,我都需要知道這個主題出現的頻率。計算這一點的方法是:在一個補充包中,會有15張卡。1張是基本地,10張鐵,3張銀,1張金(有1/8的概率被替換成祕稀)雖然可能會有特殊情況發生,但這些就是你通常會得到的牌。我們需要弄明白的是:設計出來的牌分別有幾種?——鐵約101張,銀約80,金約53,祕稀約15。我們要計算多少比例鐵牌是這個主題的單卡,然後將這個比例乘上10,就是這個主題的鐵牌出現的概率。舉例說明,我們有100張卡(鐵牌應該是101張,但為了方便計算不妨記為100張。)假設這100張裡有10張符合我的主題。(即1/10的牌符合主題)目前的期望就是1.0,即我開啟一包補充包能獲得該主題單卡的張數期望值是1.0。假如銀牌中的8張卡同樣符合這個主題的話(1/10的銀牌),銀鐵的期望就是1.3。如果我想要金牌的期望也為1,那麼我們就要設計約6張符合這個主題的牌。將所有該主題的牌在該稀有度中出現的頻率求和,就是最終的期望(金和祕稀即計算略為複雜,因為金有1/8的概率被替換成祕稀,所以金牌要在比例上乘7/8,祕稀則是乘1/8)。在我的設計中我會關注這一點,因為我想要搞明白某一個主題出現的概率是多少。
期望在某一些方面會變得更加複雜。比如A+B式機制——拿瘋魔舉例。瘋魔只有在其他效應讓你棄掉這張牌時才會發生。即在這個例子中A是能棄牌的效應,B是瘋魔效應。所以當我在設計時我就應該同時考慮A和B效應的期望。
另一件讓數學變得甚至更有趣的是當我在討論期望的時候,我在討論的僅僅是大致的期望:這僅僅發生在隨機的一包中。但是,並不是所有人都會使用所有顏色的卡,所以我們不僅僅有某個主題出現在補充包裡的期望,我們還有這個主題被玩家使用的期望,那意味著並不僅僅關注“補充包裡有什麼卡”,而是“什麼單卡最可能被使用”。所以我們做的一件事就是將單卡評級來判斷他們有多大的可能在限制賽及構築賽之中被使用。
而更加複雜的事情是顏色。我可能要設計一個主題,而這個主題並不會在每一個顏色中都出現。所以我們要弄清楚的不僅僅是總體上的期望,還有某一個顏色中的期望。這樣做的目的是保證無論玩家得到什麼,他們都會以合理的數量出現。在設計過程中我們還會用到一些小技巧,比如火花之戰是鵬洛客主題,而多明納里亞是傳奇主題,而我們在這兩個系列中都暗示了主題的線索,即每包多明中一定會有一張傳奇,而每包火花中必有一張鵬洛客。
另一件我們需要關心的事情是單卡在印刷版面上的分配問題。如果所有某個主題的單卡都在一個版面中被印刷出來,那麼期望顯然很好計算,因為你可以自由決定印多少版這樣的牌。但是如果這些牌和其他的牌混在一起印製,那麼期望的計算就需要更多的數學知識。
如果同一主題的牌都印刷在一個版面上,那自然就很好決定你印出來的數量
所以期望是我需要做的數學中最複雜的一點,因為我必須搞清楚設計單卡的正確數量。許多期望的因素同時來自玩家期待和玩某個主題的程度,以及這個主題在某個顏色中出現的頻率。
另一個我們關心的重要數學問題是“保證事情的正常運作”。儘管洞察設計對最終的結果並不負責,但當我們做一個機制或其他東西時,我們應該要保證“我們做的這個能行得通。”比如卡牌的費用曲線,我們想要保證的是玩家在玩的時候能夠得到不同費用的單卡。要是在限制中,我們讓所有單卡都變成4費,那麼麻煩就會出現。因為前三個回合玩家除了下地以外無事可做!在一套合理的套牌裡,你會想要合適數量的1費,2費,3費,4費曲線,而你不希望你的高費卡太多(因為你在有足夠數量的地時你才能夠施放這些咒語)。這就是一個玩家在構築套牌時所需要掌握的數學。而我們需要負責的數學則是保證玩家有做出選擇的空間(即能夠在輪抓中抓出一套曲線流暢的套牌)。
當然我們不僅要解決單卡的費用問題,同時也要知道這些卡牌在對局中的運作模式。有時我們會為單卡設計一些額外費用的效應,比如增幅。所以我們要把這張牌的兩個方面都考慮在內:它可以既是一個2費曲線,又是一個5費曲線,並且我們要知道它被當作2費和5費曲線使用的頻率分別應該有多大。萬智牌的創始人理查德·加菲是一名數學教授,所以在設計中有許多數學問題是很正常的。而我的目標是能夠解決許多類似上面講到的設計中所必須面對的數學問題。
自然,許多因素由TCG的隨機性所導致,然而很多巨集觀層面上的數學是必須的。比如,我們十分關心的一點是“萬智牌需要玩家擁有多少計算能力?”舉一個簡單的例子,當一個生物需要改變他的力量和防禦。最簡單的計算是“X/X”與“+X/+X”。比如一個我對一個2/2用了變巨術,+3/+3,那它自然就是5/5,這很好計算。但把所有生物都設計成X/X的話那我們的設計範圍未免太窄,所以我們最經常設計“+X/+X”的膨脹效應來方便計算。不過有時候我們在能夠自我膨脹的生物上所做的事是讓其在膨脹後變成X/X,比如2/3用異能自我膨脹獲得+3/+2,變成5/5。當然這個計算的逆運算顯然更簡單一些(對5/5做加減當然簡單)。
另一種十分簡單的方式就是僅改變力量而不改變防禦。許多複雜的運算都基於對生物防禦的計算,但是如果僅僅改變力量的話,計算就會更加簡單。所以+X/+0比+0/+X出現得更多。我們一直在嘗試完成的事情是不僅保證對局能夠流暢執行,並且玩家的計算也能更加簡單。
最近mo上有依尼翠輪抓,看牌表的的時候剛好看到這張卡。依尼翠很好玩快來玩。
然而有些時候我們發現數學起到反面作用。在雞飛2系列,我設計了分數機制。表面上看來,這是一個有趣的設計。但我們在實際中發現的是玩家們並不習慣這種設計。例如,你有16生命,然後受到了2又1/2點傷害。這種計算花費的時間超出了我們的預期。我們本應在測試時想到,但實際上我們並沒有——不得不承認我在之前的設計中犯了許多錯誤。
另一件事是可以對任意目標施放的咒語。那些限定物件的效應不會讓計算變得複雜(比如自我膨脹),而可以對任意目標施放的咒語本身讓玩家在選擇目標的時候就要計算與抉擇了,那麼我們就會這種咒語在數字計算上簡單一些。比如我們設計的所有變巨術效應都讓生物獲得+X/+X,我們簡化了力量與防禦的計算以彌補它可以對任何目標施放所造成的複雜情況。另一個例子是白色的讚美詩效應通常都是+1/+1,使玩家在力量與防禦的計算上不那麼頭疼。
下篇:萬智牌中的數學(下)
作者:Mark Rosewater
譯者:小閃電0124
來源:旅法師營地編譯
原地址:https://www.iyingdi.com/web/article/mtg/88725
相關文章
- 萬智牌中的數學(下)
- 萬智牌設計雜談:重複利用(上)
- 萬智牌設計故事:打破規則
- 萬智牌開發故事之設計地牌的6條限制
- 透鏡設計和萬智牌的簡化(下)
- 透鏡設計和萬智牌的簡化(上):三種複雜度複雜度
- 萬智牌設計雜談:重複利用(下)
- 來自萬智牌設計師的經驗分享:限制自己的設計
- 萬智牌規則設計:法術與瞬間
- 成為一名優秀的萬智牌設計師的7條建議(上)
- 萬智牌設計師談創造力的提升——融會貫通
- Python程式設計基礎練習——撲克牌發牌問題Python程式設計
- 學習筆記:樹與圖上的計數問題筆記
- 從一個問題中瞭解數學在程式設計中的應用程式設計
- 成為一名優秀的萬智牌設計師的7條建議(下)
- 小學數學程式設計題程式設計
- 《萬智牌:傳奇》上手體驗——《暗黑》化的經典卡牌遊戲遊戲
- 萬智牌開發故事:神器與結界
- 同構——程式設計中的數學程式設計
- 《程式設計師的數學》思考題(一)程式設計師
- 均分紙牌問題
- 傳說中的骨灰級程式設計師是如何排查線上問題的程式設計師
- 如何避免微服務設計中的耦合問題微服務
- 騰訊[程式設計題] 紙牌遊戲程式設計遊戲
- 產品設計中,DFMEA存在的問題有哪些?
- #數位DP 計數問題
- 【CAA智庫】寧濱院士:智慧交通中的若干科學和技術問題
- 淺談卡牌遊戲中給玩家支援的設計遊戲
- 萬物智聯的5G倒數計時|AI的朋友(三)AI
- 【譯】原則問題:直面設計中的核心實質
- LeetCode數學問題(Python)LeetCodePython
- 程式設計師的數學程式設計師
- 用c++設計哲學家進餐問題的求解C++
- C語言高效程式設計的四大祕技之數學方法解決問題C語言程式設計
- 點燃火花 《萬智牌:競技場》星火首測正式開啟
- loadrunner學習中遇到的問題
- java學習中不懂的問題Java
- weex學習中遇到的問題