作者lgd (嚕嚕嚕)
看板GameDesign
標題Re: [請益] 放招式延遲
時間Mon Apr 15 11:46:18 2013
※ 引述《PathosCross (木偶君)》之銘言:
: 線上遊戲我玩得不是很多,
: 比較久的也只有WOW而已。
: 最近接觸了一款MMORPG,叫「超魔導大戰」,
: 是宇峻奧汀的遊戲,
: 在放招式的時候總會有些Lag,
: 彷彿延遲了0.3秒左右,
: 問了周遭的朋友,
: 應該不是我感覺出了問題,
: 所以想請問一下,是因為有哪些原因?
: 初步猜測是選擇的腳本語言的關係,
: 還是因為製作引擎的關係呢?
其實推文有講了~
不過我試著回覆詳細一點
首先~線上遊戲一定會有延遲
也就是你送一個指令到server,server 處理結束再送回來
有兩個部份會延遲,1.網路 2.處理指令時間
所以譬如你放招式,要先把指令送到server,然後server判定你可以放這一招
再回傳告訴你,你可以開始播放施法的動作了。
這中間的延遲是必定會有的
這時候另外一個疑問就是~那其他遊戲為什麼不會??
因為這種延遲是會讓玩家遊戲體驗很差的,
所以大部分開發商都會想各種辦法來改善這個問題
改進的方法最基本的有兩種
1, 直接開始施法,由client端判定是否可以施法。或是是否可以移動到某個點。
server只負責處理結果並且更新給其他人知道。
缺點:可以作弊,看到線上遊戲所謂的加速,空中飛人,0 CD施法 等等
大概都是因為這個作法造成的漏洞。
包含WOW也把是"否可以移動到某個位置"放到 client計算,所以發生過
有人修改地圖模組,達到可以穿牆的效果(後來整個公會被砍帳號)
這個作法也不完全只是為了改善延遲,也可以大幅降低server的負擔。
2. 先施放準備動作, 譬如一個施法施法時間是1秒,
前面0.3秒可能是你一按指令就開始播放,
然後後面0.7秒則是有收到server端確認才繼續播放
這方法WOW應該也有用過,如果參加過World event,一堆人擠在同一區
就會發現你的施法會到一半停住。
以上是粗淺的認知~我相信很多開發者用的方法應該都蠻厲害的。
畢竟玩遊戲常常會覺得到底怎麼樣可以做到如此流暢。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.58.34
推 PathosCross:感謝詳解!!! 04/15 15:23
推 azureblaze:不只是準備動作,整個動畫都在客戶端跑也很常見 04/15 18:13
→ azureblaze:像FPS常常會有開槍動畫,可是子彈其實跟沒出去 04/15 18:13
→ azureblaze:*根本 04/15 18:14
→ azureblaze:ARPG也會空揮沒判定 04/15 18:14
→ azureblaze:因為視覺和聲音有延遲會讓人很不爽 04/15 18:14
→ azureblaze:可是傷害到底隔多久才算其實很難看出來 04/15 18:15
推 chenglap:其實我看到某些系統根本就是「只有」掉寶的部份才 server 04/15 18:20
推 LayerZ:像最近的DNF嗎... 04/15 18:45