是肝膽相照的戰友,也是陰險狡詐的敵人,淺談單機遊戲中的NPC
在現今的絕大部分電子遊戲中,“NPC”已經是不可缺少的一部分了,在《荒野大鏢客2》、《俠盜獵車手5》、《上古卷軸5》、《巫師3》這些開放世界遊戲中,大量的NPC角色生活在這些開放世界中,他們擁有自己的獨特的行動模式,單獨的劇情,與玩家有著豐富的互動。
在這些開放世界的每一段遊戲體驗中,肯定會有幾位讓你印象深刻的NPC角色,無論是《巫師3》中美麗迷人的葉奈法,《黑暗之魂》中陰險卑鄙的帕齊,還是《荒野大鏢客2》中無時無刻不在計劃“Plan”的達奇,這些NPC的一舉一動都會影響故事的情節,成為你這段難忘的遊戲體驗中無法替代的重要回憶之一。
今天我們就簡單聊一聊單機遊戲中的NPC。
單機遊戲中NPC的作用與分類
作為遊戲中必不可少的一個元素,NPC的本質是什麼呢?NPC的本質或者說存在的目的,一是為了實現遊戲某種必須功能,二是展現遊戲資訊並與玩家進行互動、互動。
有種說法電子遊戲是從桌面卡牌遊戲發展而來,而在有些桌面卡牌遊戲中,會存在“裁判”的角色,這就是NPC的雛形。“裁判”的存在是為了實現按照卡牌遊戲的規則,判定正確結果這一功能。“裁判”這一角色本身定位也是非玩家的角色來擔任。
在FC初期帶來的動作遊戲熱潮中,NPC就已經遍佈於絕大部分遊戲中了。以《超級馬里奧兄弟2》為例,遊戲中的敵方NPC角色從最開始類似蘑菇的雜兵“板栗仔”到形似恐龍的BOSS“庫巴”所存在的意義就是為了給馬里奧和路易兄弟的英雄救美之路上提供困難與挑戰這一功能,所提供的互動不是你踩死我,就是我咬死你。
而我方NPC角色就是被解救的蘑菇王國市民與碧琪公主,她們的功能是為遊戲提供最終目標、完善遊戲的故事劇情,並且會有簡單的感謝玩家的話語。
在FC遊戲《人間兵器》中,流程中出現了提供手雷的NPC,他的功能是推進遊戲流程,必須要找到這個NPC才能過關,並且關卡末尾的NPC會給與玩家情報,根據情報玩家才會掌握最終BOSS真面目,這也是當年少見的反轉劇情的FC動作遊戲。
在《勇者鬥惡龍》與《最終幻想》引領了RPG遊戲的熱潮之後,遊戲中的NPC角色數量大大增加,並且增加了各種功能性的NPC,購買武器的武器商人、購買道具的道具商人、恢復體力、魔力等各項數值的宿屋老闆、提供記錄功能的牧師等等等等。
RPG遊戲的重點之一故事就是故事劇情,自然也會產生大量的專門負責推動劇情的NPC角色,《仙劍奇俠傳》中的酒劍仙,就是《仙劍奇俠傳》遊戲初期推動劇情的重要NPC角色。
到了這個時候,根據前文所述,NPC的本質是為了實現遊戲中的某種必須功能,已經可以根據要實現的功能對NPC角色進行一個大致的分類了,首先是在遊戲中提供主要戰鬥對抗功能的戰鬥型NPC角色(主要為敵方)。
《血源詛咒》中的BOSS戰鬥型NPC瑪利亞
其次是在遊戲中提供新手引導、住宿、記錄、商人、學習技能招式等各種遊戲中功能的服務型NPC角色。
《黑暗之魂3》中的功能性NPC防火女
之後是負責遊戲故事的主線、支線任務以及劇情推動,並完善遊戲劇情以及世界觀設定的劇情型NPC角色,滿世界的只有對話的NPC在功能上也是為了完善遊戲世界觀的劇情型NPC。
《黑暗之魂3》中的劇情型NPC洋蔥騎士
這幾個NPC型別標籤並不互斥,在現如今越來越複雜的開放世界遊戲中,NPC角色們早已不再只負責單一的功能了,身兼多重功能的NPC們比比皆是,但依舊可以按照其負責功能所佔比重最主要的一個標籤進行分類。
比如有些遊戲中負責推動劇情的我方NPC角色也可以與其進行戰鬥,戰鬥之後就會加入我方隊伍,如果之後對劇情推動有很大影響則可分為劇情型NPC,如果基本對劇情無推動則只是為了實現隊友這一功能的服務型NPC,並且這個NPC在完成主要功能時也很可能會教你一兩個招式或者售賣你一兩件物品等等。
NPC角色AI的作用
NPC角色越來越多,遊戲越來越複雜,這個時候開始要為NPC角色注入一定的行動模式與選擇,這就是遊戲中的AI了。
AI,人工智慧(Artificial Intelligence),英文縮寫為AI。這可是現如今很火熱很高大上的一個詞,這是一門高深的科學,我是絕對沒有討論AI的知識水平,只是簡單的聊一下在遊戲中NPC角色AI的作用。
早期遊戲中的劇情型NPC角色們一般都只有簡單的行動模式與劇情對話,根據玩家的遊戲流程進度,劇情對話會有一些簡單的改變。而戰鬥型NPC也只是簡單重複幾個固定的攻擊模式,服務型NPC簡單重複著自己的服務職責,僅此而已。
之前看過一篇《吃豆人》的文章,遊戲的製作者就表示《吃豆人》遊戲中的4個“幽靈”怪物就分別有自己的行為模式:紅色幽靈一直跟在玩家屁股後面,粉色幽靈以玩家行進路線的下一個路口為目標,藍色幽靈則再進一步,以下一個路口後的路口為目標(預判),最後橙色幽靈完全隨機行動。
早期遊戲的技術水平限制了遊戲NPC角色AI的水平,有時為了增加對抗強度,NPC甚至不惜使用作弊的手段。
而發展到今天,隨著電子遊戲行業技術水平的不斷提升,越來越強調真實感與沉浸感,這體現在遊戲中的NPC角色身上,就是要求其表現的越來越真實,越來越像一個真實的人類角色。
在《荒野大鏢客2》中R星為大家搭建了一個細節極其完善的西部世界,每個NPC都有自己獨立的行動模式,會根據遊戲中的環境互動,會根據玩家的行動做出相應的互動反應,細節之處已經極其真實了。
但是問題隨之而來,真的需要遊戲中的NPC角色完全如一個真實的人類一樣嗎?NPC的AI是越真實越強大越好嗎?
首先,遊戲中NPC的AI肯定不是越強越好,遊戲帶給玩家的體驗是最重要的,過於強大聰明的AI肯定破壞玩家的遊戲體驗,如果你與敵方NPC一照面就被一槍爆頭,無法反擊,估計玩家此時肯定只想著摔手柄了。
之前看的另一篇文章,OpenAI的研究團隊曾經做過這樣一個實驗,他們製作構建了一個“資源有限,競爭者眾多”的遊戲環境,遊戲被命名為“Neural MMO”,然後新增了128名模擬人類行為的AI玩家在遊戲的地圖邊緣參加這場遊戲。
Neural MMO
你可以把這想象成全是AI參加的資源採集類戰略“吃雞”遊戲,AI們均設計了戰鬥邏輯,但是最後發現,大部分AI都在避免戰鬥,甚至把“避免戰鬥發生”當做最高階別的行動策略,AI盡力探索而避免戰鬥行為。
這其實很容易理解,真實的邏輯思考中,AI明白生命只有一次,死亡是最大的成本(遊戲中AI可以重生,但他們自己本身並不知道),自然而然的想法就是獲取更多資源努力生存下去。
然而對於一款戰略遊戲來說,這樣真實的AI行為無疑會降低遊戲體驗,所有的AI都躲著你不見面,完全變成了躲貓貓遊戲。
當然實驗內容遠比上面的複雜,這個舉例也許不那麼恰當,但是我想說明的是:遊戲中NPC角色的AI要解決的是帶給玩家更好的遊戲體驗這一問題,很像人類而不是要真的完全與人類一樣的思考。
NPC需要做的是給玩家帶來很像是人類一樣的感覺,並根據玩家的強度與行動、環境等條件作出相應的針對玩家的互動,提升玩家的遊戲體驗。
如果你與AI玩圍棋,肯定不是與“AlphaGo”這樣強大的AI玩最有意思,而是一個與你旗鼓相當的AI對手對局,並且在雙方互有勝負的局面下你抓住機會贏得對局才是最好的體驗。
簡單來說就是NPC角色配合玩家的行動來演戲,是最好的遊戲體驗。
最讓人難忘的NPC
之前在網上看過一個“幽靈車手”的故事,一位ID為00WARTHERAPY00的使用者曾在某遊戲視訊下寫了一篇留言,大概的意思他與他的父親經常玩一款叫《越野挑戰賽》的賽車遊戲,這款遊戲會記錄當前賽道最好成績車手的比賽狀況生成一個“幽靈車手”的NPC角色。
這位玩家的父親去世之後的十年後,有一天在《越野挑戰賽》的賽道上,他看到了他父親的記錄生成的“幽靈車手”在賽道上飛馳。
於是,他不斷的練習,終於在一次次的失敗之後,他終於超過了父親的“幽靈車手”。
在終點線前,他停了下來,因為這樣,父親的幽靈車就不會消失了。
這個故事之後被拍成了一部短片《Play Two》,並不需要複雜真實的AI,遊戲存檔資料生成的NPC幽靈車手帶給他的感動與回憶是再真實的AI也無法給與的。
寫在最後
遊戲中的NPC角色,誕生之初的初衷,就是為了帶給玩家更好的遊戲體驗,而承載了遊戲中的部分功能,並負責與玩家進行互動的重要作用。
隨著遊戲結構越來越複雜,NPC角色需要承擔的功能將會越來越多,在無法預測的將來,可能會誕生更加“另類”的功能或者玩法,那就很可能會誕生“另類”功能的NPC。隨著技術不斷的進步,尤其是AI技術的進步,我相信,以後的AI會更聰明更真實,會表演的更加優秀,帶給你更加完美的遊戲體驗。
來源:雨夾雪的回憶盒子
原地址:https://www.toutiao.com/a6783818317267206670/
相關文章
- 再揭祕一場陰謀!半島APT“趁勢之危”對我國商貿相關政府機構發動攻擊!陰險狡詐!APT
- 盤點史上最大膽又陰險的十二大軟體後門
- [轉發]淺談我在職場中與人相處的技巧
- Steam,你的敵人是亞馬遜亞馬遜
- JS function 是函式也是物件, 淺談原型鏈JSFunction函式物件原型
- C++最大的敵人是它的過去C++
- 霍金的警告:人工智慧是人類的終極敵人人工智慧
- IT專案中的ROI:專案經理的朋友還是敵人(轉)
- 淺談JavaScript中的thisJavaScript
- Mashable:Twitter是新聞媒體的敵人還是情人
- 微軟∶Linux 是 Windows 的頭號敵人 (轉)微軟LinuxWindows
- 最笨也是最好的方法,淺談產品新人的知識管理方法
- 淺談java中的反射Java反射
- 淺談react 中的 this 指向React
- 淺談Java中的HashmapJavaHashMap
- 淺談React中的diffReact
- 淺談JavaScript中的介面JavaScript
- npc的AI是如何運作的? 從程式到策劃深入談遊戲AIAI遊戲
- 淺談軟體效能提升相關的概念
- 敵人——建立敵人Rioter
- SOA和敏捷:是朋友?還是敵人?敏捷
- 淺談jQuery中的工具方法jQuery
- 淺談CSS中的Position(定位)CSS
- C++中的enum淺談C++
- 淺談JavaScript中的繼承JavaScript繼承
- 淺談 Java 中 this 的使用(轉)Java
- 外掛,永無止息的敵人
- 淺談Kotlin中的函式Kotlin函式
- 淺談Swift中的函式式Swift函式
- 淺談 js 中的 this 指向問題JS
- 淺談Rowid中的行號
- 淺談Java中的內部類Java
- 淺談Golang中select的用法Golang
- 淺談 Swift 中的屬性(PropertySwift
- 淺談java中的併發控制Java
- 淺談python中的xpath用法Python
- 淺談Javascript中的作用域鏈JavaScript
- 淺談 Swift 中的屬性(Property)Swift