關於《劍網3》網絡延遲的一些理論分析

首先,來說明下網絡延遲會對網遊中施放技能造成多大影響

假設你在施放一個讀條2秒的四象,而你的網速爲100ms(毫秒),也就是說你有100ms的延遲,那麼不考慮劍三的延遲補償機制的話,整個施放過程如下:

時間t0=0.0秒時,你施放四象,客戶端將之發送至服務器

時間t1=0.1秒時(t0+100ms),服務器收到四象指令服務器端施法開始併發送確認信息到客戶端

時間t2=0.2秒時(t1+100ms),客戶端收到服務器端的確認信息並開始施法動畫

時間t3=2.1秒時(t1+2.0秒),服務器端完成施法並將完成信息發送至客戶端

時間t4=2.2秒時(t2+2.0秒),客戶端完成施法並將完成信息反饋給服務器,同時收到服務器端的完成信息,讀條結束。

(關於t4這步,客戶端必須收到服務器的完成施法信息纔會把讀條結束掉,這就是爲什麼網絡卡的時候,讀條讀完了,但就是不結束讀條的原因,因爲客戶端一直沒有收到服務器反饋回來的完成信息。)

從以上看出,如果沒有延遲補償機制,那麼實際施法時間往往是讀條時間+延遲X2。爲什麼讀條打斷後,法術仍然能放出也是因爲延遲,詳細機制如下:

時間t0=0.0秒時,玩家施放四象,客戶端將之發送至服務器

時間t1=0.1秒時(t0+100ms),服務器收到四象指令,服務器端施法開始併發送確認信息到客戶端

時間t2=0.2秒時(t1+100ms),客戶端收到服務器端的確認信息並開始施法動畫

時間t3=2.0秒時(t0+2.0秒),玩家取消施法,客戶端將取消信息發送給服務器

時間t4=2.1秒時(t1+2.0秒),服務器端完成施法

時間t5=2.1秒時(t3+100毫秒),服務器收到施法取消指令並無視之,因爲施法已經完成

時間t6=2.2秒時(t2+2.0秒),客戶端收到服務器完成信息,四象出手

簡單來說就是你打斷了讀條,但由於延遲,服務器那邊你實際上已經完成了施法。