第332章 「《乂世界》」(1/2)
一個開放性世界,若要保證其有足夠的空間給玩家探索,那麼npc的數量肯定不能少,否則僅憑几十或幾百個npc根本不足以支撐起一個低武仙俠世界。
要讓玩家不感覺到違和,幾千上萬個不同的npc是最基本的,甚至還要有更高的可擴展性。
但是,個人pc的性能是有限的。
竹猗會拿出這一份策劃書,自然是心中已經有了大致的解決方案。
首先,不可能給每一個npc都分配足夠的資源,以讓它用完善的經歷來豐富自身的設定。
除非有人奢侈到用超級計算機來玩這款遊戲。
那麼,根據npc的重要性,竹猗大體將它們可劃分為三個等級:處於玩家角色「探知範圍」內的npc,如隊友;影響世界進程的主要npc,如某座城池的城主;不干涉世界進程的邊緣npc,如某村莊的路人甲。
對於第一類npc,自然要保證其最大程度的智能,並可以在與玩家的互動中不斷學習、完善自身人設,同時也是作為遊戲中的可攻略對象。
而第二類npc,則可以刪減掉大部分細節化的互動,只對其進行大致行動上的推演,並通過其決策一定程度地影響到玩家角色所處的遊戲世界。
至於第三類邊緣npc,則處於一種近似於「薛丁格的貓」的狀態,它們只保留一個索引,玩家不與其進行接觸時全部資料皆處於空白狀態,在遊戲中以「群體」的形式影響到遊戲世界的發展走向。
如此一來,當玩家需要接觸具體某一位第二類或第三類npc時,只需要在用到時才補全它的「經歷」並適當地將其重要性往上升級即可,在保證不與已有設定衝突的情況下玩家並不會察覺到這個npc在被「觀測到」的這一刻前是否存在。
二類與三類npc的行動邏輯,還是比較好處理的,即便換一個水平菜一點的程式設計師都能弄出一個解決方案,只不過最後的效果可能沒有竹猗弄出來的那麼好而已。
難點在第一類npc。
【這個先不急。】
竹猗把條理全部整清楚後,並沒有馬上著手開發一類npc的AI。
其實,現有的AI原理很簡單。
和許多人誤以為的「程序」會自主思考完全不一樣,其作用方式無非是對於「輸入」和「輸出」的管理而已,只不過處理邏輯要讓「觀測者」認為是人類或像是人類。
比如,你問AI:「你是機器人嗎?」
AI回答你:「是的。」
這或許只是一個簡單的反射,按照一定規則匹配到類似「你是機器人嗎」這樣含義的「輸入」時給出「是的」這個答覆作為「輸出」。
它或許是一開始被設定成這樣的,也可以是被「調(喵)教者」新建立的一個反射,這是最簡單無腦的一種實現方式。
那複雜一點呢?
自然是要讓程序能夠自主解析出「問題」的真正含義,並在「記憶庫」中挑選出一個合適的回答,甚至可以基於「趨利避害」的原則給出一個不一定正確的答覆。
至於如何管理「記憶庫」,以及AI究竟基於哪一種原則做出回應,那就得看這一AI的具體實現的算法了。
在遊戲中,玩家當然不會只與npc進行聊天。
所以,竹猗得先完善這款遊戲裡有哪些「輸入」與「輸出」,也就是虛擬世界內角色的「信息收集」與「行動決策」,才能開始編寫如何讓AI面對遊戲世界內的不同狀況作出何種反應。
也就是說,大體框架得先搭好。
……
某日,社團活動時間。
「初始化的時候,可不可以根據pc性能不同,創建一個大小不同的虛擬世界呢?不然明明有一台高性能機器卻要被平均水平拖後腿豈不是鬱悶。」清秋找竹猗商量。
竹猗並沒有悶頭一個人碼代碼,經常也會同其他人一起溝通各種設定上的問題,並且也一邊教授莫問一些「編程」上的知識和技巧。
「有道理。」竹猗若有所思地點點頭,「那就在創建新世界的時候給一個世界大小的選項,pc性能不夠的只能選『小』,性能有餘裕才可以選擇『中』、『大』或者再往上的選項。」
保不准有人會拿工作站玩遊戲呢,一切場景和npc都是隨機生成的話,要達成這個效果只需要多設定一個數值就可以了。
在旁邊的莫問微微張了張嘴,最後還是沒有說話。
「會很難嗎?」清秋突然問。
「沒啊,不算難。」竹猗無所謂地說。
確切地說,相對這個項目來說,已經算是比較簡單的一環了。
不過是如何根據算法繪製一份合理的世界地圖而已,並恰當地在地圖上的每一處填充上合適的元素。
只要能完成這一步,世界小或大無非是在初始化階段計算量少或多的問題。
竹猗擁有Lv.5的「編程」,自然對此信心滿滿。
接下來的這兩天。
他先在開源項目里找出一些繪製隨機地圖的項目。
這很重要。
儘管他很厲害,但一個人的精力始終是有限的,如果可以更簡單地獲取到一些信息,沒必要自己耗費精力與時間去重複一遍已經有人做過的事情。
然後,將其抽絲剝繭,並依據自己的需求對其改造。
有前人做好的輪子,他改造起來就特別的順利。建立了一個「X-map」的獨立項目,用於保存經由自己加工過的隨機地圖算法,並將其作為開源項目上傳至BitHub。
他順便在介紹里註明了所有參考的項目。
雖然核心算法都已經被他改得面目全非,但能這麼快完成這一步也多虧了前人的努力和無私,他自然也不會吝嗇這一點研究成果。
把項目開源出去,不僅可以幫到有需要的其他人,也可能會有其他高手一同完善這個項目。
當然,竹猗覺得不太可能有Lv.5的高手來幫他完善這種小玩意就是了。
把項目上傳後,他也沒有關注後續的情況。
有沒有人發現,竹猗反正又無所謂,他已經不需要通過這種事情來找成就感了。
竹猗又花了一點功夫,在基本還沒什麼內容的「X-game」項目成功添加上了世界初始化的功能。
暫時留出了很多的空白,甚至圖片紋理的素材都是先隨便找的,只要保證初始化的時候能夠繪製好一幅完整且合理的世界地圖就行了。
……
距離第一次會議一周後。
清水高中,遊戲製作社的社團活動室。
「如何,是不是很像那麼一回事的樣子。」竹猗頗為高興地向大家演示了「世界初始化」的功能。
在他身後的幕布上,不僅僅有一幅畫風凌亂但像模像樣的虛擬世界的地圖,特意展示出來的debug彈窗里還羅列出了根據字庫隨機生成的城鎮、秘境、npc、植物等,並詳細註明了各自的分布情況。
「這……」
清秋驚訝地張開了嘴巴。
哪怕不去思考這些東西是怎麼生成的,光是投影在幕布上展示出來的這一部分,看起來就不像是工作量很輕鬆的樣子。
「太厲害了吧。」李佳冉說出了大家的心聲。
「不僅如此哦,我特意寫了一個背景npc以及npc群體的AI,整個初始化階段就是從世界裡出現第一個具備靈智的npc一直依據AI推演到玩家設定的年代為止演化而成的世界,所以玩家在遊戲世界裡找到的每一件重要物品都是可以追根溯源的。「
即使是竹猗,也不禁帶上了一點炫耀的語氣。
這個說法聽起來很誇張。
但其實也用了取巧的方法,背景npc差不多是二類、三類npc的弱化版,並推演時基本上是以年為單位只記錄其中的重大事件。
如果玩家探索到具體的細節呢?
本章未完,點選下一頁繼續閱讀。