為什麼黑暗之魂3創建了一個新角色之後存檔尺寸沒有發生變化?
01-15
改過PS4版本存檔的都知道,黑魂所有的存檔在生成的時候空白的數據都是用0填充的,當有改動的時候才會將原有的0改為新數據,所有總量是不變的
如圖所示,這是血源的存檔修改,因為是同一家公司的遊戲,黑魂也是一樣,在無效數據處都是0
而PS4版本中一個存檔有10個SAVEDATA,差不多可以建造10個人物,在生成初始存檔的時候,沒有人物的savedata也是全部用0填充的,而有人物的savedata才有不同的數據
遊戲機上常用手法,固定尺寸。
別想那麼多。其實就是程序員偷懶而已。直接把整塊的結構體載入和保存多簡單。
存檔可能有固定的封包格式,數據結構定義好,所有的選項都是固定尺寸,改寫以後統一塊加密封包,可能是為了防止delta分析破解存檔,或者純粹的用了現成的方案而已
在創建存檔的時候有個細節,就是存檔總數是有限的,總共就那麼幾個slots。所以很可能就是一個文件保存多個存檔,其中一種檔的類型是空。
再考慮到黑魂原來是主機遊戲,移植的PC,這種固定存檔大小的行為也不是什麼奇怪的事情。
嗯,全是猜測。
update 風險比insert小啊。萬一碰到磁碟空間不足什麼的 insert 不就報錯了 還不如一開就佔好空間
防止因為硬碟不足而出現的系統性問題?
提前佔位吧,存檔空間無需太大故預先按照全滿存檔佔位。
也能提高一定的性能。就好比小時候寫演算法題,int a[9999]和new int[9999]的區別
這竟然是輪子哥提的問題,雖然看起來像個正常的問題,實際上是為了給大家普(diao)及(yu)知識,因為以輪子哥的能力,這問題簡直太簡單了。
推薦閱讀:
※Haskell有哪些提高效率的技巧?
※哪款滑鼠非常適合編程寫代碼?
※將一副撲克(去掉大小王)圍成一圈,使每相鄰四張的和均為 28。若無解,如何證明?
※Unity3d 與 C#線程的坑處?
TAG:編程 | 黑暗之魂DarkSouls |