Date: 20220720
Version: 14
- 修正《桌遊設定-9》的分數設定。
- 列出各式組合的組合排列數量,算出各組合排列之機率。
- 數量越少,機率越低,理論上分數越高。
- 所以機率與分數成反比。
- 將機率取Log10進行正規化。
- 由於機率<1,取log後得到負數。
- 機率越小,負數就越小。
- 將Log10取絕對值。
- 機率越小,負數就越小,取絕對值後,正值就越大。
- 換言之,機率越大,正值就越小。
- 將絕對值除以所有組合排列中機率最大者。
- 機率最大,表示最容易達成,也就是不重要的部分。
- 以此為基準,除以此數,校正至1。
- 得組合排列相對於基準的倍數後,再進行四捨五入。
- 倍數,象徵該組合排列的難度,也就是分數。
- 四捨五入得到各組合排列的分數。
- 分數種類,僅保留頭尾部分,中間部分去除。
- 額外分數部分,每增加1張增加幾分的部分。
- 重複步驟1-3,但組合排列為取4。(上述為取3)
- 除以取3組合排列中機率最大者。
- 表示相較於原本組合排列的困難度。
- 相對於取3的難度。
- 重複步驟5。
- 取4分數減取3分數,得額外分數。
- 即相對於取3難度而言,後續每多1樟之額外加分。
- 基礎分數(+額外分數)
- 相同萬用10(+4)
- 相同數字7(+4)
- 相連偶數6(+2)
- 相連奇數5(+2)
- 相連數字4(+1)
- 相同顏色3(+2)
- 相同花紋3(+2)
- 三種顏色2
- 三種花紋2
- 效果:
- card-play: 拿取第1張牌。
- trade: 拿取第1張牌,返還1張牌。
- semi-closed-eye: 查看並拿取1張牌,剩餘洗牌。
- electric: 執行他牌效果時,拿取此卡。
- stack: 拿取第1張牌,放置於牌墩上。
- *2: 結算時,此牌墩分數乘2。
- +2: 結算時,此牌墩額外+2分。
- share: 所有玩家,拿取第1張牌。
- card-pickup: 拿取第1、2張牌。
- 跨年在家沒事,就寫了一個程式來模擬桌遊進行的過程。
- 利用程式來輔助推估實際遊戲運行的狀況。
- 程式需要邏輯,所以在撰寫的時候,可以發現現實中可能沒考量到的地方,此外,也可以用來評估遊戲機制進行狀況。
- 為了降低程式撰寫的複雜度,基本上還是會設定基本條件,來避免太過複雜寫不出來的狀況。
- 起始設置:
- 排除X(萬用牌)。
- 將數字1-9隨機分配9個牌堆,最終每個牌堆都有數字1-9。
- 每個牌堆洗牌,隨機順序。
- 抽牌原則:
- 手牌0張時,隨機挑選。
- 手牌1張時,挑選1+1組合排列中可能性最大者。
- 手牌2張以上時,挑選3張以上組合排列中實際最高分者。
- 挑選後,該牌堆設定為不能再被挑選。
- 若最高分皆一樣(0分或有分數),則隨機挑選組合排列。
- 效果原則:
- 因效果而抽牌,比照上述原則。
- 效果2,要手牌3張以上才生效,因手牌<=2張時,拿1還1後,手牌還是不足以形成牌墩,故計算這樣的分數無異議;此外,組合排列上限少1,這樣可以至少剩1張可以返還。
- 執行他牌效果後,再檢核牌堆是否還有效果4;需有執行他牌效果,所以效果4、6、7不會執行效果4。
- 效果5,若無最高分者(0或都一樣高),則挑選牌墩最低分,及隨機牌堆,以達到影響最低。
- 效果67只會在計分時計算。
- 計分原則:
- 當9個牌堆中,至少有1個牌堆數量歸零時,該輪遊戲結束。
- 計分時納入效果67。
- 扣分:第1張手牌扣1分,第2張手牌扣2分,以此類推,N*(1+N)/2。
- 基本規則如上,寫了第1次可以順利執行後,開始上網找可以簡化的寫法,終於修了一個禮拜終於在今天(20220109)修完了,終於可以順利進行下去了。
- 上網找了組合排列的函數,真的是太厲害了,我到現在還是看不太懂在寫什麼。
- 將組合排列、計算分數、計算最高分,分別寫出函數,在遊戲進行計算時,只要呼叫即可,不需重複撰寫。
- 學會多載,組合排列和計算最高分都有多載,配合不同的情況使用。
- 學會Tuple,讓我可以一次回傳大量且不同型態的參數,超好用。
- 了解到複製List時,其實只是複製了Address,所以改了其中一個,另一個也會跟著改,需要用別的方法來完全複製(ForEach)。
- 了解到整數相除時,結果還是整數,小數點會被省略,在分子的部分使用decimal。
- IEnumerable出來的沒有照原List排序排出,所以無法使用First或Last。
- 了解延伸List可以使用AddRange。
- 了解函數的參數可以設預設值,好用。
- 了解C#中好像沒有^,需要使用Math.Pow。
- 了解連續數列、連續偶數、連續奇數的特性,好讓數列可以正常計分
- 連續偶數246
- 都是偶數
- (2+6)*3/2=SUM(2,4,6)
- 無重複
- (6-2)/(COUNT(2,4,6)-1)=2
- 連續奇數135
- 都是奇數
- (1+5)*3/2=SUM(1,3,5)
- 無重複
- (5-1)/(COUNT(1,3,5)-1)=2
- 連續數列123
- (1+3)*3/2=SUM(1,2,3)
- 無重複
- (3-1)/(COUNT(1,2,3)-1)=1
- 之後再以上述版本改寫,可以大量進行遊戲,以利後續統計分析。
- 樣本數1000,分別為3位玩家和4位玩家的統計分析:(小數點第1位)
- 3位玩家
- 平均回合: 7.2
- 平均得分: 42.2
- 平均扣分: 2.1
- 平均總分: 40.0
- 平均手牌: 1.4
- 平均牌墩: 4.2
- 平均牌墩總張數: 13.7
- 平均剩餘張數: 35.9
- 平均使用張數: 45.1
- 分數/牌墩: 10
- 張數/牌墩: 3
- 分數/張數(in牌墩): 3
- 使用張數/回合: 6
- 使用張數/玩家(in回合): 2
- 4位玩家
- 平均回合: 5.4
- 平均得分: 32.5
- 平均扣分: 2.3
- 平均總分: 30.2
- 平均手牌: 1.4
- 平均牌墩: 3.2
- 平均牌墩總張數: 10.4
- 平均剩餘張數: 33.7
- 平均使用張數: 47.3
- 分數/牌墩: 10
- 張數/牌墩: 3
- 分數/張數(in牌墩): 3
- 使用張數/回合: 9
- 使用張數/玩家(in回合): 2
- 玩家人數影響
- 每增加1位玩家,回合數少2,以此類推,若5人,則回合數為3,即每人進行3次動作,就會遊戲結束,行動次數過少,因此推斷,遊戲人數應<=4位為佳。
- 每增加1位玩家,總分少10分,換言之,單人玩家,遊戲門檻應設為60分。
- 每1牌墩平均約3張牌,所以要4張以上是少數,且在牌墩中,每張牌約值3分,也就是若要超過4張(含)以上的話,第4張的分數價值應該要3分以上,才值得累積到4張,不然一律建議3張就組成牌墩,而第4張要價值3分以上的只有,相同數字(+4)或相同萬用(+4)。
- 平均每牌墩約10分,可作為後續遊玩策略的基準點,若該牌墩總和不到10分,則不建議形成牌墩,應該多等一下,看後續有無機會。
- 整體效果使用張數
- 效果4大約是0.7SD
- 效果6約是2SD
- 效果7約是1SD
- 其他效果使用差距不大。
- 明顯看到整體效果上,會有使用效果6的傾向;效果4就不論,因其是被動產生。
- 獲勝玩家效果使用張數
- 效果4大約是0.3SD
- 效果6約是2.4SD
- 效果7約是0.3SD
- 其他效果使用差距不大。
- 明顯看出相對於整體而言,獲勝玩家在效果4和效果7明顯下降,效果6明顯上升,換言之,如果無法有效拿取效果6的話,很難獲勝,換句話說,拿取效果6可能是優勢選擇。
- 那就要討論遊戲中是否要留存這樣的優勢選擇呢?
- 綜合上述第4、第5點,後來有有去桌遊設計團詢問有關優勢策略的選擇,經其他玩家回覆,評估之下,將效果6增加一些限制條件。
- *2: 結算時,此牌墩分數乘2。(※牌墩須包含顏色、花紋及數字3種組合,效果6才會生效)
- 修改程式後,重新跑結果發現,效果6有明顯下降,在獲勝玩家中,效果4、6及7大約在1SD左右,差不多在標準範圍內了(+/-1SD);而整體玩家中,效果4、6約為1SD,效果7則有1.5SD,有關效果7的部分可能還要再試試看。
- 效果7有試過+1和+3,但一樣會有優勢策略的效果產生,後續可能要試試看+1.5,但有小數點,所以型態可能要改成double,原始設計是int,有許多地方需要調整。
- 任務卡
- 有鑑於遊戲本體差不多告一段落,雖然還有部分需要小修,但框架已經確定了,可以進下一階段了。
- 透過完成任務卡上的任務,來獲得分數,可作為獲得分數的一種手段,可能有任務流。
- 達成項目
- 紅綠藍Red、Green、Blue
- 點線面Dot、Line、Plane
- 123456789
- 達成條件
- 最多
- 最少
- 兩種一樣
- 三種一樣
- 而任務卡的分數一樣是依照機率來換算分數:
- Max.
- RGB: 15
- DLP: 15
- 123456789: 11
- 萬用: 17
- Min.
- RGB: 6
- DLP: 6
- 123456789: 7
- Equal(A=B)
- RGB: 12
- DLP: 12
- 123456789: 11
- Equal(A=B=C)
- RGB:15
- DLP: 15
- 任務卡的使用,原本的規劃類似「鐵道任務」這樣,於遊戲前就分下去,每個人都是隱藏資訊,但考量到原本基礎為公開資訊,突然加入這個形式的話,類似場外因素,也就是靠賽,很影響原本的基礎;後來重新思考後,任務卡調整為公開懸賞的方式進行,而任務卡使用的數量為提高其比重,將任務卡類比為一位玩家的話,再加上述分數設定,預期規劃如下:
- 每位玩家增減為10分:
- 2位玩家:50分
- 3位玩家:40分
- 4位玩家:30分
- 依照任務卡分數平均計算,每張約為10分。
- 綜上所述,依照玩家人數不同,需使用相對應數量的任務卡
- 2位玩家:50/10=5張任務卡
- 3位玩家:40/10=4張任務卡
- 4位玩家:30/10=3張任務卡
- 統一於遊戲結束後,各玩家加扣分結束後,執行任務卡檢核作業,確認每張任務卡各自歸屬後,得出每位玩家的最終得分。
環境卡目的是提供每場或每回合有不一樣的遊戲體驗,會讓該場或該回合有不一樣的規則,此外,因為也是公開資訊,影響所以玩家,基本上還是符合基礎規劃。將原本的卡片效果提供調整環境卡的能力,electric: 執行他牌效果時,拿取此卡。有以下調整方向,後續還要再研究看看:取代原有能力增加額外能力調整環境卡:必選/可選不可異動/可異動目前規劃大概會有3個擴充模組,3擴充總和張數大約與基礎版本差不多,每種環境哪盡量不重複為佳,主要規劃是改變遊戲環境/體驗/策略,故有關效果調整就放到角色卡上好了。影響項目紅綠藍Red、Green、Blue點線面Dot、Line、Plane1234567899種效果影響方式禁止(RGB、DLP、123456789)視同(RGB、DLP、123456789)忽略(RGB、DLP、123456789)++重複盲抽分數最低勝利(需大於等於0)贈送最先達到X個牌墩數量者獲勝最先達到X個牌墩數量者遊戲該回合結束手牌不扣分計分組合每少一種扣X分(5分以上)計分組合每一種加X分(5分以上)角色卡一樣須考量基礎規劃,公開資訊,盡量不要隨機性(不要隨機抽角色能力),所以可能規劃大概是:所有人角色卡能力都一樣,所以只要製作4張就好有多種能力,由玩家自行選擇哪一個發動發動需要有一定條件,只要符合條件就可以發動1回合限定發動1次消耗牌墩/手牌,來發動能力將原本的卡片效果調整為恢復消耗的能力,electric: 執行他牌效果時,拿取此卡。有以下調整方向,後續還要再研究看看:取代原有能力增加額外能力能力(1欄N列,每列分左右欄位)效果(左:白底黑字)消耗(右:黑底白字)能力card-play: 拿取第1張牌。trade: 拿取第1張牌,返還1張牌。semi-closed-eye: 查看並拿取1張牌,剩餘洗牌。electric: 執行他牌效果時,拿取此卡。stack: 拿取第1張牌,放置於牌墩上。*2: 結算時,此牌墩分數乘2。+2: 結算時,此牌墩額外+2分。share: 所有玩家,拿取第1張牌。card-pickup: 拿取第1、2張牌。- 效果卡
- 考量到環境卡與角色卡的重疊性,為了讓整體遊戲有更一致性的風格,重新設計並合併環境卡與角色卡的設定。
效果卡有一些特點:部分影響遊戲進行、部分影響分數結算但不能兩者都影響,這會影響到整體遊戲進行例如:"視同",紅色視為綠色,那遊戲結束後計分又該如何計算呢?若這個效果途中消失呢?但考量到第2點時,就意味著這個效果可能不是永久的,在遊戲進行中是可以變動的從第3點可以得出可以給這些效果卡一些標記,唯一標記、永久標記、臨時標記、一次性標記、單次標記、單人標記、多人標記、多次標記...等,讓效果可以順利執行下去- 效果卡使用規則
- 遊戲開始時,翻開1張效果卡
- 當執行electric效果時,可選擇翻開或返還1張效果卡
- 返還,選擇1張效果卡放回效果卡牌庫底部
- 當限制數量時,保留其中1張,另1張返還
- 效果卡版片配置
- 上:標題
- 中:具體象徵圖示
- 下:文字說明
效果卡標記(tag)唯一標記永久標記臨時標記一次性標記單次標記單人標記多人標記多次標記- 基礎版效果調整
- electric: 執行他牌效果時,拿取此卡。
- 增加額外能力:並[翻開/返還]1張效果卡
- 有以下調整方向:
取代原有能力- 增加額外能力
- 調整環境卡:必選/
可選 不可異動/可異動- 依遊戲步驟來劃分效果卡一覽表
- 遊戲開始
- 回合開始
- 抽牌
- 禁止RGB
- 禁止DLP
- 禁止123456789
- 盲抽/海底撈月
- 效果
- 禁止效果
- 增值/++
- 重複/double
- card-play
- trade
- semi-closed-eye
- stack
- share
- card-pickup
- 換分
- 無上限/不只一次
- 回合結束
- 麥當勞歡樂送/贈送
- 抽成/拿取
- 資源回收/返回
- 遊戲結束
- 滴答滴答
- 分數結算
- 好人/手牌不扣分
- 霉運
- 好運
- *2
- +2
- 獲勝條件
- 反轉/墊底
- 大富翁
- 效果卡一覽表
- 禁止RGB(限1)
- 禁止拿取R
- 禁止拿取G
- 禁止拿取B
- 禁止DLP(限1)
- 禁止拿取D
- 禁止拿取L
- 禁止拿取P
- 禁止123456789(限2)
- 禁止拿取1
- 禁止拿取2
- 禁止拿取3
- 禁止拿取4
- 禁止拿取5
- 禁止拿取6
- 禁止拿取7
- 禁止拿取8
- 禁止拿取9
- 禁止效果
- 不執行效果
- 增值/++
- 拿取張數效果+1
- 重複/double
- 效果重複執行1次
- 盲抽/海底撈月
- 從牌堆底部進行拿取
- 麥當勞歡樂送/贈送
- 回合結束時,將1張手牌拿給下家
- 抽成/拿取
- 回合結束時,拿取上家1張手牌
- 資源回收/返回
- 回合結束時,返還1張手牌
- 好人/手牌不扣分
- 手牌不計入分數結算
- 霉運
- 計分組合中每少1種扣[5]分
- 好運
- 計分組合中每有1種加[5]分
- 反轉/墊底
- 結算時,分數最低者獲勝,不得為負分
- 大富翁
- 結算時,牌墩最多者獲勝
- 滴答滴答
- 當有玩家其牌墩達到[6]個時,該輪遊戲結束
- 該輪到尾家時遊戲結束
- 無限續杯/不只一次
- 組成牌墩不限次數
- card-play: 拿取第1張牌。
- 拿取2個第1張牌
- trade: 拿取第1張牌,返還1張牌。
- 返還1張牌
- semi-closed-eye: 查看並拿取1張牌,剩餘洗牌。
- 查看並拿取1張牌
electric: 執行他牌效果時,拿取此卡。- 配合效果卡執行,調整此卡效果,故不新增效果卡
- stack: 拿取第1張牌,放置於牌墩上。
- 拿取第1張牌,放置於其他牌堆上。
- *2: 結算時,此牌墩分數乘2。
- 乘1
- +2: 結算時,此牌墩額外+2分。
- -1分
- share: 所有玩家,拿取第1張牌。
- 所有玩家,返還1張牌
- card-pickup: 拿取第1、2張牌。
- 拿取第1、2、3張牌