遊戲中的 NPC 是什麼意思:縮寫代表什麼,以及為何重要
打造你的 NPC 遊戲
在遊戲裡,NPC 代表什麼?這個詞從哪裡來?它的起源、三種拼寫法——NPC、NPC's、NPCs——以及非玩家角色仍舊各司其職的即時 3D 世界。
NPC 是非玩家角色的縮寫:遊戲中任何不受玩家控制的角色。在 NPC 遊戲的語境裡,這個稱呼涵蓋的範圍很廣——只有三句對白的店主、沿著固定路線巡邏的守衛、跟著你穿過整個關卡的同伴——它同時是類別名稱、行為品質的簡寫,在遊戲之外甚至還是一種貶義詞。
本文介紹這個詞的來源、人們最常搜尋的三種拼寫(NPC、NPCs、NPC's)、這個含義如何歷經五個硬體世代而保留下來——儘管底層的行為已徹底改變——以及當你站在即時瀏覽器場景中、面對一個照本宣科的角色時,該注意哪些地方。
快速解答:NPC 就是非玩家角色
NPC 是非玩家角色的簡稱,意思是遊戲中任何不由玩家控制的角色。這個稱呼涵蓋盟友、商人、任務發布者、環境人群與敵對怪物,只要鍵盤前沒有人正在操控他們,都算在內。
這個縮寫之所以無所不在,是因為它比它所取代的詞少了四個字元,而且能塞進對話表、引擎類別名稱、設計文件與錯誤回報單——但在遊戲之外,它是有歧義的:讀者可能把它當成對某個人的評語,而不是對軟體的描述。
這個詞從哪裡來
這個詞比電子遊戲更早出現。它來自桌上角色扮演遊戲:在那裡,由一位參與者運行整個世界,以及其中每一個不受玩家控制的角色。這個角色——視系統而定,稱為遊戲主持人、地下城主或裁判——就是最早的非玩家角色引擎:店主的價錢、守衛的巡邏路線、旅店老闆的八卦都放在同一個腦袋裡,玩家一問就有答案。
這個說法確切首次付印於何處,很難斷定,在沒有實際書頁的情況下,我不會斷言是哪本書或哪一年。可以確定的是,紙筆規則文本需要一個詞,把玩家所扮演的角色和裁判代為發聲的角色區分開來;而在家用電腦還有足夠記憶體進行對話之前,這個詞就已經在這種嗜好中流通了。
電子遊戲一有了角色,就繼承了這個詞。早期設計師需要把玩家移動的東西,和依規則自行移動的東西分開,於是直接採用了原本就正好表示這件事的詞。它始終是設計用語,而非引擎用語:在虛幻引擎中,最接近的對應是棋子與角色的類別階層;在 Unity 中則是帶有控制器元件的遊戲物件;兩者都沒有直接命名為 NPC 的類別。這個落差很好用——當有人說 NPC,通常談的是意圖與行為,而不是程式碼。
NPC、NPC's 還是 NPCs:哪種拼寫才對
單數是 NPC。複數是 NPCs,直接加 s,不加撇號,這也是大多數編輯風格指南處理縮寫的方式。所有格是 NPC's,因為撇號在這裡做的是它真正的本分:標示所屬。三種形式在各自的定位上都正確;令人混淆的是,其中兩種乍看之下幾乎一模一樣。
搜尋變體 npc's 通常是加了撇號的複數——就像有些人會把電視或個人電腦的複數也加上撇號一樣,是同一種反射動作。偶爾它真的是省略了名詞的所有格,只留下所有格標記。如果你要建立搜尋索引或內容篩選器,別把這三種形式當成原始字串比對:先統一大小寫,並在比對前去掉撇號,否則查詢 NPC 時會默默漏掉 NPCs 和 npc's。
| 形式 | 說明 | 例句 |
|---|---|---|
| NPC | 單數。一個角色。 | 城門口的 NPC 會重複同一句話,直到你接下任務。 |
| NPCs | 複數。一個以上。 | 市場裡的 NPCs 共用同一套待機排程。 |
| NPC's | 所有格。屬於某個 NPC。 | NPC's 巡邏路線繞過水井,再回到城門。 |
遊戲為什麼需要這個詞
這個詞是某個類別的簡寫,而這個類別是靠「缺席」來定義的:沒有玩家的能動性。場景中的一切,不是由輸入驅動、由規則驅動,就是完全靜止。NPC 指的是中間那一種。沒有這個詞,設計文件每次都得寫「那個沿著城牆走、但不受任何人控制的角色」,而這種句子不管你有沒有事先規劃,最後都會被縮短。
這條界線兩邊都需要小心。敵對怪物技術上也是非玩家角色——沒有人在操控它——但玩家在對話中習慣把「NPC」和「敵人」分開,把前者留給會跟你說話的角色。另一方面,有物理碰撞體的箱子不是 NPC;而一個互動時會打開對話框的箱子則是:它有狀態、有回應,即使那個狀態只是一個布林值。
最後這個例子就是好用的檢驗法。問問自己:玩家沒在看的時候,這東西會做什麼?道具什麼都不做。NPC 則不然:它會照排程繼續做事——巡邏、待機、交易——或者保有某種狀態,等玩家一到就會改變。如果兩者都沒有,它就只是附了模型的佈景。
- 玩家角色讀取輸入。擁有攝影機、失敗狀態與存檔。場景中其他每個物件都是相對於它來定義的。
- NPC沒有輸入。由腳本、狀態機、排程或路徑驅動。仍可能保有對話、物品欄、目標,以及你上次做了什麼的紀錄。
- 敵人附加了敵意規則的 NPC。在日常說法裡,玩家會把這兩個詞分開;但就機制而言,敵對怪物就是非玩家角色,因為鍵盤前沒有任何人在操控它。
- 道具沒有決策迴圈,也沒有值得存下的狀態。路燈、圍欄、木桶。加上一個互動和一個回應,它就跨過界線,成為有腳本的非玩家角色。
這個含義如何隨遊戲世代改變
固定的精靈對話。在街機與 8 位元遊戲中,NPC 通常就是一個精靈圖,附上一段文字字串,存在表格裡,由腳本指標取出。它會永遠重複,對你毫無記憶,而這正是這個詞至今仍有的意思。改變的從來不是定義,而是角色背後那台機器的規模。
對話樹與全域旗標。冒險遊戲與 16 位元角色扮演遊戲加入了分支對話,首次迫使 NPC 必須保存狀態。存檔裡的一個旗標——見過守衛設為真、城門鑰匙設為假——讓角色在第二次造訪時有不同的行為。角色沒有變聰明;是遊戲開始替它記一張檢查清單,而之後每一次改良,都只是把清單做得更大。
腳本化的開放世界。從 2000 年代中期起,角色有了每日排程、導航網格尋路與晝夜循環;《上古卷軸四:湮滅》的輻射式 AI 正是野心與失敗模式的典型範例。當排程、路徑與世界幾何彼此矛盾,NPC 就會走進一扇入夜後鎖上的門,然後站在那裡直到天亮。那個年代的錯誤回報,幾乎全都和角色出現在設計師沒預期的位置有關。
系統驅動的角色。行為樹與效用 AI 取代了單一腳本,改成一份加權的選項清單——進食、巡邏、交談、逃跑——每個更新週期重新評估。失敗的層級也往上移了一階。一個任務關鍵角色晃進戰鬥裡死掉,任務也跟著陪葬;這就是為什麼已上市遊戲會把這類角色標記為受保護或必要角色,而不是信任系統能讓他們活著。
模型層。近期的遊戲與瀏覽器工具,把語言模型對話接上同一副骨架:先有短句喊話、導航網格、動畫狀態機與互動觸發器,再把生成的文字疊上去。沒有接地時,文字層會憑空發明世界設定,和任務紀錄互相矛盾。接地到真實世界狀態時,它改變的是角色說什麼,而不是角色能做什麼——這和 8 位元文字表格的分工完全相同。
遊玩一個 NPC 仍舊各司其職的世界
讀行為的描述,不如直接站到它面前。打開 3D 遊戲建構器,載入 Mini World 體驗一個精簡的場景,或走進獨眼巨人島,探索一個散布著角色的較大空間。用走的,不要用跑的:大多數角色錯誤只有在一人步行的速度下才看得見——你能看到模型貼著地面滑行而不是邁步,或因為面向目標與路徑不一致而在原地打轉。
四個性質可以區分有腳本的角色和裝飾用的角色:它會不會注意到你、會不會主動、會不會記得、以及它能不能失敗。當你靠近時會轉身面向你的守衛,跑的是距離觸發器。會先開口的商人,其互動半徑設定得比角色碰撞體還寬。第二次造訪仍重複一模一樣第一句話的角色,則完全沒有狀態——對話表是用常數索引的。
如果你是在建造,而不是在參觀,那麼你寫下的描述就是建構器依循的規格。「一個會重複同一句話、直到城門打開的守衛」和「一個在你身後三公尺跟著、你停就跟著停的商人」,描述的是同一個模型、兩套不同的系統;後者需要跟隨目標、停止距離,以及路徑被圍欄擋住時的處理規則。描述行為,不要只描述外觀,否則你只會得到一個模型精美卻無事可做的角色。
NPC 遊戲運作良好時是什麼樣子
當不同角色在不同時鐘上做不同的事,場景才會讀起來像有人居住。三個角色全都以同一個兩秒迴圈待機,讀起來像一張材質貼圖,而不是一群人。一個角色走二十秒的巡邏、一個會轉身追蹤玩家、一個在有人開口前什麼都不做,就能讓眼睛有三件不同的事可注意。
01
載入場景後先站著不動十秒,再開始移動。待機中的角色會顯露它的迴圈:誰在換重心、誰重複同一段兩幀動畫、誰真的什麼都沒做。
02
慢慢接近每個角色,觀察頭部。會轉身面向你的角色,跑的是視線注視或距離觸發;始終背對你的角色,完全沒有感知狀態。
03
先和最先開口的人交談,然後走開再回來。如果第二次對話和第一次一模一樣,表示沒有任何東西被寫進狀態——這個角色是文字表,不是系統。
04
試著打斷巡邏。站在行走角色的路徑上,看它會停下來、繞過你,還是直接穿過。直接穿過表示導航代理沒有設定避障。
05
改變角色描述中的一件事——跟隨距離、巡邏路線、問候語——然後重新載入。觀察改變是出現在行為上,還是只出現在外觀上,這能告訴你你的修改實際觸及了哪一層。
遊戲之外的 NPC 含義
在遊戲之外,這個詞被寬鬆地使用,而且通常不太友善,用來形容一個看起來像在背台詞、而不是在思考的人——反覆說著某套標準意見,或遵循某種看不見目標的例行公事。這個比喻直接借用了遊戲中的意思:照本宣科、可預測、沒有自己的能動性。還有一種實況主用法:創作者扮演一個回應觀眾斗內的角色,借用的是遊戲角色站在定點不動的視覺文法。
遊戲編劇在指稱有目標的角色時,往往會避開這個詞,因為它描述的是誰控制角色,而不是角色想要什麼。在設計文件裡,「NPC」回答的是關於輸入的問題,對動機隻字未提;而只憑類別標籤寫出來的場景,產生的正是標籤所暗示的東西:一個站著不動、等著被使用的角色。
走進它所屬的世界
精靈圖是一個無處可站的角色。最後一步是別人沒提供的:把你剛做好的角色圖集,放進一個有人可以走動的世界——一座小島、一顆行星、一個下雨的街角。這個網站上的每個世界,都是從一段文字描述開始,發布成一個可以遊玩的頁面。
FAQ
遊戲中的 NPC 代表什麼? +
非玩家角色——遊戲中任何不受玩家控制的角色。它涵蓋任務發布者、商人、同伴、人群成員與敵對怪物,因為在這些情況下,行為都來自腳本或系統,而不是來自輸入。
該寫 NPC 還是 NPCs? +
單數是 NPC,複數是 NPCs,不加撇號;所有格是 NPC's。搜尋變體 npc's 幾乎都是加了撇號的複數,雖然不符標準,但常見程度足以讓任何索引或篩選器應該將其正規化,而不是直接拒絕。
這個詞從哪裡來? +
桌上角色扮演遊戲。在那裡,遊戲主持人運行每一個不屬於玩家的角色。電子遊戲很早就採用這個說法,因為它們也需要同樣的區分:化身與其他一切。這個詞原封不動地流傳到引擎工作與設計文件中。
敵人也算 NPC 嗎? +
就機制而言,算——敵對怪物就是非玩家角色,因為沒有人在操控它。在日常說法中,玩家通常會把兩者分開,用 NPC 稱呼會與你交談的角色,用敵人稱呼與你戰鬥的角色;這就是為什麼同一個詞在同一段對話裡,可能看起來有兩種意思。
玩家和 NPC 有何不同? +
差別在於控制來源,以及誰承擔後果。玩家角色讀取輸入、帶著攝影機與失敗狀態,並寫入存檔。NPC 由腳本、狀態機、排程或路徑驅動,它對你的記憶之所以存在,只是因為遊戲替它保存。
所有 NPC 都是 AI 驅動的嗎? +
不是。很多純粹是腳本:固定巡邏、觸發區域、用常數索引的對話表。即使是用遊戲開發意義上的 AI——行為樹、效用評分、導航網格尋路——那些也只是規則系統,並不包含學習;所以在這裡,AI 一詞的含義比一般用法窄得多。
回到 3D 遊戲建構器
全部 31 個完成的 3D 世界、遊戲與場景都在同一頁——每一個都能玩。