[程式] 想请问即时游戏的设计问题

楼主: LaPass (LaPass)   2015-07-27 11:41:35
例如
暗黑、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端不该看到的资料,像是敌人的位置等等
不过我没写过这种程式,不确定这种作法可不可行
或是,想请问业界中确切的作法是怎么样呢?
作者: cowbaying (是在靠北喔)   2015-07-27 12:46:00
这类技术蛮多样的 比较常看到的是多少ms一个tick然后这一个tick针对玩家阵列做资料广播再来就是广播时资料的sync接收资料(tick中)->伺服端处理->sync后广播(tick结束)因为时间很短 通常是40ms以内 所以感觉不出差异即时性游戏比较要注意的就是PING较高者的移动补偿
楼主: LaPass (LaPass)   2015-07-27 13:05:00
其实一般人的反应极限是 200ms ,拉到100ms人就感觉不出来有不同部的问题了
作者: os653   2015-07-27 14:04:00
实际上以前打游戏100ms是感觉得出来的,会有一点钝钝的感觉
作者: Bencrie   2015-07-27 21:31:00
100ms 还算是 high latency 吧,都过 5 frames 了
作者: LayerZ (無法如願)   2015-07-28 01:15:00
然后就是看client如何把那一点延迟修的看不出来

Links booklink

Contact Us: admin [ a t ] ucptt.com