社群測試一致顯示,標準模擬賽車 bass shaker 軟體在多種音效卡和硬體設定下, 端對端延遲為 140 至 200 毫秒。 本頁逐層拆解每一個造成延遲的環節,盡可能引用已公開的技術資料, 並在資料來源為推估時明確標注。
觸覺回饋是一條從遊戲事件到體感震動器物理運動的鏈條。在標準觸覺軟體中,三個層次主導了總延遲。沒有任何單一層面會造成災難性的延遲,問題在於它們會堆疊。
140 至 200 毫秒的數據來自社群在 7 張以上音效卡設定下的實測結果。以下各層的數據來自已公開的技術文件或根據公開資料計算而得。若為估算值或根據基本原理推導的數據,會在文中明確標注。
實測總計:140-200ms。[1]
在任何音訊被合成之前,bass shaker 軟體需要先知道模擬器中發生了什麼事。大多數 bass shaker 軟體使用輪詢模型:以固定計時器檢查新資料,處理效果,然後寫入音訊輸出。
標準 bass shaker 軟體的屬性更新頻率最高為 60Hz。[2] 在 60Hz 下,每 16.7 毫秒執行一次檢查。如果某個事件剛好在一次檢查完成後才到達,就必須等待整整 16.7 毫秒才能在下次檢查時觸發觸覺輸出。平均而言,這額外增加了約 8 毫秒的等待時間。
這與遊戲本身的遙測頻率是不同的概念。iRacing 透過子取樣以 360Hz 寫入共享記憶體(你電腦 RAM 中遊戲發布即時遙測資料的區域)。ACC 和 AC 則在每個渲染幀寫入一次快照,通常為 60 至 240Hz,取決於你的 FPS。無論哪種情況,瓶頸都在 bass shaker 軟體的讀取速度,而非模擬器的產出速度。
Track Impulse 使用事件驅動模型讀取 iRacing 的共享記憶體,沒有輪詢迴圈。引擎在新遙測資料寫入的瞬間就被喚醒,通常在遊戲物理 tick 後的 1 毫秒內。
在聲音傳到你的喇叭或體感震動器之前,它會先經過一個音訊引擎:負責混音、緩衝和處理音訊的軟體。標準 bass shaker 軟體使用的是為遊戲配樂和電影音效設計的通用音訊引擎。這些引擎優先考慮穩定性而非速度,使用大型內部緩衝區來防止音訊斷裂。
標準 bass shaker 軟體的當機日誌顯示的音訊初始化呼叫,與廣泛使用的音訊引擎 FMOD 一致。[3] FMOD 的官方 API 文件指出,其預設內部緩衝區設定會將音訊排入 4 個區塊,每個約 21 毫秒。以下是具體數字:
// FMOD System::setDSPBufferSize defaults bufferlength = 1024 // samples per block numbuffers = 4 // blocks in the ring buffer samplerate = 48000 // Hz block_ms = 1024 / 48000 * 1000 // = 21.33ms per block avg_latency = (4 - 1.5) * 21.33 // = ~53ms average latency
FMOD 的文件確認延遲公式為 (numbuffers - 1.5) x blocksize,在預設值下平均混音器延遲約為 53 毫秒,而這還不包含任何作業系統音訊開銷。[3]
我們無法確認任何第三方觸覺應用程式所使用的確切設定,緩衝區大小和區塊數量可能與 FMOD 預設值不同。以上數據說明的是問題的類型,不一定代表特定產品的精確影響。140 至 200 毫秒的總數是社群實測結果,而非從這些分層數據計算而來。
WASAPI(Windows Audio Session API)是大多數 Windows 應用程式將音訊傳送至音效卡的方式。在共享模式下(多數應用程式使用的預設模式),Windows 會將所有應用程式的音訊透過一個中央混音器混合後,再傳送至硬體。這個混音步驟產生的延遲無法透過更改緩衝區設定來消除。
使用 FlexASIO 進行的獨立測試一致顯示,WASAPI 共享模式無論緩衝區大小如何設定,延遲底線始終超過 20 毫秒。[4] 這是 Windows 本身強制的底線,不是可調整的參數。
Microsoft 在 Windows 10/11 中新增了低延遲音訊選項,理論上可將延遲降至最低 1.3 毫秒。然而,應用程式和音效卡驅動程式都必須明確支援此功能。標準 bass shaker 軟體並未使用此功能。[5]
ASIO(Audio Stream Input/Output)由 Steinberg 開發,專門用於解決即時音樂製作中的 Windows 音訊延遲問題。其關鍵架構差異在於:完全繞過 Windows 音訊混音器,直接與音效卡驅動程式溝通。
在 64 樣本 / 48kHz(典型的 ASIO 設定)下,音訊輸出延遲為 64 / 48000 x 1000 = 1.33 毫秒。這是 Track Impulse 在 64 樣本 ASIO 緩衝區下可達到的數值。
Track Impulse 直接針對延遲堆疊的每一層進行最佳化:
Track Impulse 不使用計時器輪詢新資料,而是直接監聽:遊戲在新遙測資料就緒的瞬間通知引擎。零輪詢延遲。iRacing 透過此方法提供 360Hz 子取樣(將多個物理快照打包到每個幀中)。ACC 和 AC 則提供每個渲染幀的快照,因此遙測的即時性會隨著你的 FPS 提升而改善。
四個獨立的效果引擎(車輛四個角各一個)同時處理避震器速度、震動頻率、輪速和轉速。當模擬器在單一幀中打包多個物理更新時,所有更新都會依序處理。處理時間低於 1 毫秒。
透過 ASIO 輸出完全繞過 Windows 音訊堆疊。音訊輸出延遲 1.3 毫秒。不經過通用音訊中介軟體,沒有 WASAPI 共享模式開銷,不需要作業系統混音。
支援任何具備 ASIO 功能的音訊介面。LF、RF、LR、RR 獨立映射。硬體開銷約 1 毫秒。端對端延遲最低可達 2 毫秒。
總延遲取決於模擬器的遙測頻率和幀結構。ASIO 輸出加上硬體開銷(合計約 2.3 毫秒)在所有模擬器中保持不變,變動的部分是遙測資料的新鮮度。
iRacing 的 360Hz 子取樣模型意味著在任何給定幀中,最新的資料在提交時僅有 2.78 毫秒的延遲,最舊的則為 16.67 毫秒。加上約 1.3 毫秒的 ASIO 輸出和約 1 毫秒的硬體開銷,完整範圍為 5 至 19 毫秒。ACC 和 AC 使用渲染幀快照:遊戲在每次繪製畫面時寫入一筆遙測更新。在 144 FPS 下幀間隔為 6.9 毫秒,加上約 2.3 毫秒的堆疊開銷,範圍為 2 至 9 毫秒。更高的 FPS 能提供更即時的遙測資料。在 60 FPS 下,範圍擴大至約 2 至 19 毫秒。
安裝低延遲 bass shaker 軟體 Track Impulse,與你現有的觸覺設定並行運作,直接比較延遲差異。 Beta 期間免費。不需要信用卡。10 分鐘內完成設定。