PTT推薦

Re: [閒聊] 王國之淚去年延期時已接近完成

看板C_Chat標題Re: [閒聊] 王國之淚去年延期時已接近完成作者
hylkevin
(19s)
時間推噓31 推:31 噓:0 →:50

→ spfy: 雖然有人解釋但我還是想不通倒轉要怎麼實作 不可能把林克附
→ spfy: 近所有物件的軌跡都長期記錄起來吧?

記錄一個物件在空間中的姿態(pose: 包含位移跟旋轉)
一般是用一個4x4的浮點數(float: 有小數點的數字, 4 byte)矩陣
也就是說紀錄一筆位置, 記憶體大小是4x4x4=64 byte

假設他每秒記錄30筆pose (30fps), 並假設每個可移動物件都紀錄10秒
則一個物件的時間倒轉記錄是64x30x10=19.2 kbyte

超過一定距離的物件不能時間倒轉, 甚至都不會載入
所以假設他同時間最多有1000個物件會被載入(實際上應該沒這麼多)
他用來存時間倒轉資訊的總記憶體用量在每個時刻都不會超過19.2mbyte

由此可知時間倒轉其實負擔並不大
對於一個現代的系統來說, 19mb通常是可以忽略的大小

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.15.2.1 (臺灣)
PTT 網址

w277680305/22 11:57這個學校有教嗎

y246810121605/22 11:58推專業

hohiyan05/22 11:58老任厲害的地方在其他物件都還是正常運行,而且會跟倒轉

ronga05/22 11:59推專業,紀錄座標真的耗的資源還好

hohiyan05/22 11:59的那個東西產生各式互動

w277680305/22 11:59感覺是業界人士

storewater05/22 11:59你還要考慮朝向跟旋轉吧,雖然理論上也不會差太多

tv123905/22 11:59是說這系統任天堂不是有申請專利? 記得有公開作法

storewater05/22 11:59喔 沒事看錯

w277680305/22 11:59可以倒轉時光同時還能用究極手根本神

WiLLSTW05/22 11:59旋轉基本上都是記錄在那個矩陣內了

hank8117705/22 12:01可以究極手+倒轉+通天術同時使用

WiLLSTW05/22 12:01比較麻煩的是每frame所有物件可能都要把矩陣資料push進去

bestadi05/22 12:03https://i.imgur.com/faB8YRD.gif 倒轉引力+究極手

圖 王國之淚去年延期時已接近完成

speedingriot05/22 12:03倒轉的物體還要維持物理邏輯就爆炸了

hylkevin05/22 12:04朝向跟旋轉就是pose喔,用一個轉換矩陣描述。或者另一種

hylkevin05/22 12:04方法是用translation跟quaternion(四元數)兩組vector(3+

hylkevin05/22 12:044個浮點數)描述。但這兩種東西其實是等價的,在這邊用轉

hylkevin05/22 12:04換矩陣程式寫起來是比較簡單的。

w277680305/22 12:08聽起來很簡單實際上很難設計吧

ms030261005/22 12:10我也是這麼想的(裝

WiLLSTW05/22 12:11不過問題還是在發動倒轉物件互動上的設計

hylkevin05/22 12:12to 13F: 要把資料push可以用一個長度30x10的circular qu

hylkevin05/22 12:12eue來存,但因為要先進後出,所以要把它當stack用。

tv123905/22 12:12能夠互動還不出大bug真的是這系統最可怕的地方

nisioisin05/22 12:13有別的遊戲在做過倒轉嗎?

hylkevin05/22 12:13to 20F: 這邊只討論軌跡資料儲存,他怎麼呈現,物理怎麼

hylkevin05/22 12:13運算要看有沒高手解答。

cloud060705/22 12:14單獨物件位移倒轉的沒印象 但整體場景時間倒轉機制的有

tv123905/22 12:14360時代有一片Braid 有各種時間相關的技能

cloud060705/22 12:14確實 軌跡紀錄不算負擔太大的東西 但跟其他系統/物理

kiedveian05/22 12:14每frame推應該拉個queue放一丟一就好

Slas05/22 12:14Braid記得是全畫面倒帶那種

cloud060705/22 12:14疊加就是很可怕的東西了

cloud060705/22 12:15Braid啊 那可是把時間要素玩出花來的神作了

WiLLSTW05/22 12:15喔喔用Circular Queue來存的確是可以降低不少效能消耗 學

WiLLSTW05/22 12:15到了

tv123905/22 12:15Braid全場景倒轉 不過記得主角還是可以正常活動? 太久沒玩

Bugquan05/22 12:16一個是倒轉的物體有限,另一個是範圍,基本就在林克的可

Bugquan05/22 12:16視範圍,所以其實沒多少

Pegasus9905/22 12:16問就是時間鉗型攻擊(?)

WiLLSTW05/22 12:17另外其實可以觀察到 林克沒有觸碰到的物件 實際上應該是

WiLLSTW05/22 12:18沒在持續的在寫入資訊

sniperex16805/22 12:18大部分有倒轉的遊戲都全畫面,不然就是設計好的固定

sniperex16805/22 12:18位置倒轉

s92161905/22 12:19推專業 不懂程式的我完全看不懂討論 XD

w277680305/22 12:19這遊戲可以隨時隨地倒轉調位置附加,這種無限制的空間怎

w277680305/22 12:19麼定位超好奇的

willytp9712105/22 12:21推專業

cn556605/22 12:21其實難的不是倒轉本身 而是倒轉中可以用究極手 通天

cn556605/22 12:22倒轉中的物件也有物理法則和其他物件互動

cn556605/22 12:22例如拿兩顆石頭一根木頭組成的東西在空中轉

cn556605/22 12:22然後倒轉 就能把在軌跡中晃的西諾克斯打爛這件事情

WiLLSTW05/22 12:25倒轉中本體似乎無視物理法則 但互動的物件仍然會被物理系

chrisjeremy05/22 12:25倒轉中還能維持物理運作是最難的 難以想像開發期間發

chrisjeremy05/22 12:25生多少的bug

hylkevin05/22 12:25另外要最佳化完全可以兩三幀或更多幀才存一筆資料,其他

hylkevin05/22 12:25幀的pose用內插法算,人類肉眼很難看出差別。實際遊戲使

hylkevin05/22 12:25用時間倒轉時可以觀察到物件在時間軸上有很多個節點,說

hylkevin05/22 12:25不定他真的沒有全部存,而是用內插法補。

WiLLSTW05/22 12:25統影響 這遊戲不管甚麼東西 只要力量*重量夠大就能造成

cloud060705/22 12:25就是這些看似簡單系統之間的互相疊加效果太有趣才可怕

WiLLSTW05/22 12:25傷害

WiLLSTW05/22 12:26也因為這個特性可以把東西黏上去再倒轉 只要不要超過黏膠

WiLLSTW05/22 12:27的支撐上限(如果力矩不對黏膠是會斷掉的)就能帶著東西走

cloud060705/22 12:27這種叫做Emergent gameplay 薩爾達在設計上的頂峰領域

cloud060705/22 12:28然後這還是運行在一台機能有限的掌機 遊戲容量不到20G

Bencrie05/22 12:33用 4x4 沒錯啊,只記旋轉是可以用四元數

tv123905/22 12:35https://tinyurl.com/mpm9vry5 當初申請的內容

jackyT05/22 12:40玩起來應該沒紀錄動量跟速度 所以應該只記錄transformat

jackyT05/22 12:40ion沒錯

jackyT05/22 12:41難的在一拖拉庫系統混在一起的時候怎麼迴避cache miss

Bugquan05/22 12:43應該是沒有,因為中間黏了東西,照樣是回去原來的位置

WiLLSTW05/22 12:45算動量我就不能年呀哈哈在木柴上了

shi052005/22 12:46原po說到重點 不需每筆資料都記錄 只需選擇一區間再用cub

shi052005/22 12:46ic spline去推估區間內數值 出來結果一樣平滑

strlen05/22 12:48容量還好 遊戲容量會大基本都是材質包語音包這些 程式沒差

spfy05/22 13:07感謝解釋 我這種拉基工程師實在讚嘆

crazylin92405/22 13:32王國之淚已經導論到這種層面了嗎…(讚嘆

dennisN05/22 13:45物理沒做好其他東西都是負加成 一代打磨的很精緻了二代才

dennisN05/22 13:45有辦法這樣玩