作者LaPass (LaPass)
看板GameDesign
标题[程式] 想请问即时游戏的设计问题
时间Mon Jul 27 11:41:35 2015
例如
暗黑、RO、LOL、WOW、世纪帝国等等
像这种,即使,有单位,有位置,有技能的状况
要怎麽设计多人连线的同步?
我自己的想法是
将地图分格子,用座标去处理位置问题。
然後时间的话,则固定以0.1~0.5秒为一个单位(frame),去计算各单位的动作
client端下达命令或是使用技能时,都会用frame为单位下去做计算跟同步
传递讯息时用tcp传递每个frame的重要讯息
EX
frame 1{
a使用技能重击攻击b造成130伤害,变动後b还剩500hp
a消耗5单位魔力,变动後还剩95。
......
}
其他像是持续性伤害,自然生命力恢复
理论上只要一开始有给定速率跟起始值,client端应该能自己算出现在的hp值
然後,传输的时候,再过滤掉那个client端不该看到的资料,像是敌人的位置等等
不过我没写过这种程式,不确定这种作法可不可行
或是,想请问业界中确切的作法是怎麽样呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 125.227.87.115
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1437968498.A.E03.html
1F:推 cowbaying: 这类技术蛮多样的 比较常看到的是多少ms一个tick 07/27 12:46
2F:→ cowbaying: 然後这一个tick针对玩家阵列做资料广播 07/27 12:47
3F:→ cowbaying: 再来就是广播时资料的sync 07/27 12:47
4F:→ cowbaying: 接收资料(tick中)->伺服端处理->sync後广播(tick结束) 07/27 12:50
5F:推 cowbaying: 因为时间很短 通常是40ms以内 所以感觉不出差异 07/27 12:52
6F:→ cowbaying: 即时性游戏比较要注意的就是PING较高者的移动补偿 07/27 12:52
7F:→ LaPass: 其实一般人的反应极限是 200ms ,拉到100ms人就感觉不出 07/27 13:05
8F:→ LaPass: 来有不同部的问题了 07/27 13:05
9F:推 os653: 实际上以前打游戏100ms是感觉得出来的,会有一点钝钝的感觉 07/27 14:04
10F:推 Bencrie: 100ms 还算是 high latency 吧,都过 5 frames 了 07/27 21:31
11F:→ LayerZ: 然後就是看client如何把那一点延迟修的看不出来 07/28 01:15