【三萬字長文】遊戲設計左道,複雜系統與湧現
零、前言
這是一篇關於複雜系統在遊戲設計中應用的文章,整篇文章分為三大部分,第一部分介紹複雜系統和湧現,第二部分藉由複雜系統提出一種新的度量遊戲的方法,第三部分會透過實際的原型設計,來深入探討複雜系統和湧現在設計中的應用方式。
溫馨提示,全文字數3w+,預計閱讀時間較長,歡迎關注收藏慢慢看,一家之言,拋磚引玉,也歡迎各位朋友交流斧正。
一、複雜系統簡介
首先,複雜系統是什麼?
複雜系統有很多定義,比較簡潔的定義是:由大量相對簡單的自組織個體構成,個體之間透過簡單的規則互動,卻能湧現出複雜宏觀行為和現象的系統。
蟻群,大腦,經濟系統,免疫系統,生態系統,網際網路,元胞自動機,人類社會等等,都是複雜系統。
這裡的複雜系統定義有兩個關鍵詞,自組織(self-organizing)和湧現(emergent)。
“自組織”是指系統內部或外部沒有一個指揮者,告訴個體該怎麼做,而是個體自身透過規則控制自身。
“湧現”,就是指系統組成部分間簡單的互相互動,卻在宏觀層面產生了新的特性或行為,這些新特徵或行為稱為“湧現”。這是非線性系統的特徵,即1+1>2,另一種說法就是整體大於部分之和。
複雜系統研究是一個跨學科的科學研究,涵蓋了許許多多分支,下圖是複雜系統科學的分佈圖,來源網站https://www.art-sciencefactory.com/complexity-map_feb09.html:
對複雜系統研究的重視比較晚,目前也處於探索之中,沒有公認的定義,統一理論或一般性原理。對不同複雜系統的共性探索一直是重中之重,不同領域的科學家提出了自己的理論,但還未完全達成共識。
而我們只關注複雜系統在遊戲中的應用,一般來說,複雜系統在遊戲中的應用分兩個大方向:
當然兩者也可以結合,但一般因效能和複雜度考量,都會有所側重。
筆者最近的兩個遊戲也深入應用了複雜系統和湧現的設計元素,最近的遊戲《流浪方舟》利用了物理系統作為複雜系統,為我們產生有利的碰撞位移湧現,是以客觀規則為核心的複雜系統利用。
而上個遊戲《追隨者聯萌》中實現了GOAP和行為樹結合的AI,令整個NPC的行為互動組成一個複雜系統,是以代理為核心的複雜系統。關於GOAP的介紹,可以參考筆者之前的一篇介紹文章:
https://mp.weixin.qq.com/s/U9CmZ2uTEv91KPosHDFZRQ
總而言之,複雜系統為我在遊戲開發領域,不論是技術還是設計,提供了很多不同的思考角度,是一個非常有用的工具。因此,本篇文章就是結合我的一些實踐和思考,跟大家簡單分享交流一下。
接下來三章,我們透過複雜系統中非常具有代表性的混沌系統,來揭開復雜系統的面紗一角。
二、混沌的發端,動力學與預測
人們討厭宿命論,卻總想著預測未來。
——我說的
首先我們簡單介紹一下動力學。
動力學始於亞里士多德樸素但錯誤的運動理論,後來伽利略,哥白尼,開普勒以實驗觀察推翻亞里士多德流行了1500年的理論,再到牛頓橫空出世,發明了微積分,正式建立了經典力學。提出了著名的牛頓三定律:
在牛頓進一步提出萬有引力定律後,在當時,牛頓力學完美地解釋了一切物體的運動,其適用於任何大小的物體,不論是落下的蘋果,還是燃燒的太陽。理論上,人們若是知道一個物體的初始位置和速度,就可以計算出後續的運動,自然就有聰明的小朋友想到:若是知道宇宙中某一刻所有粒子的當前狀態,那是否就可以預知後面任何時刻的宇宙狀態。
上述精確預測的假說就是著名的“拉普拉斯妖”,數學家拉普拉斯在1814年說:
“我們可以把宇宙現在的狀態視為其過去的果以及未來的因。如果一個智者能知道某一刻所有自然運動的力和所有自然構成的物件的位置,假如他也能夠對這些資料進行分析,那宇宙裡最大的物體到最小的粒子的運動都會包含在一條簡單公式中。對於這智者來說沒有事物會是含糊的,而未來只會像過去般出現在他面前。”
如今,我們有強大的計算機,無需一個多智近妖的智者,也許未來有了足夠強大的計算機就能做這個工作。如果真是如此,豈不是宇宙中的一切都已經註定,像一個上完發條的鐘表,遵循三定律一直循規蹈矩地走下去,這是一個多麼絕望的“決定論宇宙”啊。
還好1927年,海森堡(Werner Heisenberg)提出了量子力學中的“測不準原理”,證明不可能在準確測量粒子位置的同時,又準確測量其動量。如此,在微觀世界的準確預測夢破碎,也慰藉了不願相信宿命的人。
統計力學與預測
海森堡測不準原理只針對微觀情況,而玻爾茲曼(Ludwig Boltzmann)建立的統計力學告訴我們,即使無法計算微觀尺度的每個分子的運動,也可以用統計學的方式預測大量分子整體上的平均位置和速度,當粒子數量足夠多時,他的方法“幾乎總是對的”。統計力學是連結熱力學和經典力學的橋樑,氣壓,熱力學第二定律都能很好的用統計力學來解釋。那麼即使微觀尺度上無法預測,宏觀尺度上,是否可以透過統計學方式來預測系統的整體變化呢?
答案是不行,下面就是大名鼎鼎的混沌系統出場的時候了。
三、混沌系統
有時初始條件的微小差異,將造成最終現象的極大改變。前者的小誤差,會造成後者極大的錯誤。預測將成為不可能的事,我們面對的是偶發現象
——龐加萊,《科學與方法》,1908年
1959年,42歲的數學和氣象學家愛德華·羅倫茲(Edward Lorenz,1917—2008)在嘗試用一個原始的計算機來預測天氣,結果發現輸入引數時微小的差異會造成兩次結果完全不一樣,即使兩次預測計算機每一步的計算方法都一樣。
後來,羅倫茲在一場學術會議上發表了論文來探討這種對初始條件十分敏感的天氣系統,論文題目叫——《巴西的一隻蝴蝶舞動翅膀,可以引發得州的龍捲風嗎?(Does the Flap of a Butterfly’s Wings in Brazil Set off a Tornado in Texas?)》,這就是著名的“蝴蝶效應”(The Butterfly Effect)。
天氣系統就是一個典型的混沌系統,這裡可能有點反直覺,為什麼有些系統對初始條件就這麼敏感?答案在於混沌的“非線性”和“自我引用”特性。
下面介紹一個經典的可以體現混沌本質的數學抽象——邏輯斯蒂對映(logistic map),它非常簡單,其特性又非常令人震撼和著迷,我第一次讀到時有種醍醐灌頂的感覺哈哈。這裡主要引用梅拉妮·米歇爾的著作《複雜》的邏輯斯蒂對映一章,非常推薦大家讀讀這本複雜系統的科普讀物。
這是邏輯斯蒂對映的方程:
X(t)是當前值,X(t+1)是下一步的值。R是一個引數,我們可以自己調,先不管。我們要做的很簡單,定一個R,然後以一個介於0-1之間的X(0)開始,代入這個公式,得到X(1),然後把X(1)代入公式,以此類推不停得到新的值即可。這就是一個非常簡單的“非線性”的方程。
讓我們試試R=2時會怎麼樣,我們會發現有意思的事情,就是不管X(0)輸入的是什麼值,最終X(t)都會停留在0.5這個值,這個0.5正是所謂的不動點(fixed point):到達這一點所花的時間依賴於出發點,但是一旦到達就會保持不動。當R=2.5時,你同樣會發現系統到達一個不動點,不過這次不動點是0.6。
而當R=3.1時有趣的事情開始開始發生:
不管X0輸入的是什麼值,最終Xt都會在兩個值(0.5580141和0.7645665)之間振盪。如果將前者代入方程,就會得到後者,反過來也是一樣,因此振盪會一直持續下去。這種最終的變化位置(無論是不動點還是振盪)被稱為“吸引子”,因為任何初始位置最終都會“被吸引到其中”。
往上一直到R等於大約3.4,邏輯斯蒂對映都會有類似的變化:在迭代一些步驟後,系統會在兩個不同的值之間週期振盪(最終的振盪點由R決定)。因為是在兩個值之間振盪,系統的週期為2。
但是如果R介於3.4和3.5之間,情況又突然變了。不管x0取何值,系統最終都會形成在四個值之間的週期振盪,而不是兩個。例如,如果R=3.49,x0=0.2,x的值很快就開始在四個不同的值之間週期振盪(它們分別大約是0.872,0.389,0.829和0.494)。也就是說,在3.4和3.5之間的某個R值,最終的振盪週期突然從2增到4。最終的結果就像下圖那樣。
接著,更有趣的事情來了,在3.54和3.55之間的某個R值,週期再次突然倍增,一下躍升到8。在3.564和3.565之間的某個值週期躍升到16。在3.5687和3.5688之間週期又躍升到32。週期一次又一次倍增,前後R的間隔也越來越小,很快,在R大約等於3.569946時,週期已趨向於無窮。當R等於大約3.569946時,x的值不再進入振盪,它們會變成混沌。下面解釋一下。將x0,x1,x2……的值組成的序列稱為x的軌道。在產生混沌的R值,讓兩條軌道從非常接近的x0值出發,結果不會收斂到同一個不動點或週期振盪,相反它們會逐漸發散開。在R=3.569946時,發散還很慢,但如果將R設為4.0,我們就會發現軌道極為敏感地依賴於x0。我們先將x0設為0.2,對邏輯斯蒂對映進行迭代,得到一條軌道。然後細微地變動一下x0,讓x0=0.2000000001,再對邏輯斯蒂對映進行迭代,得到第二條軌道。圖2.14中的實心圓圈連成的實線就是第一條軌道,空心圓圈連成的虛線則是第二條軌道。
這兩條軌道開始的時候很接近,但是到後面,兩條軌道開始分開,並且毫不相關。這就是“對初始條件的敏感依賴性”的由來。
這就是混沌最簡單的表現方式之一,只要一個公式,就能告訴我們,如此簡單的邏輯斯蒂對映,並且完全是確定性的:每個xt值都有且僅有一個對映值xt+1。然而得到的混沌軌道看上去卻非常隨機。此外,對於產生混沌的R值,如果初始條件x0有任何的不確定性,對一定時間之後的軌道就無法再預測了。
所以,如果對於一個實際的混沌系統,即使它簡單到只有一個粒子,它的初始狀態中若有個引數是無理數(絕大多數數字其實是無理數,有理數只是少數),例如大家最熟悉的π,那我們就要建造一臺可以輸入無限位數小數的機器,否則無論我們精確到小數點後多少位,那一位後面的誤差就會導致一定時間後,整個混沌系統都無法預測。這就是“失之毫釐,謬以千里”。
至此,不論從宏觀上還是微觀上,預測未來都不可能。
四、混沌系統和遊戲
前文提到我們的遊戲《流浪方舟》是應用了基於規則的複雜系統,簡單描述遊戲玩法,是雙方玩家各控制五個球體英雄,互相碰撞進行戰鬥,其碰撞和反彈都是模擬的物理規則,並且有PVP的玩法。而我們遊戲的機制,其實就已經組成了一個典型的N體系統(沒錯,N等於三就是大名鼎鼎的三體系統),也因此遇到了混沌效應。
我們用的是幀同步方案,在不同的手機上,我們遇到了兩個玩家不同步的問題。排除各種原因包括網路因素後,發現原因是不同機器上的浮點數運算有微小的差異(真的非常微小)。於是,某個回合微小的差異,會在幾回合後使得雙方的戰場情況完全不一樣,直接變成各打各的了。後來,我們只能是放棄Unity自帶的物理系統,自己重新實現了一個定點數精確物理系統,非常慘烈。所以,遊戲利用了複雜系統,也要承受複雜系統可能帶來的問題。
當然反過來說,我們也利用了複雜系統的湧現現象。對於遊戲來說,湧現本身不是目的,而是湧現能為遊戲帶來什麼。
首先,湧現能為遊戲帶來意料之外的體驗,該部分的體驗是玩家不可控的。若開發者能在這部分進行部分控制,則可以進行更多發揮。當然意料之外的體驗也是新體驗,湧現本身創造了新的體驗。
同時,湧現的妙處在於並不是所有過程都是不可預測的,往往有一小部分是可以預測的,這會帶來一定適應性,可以適應不同水平或者意願的玩家。但是複雜系統的的突變也會帶來一個相變的臨界點,這個臨界點又可以保證不同玩家對湧現的掌控不會相差太多。
舉例我們遊戲的物理碰撞系統,複雜度來自多體運動,玩家無法預測N次碰撞後的情況,但是大多數玩家是可以預測1次碰撞後的結果,這就是初始可預測部分,這部分會進入玩家的策略考量中,而對於一些更具策略的玩家,首次碰撞反彈後的第二次碰撞,也能預測部分,這就是適應性,但是當反彈三次或以上,基本沒有玩家可以預料局面,這就可以類比為混沌相變的臨界點,用以把控不同玩家的策略差距,甚至理論上,即使有個類似深藍的超級計算機來算,也無法完全把控N變大後的情況。
混沌系統只是複雜系統的一個分支,但確實是一個理解複雜系統的敲門磚,大概瞭解了複雜系統是什麼之後,我們來看看遊戲與其更深的關係。
在設計複雜系統的時候,大家會發現,遊戲和複雜系統的界限是非常模糊的,一個複雜系統,往往加上一些合理的目標和挑戰,就是一個具備一定可玩性的遊戲。而很多遊戲本身,就是一個複雜系統。也因此,對複雜系統的一些研究,同樣可以化用到遊戲設計,例如複雜系統對“複雜度和資訊”的研究,對遊戲設計就非常有價值。接下來的部分章節,筆者會探討一種度量和最佳化遊戲的方式,若對此不感興趣,可以跳到第八章。
五、度量“複雜”
首先我們來看看科學家們是怎麼是度量複雜系統的“複雜”程度的:
1.規模度量
最簡單的度量就是規模大小,但是很顯然是不對的,畢竟單細胞變形蟲的鹼基對數量是人類的225倍。
2.夏農熵
另一種直接的複雜性度量就是夏農熵,夏農熵定義為資訊源相對於資訊接收者的平均資訊量或“驚奇度”。也就是說若資訊高度有序,例如“A A A A A A A……A”,則熵為零。完全隨機的序列則有最大可能熵。這種度量明顯也是不夠的,完全隨機的序列對資訊接受者來說也沒有意義。所以最複雜的物件既不是最有序的,也不是最隨機的,而是介於兩者之間。
3.計算機描述
第三種度量方式是由柯爾莫哥洛夫(Andrey Kolmogorov)、查汀(Gregory Chaitin)和索羅蒙洛夫(Ray Solomonoff)分別獨立提出,他們將事物的複雜性定義為能夠產生對事物完整描述的最短計算機程式的長度。這被稱為事物的演算法資訊量。對於學計算機的小夥伴應該很好理解,也就是表達一個東西需要多少程式碼。
例如一個遊戲A最少可以用10行程式碼寫出來,另一個遊戲B卻要用100行程式碼,那按演算法資訊量,遊戲B就比遊戲A複雜。這個乍看合理,其實也有侷限,100行程式碼一定比10行復雜嗎,程式碼本身的複雜度是簡單的線性嗎。本質上這是把系統的複雜度抽象轉移到了程式碼上面,並沒有完全解決問題,只是把系統的複雜度問題變成了程式碼的複雜度問題。
4.統計複雜性
第四種度量方式是物理學家克魯奇菲爾德和卡爾·楊(Karl Young)定義的一個稱為統計複雜性(statistical complexity)的量,度量用來預測系統將來的統計行為所需的系統過去行為的最小資訊量。統計複雜性與夏農熵相關,定義中系統被視為“訊息源”,其行為以某種方式量化為離散的“訊息”。對統計行為的預測需要觀測系統產生的資訊,然後根據資訊構造系統的模型,從而讓模型的行為在統計上與系統本身的行為一致。
例如,序列ACACACACAC的資訊源模型可以很簡單:“重複A C”;因此其統計複雜性很低。然而,與熵或演算法資訊量不同,對於產生序列ACGTGGTAGC的資訊源也可以有很簡單的模型:“隨機選擇A、C、G或T。”這是因為統計複雜性模型允許包含隨機選擇。統計複雜性的度量值是預測系統行為的最簡單模型的資訊量。因此,對於高度有序和隨機的系統,統計複雜性的值都很低,介於兩者之間的系統則具有高複雜性。
第四種度量方式不止符合直觀,還有值得我們思考的是,它並不完全度量系統本身,還透過對系統演變的預測來度量系統本身的複雜度。
還有很多度量複雜性的方法,不一一贅述。各種度量都有一定可行性,但都存在的侷限性,還遠不能有效刻畫實際系統的複雜性。度量的多樣性也表明複雜性思想具有許多維度,也許無法透過單一的度量尺度來刻畫。
而對於大多數系統例如遊戲,並不是一成不變的,而是不斷更新迭代,對未來可能性預測來反推當前的複雜度是一個有趣的方向。
六、複雜系統和遊戲有效資訊度
相信很多設計師在設計遊戲的時候,都曾想要“度量”自己的遊戲,“可玩性”,“複雜度”,“上手難度”等等,這些都是非常難以統一定義和量化的標準。我們在本文,不討論“可玩性”這個過大的話題,只聚焦於對遊戲有效內容量的探討,有效內容量,也可以從很多個角度來側面地衡量,例如遊玩時長,系統複雜度,系統深度等等。而我們的角度不同,是從資訊層面上,來度量和最佳化一個遊戲,筆者稱為“遊戲有效資訊度”。
遊戲有多種抽象方式,其中有一種抽象就是:玩家接受資訊,與遊戲互動,影響遊戲,遊戲反饋資訊的這樣一個迴圈。資訊是互動的彈藥,是策略的基礎材料,已知資訊作為安全感來源和決策的輸入,未知資訊作為鉤子吸引玩家探索,作為不可控因素帶來變化等等。
“遊戲有效資訊度”就是指整個遊戲系統所提供的內容,透過一定規則展現後,對於玩家預期來說,具有意義的資訊量。這個資訊量越大,我們可以認為遊戲內容越豐富,遊玩價值和可玩性往往更高。
遊戲的資訊豐富度當然不完全等於可玩性,但是對所有玩家或人類來說,都有不停獲取新資訊的慾望,同時人類又是高效的模式識別機器,當玩家熟悉特定模式和規律,一直沒有新資訊攝入,則會快速感到無聊。資訊刺激,本身也是可玩性的重要一環。
接下來我們舉個具體例子,來探討一下有效資訊度的概念:
舉例,現在我們做了一個線性關卡的遊戲A,每一關擊敗一個不同的敵人,即可去下一關,直到通關,關卡與關卡之間並沒有直接的聯絡。
假設我們製作了一系列的關卡內容,例如10關,我們預期這些關卡玩家會遊玩一次,通關後不再想玩,我們先假定,這個遊戲的有效資訊度為10。
以此為前提,有幾個有趣的問題:
問題1
這時候,加入一個設定,通關後所有關卡會打亂,假設我們預期玩家會因為這個設定再通關一次,耗費了玩家雙倍的時間。
那這個遊戲的有效資訊度會變成20嗎?
如果不是,那是更偏向10還是偏向20?
問題1探討
很顯然,不是20,重點就是有效資訊度不等於遊玩時長,而是玩家對內容的感知,能接受到的有意義的資訊量,而關卡若只是打亂隨機,對於玩家遊玩來說,關卡資訊並沒有變化,換句話來說沒有新的資訊給到玩家,也就沒有新的體驗。所以問題1的遊戲有效資訊度應該是接近並略大於10的一個值。注意,我們在此並不關心有效資訊度的絕對精準值(也無法做到完全精準),我們只需要儘量定量,並且透過對比分析等方式逼近實際值即可。這個問題也呼應了複雜系統複雜度的度量,純隨機和純秩序,複雜度都很低。(所以優秀rogue的重玩性並不是只來自隨機)
問題2
在問題1 的討論我們已經知道,遊玩時長和次數是結果,並不等於有效資訊度。在這個基礎上,所有關卡打亂後,讓玩家可以一直重複遊玩,每次遊玩的關卡順序都會變化,那遊玩價值又有什麼變化?
問題2探討
本質上消耗的是順序不同帶來的體驗價值
和前面的資訊呼應,純隨機和純秩序都是資訊量較低的狀態,也就是遊玩價值不會很高
同時,討論線性和非線性系統也有額外的意義,若關卡間的關聯小,則先A後B還是先B後A並沒有本質區別,而若關卡間是非線性地互相影響,則順序本身就被賦予了意義,或者說被賦予了額外資訊和複雜度,則可能產生更多的有效資訊度。所以重點不在於關卡打亂的隨機,而是在於關卡間的關聯設計,是否賦予這個隨機足夠的意義。
問題3
在原方案基礎上,多做了1關,並且設定為通關一次後,再次通關才可以玩到這個額外的關卡。
假設每個玩家都因為這個設定,重新通關一次,那此時這個遊戲的有效資訊度大約是多少?
和直接放出11關給玩家的區別是什麼?
問題3探討
和問題1的探討類似,也許這個遊戲的遊玩時長的度量接近翻倍,但有效資訊度只是接近11左右,這意味著,玩家在近翻倍的體驗時間中,體驗的質量其實是有所下降。其實和直接放出11關給玩家沒有本質的區別。那麼為什麼還有很多遊戲會使用這個技巧來延長遊玩時間呢?其實是來源於除了上述遊戲機制本身之外帶來的可重玩性,類似問題2討論的非線性關卡,這些額外的因素,使得遊戲的有效資訊度在其他維度得到了提升,所以不屬於問題3的討論範疇。這個例子想要說明的是,有效資訊度的分析一定要客觀剝離其他因素,否則將失去參考價值。
問題4
還是這個線性關卡的遊戲,什麼都沒變,但是給與一個額外目標,通關時間,然後允許玩家重玩,遊戲有效資訊度又如何?
問題4探討
這個問題,理論上有效資訊度相對於原方案並沒有太大變化,但是我們直觀會認為,相比原方案,該方案更具可玩性。這個問題想要說明的是,技巧挑戰等內在驅動力,會為相近有效資訊度的遊戲,帶來較為不同的可玩程度。這也是證明遊戲有效資訊度並不完全等於可玩性的例子。
問題5
基於問題4的額外通關時間目標的設計,更進一步探討,若是遊戲中原本就有一個道具,本來強度一般,但對速通有幫助。因此,玩家在沒有通關時間目標時,和有通關目標時間時,有效資訊度的變化?
問題5探討
我們可以看到,除了目標的變化,其他都沒有區別,理論上,資訊量完全沒有差別。但是實際上很顯然,後者有效資訊度一定大於前者。這就是“有效資訊度”定義裡的“有效”的意義:一份資訊,透過機制,轉化為對可玩性有意義的資訊後,才能稱為有效資訊。具體見下一章的探討。
經過上面幾個問題,大家應該可以理解遊戲有效資訊度的意義,它雖然不等於可玩性,但是是對一定時間內,玩家體驗的豐富有效程度的一個度量。它尤其能幫助我們思考時摒棄無效遊玩時長的陷阱,並在一定程度上幫助我們對比衡量遊戲設計優劣。
七、有效資訊度與遊戲設計
有效資訊度如何切實幫助設計?我們應該如何看待,操作遊戲中的資訊?
玩家遊玩遊戲的過程可以視作一個接受資訊,處理資訊,獲得資訊反饋的過程。設計師提供一系列的資訊給與玩家處理,玩家在處理這些資訊的時候,透過自身的操作和策略等,收穫不同的反饋。對於一個玩法,持續有節奏地給與玩家適量的,有意義的新資訊讓玩家舒服地處理,則從資訊角度來說是一個好的玩法。
遊戲的資訊不是全部一次性釋放給玩家的,一個遊戲的資訊有很多種維度,例如規則資訊,遊戲世界環境的資訊,關卡以及挑戰的資訊,反饋及收穫的資訊等等。玩家的目標挑戰反饋迴圈中,每個環節都在不停釋放新的資訊。而新的資訊的意義是什麼?是產生新的變化。
但是,如前文所說,一份新的資訊,產生的變化往往不是一份新的遊玩體驗,而我們的目標,就是讓一份資訊,產生十份變化,最終轉化成兩份可玩性。
有限的內容下,如何規劃這些資訊將是關鍵。直接說幾種方法:
1、規則輔助對手產生新資訊
拿棋類遊戲-象棋舉例,象棋所有規則資訊,是不多的。而戰場環境資訊(當前棋盤情況)是千變萬化的,我們很容易得知道,象棋不是靠規則資訊的逐步釋放來產生變化,同時象棋又不帶任何隨機性,所以是個很好的例子,幫我們聚焦到這一方式——規則輔助人產生資訊。
人人間動態的博弈,帶來持續可玩性,不是什麼神秘的事情,但在資訊角度,其實是有要求的,人產生有意義的內容,需要規則進行引導,什麼叫引導?例如象棋裡對所有棋子移動方式的限制,就是一種引導,這些限制使得玩家能夠部分預料下一步對方會如何行動,從而結合場面,最終給與當前回合玩家,一個正在不停變化但又有決策參考意義的資訊,這個資訊將會結合對方玩家的行棋風格,水平等因素,產生多局之間的變化。
一個好的機制或者說規則,告訴玩家能做什麼是基本,更重要的是約束玩家不能做什麼,將無限的選擇空間壓縮到合理範圍且不策略收斂,並且讓對手每個選擇反饋出新的資訊,例如,單步中沒有明顯的最優解,那是防守還是激進換子,其實暗藏對手風格資訊,這個資訊,是基於規則但超越規則的額外資訊收益。
2、輔助玩家自身產生新資訊
我們可以把遊戲抽象成目標挑戰反饋三者迴圈,整體遊戲由無數個大小迴圈巢狀組成。從資訊角度我們可以有新的視角看待這個迴圈,每個部分都能透過設計輔助玩家產生新的有效資訊。
對於目標,往往是最明確簡單的資訊,對於單個迴圈一般不會刻意藏匿目標的資訊,因為對於設計來說,單個迴圈目標越明確越清晰越好。但整體上,目標可以有多個,可以逐步釋放,可以引導玩家自身賦予目標,有非常大的操作空間,目標往往是一切的起點,會成倍放大其他資訊的效果。
最好的方式,就是刺激玩家自己賦予自己目標,例如沙盒遊戲,透過包裝世界觀等資訊,讓玩家想要爬上那個跟任務無關的山頂,想要拯救某個無關緊要的村民。設計師提供的資訊作為外因驅動作為引導,玩家自發產生的目標作為強大的內因驅動。
對於挑戰,分為挑戰本身和玩家克服挑戰的過程,例如策略和操作。對於這部分資訊的自發產生,來自挑戰本身需要提供足夠高的適應性,使得玩家自身情況的不同,能在挑戰和克服挑戰的過程中體現出來。同時要足夠敏感,玩家細微的變化,最好都要所體現。
舉個例子,完成挑戰的方式有多種傾向,玩家根據自身喜好,能力,選擇其中一個方式進行挑戰,此時,玩家所有的操作和策略,將會產生基於自身的獨一無二的資訊。
對於反饋,這裡重點不在給與玩家的反饋,而在於完成挑戰後給與系統的反饋,重點在於前後不同挑戰間的關聯變化,也就是說,需要配合上述挑戰部分,玩家做出的細微區別,反饋需要讓系統對接下來的挑戰產生足夠影響,就會產生指數增加的變化。如此配合,也是湧現的一種設計方式。(具體後面章節細說)
3、促進多人之間產生互動
和第一點本質一樣,稍有區別,留作思考題吧哈哈,分析麻將和雙人棋類間的區別即可。感興趣的朋友可以參考筆者的麻將相關的文章:https://mp.weixin.qq.com/s/RUFNdkrFy8e2oqEhsYp_Xg
4、逐步釋放和重組資訊
玩家自發發現資訊,而不是設計師塞給玩家,發現的過程本身是一種有意義的獲得行為,會豐滿整個遊戲。這是一種較好的逐步釋放資訊方法。
巧妙地重組資訊,來重用資訊。這點比較好理解,就不贅述了。
八、複雜系統與湧現應用
上面的章節簡單介紹了一下複雜系統以及和遊戲的一些關聯,由複雜系統啟發,提出了一個遊戲度量方面的不成熟想法,拋磚引玉。接下來的章節將會以實際的原型設計為案例,來深入探討一下複雜系統和湧現設計在遊戲設計中的應用。
思維實驗
第一步我們先來做一個思維實驗,前文介紹過,現實世界就有很多複雜系統,我們不妨試著挑選現實中的某個複雜系統,假設我們是全能的計算機之神(狗頭),已經把這個系統百分百實現出來了,同時,作為設計師,我們知道,擬真不等於好玩,那現在,我們需要思考一下這個系統中不好玩的東西是什麼,去掉,好玩的東西是什麼,強化。再新增一點佐料,加入一點目標,設定一些挑戰,給與足夠的反饋,這個時候,相信我們的腦海裡已經有一個也許簡陋,但也能成立的遊戲了。
對現實的抽象和剪裁過程尤為重要,我們會逐步抽絲剝繭,把不重要的外在去掉,看到湧現的核心,來隨便舉個例子。
假設我們取現實中的經濟系統作為我們的複雜系統,我們先賦予一個簡單的目標,就是賺得多少金錢。然後我們刨除掉一些冗餘的東西,最終可能剩下這麼一個系統:
系統中有若干個經濟理性人,包含玩家在內,他們會想辦法以最小的代價去獲得最大的利益,這些決策實體我們統稱為“代理(agent)”——代理(agent)是一個計算機,人工智慧和經濟學領域的術語,指的是接受資訊,進行決策,執行行為的主體,可以是人,AI,組織,一段程式等等。在這個過程中,代理們會和其他代理,和環境進行互動,進行時間,資訊,資源,收益的不停交換。想象一下,當這個系統運轉起來,我們在這個系統中的獲得的樂趣來源於什麼?與一個普通的交易模擬遊戲的差別在哪裡?
這個簡單的系統拋開聲光電反饋等冗餘外在,我們可以發現,玩家的核心策略是收集資訊,根據資訊做出自己收益最大化的決策,自身的決策又會影響整個系統,系統改變其他代理的行為決策,每個代理的行為都相當簡單,但整體上會湧現出很多有趣的現象,例如哄搶,壟斷,通脹通縮等等現象,使得挑戰/問題/謎題動態變化,像是多隻蜘蛛在彈奏同一張蛛網。
以上,這個複雜系統在提供有意義的變化,產生新的可玩內容,這是重玩性的根本。同時,由於玩家對環境的影響足夠深遠,反饋會更強。
讓我們再對這個遊戲加點料,假如這個遊戲加入了另一個玩家,雙方有同樣的目標,這時候我們很容易發現一點,複雜系統不可控的部分,正在平衡優劣勢,拉近不同水平玩家距離,同時部分降低操作和策略門檻。
更進一步,我們會發現,就類似於現實的經濟系統,我們這個簡陋的複雜系統本身就是一個自適應系統,有時候像海綿,吸收玩家和代理們的重大行為,減小影響,有時候又像喇叭,放大一些微小的噪音。而在這個時候,我們如果再為這個簡化版的經濟系統加入一些引導性的設計,例如價格和資源消耗的調控(類似央行和美聯儲),可以去操控它的海綿或者喇叭,達成改變和控制遊戲節奏的目的。
再進一步,我們不滿足於單個目標,若是我們加入了多個勝利條件,我們會發現,基於複雜系統本身的多目標,更好設計,更能滿足不同型別玩家的遊玩需求。
最後一步,讓我們把對方玩家又去掉,把玩家會進行的一些行為和代理的行為進行比較,把一些簡單的,玩家會額外進行的侵略性較強的行為,或是非理性的行為,賦予代理。並且把和玩家的對抗的目標改為和代理對抗,我們就會發現,相對於其他遊戲,在玩家感知中,代理會更接近真實玩家。
當玩家面對一個整體的複雜系統,去對抗其中的一些代理時,要比對抗某一個NPC時,對系統智慧的評價更高。因為玩家對一個客體的智慧的評價,除了智慧行為本身,還由很多和智慧不相關的因素組成,例如外觀,強度,數量,環境等等。例如光環設計師在GDC分享過的一點,只是單純的增加敵人的強度不改變AI,玩家對敵人的智慧評價就會更高。例如帕魯正因為遠離人的形象,玩家對其智慧期望低,反而覺得其智慧表現不錯。複雜系統的不可控和可解釋是一種更好的“難度放大器”,同時,複雜系統放大行為的反饋同樣適用於代理,這就是在解釋和掩蓋一些非智慧行為。
透過以上這個思維實驗,我們可以大致總結一下複雜系統和湧現的優勢,同時也是我們設計他們的目的:
以上思維實驗中,每位朋友選取的複雜系統可能都不一樣,但當我們多思考幾個複雜系統,將真實世界抽象的過程中,我們會發現,複雜系統和湧現可以分為兩個偏向:
當然兩者混合也是一類,這裡不討論,只探討這兩大類,這兩大類核心區別當然就是代理主體的存在與否。對於遊戲來說,這兩個偏向的設計方式相差非常大,第一類代理為核心的遊戲有模擬人生,SLG等等,而我的世界,noita,以及我們自己的遊戲流浪方舟,更偏向第二類。
接下來,我們會透過七個玩法原型,一一來窺探湧現設計的一些精華。這些都是紙面原型,只需要簡單的紙筆,或者一些簡單的道具例如骰子就可以實現,感興趣的朋友可以跟著做出來玩一玩,會有更深的理解。如果對設計不感興趣的朋友,可以直接跳到第十六章結論和探討部分。
九、原型1隨機平替湧現
1.1設計目的
原型要求
隨機和湧現的異同:
然而,兩者的混沌部分,仍舊有幾個非常重要的區別:
還有一些異同,總結在下表中:
綜上,由於隨機和湧現在不可控部分,有一定相似的特徵,並且隨機的實現難度遠小於湧現,所以原型一般先用隨機來平替湧現,來驗證可行性。
1.2玩法規則
玩法概述
雙人遊玩,有三個戰場,每個玩家四張手牌,共四個回合,每回合雙方放一張手牌到戰場,最終結算點數,三個戰場中獲勝佔領兩個以上的玩家獲勝,平局按點數分勝負。
回合階段:
結算階段
優勝場地數量相同,則比較總點數,總點數高的玩家勝利
總點數相同,則視為平局
例如場地內是1和2,場地效果是[小於等於3的數+1],則最終變為2和3
5個場地效果
1.3設計思路
基礎
加入策略對抗和策略深度
隨機和對抗隨機
1.4與撲克的對比最佳化
原型1已經以比較優雅簡潔的方式實現了一個隨機替代湧現的方案,但是仍有不足之處,我們拿撲克來進行對比:
資訊暴露密度
資訊可控程度和資訊範圍
勝利條件
1.5原型1總結
原型1透過非常簡單的規則,已經具備一定的可玩性和深度,同時具有重玩性。同時用兩道非常受控的隨機來模擬湧現,已經可以感受出前述的兩個特性:
這是一個很簡單的原型,主要是展示怎麼用隨機來平替湧現,以及湧現在遊戲中的大致感受,我們還可以以這個原型為基礎,不斷擴充規則,例如加入撲克下注的玩法:
只需加入一個規則,前三回合,玩家可以在每一輪揭示戰場上的牌之後,點數大的一方進行下注,對方必須跟注才能繼續下一輪。同時一方也可以隨時放棄,另一方拿走所有籌碼。
如此設計,在原先的策略基礎上加入了心理博弈,更發揮出每回合資訊暴露的策略樂趣,提高策略上限。
原型1是一個簡單的基於規則湧現的設計展現,接下來會從抽象即時戰鬥的原型開始,逐步探索基於代理的湧現設計。
十、原型2即時戰鬥抽象
2.1設計目的
我們來嘗試抽象一場典型的即時制戰鬥,先將戰鬥簡化為1v1的兩個玩家,各操控一個單位,勝利目標是擊殺對方單位。其他各種衍生玩法都可以視作該單局最小戰鬥的變種。進一步抽象,玩家是在調配戰場中的所有資源,達成戰勝敵方的目的,將敵我雙方的所有資源分為如下幾個型別:
和之前的原型一樣,我們要用最簡單的規則,只用數字的加減,來模擬這個戰鬥模型,這個原型同樣要達成以下幾個目的:
2.2玩法規則
玩法概述
雙人對戰,玩家將資源投入到輸出/生存/機動屬性上,機動屬性可再進行一次分配,分配到[進攻]和[躲避]上,雙方互相攻擊,造成的傷害由玩家分配的資源情況決定,血量先歸0者失敗
玩法流程
受擊方[躲避點數]與進攻方[進攻點數]對比,每高1點,進攻方造成的傷害減少20%,至多減少100%,沒有進攻高,則進攻方造成傷害不變
2.3設計思路
先採用最小單位,兩個戰鬥單位互相攻擊
用離散的回合來模擬即時,更直指本質
將戰鬥單位的優劣勢抽象成3個維度,輸出/生存/機動
引入點數,玩家需要分配點數到3個維度中,用簡單的數字進行戰鬥模擬
第一輪分配結束後,輸出和生存點數固定,機動點數可再進行分配
2.4原型2多V多擴充
可以很簡單的將原型2擴充到多VS多的規則:
額外多一個目標選擇階段,機動力低的單位先開始選擇(相等時隨機),選定目標後本回合不能改變
目標選擇完成後,進入機動性分配階段,規則有所補充:
機動性的進攻點數,只能分配給該單位之前選的目標,而躲避點數,可以分配給所有以該單位為目標的敵方
但是,每多分配一個目標,機動性額外消耗1
所有單位分配完機動性,則開始戰鬥
戰鬥結算順序,所有同時結算即可
結算時規則和基礎戰鬥規則一致
2.5原型2總結
透過讓玩家在戰鬥中將有限的資源進行分配,體現出了機動能力的兩個特性
在原型2可很簡單的擴充至1對多和多對多的玩法,進一步模擬複雜戰場上的情況,初步證明了原型2的擴充性較強
資源分配的還能體現出對戰遊戲中的一些設計思路
原型2策略博弈分為兩層,一層為開始的三個初始戰鬥資源分配,一層為戰鬥中機動力的使用,這兩層策略和對方的資訊關係都不大,更偏心理博弈,單看這個原型策略深度不夠,但作為後續原型的基礎是足夠的。
十一、原型3搶佔資源
3.1設計目的
到這一步,我們有了一場基本戰鬥的抽象,在原型3之前,我們先將原型1的思路融入原型2,再次從另一個角度分析一下湧現
玩家已有單位間的變化,與玩家變化統一,並且互相影響,則抽象為:
玩家在削弱敵方玩家的生存,輸出和機動能力,最終目標是生存能力歸零
同時,玩家防禦敵方對自身這三種能力的削弱
在以上過程中,對環境產生影響,並受到環境的反饋
環境的反饋可能有益於我方或敵方,並且分為可控和湧現部分
1可控的部分
2湧現的部分
忽視原型2,我們從頭抽象一個符合我們玩法的最小模型來實現上述理論:
戰鬥開始時雙方自由分配9點點數到三大能力上
戰鬥開始時,根據分配到機動性上的點數M進行隨機1-M,雙方較大的一方額外加1
雙方可以將最終的點數M自由分配到輸出能力和生存能力上,作為臨時輸出和臨時生存
雙方互相用自身的輸出對對方的生存造成傷害,優先扣除臨時生存,回合結束,清空臨時輸出和生存
迴圈回合,生存能力先歸零的一方失敗。
接著我們將湧現抽象為:
臨時加成,永久加成,臨時代價,永久代價
自選風險,高風險高收益
考驗類,輸出or生存or機動性大於等於N時,獲得加成X
臨時代價以及臨時加成類,輸出or生存or機動性臨時減X,臨時獲得加成X
永久代價永久加成類,輸出or生存or機動性永久減X,永久獲得加成X
最後我們將湧現拆分為幾個部分:
基於以上的分析,我們來看看原型3的實際規則:
3.2玩法概述
基於原型2的基礎戰鬥,改為每個回合都會產生三個臨時屬性,臨時攻擊,臨時生命,臨時機動力
每個回合依次出現三個隨機資源,雙方投入自己的三種臨時屬性進行爭奪,競價模式
爭奪完三個資源後,使用剩餘的臨時屬性進行基礎戰鬥
3.3具體規則
資源具體效果
6張資源消耗卡,臨時攻擊/生命/機動,永久攻擊/生命/機動
6張資源獲得卡,臨時攻擊/生命/機動,永久攻擊/生命/機動
每次隨機資源效果時,從消耗卡和獲得卡中,各隨機抽取一張,組成該次資源的效果
每種組合有不同結算效果,具體如下:
1.消耗臨時XX,獲得臨時XX
玩家自己選擇1-10的N點消耗的代價,N不能大於自身擁有的點數
投一個10面骰子,點數需要大於等於N才成功,成功後收穫是代價的2倍,失敗代價不返還
舉例:
抽到了消耗臨時攻擊,獲得臨時機動,這時候玩家有6點臨時攻擊
玩家可以選擇1-6的消耗,例如選了5點,則投10面骰子,大於等於5,則判定成功
該玩家扣除5點臨時攻擊,並且獲得了10點臨時機動,反之,則扣除5點臨時攻擊,什麼也沒獲得。
2.永久換臨時
玩家自己選擇1-10的N點永久代價(扣除基礎屬性),N不能大於自身擁有的點數
10面骰子需要大於N才成功,成功後收穫是代價的5倍,失敗代價不返還
3.臨時換永久
玩家換1點永久資源,玩家有N點該臨時資源,10面骰結果小於等於N才成功
例如該玩家抽到了臨時生命換永久生命,該玩家有7點臨時生命,則10面骰投中小於等於7就會獲得1點固定生命
該臨時資源只用於判定,不會消耗
4.永久換永久
固定1點資源換2點永久資源
不需要判定,直接消耗1點對應資源,換取2點目標資源
3.4設計思路
3.5原型3總結
只說這個原型,還有一些最佳化的空間,例如:
1生存能力的資源獲取隨機,會造成節奏拖慢,我們可以把資源獲取中的永久生存能力的隨機獲取去掉,更進一步,可以直接去掉臨時生命力,只保留臨時機動和臨時攻擊的設定。
2機動性補充公式需要最佳化,實際不是輸出或生存掉一點,機動漲一點。經過驗算後可以維持機動力設計,但需要儘量保證15點分配左右以及555均衡分配,則誤差較小
最後,非常建議大家上手玩一下原型3,其中設計親手遊玩體會更深,原型3已經具備一定的可玩性,重玩性,湧現平衡優劣勢,玩家對戰局環境的影響和反饋也體現了一部分,同時,即使沒有中央控制系統,該原型也體現了一部分對節奏的調控能力,還算比較優雅。
同時,讓我們回憶一下複雜系統和湧現的目的,也是我們實現的目標:
這個原型,在一定程度上,已經將前4條優勢體現出來。然而,這還只是一個比較簡單的原型,如果我們將資源視作一個單元,當前方案只有一種輸入,單個玩家的輸入。也只有一種輸出,對單個玩家的輸出。這是規則類湧現的一個典型,所以接下來,我們將嘗試基於代理的湧現原型設計。
十二、原型4九宮格湧現
4.1設計目的
我們先假設單局戰鬥中存在一種第三方單位作為代理,這種單位需要實現複雜系統的6個目的,那他們如何最簡單最直接的實現?如何由目的倒推對複雜系統的要求?具體分析如下:
1.產生有意義的變化,來提供新的體驗
提供新的驗證場景,將我們想要考驗玩家的點放在這些單位上來實現。新的驗證場景,例如如果要考驗玩家的形狀,或者其他單純敵我單位戰鬥考驗不到的東西,則要先考慮,是否可以放在敵方單位上面,若是不能放在敵方單位上再考慮放在複雜系統上。
反過來思考,什麼是敵方單位不能實現的,就是應該由複雜系統來實現。例如敵方單位由對方玩家來決定,一些可控穩定的需求無法實現,系統由設計師來定,可以更可控。例如敵方單位會盡量偏向敵方優勢,系統可以承載雙方中立平等的設計。
2.增強玩家對環境的影響與反饋
作為反饋的一環,則是將對玩家做的任何行為儘量明確放大的反饋給玩家,並對戰局有意義。反饋需要複雜系統對玩家的行為等資訊敏感,並且需要做出符合玩家認知的反應
3.平衡優劣勢,拉近不同水平玩家距離,降低操作和策略門檻
拉平玩家差距,這些單位會幫助弱勢的一方,需要複雜系統可以識別出敵我雙方的優劣勢,並且做出反應
4.改變和控制節奏
代理需要在合適的時機,改變和控制節奏,例如殘局時加快節奏等等
5.承載不同型別玩家的遊玩需求
承載不同目的的玩家,根據目的設計,例如擊殺AI單位局外獲取更多金錢,可以擊破擂臺攻擊觀眾等。
例如分化玩家的目標,局外塑造多種單局追求,局內才能體現。
例如除了戰勝敵人之外,類似coc來搞資源是一種,為下一局做鋪墊局與局之間做關聯,給與弱勢玩家一個補償,但是更適合非同步PVP。
例如單局之間的關聯,可以是讓代理有記憶能力,根據玩家過去做的行為,影響超越單局。
例如有NPC陣營,對玩家有好感度,在單局遊戲中隨機遇到,視對雙方的好感度,對雙方玩家做出不同的行為
於是玩家在遊戲中可以有第三種目標,刷陣營好感度,或改變對方陣營好感度,或者陣營可以釋出任務,完成任務作為第三種目標。
6.部分替代其他玩家的作用
複雜系統需要整體上給與玩家足夠多變的挑戰,代理需要和玩家擁有一致的底層規則。
上面是我們的目標,一步步來,接下來,我們將會引入最簡單的代理,代理的行為也很簡單,挑選一個合適的目標,進行戰鬥即可。同時我們需要用簡單的規則,讓多個代理在整體產生湧現行為。
4.2玩法規則
戰場為一個九宮格格子地圖。除了雙方玩家外,地圖上有7箇中立單位,開局時用10面骰子隨機中立單位的攻擊屬性和生命屬性,機動力固定0忽略,玩家單位和前述原型一致,自由分配15點屬性。如下:
每個回合開始時,遍歷九宮格所有中立單位,向所有附近非中立單位進攻
中立目標選擇的邏輯是單元格總輸出最高》生存最高》隨機
進攻單位格有玩家單位時,該玩家可自行選擇用僱傭單位還是本體來先防禦
戰鬥規則和原型2基礎戰鬥一致,中立單位和僱傭單位機動視作0
玩家行動階段,機動性高的一方先行動,可以消耗一點機動性移動到附近格或不動
移動階段完成後,所在單元格若是友方單位,無事發生,敵方單位或中立單位則戰鬥
若是中立單位則直接戰鬥,若有敵方單位則和敵方單位進行戰鬥,戰鬥規則一致
若既有敵方單位又有敵方僱傭單位,敵方可選擇誰來迎戰,戰鬥結束後,敵方下個回合可選擇繼續進攻
當玩家戰勝所在格子的中立單位或敵方僱傭單位後,若該格子沒有其他我方僱傭單位,可以選擇消耗自身的屬性,生成一個我方僱傭單位,僱傭單位屬性為消耗屬性的兩倍,機動力固定為0
例如玩家攻擊為5,生命為8,可以消耗N點攻擊,M點生命,生成一個2N點攻擊,2M點生命,0點機動的我方僱傭單位
當玩家行動完畢後,回合進入結束階段,結束階段若是地圖上有空位,隨機生成中立單位
4.3原型4總結
上面是最基礎的代理模擬,其中用移動能力的消耗來防止滾雪球是合理的,並且原型4的中立單位已經對遊戲產生一定有意義的影響,甚至可以“湧現”出最簡單的夾擊,可不要小瞧這個簡單的夾擊,它就類似康威生命遊戲中的元胞自動機行為,都是由最簡單的規則(原型中的中立單元選擇目標規則),自行出現的一些現象。這個原型中的湧現也許簡單到一眼看穿,但仍揭示了湧現的本質。
雖然原型4基本是成立的,但仍有以下的問題:
十三、原型5主基地湧現
5.1設計目的
吸收原型4總結的優缺點,我們進一步進行最佳化的同時,將更多目光轉移到,湧現如何參與進一個合理的目標挑戰反饋結構。先複習一下什麼是好的目標挑戰反饋結構?一場戰鬥,是由多個並存,巢狀的大小目標,挑戰和反饋組成:
1目標
2挑戰
3反饋
之前我們已經說過湧現的優勢,對於這個目標挑戰反饋結構當然同樣適用,我們來實際嘗試一下:
5.2玩法規則
還是九宮格地圖,每個玩家擁有一個主基地,主基地被佔領則失敗,地圖設計如下:
分基地和原型4的僱傭單位一致,只不過是初始固定給與我方的單位
主基地屬性可以為9攻9血,分基地可以為5攻5血,屬性可以適當自己調整試試,會決定遊戲節奏
玩家操控的單位或者主基地被破壞,則遊戲失敗
玩家操控的單位每回合可以移動一格
回合流程是機動力高的一方先移動
玩家操控單位所在的格子沒有敵方和我方其他單位時,可以產生僱傭單位,產生規則和原型4規則一致
雙方移動完後,所有建築可以向相鄰格子分配點數產生僱傭單位,每個格子友方非玩家操控單位數最多2個
雙方輪流操作後,進行戰鬥環節,戰鬥環節規則不變
額外的,單個單位屬性值不大於9
5.3原型5總結
相比原型4,原型5解決了一些問題,例如消極避戰,機動資源不合理等。同時,對於目標挑戰的最佳化,體現在結果上,我們會發現玩家的策略自由度會高很多,可以基於簡單的九宮格進行一些更復雜的策略,例如創造區域性以多打少等。同時,我們最關注的湧現部分,仍舊和原型4接近,沒有什麼損失,反而,因為玩家的決策自由度增加,在感知上,湧現部分會更加突出,這也是這個原型體現出的一個有趣的現象。由此我們可以知道,對於湧現的利用,至少需要一定程度的策略自由度,有了策略自由度,才能對整個複雜系統做更多輸入的可能性。
下一步,我們反其道而行之,做做減法,用更抽象的方式來實現一樣的博弈。
十四、原型6抽象分階段戰場
6.1設計目的
根據原型5的驗證成果,我們還可以進一步抽象,來感受湧現:
可以專注於資源分配,降低移動和戰場位置的相關因素,更加抽象
僱傭單位的機動性很關鍵,往帶機動性,更接近僚機而不是建築的方向驗證,中立單位還是可以是建築
直接分配點數,基地可以換一種形式存在,同時點數的存在也為下個原型打下基礎
加入戰鬥中途加入單位的設計,分散決策
6.2玩法規則
戰場由戰場效果和戰場收益,以及中立防守單位三者組成
戰場效果設計目的是輔助決策,平衡優劣勢,有以下三種:
戰場效果第一回合不揭示,回合結束後才揭示
戰場收益,玩家追求目標,且可控,開始時就揭示
玩家遊戲開始時15點分配到自身單位,還有自由點數X點
開始遊戲時放入三個戰場,將戰場收益揭示,戰場效果不揭示
玩家每回合可以雙盲做兩個操作,將自由點數分配到三個戰場中的一個,成為僱傭單位,和之前原型不同的是,僱傭單位可以有機動性,和玩家單位基本一致
玩家將自身單位移動到某個戰場或從戰場移回基地,玩家單位去另一個戰場需要移回基地,如下圖:
回合結束時結算戰鬥,和之前規則一致
每個戰場除玩家單位外最多一個僱傭單位,有一個僱傭單位時,基地無法派遣新的
回合開始時自由點數回滿,並且每個戰場若沒有中立單位,則重新隨機生成一箇中立單位
中立單位生成規則為6面骰,投三次代表輸出,生存和機動,投到生存0則不生成
6.3原型6總結
原型6的體驗和前兩個原型又有所不同,雖然更加簡潔,但可玩性反而相對更高,這是因為將空間位置博弈更加抽象後,可以反而可以強化單個區域的效果,對湧現的表現加成更大,這也是這個原型給我們的啟發之一:
代理和環境的存在都是湧現非常重要的一環,他們都是複雜系統的元件,是相輔相成的,或者可以直接視為一體。
而在玩原型6的時候,也發現了一些可以更優的部分,例如第一步改為依次揭示戰場可以減輕決策成本,也體現了不可控部分降低決策成本這一點。例如玩家操控單位會有點被中立單位喧賓奪主,戰場收益還可以更高一點等。最重要的是,整體決策數較少,每一步決策負擔過高。
十五、原型7細分決策平衡優劣勢
7.1設計目的
根據原型6的驗證成果,除了最佳化細節,我們來嘗試將決策拆分,降低每一步決策的資訊不確定性和負擔,但每一步決策之間互相關聯,考驗玩家思維步數深度,從精確策略轉向模糊策略,這是原型7的重點之一。
另外一方面,我們再次將目光放到優劣勢平衡這一點,探討利用局外資源帶入局內和湧現結合的方式:
對於一個常規的帶局外的單局戰鬥為核心的遊戲來說,單局戰鬥最終目標是為了獲取勝利的快樂以及獎勵,獎勵是服務於局外的發展,最終為了更好的進行單局戰鬥。同時根據養成,經驗,技巧等等因素,對於一個玩家來說,戰中剛進入對局時有3種狀態:1明顯強於對方,2接近勢均力敵,3明顯弱於對方。
對於玩家來說,略強和略弱以及勢均力敵的情況是最常見的情況,且是我們期望最多的情況(透過elo匹配等方式)
在這種情況下,期望玩家目標是獲取勝利,勝利的獎勵大於其他路徑。
有所不同的是,這種情況下玩家可以有兩種偏向,第一是放大優勢和縮小劣勢後進行戰鬥,第二是直接進行戰鬥分出勝負,偏弱的一方會傾向前者,偏強的一方會傾向後者。
對於明顯強於對方的玩家,我們需要給與一個更難達成,獎勵更高,且過程中會削弱玩家的路徑,例如破壞敵方基地,毀滅敵方所有建築,攻擊第三方單位等等。
反之,對於弱於敵方的玩家,可以是幫助第三方單位防禦,獲取防禦資源等。當然也需要一個合理的勝負條件,要考慮弱勢方是否會主動承受傷害,消極比賽,投降,快速結束比賽。
也不能透過簡單的戰鬥力來供系統決定優劣勢,會促進壓戰力行為出現,和複雜系統的結合,我們需要玩家根據戰場情況自己判斷雙方優劣勢,做出不同的決策,來決定優劣勢。
那局外資源又如何去達成平衡優劣勢的目標呢?這邊探討一種適合和湧現結合的可能性:
我們將玩家在戰中的目標分為兩大類,勝利和獲取資源,兩者不衝突但有側重;
玩家的實現這兩個目標的時候,有兩種抉擇,第一,減少局外獲得資源以獲取局內更強的戰力,第二犧牲局內戰力獲取更多局外資源;
其中是漸進的變化,如此,不管優劣勢方,都可以走兩條路,風險和收益並存且由玩家自己把控;
舉個例子,例如我們設一場戰鬥勝利可以獲得10分的戰利品,失敗保底有2分的戰利品。局記憶體在複雜系統(例如一個第三方陣營),玩家可以與其進行不同的互動,進攻會獲取更多局外戰利品,也會損傷自身的戰鬥力,也可以做第二類互動,用局外戰利品的消耗或者減少,來增強自身的戰鬥力。
如此,我們達成一個目標,理論上玩家最優解是戰力剛剛勝過對方能夠拿下勝利的前提下,儘可能多的用戰力換局外資源,這樣一來,玩家間會與複雜系統一起,進行非常動態的博弈,自適應地平衡優劣勢。
因此,原型7將引入一個新的資源,用來模擬局外帶入局內的,除戰鬥單位外的一種可支配資源。
7.2玩法規則
共有三片戰場,連成直線,一端靠近玩家A,另一端靠近玩家B,如下
玩家自己的旗艦初始在主基地,旗艦取消機動性,初始分配點數為10點,但是旗艦血量乘10
玩家每回合可以從自己的自由點數中分配N點成為一個僱傭單位,可以0點,雙盲,必須生成在主基地
回合下一步雙盲決定旗艦前進後退還是不動三項操作
下一步,所有僱傭單位所在的格子若沒有敵方或中立單位,則自動向敵方主基地移動一格
下一步戰鬥結算傷害,規則和之前的原型一致
每個回合結束時戰場會生成中立單位
中立單位生成仍舊是投6面骰子兩次,分別作為輸出和生存能力,機動性視為0
每個回合生成戰場收益,收益大小隨機投擲10面骰
加入利息設計,每N點回合結束時加1點,降低預測敵方的難度,同時增加博弈空間
加入佔領成功一次性獎勵,促進玩家更加激進,例如佔領單位+1+1,或者戰利品自由分配佔領單位還是收回
戰利品分配在下輪怪物和收益生成之後,雙方僱傭單位之前完成
每個戰場最多可以投兩個僱傭單位
7.3原型7總結
原型7體現了將策略拆密拆細,這種方式會更加契合湧現的設計,因為湧現本身需要一定步長的決策深度來拉差。不止是湧現,在做設計的時候,我們整體上都會偏向將精確策略模糊化,不僅僅為了湧現,而是更貼合人類做決策的本能。
尤其在即時制遊戲中,一般將精確策略作為額外深度上限提供,考驗玩家對遊戲的掌握,資訊收集,反應,記憶,快速決策等能力。操作上來說,偏向高頻操作考驗反應,收益代價都較小,低頻操作考驗策略,收益代價都較大。操作速度,操作精準度,操作策略深度三者為不可能三角。所以對於我們來說,相比精確策略更偏向模糊策略,並且重點是利用湧現令玩家產生模糊策略是精確策略的錯覺,再利用機制放大模糊和精確策略的反饋。
同時,更偏模糊策略配合前文所說的動態平衡優劣勢才能成立。(完全精確策略,則優勢玩家最優解很明確,優於敵方的前提下,將所有戰鬥力換為局外資源,劣勢玩家則什麼也幹不了)
十六、湧現設計總結
感謝耐心看到這裡的朋友,上面我們設計了七個原型,一步步展示了複雜系統和湧現設計的一些要點,原型都我自己快速設計的,比較簡陋,如果在玩的過程中,有更好的想法,隨時修改原型即可,達成設計目的就行。藉由上述的原型設計,我來總結一下湧現設計的一些經驗:
1.規則儘量底層,抽象,通用
對於複雜系統,複雜度來自代理間,規則間的互動,不在於規則本身的複雜度。反而,對於設計來說,用越簡約的規則實現設計目的,越優雅,並且也好除錯,預測和利用湧現現象。多次迭代的輸入輸出,每次迭代都儘量簡單易懂,規則清晰。舉個例子,我們設計一個元素反應的複雜系統,不該是去設計木頭遇到火就會燃燒,火遇到水就滅這樣的規則,而是應該設計更底層通用的規則,例如溫度系統,所有這些元素會改變周圍的溫度,溫度超過燃點就燃燒,低於冰點就結冰。如此設計,所有的涉及溫度變化這個單一度量可以描述的元素反應,都統一起來了,不僅簡潔,後續擴充性也強。這就是一個例子,規則越底層,越抽象,越簡潔,越通用,才是一個適合複雜系統的設計。
2.博弈空間,決策複雜度,學習成本,玩家掌控程度之間的平衡
資訊不能太完備,否則決策門檻較高,也不能太缺失,否則策略意義太小。一般透過逐步釋放的方式來達成資訊密度的控制。同時,資訊除了對決策的影響,往往還影響玩家對戰局的可控程度,這一點往往和湧現緊密相連,特別需要注意一個現象:某個資訊和高收益相關,逼著玩家不得不去深入湧現,帶來巨大的決策成本。同理,資訊,包括複雜系統內部的規則資訊,也無需急匆匆教學玩家,在有複雜系統的遊戲中,不需要追求玩家過多的掌控程度,探索複雜系統本身也可以作為樂趣之一,對複雜系統的熟悉程度也可以作為不同玩家間的拉差。
3.拆分降低每一步的決策成本,及時反饋,減少長考
如原型7所說,策略拆密拆細,這種方式會更加契合湧現的設計,因為湧現本身需要一定步長的決策深度來拉差。我們追求的是玩家儘量用模糊策略來應對複雜系統和湧現,但是透過湧現結果,UI暗示等等設計手段,讓玩家感覺自己在做精確策略,獲得高反饋。
4.注意湧現中濫用隨機
不可控部分大多數時候是降低策略成本,因為不需納入策略考量之中,控制隨機,對抗隨機,利用隨機,也能帶來相當大的樂趣。湧現也是類似,他們都是不可控的一種,那有朋友就可能會想了,湧現加上隨機會如何?
我們舉個簡單例子,模擬人生中的小人,他們有自己的想法,但這時候我們讓某些想法出現的規則隨機。這時候,對於這些想法的湧現部分玩家會如何看?結論就是看不了,濫用隨機,隨機會侵蝕湧現的意義,最後,變成隨機蓋過湧現的樂趣,或者兩者互相影響。
我們再細一點,如果把湧現和隨機的結合分為前中後三類:
所以,同一個遊戲中,隨機部分和湧現部分最好是分離開來,且可以隨機的結果和湧現相關,但不要摻雜兩者,或者湧現的結果再隨機一道
5.平衡優劣勢
需要給劣勢方優勢的同時,儘量保持規則統一,不要過度依賴湧現本身的不可控來平衡優劣勢,更好的是以一個自洽的規則讓系統合理的平衡優劣勢,最好的是讓優勢方自適應追求高風險高收益,來平衡優劣勢。例如前文說的局外資源帶入的方式。
6.利用提前認知降低理解學習成本
複雜系統一般都有比較高的理解學習成本,並且現實生活中有非常多已有的複雜系統,因此,多多利用現實生活的提前認知,來降低門檻。例如原創設計了某些規則,那也去生活中找一個最接近的複雜系統,包裝一下靠過去。
7.代理與AI的異同
代理不等於AI,這是常見的一個誤區,因為很多時候他們兩個有重疊的部分,但從設計上講,一定要注意,代理是一個以一定規則執行輸入輸出的元件,它完全不需要追求智慧,複雜,靈活等等,如果這樣去設計,就跑偏了。可以看出上面幾個原型,都會將代理設計的非常簡單,重點不是代理本身多複雜智慧,重點是代理與代理直接的互動規則,在整體上能否產生我們想要的湧現。好的代理應該享受和玩家操控單位一致的底層邏輯,但是利用好代理所獨有的優勢。就類似AI的設計,擬真AI大多數不是最好體驗的AI,最好的是利用AI可以作弊這一點,更大化發揮AI對玩家體驗的作用。例如類似求生之路的導演系統,光環敵人AI等等達成的效果。
代理不等於AI,但是可以參考AI和玩家可以用的策略,來進行設計,以下是我對1V1對抗的策略博弈的一些不完整總結:
大多數實際的策略,是由上面多種設計複合配合,而這些策略,都可以應用於代理的設計。
8.超越複雜系統
最後,本文探討的是,複雜系統和湧現在遊戲中的利用方法,我們追求的從來不是模擬一個複雜系統,或是多麼追求和現實一致的湧現。我們追求的是利用複雜系統和湧現,服務於我們的設計目的。
所以我們要學習複雜系統,但要超越複雜系統,我們可以重構現實的複雜系統,例如流浪方舟裡面實現的設計物理,就跟真實物理不同。同時,我們也可以有外力給與系統,不用追求完全的系統內部達成自適應,也可以主動放大涌現等等,當然,當複雜系統和湧現對核心玩法沒有幫助時,不要猶豫,砍掉,一切為設計目的服務。
十七、結語:湧現,生命,智慧
上面8個章節,都是以一個設計師的視角,較為理性地去剖析複雜系統和湧現,目的性非常強地探尋其在遊戲中的利用方式,希望對大家有所幫助。接下來最後一章,隨便聊點不那麼理性的感想,隨便交流談笑一番。
對複雜系統和湧現現象的著迷,離不開對自己對生命和智慧的敬畏與好奇。很多朋友不知道,生命到如今也沒有一個準確的定義,生命是什麼?和複雜系統如何定義類似,這是一個至今沒有完全達成共識的話題,科學家們只能對生命提出了一些較為普遍的特徵,例如:
以上只是一些特徵,生命的定義多種多樣,至今沒有準確定義。而從複雜系統的角度來定義,生命不過一些簡單的元件聚集在一起,所湧現出來的整體現象。就像美國物理學家默裡·蓋爾曼(Murray Gell-Mann)曾說:我們在周遭世界所見的複雜行為——甚至在生命世界中——只是“從深奧的簡潔中浮現出的複雜表象”。
有人也會問,湧現是否只是一種錯覺,是我們主觀強加給系統表象的意義?這個問題,其實和智慧是否存在,是否是大腦的錯覺沒有本質的區別,每個人也許有不同的答案,但作為一個智慧的載體,我很難承認,我們僅憑錯覺能夠建立起我們璀璨的文明,留下名傳千古的詩篇,但是也許在更高智慧的生命眼中,我們的文明火花,不過是螞蟻抱團表現出來的蠢蠢叢集智慧,說不得還被定義成叢集效應,戴不上智慧的王冠。
而對遊戲來說,前面幾章沒有深入探索的最後一部分,就是複雜系統部分替代其他玩家的作用這一點,正是來源於對湧現生命智慧三者關聯的啟發。這一部分來自我們最新對長線遊戲的思考——對於一個著重創意設計的小團隊,怎樣的方向最適合做長線內容。這是一個很大很重的話題,這裡不展開,以後有機會單獨寫文章,先直接說我認為的三個可行方向:
以上是一家之言,只適合我們自己團隊,僅供參考,其中第二點,就是我們一直在探索的方向,如何利用湧現模擬玩家,讓系統能夠代替部分玩家間互相給予的體驗。就像之前說的,這裡不是要做一個擬真AI去模擬人的智慧,而是用湧現系統,去模擬人類玩家給其他玩家帶來的那種,理智中帶著混沌,可控中混雜著不可控,衝動瘋狂和理性決策交纏的感覺。
好吧,寫著寫著又想著對遊戲設計的作用,職業病發作,本篇文章前後耗時數月,可能有些囉嗦不連貫,感謝耐心看到這裡的朋友,歡迎多多交流,也歡迎關注我的公眾號《魚塘遊戲製作工坊》。
下面就用一段上篇文章被我刪掉的胡言亂語,來結束這篇文章吧!
“生命與智慧不是偶然,而是必然。
熱力學第二定律-熵增定律表明,一個封閉系統,整體混亂度會隨著時間流逝增加,直到所有事物都走到最無序的狀態。於是維多利亞時代的熱力學家想象,宇宙這個封閉系統,所有能量也會慢慢轉化成廢熱,恆星各自熄滅,黑洞也會耗盡自身,最終所有一切都會處於平淡一致的寂滅,這就是所謂的“熱寂”。然而,在這個不可逆的過程中,宇宙似乎有些不甘,逐漸平靜下來宇宙海洋,在某些角落驟起波瀾,一些有序的構造體,從無序的物質中湧現出規則。這些構造體在行星的原初羊水中翻滾,用盡全力吸收恆星的光芒,用簡單的碳元素做骨架,配上一些別的東西,堆積出複雜的自適應系統,有些甚至還能開出漂亮的花朵。雖然,這些微小秩序的產生需要來自系統之外的能量,代價是宇宙其他區域更多的混亂。
可是,宇宙在走向無序混沌的過程中,還是在一些角落悄悄孕育了有序的生命,它們是如此的珍貴,那是宇宙對抗無序的囈語,是宇宙為自身加冕的桂冠。而生命中湧現出來的智慧,更彷彿是宇宙的囈語恰好吟唱成了一曲歌謠,是桂冠上璀璨的寶石,是奇蹟中的奇蹟。每個人的心靈,都是獨一無二,從混沌中掙扎著長出的花朵,每個人的靈魂,都是宇宙靈魂的一部分。
所以,用力活著,用力地思考,不辜負這奇蹟。”
感謝您的閱讀。
作者:餘田,《流浪方舟》製作人,微訊號yutianTerean
歡迎關注作者個人公眾號“魚塘遊戲製作工坊”
這是一篇關於複雜系統在遊戲設計中應用的文章,整篇文章分為三大部分,第一部分介紹複雜系統和湧現,第二部分藉由複雜系統提出一種新的度量遊戲的方法,第三部分會透過實際的原型設計,來深入探討複雜系統和湧現在設計中的應用方式。
溫馨提示,全文字數3w+,預計閱讀時間較長,歡迎關注收藏慢慢看,一家之言,拋磚引玉,也歡迎各位朋友交流斧正。
一、複雜系統簡介
首先,複雜系統是什麼?
複雜系統有很多定義,比較簡潔的定義是:由大量相對簡單的自組織個體構成,個體之間透過簡單的規則互動,卻能湧現出複雜宏觀行為和現象的系統。
蟻群,大腦,經濟系統,免疫系統,生態系統,網際網路,元胞自動機,人類社會等等,都是複雜系統。
這裡的複雜系統定義有兩個關鍵詞,自組織(self-organizing)和湧現(emergent)。
“自組織”是指系統內部或外部沒有一個指揮者,告訴個體該怎麼做,而是個體自身透過規則控制自身。
“湧現”,就是指系統組成部分間簡單的互相互動,卻在宏觀層面產生了新的特性或行為,這些新特徵或行為稱為“湧現”。這是非線性系統的特徵,即1+1>2,另一種說法就是整體大於部分之和。
複雜系統研究是一個跨學科的科學研究,涵蓋了許許多多分支,下圖是複雜系統科學的分佈圖,來源網站https://www.art-sciencefactory.com/complexity-map_feb09.html:
對複雜系統研究的重視比較晚,目前也處於探索之中,沒有公認的定義,統一理論或一般性原理。對不同複雜系統的共性探索一直是重中之重,不同領域的科學家提出了自己的理論,但還未完全達成共識。
而我們只關注複雜系統在遊戲中的應用,一般來說,複雜系統在遊戲中的應用分兩個大方向:
- 以代理(人,動物,AI等)為核心的複雜系統,例如蟻群,公司,社會,經濟系統等。沙盒,故事生成器類遊戲用的比較多,例如kenshi,《模擬人生》系列,環世界,矮人要塞等等。
- 以客觀規則為核心的複雜系統,例如基於物理化學規律的湍流,天氣,N體運動等。物理模擬類遊戲,應用主動布偶的遊戲,程式設計類遊戲,某些建造組裝類遊戲等等
當然兩者也可以結合,但一般因效能和複雜度考量,都會有所側重。
筆者最近的兩個遊戲也深入應用了複雜系統和湧現的設計元素,最近的遊戲《流浪方舟》利用了物理系統作為複雜系統,為我們產生有利的碰撞位移湧現,是以客觀規則為核心的複雜系統利用。
而上個遊戲《追隨者聯萌》中實現了GOAP和行為樹結合的AI,令整個NPC的行為互動組成一個複雜系統,是以代理為核心的複雜系統。關於GOAP的介紹,可以參考筆者之前的一篇介紹文章:
https://mp.weixin.qq.com/s/U9CmZ2uTEv91KPosHDFZRQ
總而言之,複雜系統為我在遊戲開發領域,不論是技術還是設計,提供了很多不同的思考角度,是一個非常有用的工具。因此,本篇文章就是結合我的一些實踐和思考,跟大家簡單分享交流一下。
接下來三章,我們透過複雜系統中非常具有代表性的混沌系統,來揭開復雜系統的面紗一角。
二、混沌的發端,動力學與預測
人們討厭宿命論,卻總想著預測未來。
——我說的
首先我們簡單介紹一下動力學。
動力學始於亞里士多德樸素但錯誤的運動理論,後來伽利略,哥白尼,開普勒以實驗觀察推翻亞里士多德流行了1500年的理論,再到牛頓橫空出世,發明了微積分,正式建立了經典力學。提出了著名的牛頓三定律:
- 在任何情況下,一切物體在不受外力作用時,總保持靜止或勻速直線運動狀態。
- 物體的加速度與物體的質量成反比。
- 兩個物體之間的作用力和反作用力,在同一條直線上,大小相等,方向相反。
在牛頓進一步提出萬有引力定律後,在當時,牛頓力學完美地解釋了一切物體的運動,其適用於任何大小的物體,不論是落下的蘋果,還是燃燒的太陽。理論上,人們若是知道一個物體的初始位置和速度,就可以計算出後續的運動,自然就有聰明的小朋友想到:若是知道宇宙中某一刻所有粒子的當前狀態,那是否就可以預知後面任何時刻的宇宙狀態。
上述精確預測的假說就是著名的“拉普拉斯妖”,數學家拉普拉斯在1814年說:
“我們可以把宇宙現在的狀態視為其過去的果以及未來的因。如果一個智者能知道某一刻所有自然運動的力和所有自然構成的物件的位置,假如他也能夠對這些資料進行分析,那宇宙裡最大的物體到最小的粒子的運動都會包含在一條簡單公式中。對於這智者來說沒有事物會是含糊的,而未來只會像過去般出現在他面前。”
如今,我們有強大的計算機,無需一個多智近妖的智者,也許未來有了足夠強大的計算機就能做這個工作。如果真是如此,豈不是宇宙中的一切都已經註定,像一個上完發條的鐘表,遵循三定律一直循規蹈矩地走下去,這是一個多麼絕望的“決定論宇宙”啊。
還好1927年,海森堡(Werner Heisenberg)提出了量子力學中的“測不準原理”,證明不可能在準確測量粒子位置的同時,又準確測量其動量。如此,在微觀世界的準確預測夢破碎,也慰藉了不願相信宿命的人。
統計力學與預測
海森堡測不準原理只針對微觀情況,而玻爾茲曼(Ludwig Boltzmann)建立的統計力學告訴我們,即使無法計算微觀尺度的每個分子的運動,也可以用統計學的方式預測大量分子整體上的平均位置和速度,當粒子數量足夠多時,他的方法“幾乎總是對的”。統計力學是連結熱力學和經典力學的橋樑,氣壓,熱力學第二定律都能很好的用統計力學來解釋。那麼即使微觀尺度上無法預測,宏觀尺度上,是否可以透過統計學方式來預測系統的整體變化呢?
答案是不行,下面就是大名鼎鼎的混沌系統出場的時候了。
三、混沌系統
有時初始條件的微小差異,將造成最終現象的極大改變。前者的小誤差,會造成後者極大的錯誤。預測將成為不可能的事,我們面對的是偶發現象
——龐加萊,《科學與方法》,1908年
1959年,42歲的數學和氣象學家愛德華·羅倫茲(Edward Lorenz,1917—2008)在嘗試用一個原始的計算機來預測天氣,結果發現輸入引數時微小的差異會造成兩次結果完全不一樣,即使兩次預測計算機每一步的計算方法都一樣。
後來,羅倫茲在一場學術會議上發表了論文來探討這種對初始條件十分敏感的天氣系統,論文題目叫——《巴西的一隻蝴蝶舞動翅膀,可以引發得州的龍捲風嗎?(Does the Flap of a Butterfly’s Wings in Brazil Set off a Tornado in Texas?)》,這就是著名的“蝴蝶效應”(The Butterfly Effect)。
天氣系統就是一個典型的混沌系統,這裡可能有點反直覺,為什麼有些系統對初始條件就這麼敏感?答案在於混沌的“非線性”和“自我引用”特性。
下面介紹一個經典的可以體現混沌本質的數學抽象——邏輯斯蒂對映(logistic map),它非常簡單,其特性又非常令人震撼和著迷,我第一次讀到時有種醍醐灌頂的感覺哈哈。這裡主要引用梅拉妮·米歇爾的著作《複雜》的邏輯斯蒂對映一章,非常推薦大家讀讀這本複雜系統的科普讀物。
這是邏輯斯蒂對映的方程:
X(t)是當前值,X(t+1)是下一步的值。R是一個引數,我們可以自己調,先不管。我們要做的很簡單,定一個R,然後以一個介於0-1之間的X(0)開始,代入這個公式,得到X(1),然後把X(1)代入公式,以此類推不停得到新的值即可。這就是一個非常簡單的“非線性”的方程。
讓我們試試R=2時會怎麼樣,我們會發現有意思的事情,就是不管X(0)輸入的是什麼值,最終X(t)都會停留在0.5這個值,這個0.5正是所謂的不動點(fixed point):到達這一點所花的時間依賴於出發點,但是一旦到達就會保持不動。當R=2.5時,你同樣會發現系統到達一個不動點,不過這次不動點是0.6。
而當R=3.1時有趣的事情開始開始發生:
不管X0輸入的是什麼值,最終Xt都會在兩個值(0.5580141和0.7645665)之間振盪。如果將前者代入方程,就會得到後者,反過來也是一樣,因此振盪會一直持續下去。這種最終的變化位置(無論是不動點還是振盪)被稱為“吸引子”,因為任何初始位置最終都會“被吸引到其中”。
往上一直到R等於大約3.4,邏輯斯蒂對映都會有類似的變化:在迭代一些步驟後,系統會在兩個不同的值之間週期振盪(最終的振盪點由R決定)。因為是在兩個值之間振盪,系統的週期為2。
但是如果R介於3.4和3.5之間,情況又突然變了。不管x0取何值,系統最終都會形成在四個值之間的週期振盪,而不是兩個。例如,如果R=3.49,x0=0.2,x的值很快就開始在四個不同的值之間週期振盪(它們分別大約是0.872,0.389,0.829和0.494)。也就是說,在3.4和3.5之間的某個R值,最終的振盪週期突然從2增到4。最終的結果就像下圖那樣。
接著,更有趣的事情來了,在3.54和3.55之間的某個R值,週期再次突然倍增,一下躍升到8。在3.564和3.565之間的某個值週期躍升到16。在3.5687和3.5688之間週期又躍升到32。週期一次又一次倍增,前後R的間隔也越來越小,很快,在R大約等於3.569946時,週期已趨向於無窮。當R等於大約3.569946時,x的值不再進入振盪,它們會變成混沌。下面解釋一下。將x0,x1,x2……的值組成的序列稱為x的軌道。在產生混沌的R值,讓兩條軌道從非常接近的x0值出發,結果不會收斂到同一個不動點或週期振盪,相反它們會逐漸發散開。在R=3.569946時,發散還很慢,但如果將R設為4.0,我們就會發現軌道極為敏感地依賴於x0。我們先將x0設為0.2,對邏輯斯蒂對映進行迭代,得到一條軌道。然後細微地變動一下x0,讓x0=0.2000000001,再對邏輯斯蒂對映進行迭代,得到第二條軌道。圖2.14中的實心圓圈連成的實線就是第一條軌道,空心圓圈連成的虛線則是第二條軌道。
這兩條軌道開始的時候很接近,但是到後面,兩條軌道開始分開,並且毫不相關。這就是“對初始條件的敏感依賴性”的由來。
這就是混沌最簡單的表現方式之一,只要一個公式,就能告訴我們,如此簡單的邏輯斯蒂對映,並且完全是確定性的:每個xt值都有且僅有一個對映值xt+1。然而得到的混沌軌道看上去卻非常隨機。此外,對於產生混沌的R值,如果初始條件x0有任何的不確定性,對一定時間之後的軌道就無法再預測了。
所以,如果對於一個實際的混沌系統,即使它簡單到只有一個粒子,它的初始狀態中若有個引數是無理數(絕大多數數字其實是無理數,有理數只是少數),例如大家最熟悉的π,那我們就要建造一臺可以輸入無限位數小數的機器,否則無論我們精確到小數點後多少位,那一位後面的誤差就會導致一定時間後,整個混沌系統都無法預測。這就是“失之毫釐,謬以千里”。
至此,不論從宏觀上還是微觀上,預測未來都不可能。
四、混沌系統和遊戲
前文提到我們的遊戲《流浪方舟》是應用了基於規則的複雜系統,簡單描述遊戲玩法,是雙方玩家各控制五個球體英雄,互相碰撞進行戰鬥,其碰撞和反彈都是模擬的物理規則,並且有PVP的玩法。而我們遊戲的機制,其實就已經組成了一個典型的N體系統(沒錯,N等於三就是大名鼎鼎的三體系統),也因此遇到了混沌效應。
我們用的是幀同步方案,在不同的手機上,我們遇到了兩個玩家不同步的問題。排除各種原因包括網路因素後,發現原因是不同機器上的浮點數運算有微小的差異(真的非常微小)。於是,某個回合微小的差異,會在幾回合後使得雙方的戰場情況完全不一樣,直接變成各打各的了。後來,我們只能是放棄Unity自帶的物理系統,自己重新實現了一個定點數精確物理系統,非常慘烈。所以,遊戲利用了複雜系統,也要承受複雜系統可能帶來的問題。
當然反過來說,我們也利用了複雜系統的湧現現象。對於遊戲來說,湧現本身不是目的,而是湧現能為遊戲帶來什麼。
首先,湧現能為遊戲帶來意料之外的體驗,該部分的體驗是玩家不可控的。若開發者能在這部分進行部分控制,則可以進行更多發揮。當然意料之外的體驗也是新體驗,湧現本身創造了新的體驗。
同時,湧現的妙處在於並不是所有過程都是不可預測的,往往有一小部分是可以預測的,這會帶來一定適應性,可以適應不同水平或者意願的玩家。但是複雜系統的的突變也會帶來一個相變的臨界點,這個臨界點又可以保證不同玩家對湧現的掌控不會相差太多。
舉例我們遊戲的物理碰撞系統,複雜度來自多體運動,玩家無法預測N次碰撞後的情況,但是大多數玩家是可以預測1次碰撞後的結果,這就是初始可預測部分,這部分會進入玩家的策略考量中,而對於一些更具策略的玩家,首次碰撞反彈後的第二次碰撞,也能預測部分,這就是適應性,但是當反彈三次或以上,基本沒有玩家可以預料局面,這就可以類比為混沌相變的臨界點,用以把控不同玩家的策略差距,甚至理論上,即使有個類似深藍的超級計算機來算,也無法完全把控N變大後的情況。
混沌系統只是複雜系統的一個分支,但確實是一個理解複雜系統的敲門磚,大概瞭解了複雜系統是什麼之後,我們來看看遊戲與其更深的關係。
在設計複雜系統的時候,大家會發現,遊戲和複雜系統的界限是非常模糊的,一個複雜系統,往往加上一些合理的目標和挑戰,就是一個具備一定可玩性的遊戲。而很多遊戲本身,就是一個複雜系統。也因此,對複雜系統的一些研究,同樣可以化用到遊戲設計,例如複雜系統對“複雜度和資訊”的研究,對遊戲設計就非常有價值。接下來的部分章節,筆者會探討一種度量和最佳化遊戲的方式,若對此不感興趣,可以跳到第八章。
五、度量“複雜”
首先我們來看看科學家們是怎麼是度量複雜系統的“複雜”程度的:
1.規模度量
最簡單的度量就是規模大小,但是很顯然是不對的,畢竟單細胞變形蟲的鹼基對數量是人類的225倍。
2.夏農熵
另一種直接的複雜性度量就是夏農熵,夏農熵定義為資訊源相對於資訊接收者的平均資訊量或“驚奇度”。也就是說若資訊高度有序,例如“A A A A A A A……A”,則熵為零。完全隨機的序列則有最大可能熵。這種度量明顯也是不夠的,完全隨機的序列對資訊接受者來說也沒有意義。所以最複雜的物件既不是最有序的,也不是最隨機的,而是介於兩者之間。
3.計算機描述
第三種度量方式是由柯爾莫哥洛夫(Andrey Kolmogorov)、查汀(Gregory Chaitin)和索羅蒙洛夫(Ray Solomonoff)分別獨立提出,他們將事物的複雜性定義為能夠產生對事物完整描述的最短計算機程式的長度。這被稱為事物的演算法資訊量。對於學計算機的小夥伴應該很好理解,也就是表達一個東西需要多少程式碼。
例如一個遊戲A最少可以用10行程式碼寫出來,另一個遊戲B卻要用100行程式碼,那按演算法資訊量,遊戲B就比遊戲A複雜。這個乍看合理,其實也有侷限,100行程式碼一定比10行復雜嗎,程式碼本身的複雜度是簡單的線性嗎。本質上這是把系統的複雜度抽象轉移到了程式碼上面,並沒有完全解決問題,只是把系統的複雜度問題變成了程式碼的複雜度問題。
4.統計複雜性
第四種度量方式是物理學家克魯奇菲爾德和卡爾·楊(Karl Young)定義的一個稱為統計複雜性(statistical complexity)的量,度量用來預測系統將來的統計行為所需的系統過去行為的最小資訊量。統計複雜性與夏農熵相關,定義中系統被視為“訊息源”,其行為以某種方式量化為離散的“訊息”。對統計行為的預測需要觀測系統產生的資訊,然後根據資訊構造系統的模型,從而讓模型的行為在統計上與系統本身的行為一致。
例如,序列ACACACACAC的資訊源模型可以很簡單:“重複A C”;因此其統計複雜性很低。然而,與熵或演算法資訊量不同,對於產生序列ACGTGGTAGC的資訊源也可以有很簡單的模型:“隨機選擇A、C、G或T。”這是因為統計複雜性模型允許包含隨機選擇。統計複雜性的度量值是預測系統行為的最簡單模型的資訊量。因此,對於高度有序和隨機的系統,統計複雜性的值都很低,介於兩者之間的系統則具有高複雜性。
第四種度量方式不止符合直觀,還有值得我們思考的是,它並不完全度量系統本身,還透過對系統演變的預測來度量系統本身的複雜度。
還有很多度量複雜性的方法,不一一贅述。各種度量都有一定可行性,但都存在的侷限性,還遠不能有效刻畫實際系統的複雜性。度量的多樣性也表明複雜性思想具有許多維度,也許無法透過單一的度量尺度來刻畫。
而對於大多數系統例如遊戲,並不是一成不變的,而是不斷更新迭代,對未來可能性預測來反推當前的複雜度是一個有趣的方向。
六、複雜系統和遊戲有效資訊度
相信很多設計師在設計遊戲的時候,都曾想要“度量”自己的遊戲,“可玩性”,“複雜度”,“上手難度”等等,這些都是非常難以統一定義和量化的標準。我們在本文,不討論“可玩性”這個過大的話題,只聚焦於對遊戲有效內容量的探討,有效內容量,也可以從很多個角度來側面地衡量,例如遊玩時長,系統複雜度,系統深度等等。而我們的角度不同,是從資訊層面上,來度量和最佳化一個遊戲,筆者稱為“遊戲有效資訊度”。
遊戲有多種抽象方式,其中有一種抽象就是:玩家接受資訊,與遊戲互動,影響遊戲,遊戲反饋資訊的這樣一個迴圈。資訊是互動的彈藥,是策略的基礎材料,已知資訊作為安全感來源和決策的輸入,未知資訊作為鉤子吸引玩家探索,作為不可控因素帶來變化等等。
“遊戲有效資訊度”就是指整個遊戲系統所提供的內容,透過一定規則展現後,對於玩家預期來說,具有意義的資訊量。這個資訊量越大,我們可以認為遊戲內容越豐富,遊玩價值和可玩性往往更高。
遊戲的資訊豐富度當然不完全等於可玩性,但是對所有玩家或人類來說,都有不停獲取新資訊的慾望,同時人類又是高效的模式識別機器,當玩家熟悉特定模式和規律,一直沒有新資訊攝入,則會快速感到無聊。資訊刺激,本身也是可玩性的重要一環。
接下來我們舉個具體例子,來探討一下有效資訊度的概念:
舉例,現在我們做了一個線性關卡的遊戲A,每一關擊敗一個不同的敵人,即可去下一關,直到通關,關卡與關卡之間並沒有直接的聯絡。
假設我們製作了一系列的關卡內容,例如10關,我們預期這些關卡玩家會遊玩一次,通關後不再想玩,我們先假定,這個遊戲的有效資訊度為10。
以此為前提,有幾個有趣的問題:
問題1
這時候,加入一個設定,通關後所有關卡會打亂,假設我們預期玩家會因為這個設定再通關一次,耗費了玩家雙倍的時間。
那這個遊戲的有效資訊度會變成20嗎?
如果不是,那是更偏向10還是偏向20?
問題1探討
很顯然,不是20,重點就是有效資訊度不等於遊玩時長,而是玩家對內容的感知,能接受到的有意義的資訊量,而關卡若只是打亂隨機,對於玩家遊玩來說,關卡資訊並沒有變化,換句話來說沒有新的資訊給到玩家,也就沒有新的體驗。所以問題1的遊戲有效資訊度應該是接近並略大於10的一個值。注意,我們在此並不關心有效資訊度的絕對精準值(也無法做到完全精準),我們只需要儘量定量,並且透過對比分析等方式逼近實際值即可。這個問題也呼應了複雜系統複雜度的度量,純隨機和純秩序,複雜度都很低。(所以優秀rogue的重玩性並不是只來自隨機)
問題2
在問題1 的討論我們已經知道,遊玩時長和次數是結果,並不等於有效資訊度。在這個基礎上,所有關卡打亂後,讓玩家可以一直重複遊玩,每次遊玩的關卡順序都會變化,那遊玩價值又有什麼變化?
問題2探討
本質上消耗的是順序不同帶來的體驗價值
和前面的資訊呼應,純隨機和純秩序都是資訊量較低的狀態,也就是遊玩價值不會很高
同時,討論線性和非線性系統也有額外的意義,若關卡間的關聯小,則先A後B還是先B後A並沒有本質區別,而若關卡間是非線性地互相影響,則順序本身就被賦予了意義,或者說被賦予了額外資訊和複雜度,則可能產生更多的有效資訊度。所以重點不在於關卡打亂的隨機,而是在於關卡間的關聯設計,是否賦予這個隨機足夠的意義。
問題3
在原方案基礎上,多做了1關,並且設定為通關一次後,再次通關才可以玩到這個額外的關卡。
假設每個玩家都因為這個設定,重新通關一次,那此時這個遊戲的有效資訊度大約是多少?
和直接放出11關給玩家的區別是什麼?
問題3探討
和問題1的探討類似,也許這個遊戲的遊玩時長的度量接近翻倍,但有效資訊度只是接近11左右,這意味著,玩家在近翻倍的體驗時間中,體驗的質量其實是有所下降。其實和直接放出11關給玩家沒有本質的區別。那麼為什麼還有很多遊戲會使用這個技巧來延長遊玩時間呢?其實是來源於除了上述遊戲機制本身之外帶來的可重玩性,類似問題2討論的非線性關卡,這些額外的因素,使得遊戲的有效資訊度在其他維度得到了提升,所以不屬於問題3的討論範疇。這個例子想要說明的是,有效資訊度的分析一定要客觀剝離其他因素,否則將失去參考價值。
問題4
還是這個線性關卡的遊戲,什麼都沒變,但是給與一個額外目標,通關時間,然後允許玩家重玩,遊戲有效資訊度又如何?
問題4探討
這個問題,理論上有效資訊度相對於原方案並沒有太大變化,但是我們直觀會認為,相比原方案,該方案更具可玩性。這個問題想要說明的是,技巧挑戰等內在驅動力,會為相近有效資訊度的遊戲,帶來較為不同的可玩程度。這也是證明遊戲有效資訊度並不完全等於可玩性的例子。
問題5
基於問題4的額外通關時間目標的設計,更進一步探討,若是遊戲中原本就有一個道具,本來強度一般,但對速通有幫助。因此,玩家在沒有通關時間目標時,和有通關目標時間時,有效資訊度的變化?
問題5探討
我們可以看到,除了目標的變化,其他都沒有區別,理論上,資訊量完全沒有差別。但是實際上很顯然,後者有效資訊度一定大於前者。這就是“有效資訊度”定義裡的“有效”的意義:一份資訊,透過機制,轉化為對可玩性有意義的資訊後,才能稱為有效資訊。具體見下一章的探討。
經過上面幾個問題,大家應該可以理解遊戲有效資訊度的意義,它雖然不等於可玩性,但是是對一定時間內,玩家體驗的豐富有效程度的一個度量。它尤其能幫助我們思考時摒棄無效遊玩時長的陷阱,並在一定程度上幫助我們對比衡量遊戲設計優劣。
七、有效資訊度與遊戲設計
有效資訊度如何切實幫助設計?我們應該如何看待,操作遊戲中的資訊?
玩家遊玩遊戲的過程可以視作一個接受資訊,處理資訊,獲得資訊反饋的過程。設計師提供一系列的資訊給與玩家處理,玩家在處理這些資訊的時候,透過自身的操作和策略等,收穫不同的反饋。對於一個玩法,持續有節奏地給與玩家適量的,有意義的新資訊讓玩家舒服地處理,則從資訊角度來說是一個好的玩法。
遊戲的資訊不是全部一次性釋放給玩家的,一個遊戲的資訊有很多種維度,例如規則資訊,遊戲世界環境的資訊,關卡以及挑戰的資訊,反饋及收穫的資訊等等。玩家的目標挑戰反饋迴圈中,每個環節都在不停釋放新的資訊。而新的資訊的意義是什麼?是產生新的變化。
但是,如前文所說,一份新的資訊,產生的變化往往不是一份新的遊玩體驗,而我們的目標,就是讓一份資訊,產生十份變化,最終轉化成兩份可玩性。
有限的內容下,如何規劃這些資訊將是關鍵。直接說幾種方法:
1、規則輔助對手產生新資訊
拿棋類遊戲-象棋舉例,象棋所有規則資訊,是不多的。而戰場環境資訊(當前棋盤情況)是千變萬化的,我們很容易得知道,象棋不是靠規則資訊的逐步釋放來產生變化,同時象棋又不帶任何隨機性,所以是個很好的例子,幫我們聚焦到這一方式——規則輔助人產生資訊。
人人間動態的博弈,帶來持續可玩性,不是什麼神秘的事情,但在資訊角度,其實是有要求的,人產生有意義的內容,需要規則進行引導,什麼叫引導?例如象棋裡對所有棋子移動方式的限制,就是一種引導,這些限制使得玩家能夠部分預料下一步對方會如何行動,從而結合場面,最終給與當前回合玩家,一個正在不停變化但又有決策參考意義的資訊,這個資訊將會結合對方玩家的行棋風格,水平等因素,產生多局之間的變化。
一個好的機制或者說規則,告訴玩家能做什麼是基本,更重要的是約束玩家不能做什麼,將無限的選擇空間壓縮到合理範圍且不策略收斂,並且讓對手每個選擇反饋出新的資訊,例如,單步中沒有明顯的最優解,那是防守還是激進換子,其實暗藏對手風格資訊,這個資訊,是基於規則但超越規則的額外資訊收益。
2、輔助玩家自身產生新資訊
我們可以把遊戲抽象成目標挑戰反饋三者迴圈,整體遊戲由無數個大小迴圈巢狀組成。從資訊角度我們可以有新的視角看待這個迴圈,每個部分都能透過設計輔助玩家產生新的有效資訊。
對於目標,往往是最明確簡單的資訊,對於單個迴圈一般不會刻意藏匿目標的資訊,因為對於設計來說,單個迴圈目標越明確越清晰越好。但整體上,目標可以有多個,可以逐步釋放,可以引導玩家自身賦予目標,有非常大的操作空間,目標往往是一切的起點,會成倍放大其他資訊的效果。
最好的方式,就是刺激玩家自己賦予自己目標,例如沙盒遊戲,透過包裝世界觀等資訊,讓玩家想要爬上那個跟任務無關的山頂,想要拯救某個無關緊要的村民。設計師提供的資訊作為外因驅動作為引導,玩家自發產生的目標作為強大的內因驅動。
對於挑戰,分為挑戰本身和玩家克服挑戰的過程,例如策略和操作。對於這部分資訊的自發產生,來自挑戰本身需要提供足夠高的適應性,使得玩家自身情況的不同,能在挑戰和克服挑戰的過程中體現出來。同時要足夠敏感,玩家細微的變化,最好都要所體現。
舉個例子,完成挑戰的方式有多種傾向,玩家根據自身喜好,能力,選擇其中一個方式進行挑戰,此時,玩家所有的操作和策略,將會產生基於自身的獨一無二的資訊。
對於反饋,這裡重點不在給與玩家的反饋,而在於完成挑戰後給與系統的反饋,重點在於前後不同挑戰間的關聯變化,也就是說,需要配合上述挑戰部分,玩家做出的細微區別,反饋需要讓系統對接下來的挑戰產生足夠影響,就會產生指數增加的變化。如此配合,也是湧現的一種設計方式。(具體後面章節細說)
3、促進多人之間產生互動
和第一點本質一樣,稍有區別,留作思考題吧哈哈,分析麻將和雙人棋類間的區別即可。感興趣的朋友可以參考筆者的麻將相關的文章:https://mp.weixin.qq.com/s/RUFNdkrFy8e2oqEhsYp_Xg
4、逐步釋放和重組資訊
玩家自發發現資訊,而不是設計師塞給玩家,發現的過程本身是一種有意義的獲得行為,會豐滿整個遊戲。這是一種較好的逐步釋放資訊方法。
巧妙地重組資訊,來重用資訊。這點比較好理解,就不贅述了。
八、複雜系統與湧現應用
上面的章節簡單介紹了一下複雜系統以及和遊戲的一些關聯,由複雜系統啟發,提出了一個遊戲度量方面的不成熟想法,拋磚引玉。接下來的章節將會以實際的原型設計為案例,來深入探討一下複雜系統和湧現設計在遊戲設計中的應用。
思維實驗
第一步我們先來做一個思維實驗,前文介紹過,現實世界就有很多複雜系統,我們不妨試著挑選現實中的某個複雜系統,假設我們是全能的計算機之神(狗頭),已經把這個系統百分百實現出來了,同時,作為設計師,我們知道,擬真不等於好玩,那現在,我們需要思考一下這個系統中不好玩的東西是什麼,去掉,好玩的東西是什麼,強化。再新增一點佐料,加入一點目標,設定一些挑戰,給與足夠的反饋,這個時候,相信我們的腦海裡已經有一個也許簡陋,但也能成立的遊戲了。
對現實的抽象和剪裁過程尤為重要,我們會逐步抽絲剝繭,把不重要的外在去掉,看到湧現的核心,來隨便舉個例子。
假設我們取現實中的經濟系統作為我們的複雜系統,我們先賦予一個簡單的目標,就是賺得多少金錢。然後我們刨除掉一些冗餘的東西,最終可能剩下這麼一個系統:
系統中有若干個經濟理性人,包含玩家在內,他們會想辦法以最小的代價去獲得最大的利益,這些決策實體我們統稱為“代理(agent)”——代理(agent)是一個計算機,人工智慧和經濟學領域的術語,指的是接受資訊,進行決策,執行行為的主體,可以是人,AI,組織,一段程式等等。在這個過程中,代理們會和其他代理,和環境進行互動,進行時間,資訊,資源,收益的不停交換。想象一下,當這個系統運轉起來,我們在這個系統中的獲得的樂趣來源於什麼?與一個普通的交易模擬遊戲的差別在哪裡?
這個簡單的系統拋開聲光電反饋等冗餘外在,我們可以發現,玩家的核心策略是收集資訊,根據資訊做出自己收益最大化的決策,自身的決策又會影響整個系統,系統改變其他代理的行為決策,每個代理的行為都相當簡單,但整體上會湧現出很多有趣的現象,例如哄搶,壟斷,通脹通縮等等現象,使得挑戰/問題/謎題動態變化,像是多隻蜘蛛在彈奏同一張蛛網。
以上,這個複雜系統在提供有意義的變化,產生新的可玩內容,這是重玩性的根本。同時,由於玩家對環境的影響足夠深遠,反饋會更強。
讓我們再對這個遊戲加點料,假如這個遊戲加入了另一個玩家,雙方有同樣的目標,這時候我們很容易發現一點,複雜系統不可控的部分,正在平衡優劣勢,拉近不同水平玩家距離,同時部分降低操作和策略門檻。
更進一步,我們會發現,就類似於現實的經濟系統,我們這個簡陋的複雜系統本身就是一個自適應系統,有時候像海綿,吸收玩家和代理們的重大行為,減小影響,有時候又像喇叭,放大一些微小的噪音。而在這個時候,我們如果再為這個簡化版的經濟系統加入一些引導性的設計,例如價格和資源消耗的調控(類似央行和美聯儲),可以去操控它的海綿或者喇叭,達成改變和控制遊戲節奏的目的。
再進一步,我們不滿足於單個目標,若是我們加入了多個勝利條件,我們會發現,基於複雜系統本身的多目標,更好設計,更能滿足不同型別玩家的遊玩需求。
最後一步,讓我們把對方玩家又去掉,把玩家會進行的一些行為和代理的行為進行比較,把一些簡單的,玩家會額外進行的侵略性較強的行為,或是非理性的行為,賦予代理。並且把和玩家的對抗的目標改為和代理對抗,我們就會發現,相對於其他遊戲,在玩家感知中,代理會更接近真實玩家。
當玩家面對一個整體的複雜系統,去對抗其中的一些代理時,要比對抗某一個NPC時,對系統智慧的評價更高。因為玩家對一個客體的智慧的評價,除了智慧行為本身,還由很多和智慧不相關的因素組成,例如外觀,強度,數量,環境等等。例如光環設計師在GDC分享過的一點,只是單純的增加敵人的強度不改變AI,玩家對敵人的智慧評價就會更高。例如帕魯正因為遠離人的形象,玩家對其智慧期望低,反而覺得其智慧表現不錯。複雜系統的不可控和可解釋是一種更好的“難度放大器”,同時,複雜系統放大行為的反饋同樣適用於代理,這就是在解釋和掩蓋一些非智慧行為。
透過以上這個思維實驗,我們可以大致總結一下複雜系統和湧現的優勢,同時也是我們設計他們的目的:
- 產生有意義的變化,來提供新的體驗
- 增強玩家對環境的影響與反饋
- 平衡優劣勢,拉近不同水平玩家距離,降低操作和策略門檻
- 改變和控制節奏
- 承載不同型別玩家的遊玩需求
- 部分替代其他玩家的作用
以上思維實驗中,每位朋友選取的複雜系統可能都不一樣,但當我們多思考幾個複雜系統,將真實世界抽象的過程中,我們會發現,複雜系統和湧現可以分為兩個偏向:
- 以代理(人,動物,AI等)為核心的複雜系統,例如蟻群,公司,社會,經濟系統等。
- 以客觀規則為核心的複雜系統,例如基於物理化學規律的湍流,天氣,N體運動等。
當然兩者混合也是一類,這裡不討論,只探討這兩大類,這兩大類核心區別當然就是代理主體的存在與否。對於遊戲來說,這兩個偏向的設計方式相差非常大,第一類代理為核心的遊戲有模擬人生,SLG等等,而我的世界,noita,以及我們自己的遊戲流浪方舟,更偏向第二類。
接下來,我們會透過七個玩法原型,一一來窺探湧現設計的一些精華。這些都是紙面原型,只需要簡單的紙筆,或者一些簡單的道具例如骰子就可以實現,感興趣的朋友可以跟著做出來玩一玩,會有更深的理解。如果對設計不感興趣的朋友,可以直接跳到第十六章結論和探討部分。
九、原型1隨機平替湧現
1.1設計目的
原型要求
- 儘量簡單的規則,只利用單純的數字,加減法
- 能夠成立的基礎博弈,不會發生策略收斂
- 能夠提供一定的策略深度,拉開不同玩家之間的差距
- 有隨機性的空間,用隨機來模擬湧現
- 能夠展現重玩性,優劣勢平衡等特徵
隨機和湧現的異同:
- 由於一個由確定性匯出混沌,另一個由隨機性匯出混沌,對於玩家的感知來說,前者的掌控程度遠大於後者,也就是說,玩家會更覺得湧現的結果和自己的決策或者輸入相關。同時,玩家對於兩者發生結果的歸因會有差異,隨機性的結果玩家會更歸因於系統,湧現若是設計的好,玩家會更歸因於自身。這個特性,是湧現優於隨機性非常重要的一點,也對遊戲設計有非常重要的意義。
- 第一點是感知上的掌控程度,而實際上,對於玩家來說,湧現部分理論上也是可掌控的,對不同情況的玩家適應性會更強。
- 兩者從確定到不確定的起始節點,是完全不同的,隨機*隨機,某一層隨機,往往就是混沌的起點,相對離散,而湧現則連續很多,這一點對設計也很有意義。
- 湧現是確定性的,就像前文展示的邏輯斯諦方程一樣,每一步迭代都是確定的,可計算的,只是超過計算能力的部分,對於計算者來說,就是混沌不可預料的。
- 對於隨機來說,即使不同隨機結果的機率已知,對於計算者來說,仍舊是不可控的結果,若疊加了很多重隨機,也就是我們常說的隨機*隨機,這個時候更容易出現對於機率預期不清,於是完全放棄這部分計算,變成混沌不可預料,對於這部分,隨機和湧現在結果上有相似之處。
然而,兩者的混沌部分,仍舊有幾個非常重要的區別:
還有一些異同,總結在下表中:
綜上,由於隨機和湧現在不可控部分,有一定相似的特徵,並且隨機的實現難度遠小於湧現,所以原型一般先用隨機來平替湧現,來驗證可行性。
1.2玩法規則
玩法概述
雙人遊玩,有三個戰場,每個玩家四張手牌,共四個回合,每回合雙方放一張手牌到戰場,最終結算點數,三個戰場中獲勝佔領兩個以上的玩家獲勝,平局按點數分勝負。
回合階段:
- 雙方各從6張1——6的數字牌中隨機抽取4張牌
- 從5種場地效果中隨機抽取3個場地效果,先不揭示
- 揭示第1個場地效果,雙方各自選擇放入一張手牌在該戰場,背面朝上,然後揭示
- 重複上述,直到3個戰場各放置3張牌
- 第4回合,雙方將剩下的最後一張牌放在任意戰場,雙方不知道對方放置情況(拿兩張無用牌掩蓋)
- 揭示最後一張牌,結算結果
結算階段
優勝場地數量相同,則比較總點數,總點數高的玩家勝利
總點數相同,則視為平局
例如場地內是1和2,場地效果是[小於等於3的數+1],則最終變為2和3
- 根據場地效果對每個數字單獨進行修正
- 對比每個場地內雙方的卡牌點數總和
- 總和較大的一方獲得該場地的優勝,一樣則平
- 優勝場地較多的玩家取得勝利
5個場地效果
- 單數卡片結果+4
- 雙數卡片結果+3
- 大於等於4的卡片結果+1
- 小於等於3的卡片結果+4
- 投六面骰,投中點數在該戰場視為7
1.3設計思路
基礎
- 用簡單的數字創造1個原型玩法
- 最小玩法為雙方各出1個數字比大小,大者勝
加入策略對抗和策略深度
- 第1層:引入3局2勝的上校博弈,考驗玩家的資源分配能力
- 第2層:加入第4張牌,第4張牌可以作為關鍵牌逆轉局勢,也可用來詐唬,考驗玩家的博弈能力
- 兩層策略相乘,創造出足夠的策略深度
隨機和對抗隨機
- 透過資源分配對抗隨機
- 透過推理對抗隨機
- 透過博弈對抗隨機
- 考慮場地效果的後續可能性去進行資源分配,對抗場地效果的隨機性
- 根據對方前3張牌,推理對方最後1張牌的數字,對抗對方手牌的隨機性
- 在牌處在劣勢的情況下,制定高風險高收益的策略,進行詐唬和偷雞,對抗我方手牌的隨機性
- 第2輪隨機,隨機範圍小,兩層小隨機只是承載一點重玩性和策略拉差,不加入過多策略負擔
- 透過場地效果拉平各數字的價值,對抗第1輪隨機,降低隨機手牌對勝負的影響,防止策略收斂
- 與第一輪隨機同理,揭示第1個效果後,後續只有6種組合,揭示第2個效果後,最後1個場地只有3個選項,玩家只需要在個位數的選項中,決定自己的資源分配策略
- [雙數+3],[單數+4],單數額外+1,保證單雙數價值相同
- [大數+1],[小數+4],小數比大數的加成多3點,拉近大小數價值
- 隨機1個數字變為7,第3輪小隨機,提升廢牌(吃不上其他場地效果的牌)的價值,為玩家提供翻盤或詐唬的可能
- 第1輪隨機,隨機範圍小,限制了不可控的部分
- 決戰階段,對方最後一張牌只有3種選項,玩家根據3個選項進行推理即可
- 保證任何拿法,一方一定有至少一張單數雙數,至少一張小牌和大牌
- 卡牌6隨4
- 場地效果5隨3
- 玩家對隨機的對抗
1.4與撲克的對比最佳化
原型1已經以比較優雅簡潔的方式實現了一個隨機替代湧現的方案,但是仍有不足之處,我們拿撲克來進行對比:
資訊暴露密度
- 最佳化:在翻地階段雙方輪流出牌,降低暴露密度,後手玩家可根據先手玩家出的牌和場地效果去出牌,降低了後手玩家的推理量,後手玩家在翻地階段取得了資訊上的優勢,需要平衡雙方的優劣勢,可以在決戰階段,要求後手玩家先出牌並揭示卡牌所在場地,讓先手玩家在決戰階段獲得資訊優勢
- 但上述的最佳化會引入先後手問題。
- 撲克的資訊暴露頻次高,資訊量較小,每翻1次牌,每加1次注就暴露一層資訊,且前後關係聯絡緊密,方便玩家進行推理,負擔較低。
- 原型1的資訊暴露頻次低,但資訊量較大,每次翻2張牌,分析量翻倍,且需要透過全域性的卡牌和地牌進行推理,負擔較高。
資訊可控程度和資訊範圍
- 最佳化:隨機場地效果後,直接揭示全部場地效果,或先揭示前2張,降低不可控的資訊。
- 但是加入加註設定後,不揭示場地效果更好。
- 撲克的河牌是已知的,不可控的資訊是對方的2張手牌,且玩家數量會越來越少,不可控的資訊會逐漸減少
- 原型1中玩家有4張卡牌,對方的卡牌與卡牌分配策略,對於玩家來說是不可控的資訊,相對撲克數量翻倍,但因為只有1——6,資訊範圍會相對減少
- 原型1中還有3張場地效果,場地效果陸續揭示,在未揭示之前,這也是一部分不可控的資訊
勝利條件
- 撲克勝利條件簡單,用卡牌花色和數字進行大小對比,玩家很容易處理
- 原型1的勝利條件,涉及到優勝區域計算和點數計算,玩家不容易處理
1.5原型1總結
原型1透過非常簡單的規則,已經具備一定的可玩性和深度,同時具有重玩性。同時用兩道非常受控的隨機來模擬湧現,已經可以感受出前述的兩個特性:
- 產生有意義的變化,來提供新的體驗。
- 平衡優劣勢,拉近不同水平玩家距離,降低操作和策略門檻。
這是一個很簡單的原型,主要是展示怎麼用隨機來平替湧現,以及湧現在遊戲中的大致感受,我們還可以以這個原型為基礎,不斷擴充規則,例如加入撲克下注的玩法:
只需加入一個規則,前三回合,玩家可以在每一輪揭示戰場上的牌之後,點數大的一方進行下注,對方必須跟注才能繼續下一輪。同時一方也可以隨時放棄,另一方拿走所有籌碼。
如此設計,在原先的策略基礎上加入了心理博弈,更發揮出每回合資訊暴露的策略樂趣,提高策略上限。
原型1是一個簡單的基於規則湧現的設計展現,接下來會從抽象即時戰鬥的原型開始,逐步探索基於代理的湧現設計。
十、原型2即時戰鬥抽象
2.1設計目的
我們來嘗試抽象一場典型的即時制戰鬥,先將戰鬥簡化為1v1的兩個玩家,各操控一個單位,勝利目標是擊殺對方單位。其他各種衍生玩法都可以視作該單局最小戰鬥的變種。進一步抽象,玩家是在調配戰場中的所有資源,達成戰勝敵方的目的,將敵我雙方的所有資源分為如下幾個型別:
- 直接關聯勝負的生存能力,例如血量,續航等
- 直接關聯勝負的輸出能力,直接間接傷害,限制敵方續航等等
- 直接關聯勝負的生存輸出能力變體,例如機動性,限制敵方機動性的能力(同時包含生存和輸出能力)
- 前三個能力的間接版本,例如召喚物或環境的各項能力或者是他們賦予關鍵單位的能力
和之前的原型一樣,我們要用最簡單的規則,只用數字的加減,來模擬這個戰鬥模型,這個原型同樣要達成以下幾個目的:
- 能成立的基礎策略博弈
- 對即時制1v1戰鬥有足夠準確的抽象表達,尤其是和戰鬥策略緊密相關的屬性,比如機動力
- 足夠健壯,適合擴充,作為後續湧現設計的基礎
2.2玩法規則
玩法概述
雙人對戰,玩家將資源投入到輸出/生存/機動屬性上,機動屬性可再進行一次分配,分配到[進攻]和[躲避]上,雙方互相攻擊,造成的傷害由玩家分配的資源情況決定,血量先歸0者失敗
玩法流程
受擊方[躲避點數]與進攻方[進攻點數]對比,每高1點,進攻方造成的傷害減少20%,至多減少100%,沒有進攻高,則進攻方造成傷害不變
- 將15點基礎點數分配到各自戰鬥單位的輸出/生存/機動屬性上,然後公示分配情況
- 將輸出屬性*10作為戰鬥單位的攻擊值,將生存屬性*100作為戰鬥單位的生命值(非必要,為了計算簡單,減少小數計算)
- 每回合戰鬥開始時,將機動屬性上的基礎點數進行1次分配(機動屬性高的一方可額外獲得1個點數),分配至[進攻]行為和[躲避]行為上,然後公示分配情況
- 高機動屬性的一方先進行攻擊,根據攻擊值對對方造成1次傷害,傷害需要根據雙方行為點數進行1次修正
- 雙方攻擊結束後,沒有單位血量歸0,則從步驟3重新開始,有單位血量歸0,結束戰鬥
2.3設計思路
先採用最小單位,兩個戰鬥單位互相攻擊
用離散的回合來模擬即時,更直指本質
將戰鬥單位的優劣勢抽象成3個維度,輸出/生存/機動
引入點數,玩家需要分配點數到3個維度中,用簡單的數字進行戰鬥模擬
- 機動能力高,則輸出/生存能力就會降低
- 第一輪分配,透過限制點數的總和,模擬了機動能力對輸出/生存能力的影響
第一輪分配結束後,輸出和生存點數固定,機動點數可再進行分配
- 機動能力可用於追擊對方,提升輸出能力
- 機動能力可用於躲避攻擊,提高生存能力
- 機動點數稍微比對面高,則在每輪的攻擊中佔據優勢,但高於一定值後,將不再獲得收益
- 機動點數的再分配影響戰鬥單位的傷害,再次模擬機動能力對生存/輸出能力的影響
- 機動點數的再分配,每一輪戰鬥都允許不一樣,模擬了機動能力的轉化能力
2.4原型2多V多擴充
可以很簡單的將原型2擴充到多VS多的規則:
額外多一個目標選擇階段,機動力低的單位先開始選擇(相等時隨機),選定目標後本回合不能改變
目標選擇完成後,進入機動性分配階段,規則有所補充:
機動性的進攻點數,只能分配給該單位之前選的目標,而躲避點數,可以分配給所有以該單位為目標的敵方
但是,每多分配一個目標,機動性額外消耗1
所有單位分配完機動性,則開始戰鬥
戰鬥結算順序,所有同時結算即可
結算時規則和基礎戰鬥規則一致
2.5原型2總結
透過讓玩家在戰鬥中將有限的資源進行分配,體現出了機動能力的兩個特性
- 可自由轉化成輸出/生存能力,對輸出/生存能力產生影響
- 當機動能力高於敵方過多時,將反而變成劣勢
在原型2可很簡單的擴充至1對多和多對多的玩法,進一步模擬複雜戰場上的情況,初步證明了原型2的擴充性較強
資源分配的還能體現出對戰遊戲中的一些設計思路
- MOBA遊戲中的行動指令(移動、攻擊、釋放技能)
- 回合制遊戲中的行動指令(攻擊、防守、釋放技能)
- 卡牌遊戲中的行動費用
- 而在設計戰鬥單位風格時,也是對這3個方面進行資源分配
- 可留有一定的空間讓玩家進行分配,比如說加入天賦系統和養成系統
- 戰鬥單位的所有優劣勢都可抽象成輸出/生存/機動3方面
- 在戰中可進行再分配的機動屬性,為玩家在局中創造出了策略空間,讓玩家去自主的進行變化,創造不同的遊戲內容
原型2策略博弈分為兩層,一層為開始的三個初始戰鬥資源分配,一層為戰鬥中機動力的使用,這兩層策略和對方的資訊關係都不大,更偏心理博弈,單看這個原型策略深度不夠,但作為後續原型的基礎是足夠的。
十一、原型3搶佔資源
3.1設計目的
到這一步,我們有了一場基本戰鬥的抽象,在原型3之前,我們先將原型1的思路融入原型2,再次從另一個角度分析一下湧現
玩家已有單位間的變化,與玩家變化統一,並且互相影響,則抽象為:
玩家在削弱敵方玩家的生存,輸出和機動能力,最終目標是生存能力歸零
同時,玩家防禦敵方對自身這三種能力的削弱
在以上過程中,對環境產生影響,並受到環境的反饋
環境的反饋可能有益於我方或敵方,並且分為可控和湧現部分
1可控的部分
- 玩家有意識追求有利於自身的可控部分,需要儘量簡單並控制數量,因為環境本身需要儘量對雙方都公平
- 這部分真正的目的是刺激玩家與環境的互動,來作為湧現的觸發器
- 例如玩家為了摘蘋果砍樹,樹倒了砸中玩家或敵方玩家
- 值得注意的是,可控部分對於雙方玩家最好是一致的設計,因玩家的各種差異而自然分出有益與否,降低資訊複雜度
2湧現的部分
- 不可控部分,有益於敵方還是我方沒有區別,但是設計上,傾向於有益我方的可控部分引出的湧現,是同樣有益於我方的
- 同時,湧現的部分,玩家不是完全不可控,而是掌控程度較低,與可控部分是一個漸進變化的過程,同樣作為玩法上限
- 最後,湧現部分需要設計師儘量可控,例如傾向於幫助弱勢的玩家等等,但是需要儘量讓玩家覺得合理
忽視原型2,我們從頭抽象一個符合我們玩法的最小模型來實現上述理論:
- 最簡的不可控部分用隨機數進行表達,數字越大優勢越大
- 最簡的可控部分與核心機制保持一致
- 將玩家的能力抽象為三部分,輸出能力,生存能力,機動能力,用數字表達
- 機動能力高的一方有優勢,但是邊際效益快速遞減
- 機動能力本身有其作用,同時對生存和輸出能力有加成
戰鬥開始時雙方自由分配9點點數到三大能力上
戰鬥開始時,根據分配到機動性上的點數M進行隨機1-M,雙方較大的一方額外加1
雙方可以將最終的點數M自由分配到輸出能力和生存能力上,作為臨時輸出和臨時生存
雙方互相用自身的輸出對對方的生存造成傷害,優先扣除臨時生存,回合結束,清空臨時輸出和生存
迴圈回合,生存能力先歸零的一方失敗。
接著我們將湧現抽象為:
臨時加成,永久加成,臨時代價,永久代價
自選風險,高風險高收益
考驗類,輸出or生存or機動性大於等於N時,獲得加成X
臨時代價以及臨時加成類,輸出or生存or機動性臨時減X,臨時獲得加成X
永久代價永久加成類,輸出or生存or機動性永久減X,永久獲得加成X
最後我們將湧現拆分為幾個部分:
- 玩家可控互動部分,包含玩家可控的互動,湧現系統給與的反饋。玩家能夠給與湧現系統的有a資源資訊,當前/最大/基礎/臨時的輸出,生存,機動能力的數值資訊;b資源本身,消耗或變化輸出,生存,機動能力本身;c玩家的選擇或操作互動。
- 可控互動部分對湧現系統的影響,湧現系統的自組織。湧現系統本身內部的邏輯需要支援獲取外界的資訊,並且在內部進行交換。
- 湧現系統自發進行的變化,對玩家產生的反饋。
基於以上的分析,我們來看看原型3的實際規則:
3.2玩法概述
基於原型2的基礎戰鬥,改為每個回合都會產生三個臨時屬性,臨時攻擊,臨時生命,臨時機動力
每個回合依次出現三個隨機資源,雙方投入自己的三種臨時屬性進行爭奪,競價模式
爭奪完三個資源後,使用剩餘的臨時屬性進行基礎戰鬥
3.3具體規則
- 戰鬥開始時雙方自由分配N點屬性到攻擊,生命,機動力上,這三個屬於永久基礎屬性,同時揭示結果
- 從若干種資源中隨機抽取三個資源放在場上,不揭示
- 每個回合開始時,揭示一個資源,並根據當前基礎屬性,產生對應點數的三種臨時資源
- 雙方開始競價爭奪這個資源,一方可以出價N點臨時屬性,另一方可以選擇大於對方點數的臨時屬性,或者放棄,以此類推
- 獲得資源的一方,即時觸發資源的效果,完成觸發結算資源後,進行下一回合。
- 當三個資源都爭奪完成後,雙方用當前的臨時資源進行一輪戰鬥,戰鬥規則和原型2一致,額外的,超過臨時生命的傷害扣到基礎生命屬性上。
資源具體效果
6張資源消耗卡,臨時攻擊/生命/機動,永久攻擊/生命/機動
6張資源獲得卡,臨時攻擊/生命/機動,永久攻擊/生命/機動
每次隨機資源效果時,從消耗卡和獲得卡中,各隨機抽取一張,組成該次資源的效果
每種組合有不同結算效果,具體如下:
1.消耗臨時XX,獲得臨時XX
玩家自己選擇1-10的N點消耗的代價,N不能大於自身擁有的點數
投一個10面骰子,點數需要大於等於N才成功,成功後收穫是代價的2倍,失敗代價不返還
舉例:
抽到了消耗臨時攻擊,獲得臨時機動,這時候玩家有6點臨時攻擊
玩家可以選擇1-6的消耗,例如選了5點,則投10面骰子,大於等於5,則判定成功
該玩家扣除5點臨時攻擊,並且獲得了10點臨時機動,反之,則扣除5點臨時攻擊,什麼也沒獲得。
2.永久換臨時
玩家自己選擇1-10的N點永久代價(扣除基礎屬性),N不能大於自身擁有的點數
10面骰子需要大於N才成功,成功後收穫是代價的5倍,失敗代價不返還
3.臨時換永久
玩家換1點永久資源,玩家有N點該臨時資源,10面骰結果小於等於N才成功
例如該玩家抽到了臨時生命換永久生命,該玩家有7點臨時生命,則10面骰投中小於等於7就會獲得1點固定生命
該臨時資源只用於判定,不會消耗
4.永久換永久
固定1點資源換2點永久資源
不需要判定,直接消耗1點對應資源,換取2點目標資源
3.4設計思路
- 該原型模擬的實際情境是,若是引入環境的湧現因素,玩家某一段時間片段內,其實是會將這段時間的臨時資源投入到環境優勢的獲取上,例如經典的野怪,河道buff,或者是佔據一個優勢地形。這些戰中的優勢,其實都需要玩家拿一定資源進行交換,比如玩家移動到一個優勢地形,其實就是拿一部分機動力換取地形優勢,地形優勢如果是加防禦,其實就是我們的臨時機動力換臨時生命。其他同理,所有戰中不直接和敵方進行戰損交換的行為,都可以用這個原型進行抽象表達。
- 同時,該原型的目標之一是用極簡的方式來實現湧現的適應性,尤其是對戰局優劣勢變化的適應性。
- 引入玩家對抗不可控的體驗,透過讓玩家自由選擇風險回報策略
- 同時玩家的決策透過隨機性,間接地影響系統的結果以及接下來的戰局,部分模擬湧現的過程
- 用一個10面骰子實現了簡單的正態分佈,保證收益最大化在中間數,低值低風險低收益,高值高風險高收益
3.5原型3總結
只說這個原型,還有一些最佳化的空間,例如:
1生存能力的資源獲取隨機,會造成節奏拖慢,我們可以把資源獲取中的永久生存能力的隨機獲取去掉,更進一步,可以直接去掉臨時生命力,只保留臨時機動和臨時攻擊的設定。
2機動性補充公式需要最佳化,實際不是輸出或生存掉一點,機動漲一點。經過驗算後可以維持機動力設計,但需要儘量保證15點分配左右以及555均衡分配,則誤差較小
最後,非常建議大家上手玩一下原型3,其中設計親手遊玩體會更深,原型3已經具備一定的可玩性,重玩性,湧現平衡優劣勢,玩家對戰局環境的影響和反饋也體現了一部分,同時,即使沒有中央控制系統,該原型也體現了一部分對節奏的調控能力,還算比較優雅。
同時,讓我們回憶一下複雜系統和湧現的目的,也是我們實現的目標:
- 產生有意義的變化,來提供新的體驗
- 增強玩家對環境的影響與反饋
- 平衡優劣勢,拉近不同水平玩家距離,降低操作和策略門檻
- 改變和控制節奏
- 承載不同型別玩家的遊玩需求
- 部分替代其他玩家的作用
這個原型,在一定程度上,已經將前4條優勢體現出來。然而,這還只是一個比較簡單的原型,如果我們將資源視作一個單元,當前方案只有一種輸入,單個玩家的輸入。也只有一種輸出,對單個玩家的輸出。這是規則類湧現的一個典型,所以接下來,我們將嘗試基於代理的湧現原型設計。
十二、原型4九宮格湧現
4.1設計目的
我們先假設單局戰鬥中存在一種第三方單位作為代理,這種單位需要實現複雜系統的6個目的,那他們如何最簡單最直接的實現?如何由目的倒推對複雜系統的要求?具體分析如下:
1.產生有意義的變化,來提供新的體驗
提供新的驗證場景,將我們想要考驗玩家的點放在這些單位上來實現。新的驗證場景,例如如果要考驗玩家的形狀,或者其他單純敵我單位戰鬥考驗不到的東西,則要先考慮,是否可以放在敵方單位上面,若是不能放在敵方單位上再考慮放在複雜系統上。
反過來思考,什麼是敵方單位不能實現的,就是應該由複雜系統來實現。例如敵方單位由對方玩家來決定,一些可控穩定的需求無法實現,系統由設計師來定,可以更可控。例如敵方單位會盡量偏向敵方優勢,系統可以承載雙方中立平等的設計。
2.增強玩家對環境的影響與反饋
作為反饋的一環,則是將對玩家做的任何行為儘量明確放大的反饋給玩家,並對戰局有意義。反饋需要複雜系統對玩家的行為等資訊敏感,並且需要做出符合玩家認知的反應
3.平衡優劣勢,拉近不同水平玩家距離,降低操作和策略門檻
拉平玩家差距,這些單位會幫助弱勢的一方,需要複雜系統可以識別出敵我雙方的優劣勢,並且做出反應
4.改變和控制節奏
代理需要在合適的時機,改變和控制節奏,例如殘局時加快節奏等等
5.承載不同型別玩家的遊玩需求
承載不同目的的玩家,根據目的設計,例如擊殺AI單位局外獲取更多金錢,可以擊破擂臺攻擊觀眾等。
例如分化玩家的目標,局外塑造多種單局追求,局內才能體現。
例如除了戰勝敵人之外,類似coc來搞資源是一種,為下一局做鋪墊局與局之間做關聯,給與弱勢玩家一個補償,但是更適合非同步PVP。
例如單局之間的關聯,可以是讓代理有記憶能力,根據玩家過去做的行為,影響超越單局。
例如有NPC陣營,對玩家有好感度,在單局遊戲中隨機遇到,視對雙方的好感度,對雙方玩家做出不同的行為
於是玩家在遊戲中可以有第三種目標,刷陣營好感度,或改變對方陣營好感度,或者陣營可以釋出任務,完成任務作為第三種目標。
6.部分替代其他玩家的作用
複雜系統需要整體上給與玩家足夠多變的挑戰,代理需要和玩家擁有一致的底層規則。
上面是我們的目標,一步步來,接下來,我們將會引入最簡單的代理,代理的行為也很簡單,挑選一個合適的目標,進行戰鬥即可。同時我們需要用簡單的規則,讓多個代理在整體產生湧現行為。
4.2玩法規則
戰場為一個九宮格格子地圖。除了雙方玩家外,地圖上有7箇中立單位,開局時用10面骰子隨機中立單位的攻擊屬性和生命屬性,機動力固定0忽略,玩家單位和前述原型一致,自由分配15點屬性。如下:
每個回合開始時,遍歷九宮格所有中立單位,向所有附近非中立單位進攻
中立目標選擇的邏輯是單元格總輸出最高》生存最高》隨機
進攻單位格有玩家單位時,該玩家可自行選擇用僱傭單位還是本體來先防禦
戰鬥規則和原型2基礎戰鬥一致,中立單位和僱傭單位機動視作0
玩家行動階段,機動性高的一方先行動,可以消耗一點機動性移動到附近格或不動
移動階段完成後,所在單元格若是友方單位,無事發生,敵方單位或中立單位則戰鬥
若是中立單位則直接戰鬥,若有敵方單位則和敵方單位進行戰鬥,戰鬥規則一致
若既有敵方單位又有敵方僱傭單位,敵方可選擇誰來迎戰,戰鬥結束後,敵方下個回合可選擇繼續進攻
當玩家戰勝所在格子的中立單位或敵方僱傭單位後,若該格子沒有其他我方僱傭單位,可以選擇消耗自身的屬性,生成一個我方僱傭單位,僱傭單位屬性為消耗屬性的兩倍,機動力固定為0
例如玩家攻擊為5,生命為8,可以消耗N點攻擊,M點生命,生成一個2N點攻擊,2M點生命,0點機動的我方僱傭單位
當玩家行動完畢後,回合進入結束階段,結束階段若是地圖上有空位,隨機生成中立單位
4.3原型4總結
上面是最基礎的代理模擬,其中用移動能力的消耗來防止滾雪球是合理的,並且原型4的中立單位已經對遊戲產生一定有意義的影響,甚至可以“湧現”出最簡單的夾擊,可不要小瞧這個簡單的夾擊,它就類似康威生命遊戲中的元胞自動機行為,都是由最簡單的規則(原型中的中立單元選擇目標規則),自行出現的一些現象。這個原型中的湧現也許簡單到一眼看穿,但仍揭示了湧現的本質。
雖然原型4基本是成立的,但仍有以下的問題:
- 消耗機動性進行地圖位移不合理,不是同一個層次的移動資源,額外需要設計一個大地圖移動能力,和機動性相關,但是不同層次需要獨立。
- 需要防止消極逃跑的策略,加入主基地?加入移動能力變化?加入大地圖遠端傷害手段?
- 高風險高收益需要更明確簡潔的吸引力和反饋。
- 有地形後仍缺失創造區域性以多打少的策略能力考驗場景,以及少打少的維持能力,用於提供排程資源的空間和時機把控可能性。
十三、原型5主基地湧現
5.1設計目的
吸收原型4總結的優缺點,我們進一步進行最佳化的同時,將更多目光轉移到,湧現如何參與進一個合理的目標挑戰反饋結構。先複習一下什麼是好的目標挑戰反饋結構?一場戰鬥,是由多個並存,巢狀的大小目標,挑戰和反饋組成:
1目標
- 合理,有難度但夠得著的目標,可以被分解的目標
- 不同型別層次的目標,大目標永遠有希望但難達成,作為最終追求hook
- 中目標有挑戰但在能接受的延時反饋的極限內能達成,作為階段反饋
- 小目標作為容易達成或容易失敗後快速學習達成的填充反饋
2挑戰
- 有了目標,就要設定挑戰,挑戰是一切的核心,也是最難的部分
- 對不同大小的目標,要有不同的挑戰,好的挑戰是需要有難度但能完成的挑戰
- 最好的挑戰就是使出渾身解數剛剛好極限完成的挑戰,方法一般有自適應變化的挑戰難度,自適應變化的目標,將失敗作為挑戰的一環,模糊挑戰的概念等等
3反饋
- 和目標以及挑戰不同,不管什麼大小的目標和什麼難度的挑戰,反饋都有共同的要求
- 首先,反饋有標識進度的作用,使得玩家知道自己在這個挑戰的什麼階段,離目標有多遠
- 人類的感知是不均衡的,離終點遠時,或未知終點距離時,會放大這個距離,離終點近時,會縮小這個距離。所以,及時,明確的分階段反饋,能夠幫助玩家更好的進行一個挑戰,靠近一個目標
- 其次,正向的反饋,給與玩家動力,給與玩家操作的確認
- 最後,負向的反饋也很重要,教學玩家,懲罰玩家,反向激勵玩家
之前我們已經說過湧現的優勢,對於這個目標挑戰反饋結構當然同樣適用,我們來實際嘗試一下:
5.2玩法規則
還是九宮格地圖,每個玩家擁有一個主基地,主基地被佔領則失敗,地圖設計如下:
分基地和原型4的僱傭單位一致,只不過是初始固定給與我方的單位
主基地屬性可以為9攻9血,分基地可以為5攻5血,屬性可以適當自己調整試試,會決定遊戲節奏
玩家操控的單位或者主基地被破壞,則遊戲失敗
玩家操控的單位每回合可以移動一格
回合流程是機動力高的一方先移動
玩家操控單位所在的格子沒有敵方和我方其他單位時,可以產生僱傭單位,產生規則和原型4規則一致
雙方移動完後,所有建築可以向相鄰格子分配點數產生僱傭單位,每個格子友方非玩家操控單位數最多2個
雙方輪流操作後,進行戰鬥環節,戰鬥環節規則不變
額外的,單個單位屬性值不大於9
5.3原型5總結
相比原型4,原型5解決了一些問題,例如消極避戰,機動資源不合理等。同時,對於目標挑戰的最佳化,體現在結果上,我們會發現玩家的策略自由度會高很多,可以基於簡單的九宮格進行一些更復雜的策略,例如創造區域性以多打少等。同時,我們最關注的湧現部分,仍舊和原型4接近,沒有什麼損失,反而,因為玩家的決策自由度增加,在感知上,湧現部分會更加突出,這也是這個原型體現出的一個有趣的現象。由此我們可以知道,對於湧現的利用,至少需要一定程度的策略自由度,有了策略自由度,才能對整個複雜系統做更多輸入的可能性。
下一步,我們反其道而行之,做做減法,用更抽象的方式來實現一樣的博弈。
十四、原型6抽象分階段戰場
6.1設計目的
根據原型5的驗證成果,我們還可以進一步抽象,來感受湧現:
可以專注於資源分配,降低移動和戰場位置的相關因素,更加抽象
僱傭單位的機動性很關鍵,往帶機動性,更接近僚機而不是建築的方向驗證,中立單位還是可以是建築
直接分配點數,基地可以換一種形式存在,同時點數的存在也為下個原型打下基礎
加入戰鬥中途加入單位的設計,分散決策
6.2玩法規則
戰場由戰場效果和戰場收益,以及中立防守單位三者組成
戰場效果設計目的是輔助決策,平衡優劣勢,有以下三種:
- 考驗,若投入的單位總點數大於XX,則臨時加成XX
- 輔助,若投入的單位總點數小於XX,則臨時加成XX
- 消耗,加強中立單位X點
戰場效果第一回合不揭示,回合結束後才揭示
戰場收益,玩家追求目標,且可控,開始時就揭示
- 每回合增加總自由點數上限X,X隨機,且決定中立防禦的點數配比
- 增強玩家本身,暫時不用
玩家遊戲開始時15點分配到自身單位,還有自由點數X點
開始遊戲時放入三個戰場,將戰場收益揭示,戰場效果不揭示
玩家每回合可以雙盲做兩個操作,將自由點數分配到三個戰場中的一個,成為僱傭單位,和之前原型不同的是,僱傭單位可以有機動性,和玩家單位基本一致
玩家將自身單位移動到某個戰場或從戰場移回基地,玩家單位去另一個戰場需要移回基地,如下圖:
回合結束時結算戰鬥,和之前規則一致
每個戰場除玩家單位外最多一個僱傭單位,有一個僱傭單位時,基地無法派遣新的
回合開始時自由點數回滿,並且每個戰場若沒有中立單位,則重新隨機生成一箇中立單位
中立單位生成規則為6面骰,投三次代表輸出,生存和機動,投到生存0則不生成
6.3原型6總結
原型6的體驗和前兩個原型又有所不同,雖然更加簡潔,但可玩性反而相對更高,這是因為將空間位置博弈更加抽象後,可以反而可以強化單個區域的效果,對湧現的表現加成更大,這也是這個原型給我們的啟發之一:
代理和環境的存在都是湧現非常重要的一環,他們都是複雜系統的元件,是相輔相成的,或者可以直接視為一體。
而在玩原型6的時候,也發現了一些可以更優的部分,例如第一步改為依次揭示戰場可以減輕決策成本,也體現了不可控部分降低決策成本這一點。例如玩家操控單位會有點被中立單位喧賓奪主,戰場收益還可以更高一點等。最重要的是,整體決策數較少,每一步決策負擔過高。
十五、原型7細分決策平衡優劣勢
7.1設計目的
根據原型6的驗證成果,除了最佳化細節,我們來嘗試將決策拆分,降低每一步決策的資訊不確定性和負擔,但每一步決策之間互相關聯,考驗玩家思維步數深度,從精確策略轉向模糊策略,這是原型7的重點之一。
另外一方面,我們再次將目光放到優劣勢平衡這一點,探討利用局外資源帶入局內和湧現結合的方式:
對於一個常規的帶局外的單局戰鬥為核心的遊戲來說,單局戰鬥最終目標是為了獲取勝利的快樂以及獎勵,獎勵是服務於局外的發展,最終為了更好的進行單局戰鬥。同時根據養成,經驗,技巧等等因素,對於一個玩家來說,戰中剛進入對局時有3種狀態:1明顯強於對方,2接近勢均力敵,3明顯弱於對方。
對於玩家來說,略強和略弱以及勢均力敵的情況是最常見的情況,且是我們期望最多的情況(透過elo匹配等方式)
在這種情況下,期望玩家目標是獲取勝利,勝利的獎勵大於其他路徑。
有所不同的是,這種情況下玩家可以有兩種偏向,第一是放大優勢和縮小劣勢後進行戰鬥,第二是直接進行戰鬥分出勝負,偏弱的一方會傾向前者,偏強的一方會傾向後者。
對於明顯強於對方的玩家,我們需要給與一個更難達成,獎勵更高,且過程中會削弱玩家的路徑,例如破壞敵方基地,毀滅敵方所有建築,攻擊第三方單位等等。
反之,對於弱於敵方的玩家,可以是幫助第三方單位防禦,獲取防禦資源等。當然也需要一個合理的勝負條件,要考慮弱勢方是否會主動承受傷害,消極比賽,投降,快速結束比賽。
也不能透過簡單的戰鬥力來供系統決定優劣勢,會促進壓戰力行為出現,和複雜系統的結合,我們需要玩家根據戰場情況自己判斷雙方優劣勢,做出不同的決策,來決定優劣勢。
那局外資源又如何去達成平衡優劣勢的目標呢?這邊探討一種適合和湧現結合的可能性:
我們將玩家在戰中的目標分為兩大類,勝利和獲取資源,兩者不衝突但有側重;
玩家的實現這兩個目標的時候,有兩種抉擇,第一,減少局外獲得資源以獲取局內更強的戰力,第二犧牲局內戰力獲取更多局外資源;
其中是漸進的變化,如此,不管優劣勢方,都可以走兩條路,風險和收益並存且由玩家自己把控;
舉個例子,例如我們設一場戰鬥勝利可以獲得10分的戰利品,失敗保底有2分的戰利品。局記憶體在複雜系統(例如一個第三方陣營),玩家可以與其進行不同的互動,進攻會獲取更多局外戰利品,也會損傷自身的戰鬥力,也可以做第二類互動,用局外戰利品的消耗或者減少,來增強自身的戰鬥力。
如此,我們達成一個目標,理論上玩家最優解是戰力剛剛勝過對方能夠拿下勝利的前提下,儘可能多的用戰力換局外資源,這樣一來,玩家間會與複雜系統一起,進行非常動態的博弈,自適應地平衡優劣勢。
因此,原型7將引入一個新的資源,用來模擬局外帶入局內的,除戰鬥單位外的一種可支配資源。
7.2玩法規則
共有三片戰場,連成直線,一端靠近玩家A,另一端靠近玩家B,如下
玩家自己的旗艦初始在主基地,旗艦取消機動性,初始分配點數為10點,但是旗艦血量乘10
玩家每回合可以從自己的自由點數中分配N點成為一個僱傭單位,可以0點,雙盲,必須生成在主基地
回合下一步雙盲決定旗艦前進後退還是不動三項操作
下一步,所有僱傭單位所在的格子若沒有敵方或中立單位,則自動向敵方主基地移動一格
下一步戰鬥結算傷害,規則和之前的原型一致
每個回合結束時戰場會生成中立單位
中立單位生成仍舊是投6面骰子兩次,分別作為輸出和生存能力,機動性視為0
每個回合生成戰場收益,收益大小隨機投擲10面骰
加入利息設計,每N點回合結束時加1點,降低預測敵方的難度,同時增加博弈空間
加入佔領成功一次性獎勵,促進玩家更加激進,例如佔領單位+1+1,或者戰利品自由分配佔領單位還是收回
戰利品分配在下輪怪物和收益生成之後,雙方僱傭單位之前完成
每個戰場最多可以投兩個僱傭單位
7.3原型7總結
原型7體現了將策略拆密拆細,這種方式會更加契合湧現的設計,因為湧現本身需要一定步長的決策深度來拉差。不止是湧現,在做設計的時候,我們整體上都會偏向將精確策略模糊化,不僅僅為了湧現,而是更貼合人類做決策的本能。
尤其在即時制遊戲中,一般將精確策略作為額外深度上限提供,考驗玩家對遊戲的掌握,資訊收集,反應,記憶,快速決策等能力。操作上來說,偏向高頻操作考驗反應,收益代價都較小,低頻操作考驗策略,收益代價都較大。操作速度,操作精準度,操作策略深度三者為不可能三角。所以對於我們來說,相比精確策略更偏向模糊策略,並且重點是利用湧現令玩家產生模糊策略是精確策略的錯覺,再利用機制放大模糊和精確策略的反饋。
同時,更偏模糊策略配合前文所說的動態平衡優劣勢才能成立。(完全精確策略,則優勢玩家最優解很明確,優於敵方的前提下,將所有戰鬥力換為局外資源,劣勢玩家則什麼也幹不了)
十六、湧現設計總結
感謝耐心看到這裡的朋友,上面我們設計了七個原型,一步步展示了複雜系統和湧現設計的一些要點,原型都我自己快速設計的,比較簡陋,如果在玩的過程中,有更好的想法,隨時修改原型即可,達成設計目的就行。藉由上述的原型設計,我來總結一下湧現設計的一些經驗:
1.規則儘量底層,抽象,通用
對於複雜系統,複雜度來自代理間,規則間的互動,不在於規則本身的複雜度。反而,對於設計來說,用越簡約的規則實現設計目的,越優雅,並且也好除錯,預測和利用湧現現象。多次迭代的輸入輸出,每次迭代都儘量簡單易懂,規則清晰。舉個例子,我們設計一個元素反應的複雜系統,不該是去設計木頭遇到火就會燃燒,火遇到水就滅這樣的規則,而是應該設計更底層通用的規則,例如溫度系統,所有這些元素會改變周圍的溫度,溫度超過燃點就燃燒,低於冰點就結冰。如此設計,所有的涉及溫度變化這個單一度量可以描述的元素反應,都統一起來了,不僅簡潔,後續擴充性也強。這就是一個例子,規則越底層,越抽象,越簡潔,越通用,才是一個適合複雜系統的設計。
2.博弈空間,決策複雜度,學習成本,玩家掌控程度之間的平衡
資訊不能太完備,否則決策門檻較高,也不能太缺失,否則策略意義太小。一般透過逐步釋放的方式來達成資訊密度的控制。同時,資訊除了對決策的影響,往往還影響玩家對戰局的可控程度,這一點往往和湧現緊密相連,特別需要注意一個現象:某個資訊和高收益相關,逼著玩家不得不去深入湧現,帶來巨大的決策成本。同理,資訊,包括複雜系統內部的規則資訊,也無需急匆匆教學玩家,在有複雜系統的遊戲中,不需要追求玩家過多的掌控程度,探索複雜系統本身也可以作為樂趣之一,對複雜系統的熟悉程度也可以作為不同玩家間的拉差。
3.拆分降低每一步的決策成本,及時反饋,減少長考
如原型7所說,策略拆密拆細,這種方式會更加契合湧現的設計,因為湧現本身需要一定步長的決策深度來拉差。我們追求的是玩家儘量用模糊策略來應對複雜系統和湧現,但是透過湧現結果,UI暗示等等設計手段,讓玩家感覺自己在做精確策略,獲得高反饋。
4.注意湧現中濫用隨機
不可控部分大多數時候是降低策略成本,因為不需納入策略考量之中,控制隨機,對抗隨機,利用隨機,也能帶來相當大的樂趣。湧現也是類似,他們都是不可控的一種,那有朋友就可能會想了,湧現加上隨機會如何?
我們舉個簡單例子,模擬人生中的小人,他們有自己的想法,但這時候我們讓某些想法出現的規則隨機。這時候,對於這些想法的湧現部分玩家會如何看?結論就是看不了,濫用隨機,隨機會侵蝕湧現的意義,最後,變成隨機蓋過湧現的樂趣,或者兩者互相影響。
我們再細一點,如果把湧現和隨機的結合分為前中後三類:
- 我們會發現,湧現前隨機,對湧現影響不大,但意義也不大
- 湧現後隨機,會破壞湧現的意義
- 湧現過程中摻雜隨機,大大增加不可控程度,實際上也在破壞湧現
所以,同一個遊戲中,隨機部分和湧現部分最好是分離開來,且可以隨機的結果和湧現相關,但不要摻雜兩者,或者湧現的結果再隨機一道
5.平衡優劣勢
需要給劣勢方優勢的同時,儘量保持規則統一,不要過度依賴湧現本身的不可控來平衡優劣勢,更好的是以一個自洽的規則讓系統合理的平衡優劣勢,最好的是讓優勢方自適應追求高風險高收益,來平衡優劣勢。例如前文說的局外資源帶入的方式。
6.利用提前認知降低理解學習成本
複雜系統一般都有比較高的理解學習成本,並且現實生活中有非常多已有的複雜系統,因此,多多利用現實生活的提前認知,來降低門檻。例如原創設計了某些規則,那也去生活中找一個最接近的複雜系統,包裝一下靠過去。
7.代理與AI的異同
代理不等於AI,這是常見的一個誤區,因為很多時候他們兩個有重疊的部分,但從設計上講,一定要注意,代理是一個以一定規則執行輸入輸出的元件,它完全不需要追求智慧,複雜,靈活等等,如果這樣去設計,就跑偏了。可以看出上面幾個原型,都會將代理設計的非常簡單,重點不是代理本身多複雜智慧,重點是代理與代理直接的互動規則,在整體上能否產生我們想要的湧現。好的代理應該享受和玩家操控單位一致的底層邏輯,但是利用好代理所獨有的優勢。就類似AI的設計,擬真AI大多數不是最好體驗的AI,最好的是利用AI可以作弊這一點,更大化發揮AI對玩家體驗的作用。例如類似求生之路的導演系統,光環敵人AI等等達成的效果。
代理不等於AI,但是可以參考AI和玩家可以用的策略,來進行設計,以下是我對1V1對抗的策略博弈的一些不完整總結:
- 最簡單石頭剪刀布,離散的迴圈剋制,最基礎的策略
- 上校博弈,資源分配策略,以弱勝強,在總資源的基礎上博弈資源分配能力
- 連續迴圈剋制,例如某資源高一點優勢,高太多反而是劣勢,大多配合上校博弈或資源規劃
- 競價博弈,雙方花費資源競價一個目標,一種連續的心理博弈
- 加註博弈,典型的就是撲克單挑,同樣是連續的心理博弈
- 深度博弈,比拼思考步長,大多數棋類
- 競速博弈,雙方比拼達成目標的速度,本身很難成立,一般輔以雙方互動的設計,麻將就是典型,或者是和其他策略設計結合,比如結合上資源規劃
大多數實際的策略,是由上面多種設計複合配合,而這些策略,都可以應用於代理的設計。
8.超越複雜系統
最後,本文探討的是,複雜系統和湧現在遊戲中的利用方法,我們追求的從來不是模擬一個複雜系統,或是多麼追求和現實一致的湧現。我們追求的是利用複雜系統和湧現,服務於我們的設計目的。
所以我們要學習複雜系統,但要超越複雜系統,我們可以重構現實的複雜系統,例如流浪方舟裡面實現的設計物理,就跟真實物理不同。同時,我們也可以有外力給與系統,不用追求完全的系統內部達成自適應,也可以主動放大涌現等等,當然,當複雜系統和湧現對核心玩法沒有幫助時,不要猶豫,砍掉,一切為設計目的服務。
十七、結語:湧現,生命,智慧
上面8個章節,都是以一個設計師的視角,較為理性地去剖析複雜系統和湧現,目的性非常強地探尋其在遊戲中的利用方式,希望對大家有所幫助。接下來最後一章,隨便聊點不那麼理性的感想,隨便交流談笑一番。
對複雜系統和湧現現象的著迷,離不開對自己對生命和智慧的敬畏與好奇。很多朋友不知道,生命到如今也沒有一個準確的定義,生命是什麼?和複雜系統如何定義類似,這是一個至今沒有完全達成共識的話題,科學家們只能對生命提出了一些較為普遍的特徵,例如:
- 結構,生物體的各種化學成分在體內不是隨機堆砌在一起的,而是嚴整有序的結構。只有當大分子組成一定的結構,或形成細胞這樣一個有序的系統,才能表現出生命現象。
- 新陳代謝,生命會與周圍環境不斷進行著物質交換和能量流動。一些物質被生物體吸收後,在其中發生一系列變化,成為最終產物而被排出體外,這被稱作新陳代謝。
- 應激性,生物能接受外界刺激而發生反應。包括感受刺激和反應兩個過程。
- 自我複製。
- 進化和適應,生命透過遺傳和進化,可以適應不同環境。
以上只是一些特徵,生命的定義多種多樣,至今沒有準確定義。而從複雜系統的角度來定義,生命不過一些簡單的元件聚集在一起,所湧現出來的整體現象。就像美國物理學家默裡·蓋爾曼(Murray Gell-Mann)曾說:我們在周遭世界所見的複雜行為——甚至在生命世界中——只是“從深奧的簡潔中浮現出的複雜表象”。
有人也會問,湧現是否只是一種錯覺,是我們主觀強加給系統表象的意義?這個問題,其實和智慧是否存在,是否是大腦的錯覺沒有本質的區別,每個人也許有不同的答案,但作為一個智慧的載體,我很難承認,我們僅憑錯覺能夠建立起我們璀璨的文明,留下名傳千古的詩篇,但是也許在更高智慧的生命眼中,我們的文明火花,不過是螞蟻抱團表現出來的蠢蠢叢集智慧,說不得還被定義成叢集效應,戴不上智慧的王冠。
而對遊戲來說,前面幾章沒有深入探索的最後一部分,就是複雜系統部分替代其他玩家的作用這一點,正是來源於對湧現生命智慧三者關聯的啟發。這一部分來自我們最新對長線遊戲的思考——對於一個著重創意設計的小團隊,怎樣的方向最適合做長線內容。這是一個很大很重的話題,這裡不展開,以後有機會單獨寫文章,先直接說我認為的三個可行方向:
- 多人競技,靠多人之間的互動博弈,不斷產生新的內容。
- 利用湧現的代替玩家的部分功能後,1V1的競技,彌補1V1競技人人博弈產生內容不如多人的部分。
- 利用湧現或其他方式,高重玩性高設計空間的單局PVE,高效更新關卡來做長線。
以上是一家之言,只適合我們自己團隊,僅供參考,其中第二點,就是我們一直在探索的方向,如何利用湧現模擬玩家,讓系統能夠代替部分玩家間互相給予的體驗。就像之前說的,這裡不是要做一個擬真AI去模擬人的智慧,而是用湧現系統,去模擬人類玩家給其他玩家帶來的那種,理智中帶著混沌,可控中混雜著不可控,衝動瘋狂和理性決策交纏的感覺。
好吧,寫著寫著又想著對遊戲設計的作用,職業病發作,本篇文章前後耗時數月,可能有些囉嗦不連貫,感謝耐心看到這裡的朋友,歡迎多多交流,也歡迎關注我的公眾號《魚塘遊戲製作工坊》。
下面就用一段上篇文章被我刪掉的胡言亂語,來結束這篇文章吧!
“生命與智慧不是偶然,而是必然。
熱力學第二定律-熵增定律表明,一個封閉系統,整體混亂度會隨著時間流逝增加,直到所有事物都走到最無序的狀態。於是維多利亞時代的熱力學家想象,宇宙這個封閉系統,所有能量也會慢慢轉化成廢熱,恆星各自熄滅,黑洞也會耗盡自身,最終所有一切都會處於平淡一致的寂滅,這就是所謂的“熱寂”。然而,在這個不可逆的過程中,宇宙似乎有些不甘,逐漸平靜下來宇宙海洋,在某些角落驟起波瀾,一些有序的構造體,從無序的物質中湧現出規則。這些構造體在行星的原初羊水中翻滾,用盡全力吸收恆星的光芒,用簡單的碳元素做骨架,配上一些別的東西,堆積出複雜的自適應系統,有些甚至還能開出漂亮的花朵。雖然,這些微小秩序的產生需要來自系統之外的能量,代價是宇宙其他區域更多的混亂。
可是,宇宙在走向無序混沌的過程中,還是在一些角落悄悄孕育了有序的生命,它們是如此的珍貴,那是宇宙對抗無序的囈語,是宇宙為自身加冕的桂冠。而生命中湧現出來的智慧,更彷彿是宇宙的囈語恰好吟唱成了一曲歌謠,是桂冠上璀璨的寶石,是奇蹟中的奇蹟。每個人的心靈,都是獨一無二,從混沌中掙扎著長出的花朵,每個人的靈魂,都是宇宙靈魂的一部分。
所以,用力活著,用力地思考,不辜負這奇蹟。”
感謝您的閱讀。
作者:餘田,《流浪方舟》製作人,微訊號yutianTerean
歡迎關注作者個人公眾號“魚塘遊戲製作工坊”
相關文章
- 遊戲設計左道,BattlePass新思考遊戲設計BAT
- 長文編譯:RTS遊戲系統設計的平衡問題編譯遊戲
- DAPP雜湊競猜遊戲hash系統設計開發方案APP遊戲
- 雜湊遊戲系統技術開發丨雜湊單雙競猜遊戲原始碼丨雜湊遊戲程式設計技術遊戲原始碼程式設計
- 為遊戲設計湧現式玩法的五個注意事項遊戲設計
- 遊戲機制設計:《塞爾達傳說:荒野之息》中的湧現與弱引導設計遊戲
- 使用橋接模式設計複雜的訊息系統橋接模式
- 開發複雜業務系統,有哪些設計思路
- 3D遊戲程式設計與設計6——物理系統與碰撞3D遊戲程式設計
- 系統困境與軟體複雜度,為什麼我們的系統會如此複雜複雜度
- 雜湊遊戲系統丨雜湊遊戲系統開發(演示版)丨雜湊遊戲開發原始碼及案例遊戲開發原始碼
- Hash幸運雜湊競猜遊戲系統設計開發丨雜湊單雙尾數大小競猜遊戲遊戲
- 前Supercell設計師:遊戲越複雜,玩家真的就越喜歡嗎?遊戲
- 萬字長文解剖《原神》龐大遊戲系統遊戲
- 動作遊戲系統設計概述遊戲
- 遊戲中的技能系統設計遊戲
- 幸運雜湊單雙競猜遊戲開發技術丨雜湊遊戲系統程式設計開發(部署搭建)遊戲開發程式設計
- 與複雜性系統共舞:如何培養系統思考與系統思維? - Donella
- 遊戲文件與遊戲設計遊戲設計
- JAVA 實現《複雜迷宮》遊戲|CSDN創作打卡Java遊戲
- RPG遊戲社交系統設計思路分析遊戲
- 複雜性系統設計:福特CEO談特斯拉的三個特點
- 遊戲分享系統設計第二步:分享系統的設計遊戲
- Hash競猜雜湊遊戲鏈遊系統技術開發及程式設計示例詳情遊戲程式設計
- 雜湊競猜遊戲系統開發原理丨雜湊遊戲系統開發技術方案丨雜湊競猜遊戲開發原始碼搭建遊戲開發原始碼
- 雜湊競猜遊戲開發示例丨Hash雜湊遊戲系統開發丨雜湊競猜遊戲詳情遊戲開發
- Hash雜湊遊戲原始碼丨雜湊競猜遊戲系統技術開發丨Hash雜湊遊戲講解遊戲原始碼
- 遊戲伺服器儲存系統設計遊戲伺服器
- 雜湊競猜遊戲系統搭建原理方案遊戲
- 雜湊競猜遊戲系統構造原理遊戲
- 現成雜湊遊戲系統原始碼搭建丨演示版案例遊戲原始碼
- 雜湊遊戲原始碼開發搭建丨hash雜湊遊戲競猜原始碼搭建丨雜湊遊戲系統開發遊戲原始碼
- HASH雜湊遊戲原始碼丨HASH雜湊遊戲系統開發丨HASH雜湊遊戲開發成品原始碼部署原始碼遊戲開發
- 雜湊競猜開發原理丨雜湊競猜遊戲原始碼丨雜湊競猜系統開發設計程式碼遊戲原始碼
- 雜湊競猜遊戲系統技術開發丨雜湊遊戲Solidity智慧合約遊戲Solid
- 得物社群計數系統設計與實現
- 遊戲開發與設計遊戲開發
- 湧現式遊戲設計:《荒野大鏢客:救贖2》和開放世界的未來遊戲設計