來源:金色財經(jīng)
作者:@therealbytes @_yonada;編譯:Justin @captainz
作為虛擬世界的創(chuàng)造者,,我們的目標(biāo)是創(chuàng)建出能讓用戶感到有趣并深度參與的環(huán)境,。這就需要我們在設(shè)計允許復(fù)雜和不預(yù)期行為浮現(xiàn)的數(shù)字物理學(xué),與確?,F(xiàn)有基礎(chǔ)設(shè)施能夠支撐這些行為之間找到平衡,。為此,我們需要考慮數(shù)字物理學(xué)的三個主要維度:時間,,它的法則形式,,以及這些法則適用的范圍,。
我們將虛擬世界中時間的流逝稱為世界法則對其自身的迭代應(yīng)用。每個離散的應(yīng)用就是這個世界時間流中的一個“瞬間”,。設(shè)計世界內(nèi)的時間的一種方式是讓它與外部時間連續(xù)進(jìn)行,。在基于區(qū)塊鏈的虛擬世界中,每個區(qū)塊對應(yīng)世界內(nèi)過去的一定數(shù)量的瞬間,,無論該區(qū)塊包含的是什么交易,。這被稱為同步時間,或者“滴答”現(xiàn)象,。這種方法可以使世界對用戶更有趣,,因為它們可以實時看到自己行為的結(jié)果。另外,,它導(dǎo)致世界內(nèi)的時間更長,,世界持續(xù)更新,從而促進(jìn)有趣行為的出現(xiàn),。
然而,,這種方法也有其缺點。更大的時間范圍通常需要更多的計算資源,,這可能會很快超過鏈或服務(wù)器的能力,。在普通區(qū)塊鏈上實施這個系統(tǒng)也可能很困難,,因為所有鏈上的變化都必須由外部用戶發(fā)起的交易來啟動,。
當(dāng)你想象一些看似簡單的事情時,這個困難就變得明顯了:一個鏈上的游戲有非玩家角色(NPC),。在主網(wǎng)以太坊上,,你可以定義一個更新功能,設(shè)置游戲地圖上每個NPC的位置,,并讓一個外部賬戶定期調(diào)用它來更新他們的位置,。但這可能不可靠,因為你不能保證外部賬戶在應(yīng)該調(diào)用更新的區(qū)塊中不會因為gas fee 被競價超過,。你的游戲中的時間結(jié)構(gòu)會因此發(fā)生漂移(以原始CryptoKitties的giveBirth()功能為例,;隨著鏈上gas fee 的增加,,Axiom Zen實際上不得不增加調(diào)用giveBirth功能的獎勵,以確保新的NFT出生交易在用戶繁育Kitty后的256個區(qū)塊被調(diào)用),。我們將這種使用外部賬戶的方法稱為“手動滴答”,。
定制的 rollups 讓我們有更多的靈活性,在鏈上添加”滴答”功能,,無需外部賬戶,,而且同步時間的推進(jìn)由協(xié)議保證,。我們將這種方法稱為”自動滴答”,。自動滴答可以通過編寫一個“滴答合約”來實現(xiàn),該合約由協(xié)議本身調(diào)用,,而不是由外部賬戶調(diào)用,。
舉個例子,@therealbytes 開發(fā)了一個基于OP Stack的概念驗證型滴答鏈,,它運行了一個自動滴答的康威生命游戲?qū)崿F(xiàn),。Bytes 使用了一個修改過的系統(tǒng)交易來自動調(diào)用滴答式元胞自動機模擬合約。為了充分測試鏈本身的極限,,他用兩種方式實現(xiàn)了游戲:一種是作為一個在鏈上運行的Solidity智能合約,,另一種是作為鏈本身的預(yù)編譯。Solidity實現(xiàn)在達(dá)到每個區(qū)塊兩次更新的70×70網(wǎng)格后讓CPU達(dá)到極限(1個區(qū)塊/秒,,或者大約10k個細(xì)胞/秒),,而自定義預(yù)編譯引擎的鏈在使用大約6%的CPU(大約130k個細(xì)胞/秒)時,達(dá)到了相同速率的256×256網(wǎng)格,。
在最后一段的最后一句中,,關(guān)鍵詞是“達(dá)到極限”。滴答鏈添加了額外的復(fù)雜性層次:每增加一個區(qū)塊,,就需要由模擬游戲的交易觸及更多的狀態(tài),。最終,rollup 節(jié)點會被原始計算(CPU,,磁盤IO等)所限制,。這里的唯一解決方案是采用更高容量的節(jié)點。
“同步時間”的替代方案是“異步時間”,。在這個方案下,,世界中時間的流逝并不一定會在外部時間推進(jìn)時前進(jìn)。相反,,時間通常會在某些事件(通常是用戶行為)發(fā)生時向前移動,。傳統(tǒng)的不涉及計時器的棋盤游戲就屬于類似的范疇。在鏈上實現(xiàn)非同步時間更容易,,因為它就是區(qū)塊鏈被設(shè)計來支持的模型,。然而,,它也犧牲了一些可能使世界更有趣的特性(如自動移動的NPC)。
@notdavidhuang 和 cha0sg0d 的一款概念驗證游戲早期版本 WildWood,,就揭示了這種犧牲,。在這個游戲中,兩個玩家必須從侵略性NPC的圍攻中保衛(wèi)他們的基地,。在游戲的早期版本中,,NPC的移動只有在玩家自己移動時才會被觸發(fā) — 這是一種不太現(xiàn)實的異步時間實現(xiàn)。在添加滴答之后,,NPC移動了,,但另一個問題仍然存在。鏈每秒滴答一次,,這意味著如果玩家每秒移動多于一次,,游戲必須使用 optimistic rollup 的更新來廣播玩家在地圖上的位置。然而,,你的隊友不會自動看到你的客戶端,,這意味著在玩家位置更新上會有延遲。為了克服這個問題,,團(tuán)隊利用了 MUD 的中繼服務(wù),,一個用于向全鏈廣播本地客戶端的點對點網(wǎng)絡(luò)。瞧,,異步時間到同步時間的轉(zhuǎn)變就實現(xiàn)了,。
世界構(gòu)建者還必須決定他們的虛擬世界遵循開放形式的表達(dá)還是封閉形式的表達(dá)。封閉形式的表達(dá)具有固定數(shù)量的操作,。然而,,開放形式(或遞歸)表達(dá)的操作數(shù)量則根據(jù)給定變量的增長。在開放形式的表達(dá)下,,只能通過反復(fù)應(yīng)用世界的法則到已知狀態(tài),,才能計算出世界的未來狀態(tài)。復(fù)雜,、生動的環(huán)境,,比如《矮人要塞》,通常屬于這個范疇,。另一方面,,封閉形式的表達(dá)允許從過去的狀態(tài)和它們之間流逝的時間,計算出任何未來的狀態(tài)(假設(shè)沒有未來的用戶行動改變狀態(tài)),,比如《帝國時代 II》中的資源開采速率,。
開放形式可以使虛擬世界更有趣,因為像現(xiàn)實世界一樣,它們是不可預(yù)測的,。預(yù)測世界未來狀態(tài)需要越來越多的時間和計算資源(在鏈上實現(xiàn)的康威生命游戲就是一個很好的例子:你不能計算出未來的任意狀態(tài),,因為你需要按時間運行游戲)。此外,,從簡單的微觀交互中可以出現(xiàn)意想不到的宏觀行為,。在由封閉形式管理的世界中,這些出現(xiàn)的行為通常只在外部發(fā)生,,通過用戶的行動(他們自己就像開放形式一樣),,而不是在世界物理本身中發(fā)生。
開放和封閉形式之間的權(quán)衡涉及到一個與時間相似的平衡,。封閉形式可能會降低世界的潛在趣味性,,但它們也使其更具計算效率。封閉形式可以與同步或異步時間一起使用,。在區(qū)塊鏈上實現(xiàn)時,,他們在時間同步時對開放形式有顯著的優(yōu)勢。因為任何長度的時間的成本是恒定的,,所以世界可以被設(shè)計為只在用戶發(fā)送交易時更新鏈上狀態(tài),但它被設(shè)置為在上次更新后的時間流逝后的狀態(tài),。
考慮一下當(dāng)前鏈上動態(tài)的標(biāo)準(zhǔn)方法,,一個被稱為“懶更新”的方法。在懶更新(lazy update)中,,玩家啟動行動的開始和結(jié)束,,但中間的時間是模擬的,而不是直接計算的,。比如,,一個玩家在第1個區(qū)塊時種下一棵蘋果樹,然后在第10個區(qū)塊時收獲蘋果,??梢跃帉憫懈逻壿嫞沟猛婕颐總€時間單位可以收獲一個蘋果,,總共9個蘋果,。對于有封閉形式函數(shù)(如每個區(qū)塊一個蘋果)的更新邏輯,這是完全可以的,,但如果農(nóng)業(yè)邏輯基于玩家行動之間的輸入而變化,,這種方法就會失效。如果在第5個區(qū)塊,,一場暴雨增加了蘋果的生長速度,,而在第7個區(qū)塊,蝗蟲災(zāi)害幾乎摧毀了作物,那么在第10個區(qū)塊時,,玩家能收獲多少蘋果就無法有效計算,,除非真正應(yīng)用所有已經(jīng)發(fā)生的事件(你不會有足夠的計算能力去趕上新的狀態(tài))。盡管如此,,懶更新仍然對于某些生物(如固定生長速度的植物)的廉價計算非常有用,,但對于一個動態(tài)世界的完整工具箱來說,這仍然不足,。
在現(xiàn)實世界中,,時間無處不在,一次性流逝,,宇宙可能是無限的(雖然有一些相對論的復(fù)雜性),。然而,在虛擬世界里,,情況并非必然如此,。
首先,虛擬世界可能是明顯有限的,。有趣的可能性通常隨著大小的增加而增加——由二百億個星系組成的世界發(fā)生的事情比由兩個原子組成的世界更多——但計算成本也會增加,。這兩種關(guān)系都與之前提到的兩個權(quán)衡密切相關(guān):時間的流逝和物理形態(tài)。
其次,,時間并不必須在虛擬世界的所有地方流逝,。世界可以被劃分為時間流逝不同的離散區(qū)域,以減少世界的計算負(fù)擔(dān),。例如,,可以在有用戶活動的地區(qū)使用更復(fù)雜和昂貴的物理規(guī)則,而在沒有活動的地方使用更簡單的物理規(guī)則,。這種方法的缺點是雙重的:它可能使世界顯得不一致,,缺乏完整性,這限制了世界規(guī)則的設(shè)計空間,,也給世界建造者帶來了壓力,,要避免讓用戶感到困惑;同時,,它也限制了因果關(guān)系在世界內(nèi)部的傳播,,如果一個區(qū)域的行為不能在遠(yuǎn)方的區(qū)域產(chǎn)生后果,那么兩者之間的空間就被凍結(jié)在時間中,。物理規(guī)則應(yīng)用的區(qū)域大小是一個重要的設(shè)計考慮因素,,它將影響世界需要的資源以及它能達(dá)到的趣味性水平。
為了創(chuàng)建一個有趣而吸引人的虛擬世界,,有必要仔細(xì)平衡計算效率和有趣性。這包括決定使用何種類型的時間(同步或異步)并評估統(tǒng)治世界的物理法則的形態(tài)。物理法則應(yīng)用的區(qū)域大小是另一個重要的決策,。通過謹(jǐn)慎地做出這些選擇,,世界建造者不僅可以在保持世界的計算負(fù)擔(dān)管理得到有趣性,他們還可以為其他開發(fā)人員提供一個高度肥沃的創(chuàng)新基礎(chǔ),。
免責(zé)聲明:本文來自網(wǎng)絡(luò)收錄或投稿,觀點僅代表作者本人,,不代表芒果財經(jīng)贊同其觀點或證實其描述,,版權(quán)歸原作者所有。轉(zhuǎn)載請注明出處:http://lequren.com/1063607.html
溫馨提示:投資有風(fēng)險,,入市須謹(jǐn)慎,。本資訊不作為投資理財建議。