從玩遊戲中可以得到的訓練與學習(轉)
從玩遊戲中可以得到的訓練與學習(轉)[@more@] 為了建立一款有趣、成功的遊戲,你需要的是能夠挑戰你的玩家。玩家要透過過關斬將來感受到他們在不斷地戰勝困難。達到此目的的一個方法就是,你的遊戲要有從玩家的操作中學習的能力。它能夠分析玩家正在做的事情,並嘗試提供具有挑戰性的反擊和創造更聰明的對手這樣的假象。 模式匹配 無論是搜尋資料模式,還是搜尋對玩家的反應模式,都有許多合理的人工智慧演算法,它們均以不同的人或事件的需求為依據。然而,僅為了遊戲設計的目的,這些演算法通常顯得過多,更重要的是,這些演算法並未使問題得以解決。 你感興趣的是給玩家提供一種挑戰,而不是為遊戲中的某個敵人建立一臺完美的反抗機器。作為遊戲設計師,因為遊戲是你自己創造的,所以一個非常有利的條件就是你清楚每款遊戲的侷限性。因此,你可以建立自己的預備模式,並透過檢查玩家遊戲時的輸入,或是不同的反應來測試這些模式。 例如,在像《街頭霸王II》(Street Fighter 2) 這樣的格鬥遊戲中,玩家有六個可供選擇的鍵。透過捕捉玩家何時按下鍵、與對手的距離、對手是否跳起等這些資訊,你會找到某種特定的操作模式。當與對手距離很近時,玩家通常可能會出重拳,再逼進去摔對手;當對手跳起來時,玩家可能總是向上出拳。透過記錄玩家不同的輸入和當時的遊戲資訊,你可以為遊戲的人工智慧(AI)建立一個能夠使用的可能的動作表。透過做這些工作,你可以“學習”玩家的移動,之後嘗試著反擊他們。 即時戰略遊戲(RTS)有一個更為複雜的攻擊系統,因為滑鼠點選的各次輸入是不相關的。在RTS遊戲中,想要學習翫家企圖做什麼,你需要提取玩家活動的資料來尋找一個通用的模式。這完全是一個依賴於遊戲的過程,讓我們用《命令與征服》(Command & Conquer)為例加以說明。 在《C & C》中,有一關的任務是建立基地和組建部隊來保護自己,然後摧毀敵人及他們的基地。這裡有兩個學習要點:一是玩家怎樣對付敵人,二是玩家如何建造基地。為了使這個例子足夠清晰,我們只研究第一個學習要點,儘管第二個學習要點對反擊是至關重要的。 在《C & C》中,作戰單位間的接觸是非常有限的,當他們離得足夠近時,他們便開始互相攻擊對方。你要搜尋的第一類資料就是玩家偏愛的作戰單位型別。玩家可能更喜歡用坦克衝鋒,在這種情況下,你需要建造專門對付坦克的防禦工事;如果玩家喜歡機槍兵,你就需要調整你的防禦工事來應對這種攻擊。 比起直接進攻你的基地,玩家可能會更喜歡攻擊你的採礦車。這種行為可以被記錄下來並被加以利用,以便你能派出軍隊去保護採礦車或在主基地周圍建造更多的防衛設施。想要建立一個成功的學習系統,你需要找出最通用的攻擊方法,然後在攻擊出現時想出如何去做決定。 儲存與搜尋 如同任何一種資料庫系統一樣,一個學習系統的好壞取決於它搜尋有用資訊的能力。學習系統的實際內容都是依賴於遊戲,但對於小型的通用資料庫,存在一些基本原則。 當你搜尋某種模式時,你要搜尋一個或多個特徵。為了做到這點,你應當用一種易於訪問的方式儲存資料。這就需要你在儲存資料的同時,還得考慮資料的訪問方式。如果你想要將每一個資料的產生都作為相互獨立的要素來儲存,你就需要用易於搜尋的順序將它們儲存起來。比如在《C & C》中,你可以用單位型別來儲存。透過為每一個單位型別建立一個表格,你可以搜尋全部記錄快速地找到你所需要的資訊,並收集到包含合適單位型別的記錄。 另一種方法是將所有的資料儲存在一張比率表格中。例如,攻擊採礦車對攻擊基地的比率,使用一種單位對另一種單位的比率。這會是一個很好的遊戲中的搜尋方法,因為沒有任何記錄需要回收、分析。你可以在遊戲外對單個記錄進行儲存和分析。你還可以加權最新的行動,以顯示在這些行動比先前的行動更重要時,你為戰術上的任何改變所作的積極嘗試。 總結 像任何一種其他型別的遊戲AI一樣,建立“學習”的方法不但需要花費很多時間,而且還需考慮不同的情形,還需經過很多測試。玩家會發現許多你預先想不到的遊戲方式,所以需要建立你自己的具有足夠擴充性的“學習”資料庫來擴充更多的情形。 學習翫家的遊戲風格和偏好,並不是建立一個不可戰勝的對手或是最棒的AI的關鍵。它僅僅是給你的玩家提供挑戰的方法。永遠別讓你的玩家找出一個長期對付電腦的戰術方法,這樣最終可以使你的遊戲延長生命,並使它保持新鮮感和有挑戰性
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951468/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IT職場:老闆可以從六西格瑪綠帶培訓中得到什麼
- vb中從域名得到IP及從IP得到域名 (轉)
- NLP與深度學習(五)BERT預訓練模型深度學習模型
- 用 Java 訓練深度學習模型,原來可以這麼簡單!Java深度學習模型
- 詳解聯邦學習中的異構模型整合與協同訓練技術聯邦學習模型
- 從DDPM到DDIM(三) DDPM的訓練與推理
- 從 ifconfig 中得到 IP地址(轉)
- 雲端計算時代的深度學習訓練深度學習
- 居然可以像玩遊戲一樣學Git遊戲Git
- 學習SVM(一) SVM模型訓練與分類的OpenCV實現模型OpenCV
- pytorch---在訓練中動態的調整學習率PyTorch
- 深度學習訓練過程中的學習率衰減策略及pytorch實現深度學習PyTorch
- 深度學習 | 訓練網路trick——mixup深度學習
- 學習 Git 玩轉 GitHubGithub
- 遊戲文案策劃——能力構成與訓練遊戲
- 從我一年程式設計生涯中得到的經驗教訓程式設計
- YOLOv3 中的多尺度融合與訓練YOLO
- CNN訓練中的技巧CNN
- 遊戲設計師可以從魔術中學到什麼?遊戲設計師
- 深度學習與CV教程(6) | 神經網路訓練技巧 (上)深度學習神經網路
- 《深度學習案例精粹:基於TensorFlow與Keras》案例集用於深度學習訓練深度學習Keras
- 什麼是端到端的訓練或學習?
- 微軟研究團隊使用遷移學習,訓練現實世界中的無人機微軟遷移學習無人機
- 飛槳圖學習大模型訓練框架大模型框架
- 適合AI訓練的遊戲框架AI遊戲框架
- 再無需從頭訓練遷移學習模型!亞馬遜開源遷移學習資料庫 Xfer遷移學習模型亞馬遜資料庫
- [原始碼解析] 深度學習分散式訓練框架 horovod (13) --- 彈性訓練之 Driver原始碼深度學習分散式框架
- 在深度學習訓練過程中如何設定資料增強?深度學習
- 初創公司如何訓練大型深度學習模型深度學習模型
- ENVI深度學習隨機引數訓練方法深度學習隨機
- 學習Python需要培訓嗎?可以自學嗎?Python
- 學習Java可以從事哪些崗位Java
- 學習Java可以從事什麼工作?Java
- [原始碼解析] 深度學習分散式訓練框架 horovod (2) --- 從使用者角度切入原始碼深度學習分散式框架
- AI打遊戲-肆(模型訓練)AI遊戲模型
- 與遊戲世界互動-作業與練習(5)遊戲
- 極客大學java進階訓練營學習分享Java
- 基金訓練營學習筆記3-股票基金筆記