第332章 「《乂世界》」
一個開放性世界,若要保證其有足夠的空間給玩家探索,那麼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的弱化版,並推演時基本上是以年為單位只記錄其中的重大事件。
如果玩家探索到具體的細節呢?
那自然和之前的處理一樣,在不與已有設定相衝突的情況下,用到時才實時演算出一段內容補充上去。
他這麼說出來,還是很有衝擊力的。
少女們一個個露出一臉震驚的神色。
清秋有點緊張地捏了捏自己手指頭。
這一個禮拜,其他人自然也沒有閒著。
儘管連背景都是隨機生成的,但一些文案、詞庫都需要特別修訂以保證符合「低武仙俠世界」的畫風,同時還包括了一部分共同的基礎設定作為世界初始化的「基石」。
不過,見竹猗做得這麼好。
今天負責總結的清秋實在感覺有點拿不出手啊!
她們沒有磨洋工,並且之前也覺得只花了一個禮拜整理出來的資料算是非常棒了。
「社長,換你來說吧。」竹猗把數據線從筆記本上拔下,然後給清秋遞了過來。
清秋:「……」
……
除竹猗外,其他人負責的內容,其實與普通遊戲沒有太大的區別。
甚至更簡單一點。
至少,遊戲裡沒有特定的阿貓阿狗之類的npc,需要去完善他的人設和背景,甚至連背景設定都是直接根據程序生成的!
但完成得好與否,在遊戲體驗上還是有很大差別的。
所以,其他人也很投入,花了大量的時間和精力查閱資料。
但儘管很努力,有一些工作也是他們這個小團隊無法勝任的。
比如即時戰鬥場景的3D建模。
大地圖可以採用2D畫面,由於更多只是設計基本的紋理和圖片,別的都是根據竹猗設計的算法自動繪製,因此倒也不是完全無法完成。
但3D建模卻不行。
老辦法,找外包。
這一次清秋直接找上了「魔女之家」的團隊幫忙出力。
之前,出於將來業務擴張的考慮,「魔女之家」招聘了許多遊戲方面的人才,但目前公司里又沒有太多相關的項目,因此團隊裡很多人在很長一段時間內都停留在「沒事找事」的狀態。
陳夕本打算先弄一個不知何時會上線的項目,先讓團隊著手開發,並藉此機會培養這批員工,最後萬一項目能火的話也算是意外之喜。
現在她不需要去找項目了,這一批」閒散人員「全成了清水高中遊戲製作社的外援。
……
衛林大廈,8F。
「老魏啊, 這個項目好像有點意思啊。」
「不止是有點意思這個程度吧。」老魏皺著眉,盯著屏幕上打開的文檔。
他們收到的資料很齊全,看起來也很專業。
但是,如此齊全專業的資料,寫的又是一個……匪夷所思的項目。
「《乂世界》。」
他喃喃地念了一遍項目名。
「我還是感覺不怎麼靠譜啊,這玩意真的能做出來嗎。」同事態度有一點嘻嘻哈哈,反正根據他們拿到的需求,其中最困難的部分又不需要他們來負責。
「……」
如果是根據經驗和常識來判斷。
那老魏的回答只會是:異想天開。
就像是弱智產品問你「能不能在大一點的同時小一點」,誰要給他提這樣的需求不馬上提把刀上去找對方拼命就已經算是修養不錯的了。
「沒準能行吧。」他不確定地說。
畢竟……那可是「青澤」啊。
……
周六,晚。
某間臥室。
竹猗坐在電腦前,雙手放在鍵盤上,幾乎幻化成一道道殘影,茶軸的機械鍵盤清脆地奏響出好聽的旋律。
突然。
他感覺頭髮被人扯了一下。
「怎麼了?」
他頭也不回,手還在繼續敲鍵盤,一邊詢問站在自己身後的少女。
「讓我檢查一下。」林予心捏著他的一束頭髮把玩。
發質非常水潤順滑,握在手裡都感覺會不經意間從指縫間滑出來一般。
「檢查什麼呢?」
少女笑了笑,說:「看看你有沒有脫髮呀。」
「……」
「周末還這麼肝,你小心脫髮哦。」
竹猗的雙手停了下來。
【咦?】
竹猗活動了一下手指,慵懶地伸了個懶腰,說:「今天的任務暫時弄完了。」
「噗。」
少女不太相信,不小心笑出了聲。
「不是因為怕脫髮啦。」
「哦豁~。」
她給竹猗捏了捏肩膀。
「然後呢,今天也要讓我吃掉嘛。」少女似乎想到了什麼,嘴角開心地翹了起來。
「……」
要讓玩家不感覺到違和,幾千上萬個不同的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的弱化版,並推演時基本上是以年為單位只記錄其中的重大事件。
如果玩家探索到具體的細節呢?
那自然和之前的處理一樣,在不與已有設定相衝突的情況下,用到時才實時演算出一段內容補充上去。
他這麼說出來,還是很有衝擊力的。
少女們一個個露出一臉震驚的神色。
清秋有點緊張地捏了捏自己手指頭。
這一個禮拜,其他人自然也沒有閒著。
儘管連背景都是隨機生成的,但一些文案、詞庫都需要特別修訂以保證符合「低武仙俠世界」的畫風,同時還包括了一部分共同的基礎設定作為世界初始化的「基石」。
不過,見竹猗做得這麼好。
今天負責總結的清秋實在感覺有點拿不出手啊!
她們沒有磨洋工,並且之前也覺得只花了一個禮拜整理出來的資料算是非常棒了。
「社長,換你來說吧。」竹猗把數據線從筆記本上拔下,然後給清秋遞了過來。
清秋:「……」
……
除竹猗外,其他人負責的內容,其實與普通遊戲沒有太大的區別。
甚至更簡單一點。
至少,遊戲裡沒有特定的阿貓阿狗之類的npc,需要去完善他的人設和背景,甚至連背景設定都是直接根據程序生成的!
但完成得好與否,在遊戲體驗上還是有很大差別的。
所以,其他人也很投入,花了大量的時間和精力查閱資料。
但儘管很努力,有一些工作也是他們這個小團隊無法勝任的。
比如即時戰鬥場景的3D建模。
大地圖可以採用2D畫面,由於更多只是設計基本的紋理和圖片,別的都是根據竹猗設計的算法自動繪製,因此倒也不是完全無法完成。
但3D建模卻不行。
老辦法,找外包。
這一次清秋直接找上了「魔女之家」的團隊幫忙出力。
之前,出於將來業務擴張的考慮,「魔女之家」招聘了許多遊戲方面的人才,但目前公司里又沒有太多相關的項目,因此團隊裡很多人在很長一段時間內都停留在「沒事找事」的狀態。
陳夕本打算先弄一個不知何時會上線的項目,先讓團隊著手開發,並藉此機會培養這批員工,最後萬一項目能火的話也算是意外之喜。
現在她不需要去找項目了,這一批」閒散人員「全成了清水高中遊戲製作社的外援。
……
衛林大廈,8F。
「老魏啊, 這個項目好像有點意思啊。」
「不止是有點意思這個程度吧。」老魏皺著眉,盯著屏幕上打開的文檔。
他們收到的資料很齊全,看起來也很專業。
但是,如此齊全專業的資料,寫的又是一個……匪夷所思的項目。
「《乂世界》。」
他喃喃地念了一遍項目名。
「我還是感覺不怎麼靠譜啊,這玩意真的能做出來嗎。」同事態度有一點嘻嘻哈哈,反正根據他們拿到的需求,其中最困難的部分又不需要他們來負責。
「……」
如果是根據經驗和常識來判斷。
那老魏的回答只會是:異想天開。
就像是弱智產品問你「能不能在大一點的同時小一點」,誰要給他提這樣的需求不馬上提把刀上去找對方拼命就已經算是修養不錯的了。
「沒準能行吧。」他不確定地說。
畢竟……那可是「青澤」啊。
……
周六,晚。
某間臥室。
竹猗坐在電腦前,雙手放在鍵盤上,幾乎幻化成一道道殘影,茶軸的機械鍵盤清脆地奏響出好聽的旋律。
突然。
他感覺頭髮被人扯了一下。
「怎麼了?」
他頭也不回,手還在繼續敲鍵盤,一邊詢問站在自己身後的少女。
「讓我檢查一下。」林予心捏著他的一束頭髮把玩。
發質非常水潤順滑,握在手裡都感覺會不經意間從指縫間滑出來一般。
「檢查什麼呢?」
少女笑了笑,說:「看看你有沒有脫髮呀。」
「……」
「周末還這麼肝,你小心脫髮哦。」
竹猗的雙手停了下來。
【咦?】
竹猗活動了一下手指,慵懶地伸了個懶腰,說:「今天的任務暫時弄完了。」
「噗。」
少女不太相信,不小心笑出了聲。
「不是因為怕脫髮啦。」
「哦豁~。」
她給竹猗捏了捏肩膀。
「然後呢,今天也要讓我吃掉嘛。」少女似乎想到了什麼,嘴角開心地翹了起來。
「……」