從一個程序員的角度,No Man's Sky是極具先鋒意義和野心的,從一個玩家的角度,對于一些宣發上的問題和曝光度過高帶來的口水,我只能表示遺憾。
如果二十年前有人說自己的游戲里面可以有18,446,744,073,709,551,616(其實就是2^64)顆不同的星球,每個星球有自己獨特的地貌、環境、生物甚至獨特的食物鏈,你一定會覺得他是被那些節奏詭異閃著《電子世界爭霸戰》癲狂游離光線的游戲閃傻了。不過2年前《No Man's Sky》在E3上展出的時候,沒有人覺得這個是玩笑,只是有點將信將疑——這個當時還只有4個人的工作室Hello Games會把這款號稱無限可能的游戲推到什么樣的高度。
《No Man's Sky》初始版本才3.4個G,但絲毫不影響他模擬星球的能力。在強大的硬件機能支撐下,Procedural Generation變得離玩家越來越近。隨著Rougelike類型游戲的流行,很多游戲中的關卡不再是一成不變只要背板就能通過,而是每次隨機生成確保每次游戲都有獨一無二的體驗,比較典型的像《以撒的結合》關卡,但嚴格意義上來說市面上大部分的Rougelike游戲并不算純粹的程序生成。依然需要關卡設計師來創造一些基本的地圖,然后用偽隨機的方式(參見以撒中的Seed)選取地圖和怪物進行拼接和配置。
最近比較成功的例子是動作游戲Dead Cell死亡細胞,有空我可以翻譯下他們的一篇技術博客,講如何將關卡設計和程序隨機結合起來。
Unity里一種偽隨機數的實現方式:
// Unity params
public bool useRandomSeed;
// When use pseudo random
if (useRandomSeed) {
seed = Time.time.ToString();
}
System.Random pseudoRandom = new System.Random(seed.GetHashCode());
// In a loop
for () {
pseudoRandom.Next(0,100)
}
《No Man's Sky》把Procedural Generation在游戲中的應用又提升到一個新的高度,大到星球的地表,小到生物的音效,全部都是由程序按照一定的規則生成。在大部分的Procedural Generation實驗里,這些規則都是無序或者散亂的,但是在無人深空里,這套規則,按照制作組的野心,就是盡量模擬靠近宇宙自然的規則,從氣候->資源->地形->食物鏈->生物,一層以一層為基礎迭代而來,這才形成了一個獨一無二的星球。
當然,野心歸野心,從技術角度,NMS的完成度是比較高和有先驅性的,但是作為一個游戲,把所有的生成交給電腦,玩家會有意外的驚喜,但也容易被可能重復的內容磨掉興趣,讓他們覺得“都是套路”。畢竟規則是有限的,有很多人喜歡設計出的驚喜和設計出的情緒調動,而不喜歡冷冰冰的電腦。
從目前的評測來看,NMS的Procedural Generation主要集中在圖形和音效上,但在系統和AI上沒有什么建樹,貿易系統和NPC系統都很初級,喜歡玩太空4X類游戲的人估計也沒法再這個游戲里找到自己的點,因為他只有eXplore和eXploit,卻沒有eXpand和eXterminate。
說到底,這個游戲只是一個程序員們的自然模擬實驗,被過于放在聚光燈和輿論中曝光了。戰斗,交易,飛船只是附屬品,這個游戲的核心在于探索,但大部分人并不在意自己能發現啥,也沒有耐心細細地探索每個世界。這個游戲并不適合所有的玩家,這個純粹由程序和數學構建的游戲,沒有刻意的包裝和討好,就像一杯純凈水,擁有無限的形態和可能性,但不可口。
按照現在3A游戲的開發成本和已經不像以前那樣饑不擇食的玩家,純PVE和關卡設計的游戲越來越捉襟見肘如果能達到像Limbo和Inside那種設計高度當我沒說PVP(守望屁股),Rougelike(以撒),類Minecraft和Procedural Generation(無人深空)類型的游戲更容易脫穎而出。很多人說NMS吹牛吹破了天,我倒覺得從4個人到20個人,Hello Game小作坊能花三年做到這樣的完成度,已經很了不起了。在技術的實驗探索上,也不知道比國內某些冷嘲熱諷的搬運工高到哪里去。
這里有一篇比較專業的評測,有興趣可以看看:No Man’s Sky and the Future of Procedural Games
這位大哥受無人深空啟發,做了一個2D的星球版畫生成器。