→ spfy: 雖然有人解釋但我還是想不通倒轉要怎麼實作 不可能把林克附 → spfy: 近所有物件的軌跡都長期記錄起來吧? 記錄一個物件在空間中的姿態(pose: 包含位移跟旋轉) 一般是用一個4x4的浮點數(float: 有小數點的數字, 4 byte)矩陣 也就是說紀錄一筆位置, 記憶體大小是4x4x4=64 byte 假設他每秒記錄30筆pose (30fps), 並假設每個可移動物件都紀錄10秒 則一個物件的時間倒轉記錄是64x30x10=19.2 kbyte 超過一定距離的物件不能時間倒轉, 甚至都不會載入 所以假設他同時間最多有1000個物件會被載入(實際上應該沒這麼多) 他用來存時間倒轉資訊的總記憶體用量在每個時刻都不會超過19.2mbyte 由此可知時間倒轉其實負擔並不大 對於一個現代的系統來說, 19mb通常是可以忽略的大小 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.15.2.1 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1684727690.A.120.html
w2776803: 這個學校有教嗎 05/22 11:57
y2468101216: 推專業 05/22 11:58
hohiyan: 老任厲害的地方在其他物件都還是正常運行,而且會跟倒轉 05/22 11:58
ronga: 推專業,紀錄座標真的耗的資源還好 05/22 11:59
hohiyan: 的那個東西產生各式互動 05/22 11:59
w2776803: 感覺是業界人士 05/22 11:59
storewater: 你還要考慮朝向跟旋轉吧,雖然理論上也不會差太多 05/22 11:59
tv1239: 是說這系統任天堂不是有申請專利? 記得有公開作法 05/22 11:59
storewater: 喔 沒事看錯 05/22 11:59
w2776803: 可以倒轉時光同時還能用究極手根本神 05/22 11:59
WiLLSTW: 旋轉基本上都是記錄在那個矩陣內了 05/22 11:59
hank81177: 可以究極手+倒轉+通天術同時使用 05/22 12:01
WiLLSTW: 比較麻煩的是每frame所有物件可能都要把矩陣資料push進去 05/22 12:01
bestadi: https://i.imgur.com/faB8YRD.gif 倒轉引力+究極手 05/22 12:03
speedingriot: 倒轉的物體還要維持物理邏輯就爆炸了 05/22 12:03
hylkevin: 朝向跟旋轉就是pose喔,用一個轉換矩陣描述。或者另一種 05/22 12:04
hylkevin: 方法是用translation跟quaternion(四元數)兩組vector(3+ 05/22 12:04
hylkevin: 4個浮點數)描述。但這兩種東西其實是等價的,在這邊用轉 05/22 12:04
hylkevin: 換矩陣程式寫起來是比較簡單的。 05/22 12:04
w2776803: 聽起來很簡單實際上很難設計吧 05/22 12:08
ms0302610: 我也是這麼想的(裝 05/22 12:10
WiLLSTW: 不過問題還是在發動倒轉物件互動上的設計 05/22 12:11
hylkevin: to 13F: 要把資料push可以用一個長度30x10的circular qu 05/22 12:12
hylkevin: eue來存,但因為要先進後出,所以要把它當stack用。 05/22 12:12
tv1239: 能夠互動還不出大bug真的是這系統最可怕的地方 05/22 12:12
nisioisin: 有別的遊戲在做過倒轉嗎? 05/22 12:13
hylkevin: to 20F: 這邊只討論軌跡資料儲存,他怎麼呈現,物理怎麼 05/22 12:13
hylkevin: 運算要看有沒高手解答。 05/22 12:13
cloud0607: 單獨物件位移倒轉的沒印象 但整體場景時間倒轉機制的有 05/22 12:14
tv1239: 360時代有一片Braid 有各種時間相關的技能 05/22 12:14
cloud0607: 確實 軌跡紀錄不算負擔太大的東西 但跟其他系統/物理 05/22 12:14
kiedveian: 每frame推應該拉個queue放一丟一就好 05/22 12:14
Slas: Braid記得是全畫面倒帶那種 05/22 12:14
cloud0607: 疊加就是很可怕的東西了 05/22 12:14
cloud0607: Braid啊 那可是把時間要素玩出花來的神作了 05/22 12:15
WiLLSTW: 喔喔用Circular Queue來存的確是可以降低不少效能消耗 學 05/22 12:15
WiLLSTW: 到了 05/22 12:15
tv1239: Braid全場景倒轉 不過記得主角還是可以正常活動? 太久沒玩 05/22 12:15
Bugquan: 一個是倒轉的物體有限,另一個是範圍,基本就在林克的可 05/22 12:16
Bugquan: 視範圍,所以其實沒多少 05/22 12:16
Pegasus99: 問就是時間鉗型攻擊(?) 05/22 12:16
WiLLSTW: 另外其實可以觀察到 林克沒有觸碰到的物件 實際上應該是 05/22 12:17
WiLLSTW: 沒在持續的在寫入資訊 05/22 12:18
sniperex168: 大部分有倒轉的遊戲都全畫面,不然就是設計好的固定 05/22 12:18
sniperex168: 位置倒轉 05/22 12:18
s921619: 推專業 不懂程式的我完全看不懂討論 XD 05/22 12:19
w2776803: 這遊戲可以隨時隨地倒轉調位置附加,這種無限制的空間怎 05/22 12:19
w2776803: 麼定位超好奇的 05/22 12:19
willytp97121: 推專業 05/22 12:21
cn5566: 其實難的不是倒轉本身 而是倒轉中可以用究極手 通天 05/22 12:21
cn5566: 倒轉中的物件也有物理法則和其他物件互動 05/22 12:22
cn5566: 例如拿兩顆石頭一根木頭組成的東西在空中轉 05/22 12:22
cn5566: 然後倒轉 就能把在軌跡中晃的西諾克斯打爛這件事情 05/22 12:22
WiLLSTW: 倒轉中本體似乎無視物理法則 但互動的物件仍然會被物理系 05/22 12:25
chrisjeremy: 倒轉中還能維持物理運作是最難的 難以想像開發期間發 05/22 12:25
chrisjeremy: 生多少的bug 05/22 12:25
hylkevin: 另外要最佳化完全可以兩三幀或更多幀才存一筆資料,其他 05/22 12:25
hylkevin: 幀的pose用內插法算,人類肉眼很難看出差別。實際遊戲使 05/22 12:25
hylkevin: 用時間倒轉時可以觀察到物件在時間軸上有很多個節點,說 05/22 12:25
hylkevin: 不定他真的沒有全部存,而是用內插法補。 05/22 12:25
WiLLSTW: 統影響 這遊戲不管甚麼東西 只要力量*重量夠大就能造成 05/22 12:25
cloud0607: 就是這些看似簡單系統之間的互相疊加效果太有趣才可怕 05/22 12:25
WiLLSTW: 傷害 05/22 12:25
WiLLSTW: 也因為這個特性可以把東西黏上去再倒轉 只要不要超過黏膠 05/22 12:26
WiLLSTW: 的支撐上限(如果力矩不對黏膠是會斷掉的)就能帶著東西走 05/22 12:27
cloud0607: 這種叫做Emergent gameplay 薩爾達在設計上的頂峰領域 05/22 12:27
cloud0607: 然後這還是運行在一台機能有限的掌機 遊戲容量不到20G 05/22 12:28
Bencrie: 用 4x4 沒錯啊,只記旋轉是可以用四元數 05/22 12:33
tv1239: https://tinyurl.com/mpm9vry5 當初申請的內容 05/22 12:35
jackyT: 玩起來應該沒紀錄動量跟速度 所以應該只記錄transformat 05/22 12:40
jackyT: ion沒錯 05/22 12:40
jackyT: 難的在一拖拉庫系統混在一起的時候怎麼迴避cache miss 05/22 12:41
Bugquan: 應該是沒有,因為中間黏了東西,照樣是回去原來的位置 05/22 12:43
WiLLSTW: 算動量我就不能年呀哈哈在木柴上了 05/22 12:45
shi0520: 原po說到重點 不需每筆資料都記錄 只需選擇一區間再用cub 05/22 12:46
shi0520: ic spline去推估區間內數值 出來結果一樣平滑 05/22 12:46
strlen: 容量還好 遊戲容量會大基本都是材質包語音包這些 程式沒差 05/22 12:48
spfy: 感謝解釋 我這種拉基工程師實在讚嘆 05/22 13:07
crazylin924: 王國之淚已經導論到這種層面了嗎…(讚嘆 05/22 13:32
dennisN: 物理沒做好其他東西都是負加成 一代打磨的很精緻了二代才 05/22 13:45
dennisN: 有辦法這樣玩 05/22 13:45

😊 希洽 C_Chat 版:熱門文章

😊 希洽 C_Chat 版:更多文章