● 9173 411/16 SmallBeeWayn R[外行] 遊戲名詞我流解釋<Frame> & <Ping>
文章代碼(AID)#1B0Jy6lk
作者: SmallBeeWayn (喵喵叫的蜜蜂貓職方法) 看板: C_Chat
標題: Re: [外行] 遊戲名詞我流解釋<Frame> & <Ping>
時間: Mon Nov 16 20:01:06 2009
整串討論可以說大錯特錯= =......
首先...定義:
FPS=Frame per second=每秒顯幀數
在電腦領域裡,是指「顯示卡輸出暫存區」每秒鐘「置換」的畫面數量
也可以說是「平均銀幕暫存更新數/秒」
請注意...就算你現在是穩定的24FPS,不代表你畫面每秒鐘輸出24張不重複畫面
也不代表你的程式每秒運算24次畫面...
Ping=Partimage Is Not Ghost(沒有中文翻譯)
這指的是一種網路延遲時間的測量方式,時間指的是
從「來源電腦」「開始送出」資料,到目標電腦把該資料直接回傳
再「回到」「來源電腦」「收完」這之中所需要得時間
============================================
先講關於FPS與遊戲內部處理之間的問題
我就跳過古早不使用的處理系統...直接講現代遊戲設計方式
一個遊戲大致上有3(或4)個獨立循環系統
(就是有三組個別一直重複同樣運算的系統)
1.輸入介面
也就是你的鍵盤滑鼠之類的....這部份對CPU消耗最低
當你輸入按鍵並不是立刻就處理,而是先被儲存起來等著被「系統」處理
這個介面處了儲存之外還要負責定義「連按」之類的東西
例如當你刷搖桿出招的時候....它必須負責紀錄按鍵與按鍵間的連續性&時間差
供「系統」決定要不要認可你的連續出招是否合宜
另外...網路遊戲通常也會把網路資訊放在這一個循環裡面
除了基本的接收與存放外,萬一發生資料Loss, 也要負責用補點方式把資料補起來
2.系統
整個遊戲的主控核心,根據各種資料來進行結果演算,例如位置/彈道/命中判定/指令處理等
在遊戲中是最高優先權的存在,其更新頻率是受到嚴格控制的
以格鬥遊戲來說,雙方到底是同時發招還是誰先動手,取決於系統更新頻率
(例如說在三次系統更新循環內發招算是同時, 超過就來不及之類的)
(每一次更新可能指處理一點點工作,高更新率主要是為了分辨前後早晚)
這裡要強調...「系統更新頻率」跟「畫面FPS」沒有必然的一對一關係
正常來說...系統更新頻率一秒鐘數百次也是很正常的...
3.輸出介面
將系統運算的結果,「不定期」的呈現到畫面上
因為只是結果,比起另外兩個系統來說優先權低很多
而且這通常也是最消耗電腦性能的一個工作
萬一系統來不及算資料,第一個被放棄的就是輸出
(不過超專業的遊戲會在輸出FPS過低的狀況下嘗試減少一些系統運算)
一般來說...人眼只要超過16FPS大概就會認定是連續畫面, 30FPS就已經相當完整了
超過60FPS可以說是沒有意義(除了動態視覺,還有後面我會提到銀幕更新綠的問題)
雖然是最低優先權的循環,可是對於觀感影響非常的直接,因此遊戲設計最困難也在這裡
包含下面這些東西都是設計上要考量的
A.確保關鍵畫面更新(最重要的畫面變化一定要更新到)
B.盡可能保持畫面順暢(不要一個上一個連續畫面等0.03s,下一個等0.2s,下一個又0.03)
C.放棄不重要的(例如遠景)確保主要的(例如敵人)畫面演算
D.在資訊遺漏(常見於網路遊戲)的狀況下保持畫面連續性
E.其他....
4.網路介面
通常會被分散進前三個循環,但又有些不同
因為網路是不確定的,可能會漏資料或是傳輸時間穩定度太低(所謂爆ping)
經常需要「猜測」資料內容以維持整體的完整性跟一貫性
有時候會把這部份整個獨立出來設計撰寫
============================================
除此之外還有一個銀幕更新率的問題...標準LCD通常是60Hz的那個
所謂60Hz就是指你銀幕一秒鐘會跟顯示卡要60次「最新畫面」(很穩定的)
而顯示卡會從「輸出暫存區」送出資料,而不是當場算一個新的給銀幕
所以你就算有120FPS的暫存更新率, 畫面也還是60FPS的更新率
而如果畫面固定在24FPS,銀幕卻是60Hz...想當然耳就會出現跳格的現象了
所以很多遊戲都設定卡死在60或30FPS或「不大於銀幕更新率」就是這樣的原因了
============================================
再講到Ping跟遊戲的問題
古早的遊戲多半是以主機時間為準...Ping高的玩家指令送到的慢...就等著挨打
不過現在的網路遊戲多半都有所改良
對於Ping高的玩家都有一些優惠
例如說玩網路第一人稱射擊遊戲...
大家可能都有明明就已經跑走了,卻被「拖回去」打死了
這有可能因為兩個原因
1.你漏接了重要資料, 你的客戶端就假設你安全前進
可是後來到的資料表明你被KO了,所以只好畫面倒帶....
2.某個高Ping玩家攻擊命令晚到了...主機算算誤差時間, 做出你被打死了的結論
因此補資料通知你你被打死了.....然後還是畫面倒帶...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.180.163
推 rofellosx:推專業 11/16 20:09
→ SmallBeeWayn:補充...有些遊戲把輸入介面合併到系統裡一起管理 11/16 20:11
推 conmunic:專業 11/16 20:22
推 juicefish:專業推 11/16 21:09
→ FlyinDeath:ping沒有中文是因為他本來就是從其他領域借來的辭彙 XD 11/16 21:44
→ FlyinDeath:ping是狀聲辭 指的是主動聲納打出來的聲音 11/16 21:45
→ FlyinDeath:ping的運作機制跟主動聲納有異曲同工之妙~ 11/16 21:45
推 LeeSEAL:看不懂照推 XD 11/16 22:55
推 LeeSEAL:看懂了補推, 然後我也沒意見. 11/16 23:58
推 j5a6s7o8n:專業推~~ 11/21 11:40