動態難度調控

**動態難度調控**（），係電子遊戲設計上嘅一個諗頭，指將一隻遊戲嘅程式設計成識得即時按玩家嘅能力，調整隻遊戲嘅難度相關參數－個程式一發覺隻遊戲對個玩家嚟講難得滯就降低難度，一發覺隻遊戲對個玩家嚟講易得滯就提高難度。

舉個例說明，任天堂嘅名作《孖寶賽車系列》（Mario Kart）就用咗動態難度調控：孖寶賽車係一系列嘅競速遊戲，俾玩家彼此之間或者同人工智能對手賽車，而响賽車中途，玩家同人工智能對手都有得抽同用道具，啲道具有「幫使用者提升速度」同「阻礙使用者嘅對手」呢啲對使用者有利嘅效果；孖寶賽車系列有多部作品都會噉樣做－當一個玩家落後對手好多嗰陣，遊戲程式會俾佢抽到啲勁嘅道具，而當一個玩家拋離咗對手好多嗰陣，遊戲程式淨係會俾佢抽到啲渣嘅道具－「抽到乜道具」係一個會影響隻遊戲有幾難玩嘅參數，而遊戲程式會按玩家嘅能力調整呢個參數。

動態難度調控嘅理論基礎係心流體驗：心流係遊戲設計好重視嘅一個概念；簡單講，想像一個人做緊樣嘢；實證嘅心理學研究表明咗，如果樣嘢易得滯，佢會覺得悶，而如果樣嘢難得滯，佢會覺得有挫折感，兩種情況都會搞到個人冇癮；但如果樣嘢唔係太難又唔係太易，噉個人就會進入心流呢種特殊心理狀態；喺心流狀態下，個人會變得高度專注，而且事後仲會覺得好過癮－動態難度調控正正就係想盡可能令玩家打機嗰陣進入呢種狀態。
## 理論基礎

:－美國著名遊戲設計師基斯·古羅霍

動態難度調控嘅理論基礎係所謂嘅心流體驗。心流體驗係一種俾人譽為「最佳體驗」嘅心理狀態。經歷心流嘅人通常係做緊一樣會考佢技術、而且有返咁上下難度嘅活動（例如係打機嗰陣打一隻有一定挑戰性嘅遊戲），嗰樣活動具有以下三大特徵：
#有明確嘅目的；
#會對做嗰個人俾清晰嘅回輸（feedback，）－即係會明確噉話佢知佢掂唔掂；
#適度挑戰－即係會為佢提供一定程度嘅挑戰，唔係太易又唔係太難。
根據心流理論，如果嗰樣活動有齊呢三樣特性，做嗰個人嘅心理狀態就會起以下嘅變化：
*高度嘅專注；經歷心流嗰個人通常仲會話覺得唔使點樣花費精神就做到呢樣嘢；
*覺得時間好似過得好快噉；
*覺得樣活動好有價值。通常仲會因為噉而事後持續自發噉再去做嗰樣嘢，因而技術得以提升；
... 等等。當中「事後持續自發噉再做嗰樣活動」呢點俾人指對遊戲設計嚟講好有用－遊戲設計師想達致嘅正正就係想玩家開心過癮，玩完想再玩。呢個就係動態難度調控嘅基本諗頭：個個玩家嘅能力都唔同，同一個關卡，有啲玩家會覺得難，有啲玩家會覺得易；動態難度調控就係令個遊戲程式變成曉自動噉調節難度－一個用咗動態難度調控嘅遊戲程式會按玩家嘅表現（玩家表現反映佢哋嘅技術水平）嚟調整自身嘅難度，如果玩家表現太差（遊戲對玩家嚟講難得滯）就降低難度，而如果玩家表現太好（遊戲對玩家嚟講易得滯）就提升難度，務求想為玩家提供適度挑戰，進入「玩隻遊戲→適度挑戰→經歷心流→持續噉玩→技術提升→可以應付更高難度嘅挑戰→重複」噉嘅循環。

## 技術實現

要喺技術上實現動態難度調控，最基本要諗嘅係**表現指標**同埋**難度參數**。
### 表現指標

動態難度調控必需要用某一啲指標睇住玩家嘅表現，估計玩家嘅技術－一般認為，一位玩家嘅表現反映咗佢嘅技術，佢表現太差表示隻遊戲對佢嚟講難得滯，而佢表現太好就表示隻遊戲對佢嚟講易得滯。即係話喺任何一個時間點，「玩家有幾受到隻遊戲挑戰」（c）由類似以下呢一個函數（**挑戰函數**）噉嘅函數計出嚟：
:c = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ...，
當中柞 x_i 係難度指標。响廿一世紀初嘅電子遊戲界，可能嘅 x_i 包括咗以下呢啲：
*得分（數值低表示隻遊戲對佢嚟講難）；
*攻擊敵人嗰陣嘅命中率（數值低表示隻遊戲對佢嚟講難）；
*完全一件工作要嘥幾多時間（數值高表示隻遊戲對佢嚟講難）；
*喺一段時間內喪失咗幾多生命值（數值高表示隻遊戲對佢嚟講難）；
*喺一隻涉及玩家避開敵人嘅遊戲（例如《食鬼》）當中，難度嘅適當度（T）可以用以下呢個指標量度：
*:T = [1- \frac{E({t_k})}{\max({t_k})}]^{p}；
*:當中 t_k 係指玩家每一次玩，要行咗幾多步啲敵人先成功殺死佢，E({t_k}) 係玩咗 N 局之後嘅 t_k 平均值，\max({t_k}) 係喺嗰 N 局當中 t_k 嘅最大值，而 p 係一個參數。難度愈適當，T 數值愈高。
... 等等。順帶一提，除咗用玩家嘅表現之外，亦都有研究嘗試用玩家嘅情緒嚟做難度調節嘅基礎－例如係直接問玩家有乜感受或者用架生量度玩家嘅表情（可以睇吓肌電圖），並且靠噉嚟監察住玩家係咪覺得悶（悶通常表示易得滯）或者有挫折感（有挫折感通常表示難得滯）。亦有研究者索性俾玩家揀係咪要做難度調控（**玩家導向動態難度調控**；player-oriented DDA，pDDA）。

### 難度參數

响知道咗玩家係點之後，隻遊戲就要調整隻遊戲嘅難度相關參數（表現太好就提升難度，表現太差就降低難度）－呢個動作就係所謂嘅**啟發法參數調整**（heuristic parameter tuning）。喺基本嘅動作遊戲當中，以下呢啲遊戲參數都可以攞嚟做難度調整：
*玩家角色嘅火力（數值愈低隻遊戲就愈難）；
*威力提升出現嘅頻率（數值愈低隻遊戲就愈難）；
*關卡嘅特性，例如（喺射擊遊戲入面）戰場上有幾多掩護物可以俾玩家匿埋喺後面。
*NPC 嘅特性：
**敵人嘅速度（數值愈高隻遊戲就愈難）；
**敵人嘅血量（數值愈高隻遊戲就愈難）；
**敵人出現嘅頻率（數值愈高隻遊戲就愈難）；
**敵人嘅火力（數值愈高隻遊戲就愈難）；
**人工智能嘅水平；
... 等等。而實際應用上嘅動態難度調控系統好多時會用多過一個遊戲參數嚟做難度調控。
喺遊戲設計當中，做參數調整嗰陣有以下呢啲嘢要留意：
*有遊戲設計方面嘅研究者指出，「揀邊啲參數做難度調整」會對玩家嘅投入感造成具體影響：想像家陣個遊戲程式發覺隻遊戲難得滯，於是決定俾玩家喺環境入面得到更多武器、生命值回復得快啲、或者敵人嘅數量下降呀噉；雖然噉做係會令難度作出適當嘅改變，但同時又可能會破壞玩家嘅投入感－電子遊戲好多時都會想玩家覺得遊戲個虛擬世界係有返咁上下真實（有返咁上下投入）嘅，即係話要確保個難度調控系統唔好引起玩家嘅注意，確保玩家嘅腦海唔好浮現「我身處喺一個俾人設計嚟氹我開心嘅假世界」（睇埋暫停懷疑）或者「我喺遊戲入面過到關只不過係隻遊戲就緊我」等嘅諗法；「自己生命值低嗰陣，突然有埲牆出現保護自己」噉嘅嘢會容易搞到玩家個腦海出現呢種諗法，而「自己生命值低嗰陣，敵人嘅命中率係噉咦低咗」（甚至玩家可能根本察覺唔到呢個變化）就俾人認為冇咁易會搞到呢種情況出現。呢啲研究者指出因為噉，動態難度調控演算法當中「揀邊啲參數做難度調整」都要有技巧。
*除此之外，如果俾玩家留意到動態難度調控嘅存在，佢哋仲有可能會利用個系統，特登表現得唔好嚟博隻遊戲降低難度（例：佢心知自己喺遊戲入面死會令難度降低，所以就企喺度唔郁俾敵人打死佢，以求令到隻遊戲短時間之內難度下降），諗住靠噉嚟提升自己贏嘅機會率。因為噉，用親動態難度調控嘅遊戲，通常都會做到確保玩家所得嘅犒賞同難度水平成正比（例：殺一個難度高嘅敵人賺到嘅虛擬錢多啲），等啲玩家有誘因追求挑戰高難度。

### 機械學習

除此之外，動態難度調控仲可以配以搜集描述玩家行為嘅數據：研究者可以做遊戲測試，搵班玩家返嚟試玩隻遊戲，攞一啲描述玩家表現同難度之間嘅關係嘅數據，再喺呢啲數據上用機械學習嚟教個遊戲程式點樣做動態難度調控。好似係：
*有研究者指，動態難度調控涉及嘅運算可以用邏輯迴歸嘅諗法嚟想像：想像家陣有一隻結果二元（即係話玩家一係輸一係贏）嘅遊戲；邏輯迴歸簡單講係一種統計技術，能夠由數據嗰度估計出以下呢條式裏面嗰啲 \beta_i 嘅數值：
*:\log \frac{p}{1-p} = \beta_0 + \beta_1 x_1 + \beta_2 x_2，
**當中 p 係指個玩家贏嘅機會率，會反映隻遊戲嘅客觀難度，柞 \beta_i 係個統計模型嘅參數，當中 \beta_0 會反映玩家嘅技術（一個隨機效應），柞 x_i 係嗰啲要調整嘅難度相關參數（一個固定效應）；假想分析師做遊戲測試，搵班人返嚟試玩吓隻遊戲，用由呢班人身上得到嘅數據做邏輯迴歸，搵到 \beta_0 同 \beta_i 等嘅數值，噉喺跟住落嚟嘅運作當中，個程式就可以攞住呢個模型，估計「乜嘢 x_i 數值大機會能夠令 p 接近 50%」－一般認為，玩家 0% 機會贏嘅遊戲係完全困難嘅，而玩家 100% 機會贏嘅遊戲係完全容易嘅，得 50% 機會贏就最接近適度挑戰。
*又有研究者試過用類似人工神經網絡（ANN）噉嘅方法嚟做：想像家陣有個人工智能，佢有若干（n）個策略可以用，人工智能程式內部每套策略都有個**權重值**（weight；W_i），反映嗰套策略有幾大機會帶嚟勝利，數值愈高愈表示嗰套策略掂，然後研究者可以要個程式同玩家或者第啲人工智能程式對局，按呢啲對局嘅結果估計柞 W_i 嘅數值，然後教佢（例如）响玩家表現差（難度高得滯）嗰陣揀用 W_i 數值低嘅策略（降低難度）。
... 等等。

## 應用例子

喺廿一世紀初，動態難度調控仲未算係電子遊戲業界嘅標準。啲遊戲設計師同製作師好多時都唔鍾意呢種做法，而係比較偏向俾玩家自主噉揀隻遊戲嘅難度（例：遊戲開始嗰陣有個選單彈出嚟，俾玩家揀想玩邊個難度）。不過事實係，經已有多隻出名嘅遊戲用咗動態難度調控嘅技術，包括：
### 孖寶賽車

《孖寶賽車系列》呢個高卡車競速遊戲系列用咗兩種動態難度調控技巧：
*《孖寶賽車系列》俾玩家用《馬利奧系列》當中嘅角色嚟玩揸高卡車競速。同現實世界嘅賽車競速唔同嘅係，呢隻遊戲俾參賽者喺比賽途中由分佈喺賽道上嘅道具盒嗰度抽道具－道具包括咗蕉皮（可以擺喺賽道上面，令唔小心車到塊蕉皮嘅對手架車失控）、能量蘑菇（幫使用者喺短時間內加速）同埋閃電（使用者嘅對手冚唪唥俾雷劈，因而喺一段時間內速度急跌）呀噉。呢啲道具有啲勁啲有啲渣啲，所以「抽到乜道具」係一個會左右難度嘅遊戲參數，而廿一世紀初嘅《孖寶賽車系列》遊戲都會按玩家嘅能力調控「抽到乜道具」：如果玩家落後對手好多（隻遊戲對玩家嚟講難得滯），隻遊戲就淨係會俾佢抽到啲勁嘅道具（降低難度），而如果玩家領先對手好多（隻遊戲對玩家嚟講易得滯），隻遊戲就淨係會俾佢抽到啲渣嘅道具（提高難度）－達到動態難度調控嘅效果。
*除此之外，《孖寶賽車系列》仲出咗名用到所謂嘅橡筋人工智能（rubber band AI）技術。橡筋人工智能係競速遊戲專用嘅一種難度調控技術，指「電腦控制嘅賽車手嘅速度」－一個會左右難度嘅遊戲參數－取決於玩家嘅表現：如果玩家領先電腦對手好多，個遊戲程式就會俾電腦對手加速（提高難度），相反嘅話電腦對手就會減速（降低難度），所以無論玩家表現幾咁好，電腦對手都梗會有機會追返上嚟，反之亦然；橡筋人工智能嘅做法俾人比喻成橡筋－根據呢個比喻，玩家同電腦對手之間嘅距離就好似條橡筋噉，如果是但一方表現唔及對手搞到距離拉開，遊戲程式就會調節電腦對手嘅速度，嘗試將距離縮窄返。不過，呢種做法受到唔少遊戲設計界嘅人批評，話噉做會搞到技術好嘅玩家覺得啲電腦對手喺度出茅招，因而覺得冇癮。

### 第啲遊戲
*《古惑狼系列》係一個系列嘅平台遊戲。响呢個系列嘅多隻遊戲當中，遊戲程式都會留意住玩家喺一關入面死咗幾多次（一個反映玩家能力嘅變數），並且會按照呢個數值調節關卡裏面嘅各種難度參數－包括咗檢查點（玩家輸咗會自動返去嘅地點）嘅數量同埋啲障礙物嘅移動速度呀噉；而《古惑狼系列》嘅其中一個開發者就曾經噉講過：「勁嘅玩家、渣嘅玩家，係人都鍾意古惑狼遊戲。佢哋永遠都唔知，噉係因為佢哋每個人都喺度各自玩緊一隻有些少唔同咗嘅遊戲，按每個人嘅特別需要嚟平衡咗」。
*《生化危機 4》係恐怖生存遊戲系列《生化危機系列》响 2005 年出嘅一部作品。喺呢隻遊戲裏面，玩家要穿過佈滿喪屍等嘅敵人嘅關卡，呢啲敵人會攻擊玩家，而俾敵人打中玩家會喪失生命值，生命值變 0 就死；個遊戲程式會監察住玩家喺遊戲入面死咗幾多次同埋攻擊嘅命中率有幾高，然後就再按預先設低嘅準則，俾個分數（1 至 10）嚟表示個玩家嘅技術有幾掂，分數愈高表示個玩家愈掂；如果一個玩家分數低，遊戲程式會郁手改變啲由電腦控制嘅敵人嘅行為令隻遊戲易啲，例如係啲敵人嘅反應會變慢同埋攻擊會變得冇咁準呀噉；而如果個玩家分數高，遊戲程式就會做相反嘅嘢，令隻遊戲變得難啲。
*《惡靈勢力》係喺 2008 年出嘅一隻恐怖生存第一身射擊遊戲。喺呢隻遊戲入面，玩家要一齊合作，用槍嚟對付進犯嘅大羣喪屍。呢隻遊戲嘅程式有一個所謂嘅**人工智能主管**（AI Director），個主管會掌控「喪屍幾時同喺邊出現」（喪屍出現嘅位置永遠唔會喺玩家嘅視線之內）同「武器會喺乜嘢位置搵到」等嘅嘢，用程序生成嘅做法確保呢啲變數次次玩隻遊戲嗰陣都有啲唔同，而且呢啲變數仲會受到玩家嘅表現（以「玩家消耗咗幾多資源」等嘅變數衡量）調整。
... 等等。

## 爭議
喺廿一世紀初，有好多遊戲設計師同製作師都唔鍾意動態難度調控，覺得動態難度調控嘅做法會搞到玩家覺得自己好似俾隻遊戲暗中操控緊噉。事實係，動態難度調控嘅技術經已引起過爭議。例如係著名嘅美國遊戲發行商藝電（EA）噉，就喺 2020 年俾人告佢喺《EA Sports》系列當中用咗動態難度調控嚟出古惑，單嘢係噉嘅：《EA Sports》係一系列由藝電公司發行嘅體育遊戲；喺呢個系列嘅多部作品當中，玩家都可以扮演球隊嘅管理者組球隊，負責用虛擬錢幫自己嘅球隊請球員，唔同球員嘅能力值都唔同，有啲高啲有啲低啲；而且玩家仲有得使真錢嚟買虛擬抽獎盒，每個虛擬抽獎盒都會隨機噉提供球員；問題係呢啲遊戲又用咗動態難度調控嘅做法，而且藝電冇講呢樣嘢俾玩家知；喺呢個系統下，如果玩家場波贏緊（表現好），隻遊戲就會暗中調低玩家啲球員嘅能力（提高難度），而批評者指出，藝電噉做即係等如變相暗中操控玩家，等佢哋以為自己買返嚟嗰啲能力值高嘅球員冇佢哋想像中咁勁，因而令玩家有誘因買多啲虛擬抽獎盒－即係話，啲人覺得藝電係喺度出陰招引玩家使錢，搵玩家老襯。不過對於呢啲指控，藝電公司嘅回應係矢口否認，而單官司收尾都係告唔入。
## 睇埋

*遊戲人工智能
*任天堂難
*遊戲平衡
*對局配對
*程序生成
*難-易效應
*有益難度

## 文獻
一般文獻：

*Afergan, D., Peck, E. M., Solovey, E. T., Jenkins, A., Hincks, S. W., Brown, E. T., ... & Jacob, R. J. (2014, April). Dynamic difficulty using brain metrics of workload (PDF). In *Proceedings of the SIGCHI Conference on Human Factors in Computing Systems* (pp. 3797-3806).
*Baldwin, A., Johnson, D., & Wyeth, P. A. (2014). The effect of multiplayer dynamic difficulty adjustment on the player experience of video games (PDF). In *CHI'14 Extended Abstracts on Human Factors in Computing Systems* (pp. 1489-1494).
*Constant, T., & Levieux, G. (2019, May). Dynamic difficulty adjustment impact on players' confidence (PDF). In *Proceedings of the 2019 CHI conference on human factors in computing systems* (pp. 1-12).
*Constant, T., Levieux, G., Buendia, A., & Natkin, S. (2017, September). From objective to subjective difficulty evaluation in video games (PDF). In *IFIP Conference on Human-Computer Interaction* (pp. 107-127). Springer, Cham.
*Fraser, J., Katchabaw, M., & Mercer, R. E. (2014). A methodological approach to identifying and quantifying video game difficulty factors (PDF). *Entertainment Computing*, 5(4), 441-449.
*Frommel, J., Fischbach, F., Rogers, K., & Weber, M. (2018, October). Emotion-based dynamic difficulty adjustment using parameterized difficulty and self-reports of emotion (PDF). In *Proceedings of the 2018 Annual Symposium on Computer-Human Interaction in Play* (pp. 163-171).
*Hunicke, R. (2005, June). The case for dynamic difficulty adjustment in games (PDF). In *Proceedings of the 2005 ACM SIGCHI International Conference on Advances in computer entertainment technology* (pp. 429-433).
*Stein, A., Yotam, Y., Puzis, R., Shani, G., & Taieb-Maimon, M. (2018). EEG-triggered dynamic difficulty adjustment for multiplayer games (PDF). *Entertainment computing*, 25, 14-25.
*Zohaib, M. (2018). Dynamic difficulty adjustment (DDA) in computer games: A review (PDF). *Advances in Human-Computer Interaction*, 2018.

AI 文獻：

*Andrade, G., Ramalho, G., Santana, H., & Corruble, V. (2005, September). Challenge-sensitive action selection: an application to game balancing (PDF). In *IEEE/WIC/ACM International Conference on Intelligent Agent Technology* (pp. 194-200). IEEE.
*Pfau, J., Smeddinck, J. D., & Malaka, R. (2020, April). Enemy within: Long-term motivation effects of deep player behavior models for dynamic difficulty adjustment (PDF). In *Proceedings of the 2020 CHI Conference on Human Factors in Computing Systems* (pp. 1-10).
*Weber, M., & Notargiacomo, P. (2020, November). Dynamic Difficulty Adjustment in Digital Games Using Genetic Algorithms (PDF). In *2020 19th Brazilian Symposium on Computer Games and Digital Entertainment (SBGames)* (pp. 62-70). IEEE.
*Zook, A. E., & Riedl, M. O. (2012, October). A temporal data-driven player model for dynamic difficulty adjustment (PDF). In *Eighth Artificial Intelligence and Interactive Digital Entertainment Conference*.

## 註釋

## 引咗

## 拎
* 你唔知佢用咗 DDA 嘅 game，SVG
* 挑戰嘅層級，GAME DESIGN & DEVELOPMENT 2021