大家好!我是Yuda:)
有一次直播時跑了一次繼承光弓流程,
下線前一讀檔古代箭就超過999支了(72900支),
稍微在這邊分享一下方法和原理。
不知道在講什麼的話,可以參考這個影片(我的Twiiter):
https://twitter.com/zb_yuhudaddy/status/1351491956241625088?s=20
這個則是1/24晚上的(沒有改機!)
https://i.imgur.com/elxFgLa.jpg
Switch或WiiU版都可以,
我是用Switch的,1.6版曠野之息(最新)。
以下開始說明原理和流程,
玩家可以自己往下滑動,
看到自己想看的位置就好,
因為下面牽扯到一些程式碼的部分,
可能會比較困難一點,
而我本身也非程式工程師出身的,
印象中BoTW的原始碼都是C語言,
所以有懂程式的大大如果看到有地方寫得不正確,
也麻煩指證一下!畢竟我也不想傳達錯誤的知識。
----------------袋子同步----------------
事實上,曠野之息這個遊戲有「2個袋子(Inventory)」,
這邊用寶可夢的用詞「背包」,
一個是存在主數據管理區的GameDataMgr,
這邊我們稱為「表背包(Outer Inventory)」
一個是存在記憶體的In-Memory Data,
這邊我們稱為「裏背包(Inner Inventory)」
一般這兩個背包會隨時同步,
只要你打開背包查看、經過讀取、變更背包內容或順序,
這兩個背包內容都會同步處理,
包含武器道具的數量、耐久等等。
那這邊為什麼我要刻意提到「同步(Sync)」?
身為Glitch-Hunter的玩家們,
肯定會想知道「怎樣可以解除同步(Desync)?」
大家有印象「劍之考驗(Trial of the Sword, DLC)」
和「野外的試煉(Stranded on Eventide)」
全身被脫光光的任務吧!
大家在解這兩個任務時,在任務中拿到一堆東西,
結果考驗結束後,系統又會還你進入考驗前的道具,
在這邊玩家應該就會想到:
「系統肯定把道具放在某個空間儲存起來」,
這樣結束後,才有辦法直接備份過來,這種概念。
是的!
其實是系統設置了一個「臨時的表背包空間(Temporary Inventory)」,
讓玩家在考驗中能夠暫時存放考驗中的道具,等到考驗結束後,
再將「裏背包(Inner Inventory)」的東西備份過來。
那這邊提供一個想法:
「如果我在考驗中,增加武器或背包的格數,系統會怎麼同步?」
----------------數據錯位----------------
先破題,這個方法的原理就是:
「數值錯位繼承(Item Value Shift Transfer)」
如果我們的表裏背包內容不同,
同步的時候,系統會怎麼處理?
畢竟我們遊玩時,是以「表背包」為主,
所以備份用的In-Memory Data在同步時儲存的數值,
會直接同步到對應在GameData的數據道具上。
那這個「數值」是什麼?
每一個道具都會有一個自己的道具數值(Item Value, IV),
道具的同步都會以這個數值為準。
很難懂?換個說法,
簡單講就是把道具和弓箭全部都打散成一堆數字!
譬如現在有一個檔案有以下道具,按照順序:
●道具外觀:大師劍、光弓、30木箭、50火箭、100電箭、海利亞盾
→打散數值:4000、10000、30、50、100、80000
有發現武器盾牌的數值是「耐久度×100」嗎?
這個和定點運算(Fix Point Arithemtic)有關,
避免讓數量變成小數點,所以會乘以100。
有興趣的玩家可以去google看看。
如果我們表裏背包同步時,
系統發現表裏背包對應的位置並非同樣的東西(盾牌→箭)時,
就會看道具數值,畢竟程式不是人類,
要備份弓箭時發現其實是盾牌,然後開始除錯(Debug)。
其實正常流程來說,表裏背包是不可能不同步的,
在這方面,Nintendo就沒有特地設置一個Failsafe來處理這個部分。
說了這麼多,
其實我上面影片的72900古代箭和80000支炸箭,
就是「海利亞盾的耐久度×100」覆蓋在箭的數量上。
----------------流程----------------
那現在知道原理了
首先,這和「繼承光弓」到正常世界的流程相同,
「回憶儲存(Memory Storage)」這個程錯開的新檔,
在最後打完魔獸加儂再開新檔案時,
前後的武器盾牌格數位不一樣,
而且開新檔時,不知道為什麼地表裏背包會一瞬間不同步,
直到我們再次讀取或打開背包內容觀看時,才會再度同步。
我上面那個影片可以列表出來:
https://reurl.cc/WE3eYZ
事實上,我在打加儂前的
→炸箭有4發、古代箭有1發
而打完開啟新檔並原地存讀擋(避免觸發同步)後
→炸箭有1發、古代箭有72900發
很明顯加儂戰時的海利亞盾耐久度× 100倍直接備份到古代箭上,
而裝備中的古代箭數量直階備份到炸箭數量上。
同樣道理,玩家可以在繼承光弓時,
故意調整道具格數,就可以在繼承光弓後,
順便移植盾牌耐久度的100倍到弓箭上,
達成破表弓箭數。
主要原因就是前後道具順序不同造成數據錯位同步
而且,這個弓箭數可以在NG+的野外試煉進行移植,
https://twitter.com/Kinak338/status/1353367721115742209?s=20
3種弓箭80000隻+2個武器耐久度80000,
方法就不細談了,類似原理,有興趣的玩家可以入群討論。
繼劍之考驗、野外的考驗,續作出現以前,
玩家們也可以當作這是一個從頭開始的任務:
「拯救海拉魯」
其任務獎品就是:
「光之弓矢(The Bow of Light)」
「80000支弓箭(80000 arrows)」
成就感跟拿到機車一樣喔~
以上供玩家參考!
-----
Sent from JPTT on my iPhone
--
Welcome to my CHC Zelda-Botw Youtube channel!
CHC Youtubeチャンネルへようこそ!
--
All Comments