作者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
1F:推 PathosCross:感谢详解!!! 04/15 15:23
2F:推 azureblaze:不只是准备动作,整个动画都在客户端跑也很常见 04/15 18:13
3F:→ azureblaze:像FPS常常会有开枪动画,可是子弹其实跟没出去 04/15 18:13
4F:→ azureblaze:*根本 04/15 18:14
5F:→ azureblaze:ARPG也会空挥没判定 04/15 18:14
6F:→ azureblaze:因为视觉和声音有延迟会让人很不爽 04/15 18:14
7F:→ azureblaze:可是伤害到底隔多久才算其实很难看出来 04/15 18:15
8F:推 chenglap:其实我看到某些系统根本就是「只有」掉宝的部份才 server 04/15 18:20
9F:推 LayerZ:像最近的DNF吗... 04/15 18:45