谢谢YidingHe
就像你说的,需要一个主机,比如星际,每个人的操作都应该通过主机告知其他人。
现在举个例子:
玩家C移动一个机枪兵到很远的一个地方,此操作会通过主机告知其他玩家,此时,玩家C又将机枪兵点回来,停下了,但由于网络延时,其他玩家看到此兵还在移动,如何解决?如果是在混战中他已经打死了别人的一个小兵,又该怎么办?
就像你说的,需要一个主机,比如星际,每个人的操作都应该通过主机告知其他人。
现在举个例子:
玩家C移动一个机枪兵到很远的一个地方,此操作会通过主机告知其他玩家,此时,玩家C又将机枪兵点回来,停下了,但由于网络延时,其他玩家看到此兵还在移动,如何解决?如果是在混战中他已经打死了别人的一个小兵,又该怎么办?
楼主玩过网络游戏吗,比如魔兽世界?我记得05年魔兽世界刚出来的时候有人就开加速外挂,我一个奥术飞弹打上去,那人的移动速度比我的飞弹还快,画面上看飞弹总是追不上他,但是看血量他已经掉血了.魔兽世界晚上人多的时候服务器会卡,RAID的时候经常看到一种现象,就是你看见旁边的队友跑进怪堆里,但是怪没有过来,过一会又发现队友其实就在身旁,这可能就是延迟吧,客户端发送移动的请求给服务器,服务器就一直让人物移动,当客户端发送停止的请求给服务器时,由于延迟客户端的画面上的人物并没有停止,我想要是连魔兽世界这样的游戏都没有彻底的解决这个问题,楼主也可以吧?
请问哪位有这方面的经验或想法,请不吝赐教,谢谢!
client只上传和接收host传输来的信息host负责处理游戏
但没实现过服务器来更正客户端
定时发送同步信息吗?数据量太大了,所有有动做的对象都要更新.时间间隔呢?专起用一个线程吗?
请问哪位有这方面的经验或想法,请不吝赐教,谢谢!
22楼 顶一下客户端只有2个权限 一个是send request 还有一个就是 execute response而真正处理交互数据的只有host你点一下机枪兵让他往前走到XX 客户端发一个request:机枪兵要走到xxHOST开始处理 并回复一个response: 机枪兵可以走到xx客户端开始execute response: 机枪兵走到xx
其实客户端完全没有权限去处理自己的数据 他可以处理收到的response
我不知道你是不是学过OS哇游戏跟键盘有点像的键盘是有一个队列 系统每隔10ms去读一下这个队列(windows是10ms) 最终当windows confirm了你这个request的时候 他才去干事 网络游戏也是一样的 当你有request的时候 他是马上发送给HOST的而同时又有一个线程每隔比如50ms去读一下HOST的response 每个游戏的处理方法根据游戏的性质会不一样 但是视频游戏肯定是这样的最多可能的改变就是 上面说的接受response的方式是由客户端去像HOST拉的也可以变成HOST往client推的方式 就是有了一个response 就马上发送给client 而不是client每隔50ms 去update一下
http://topic.csdn.net/u/20100109/18/b6a979c7-707d-4185-b269-bd87683be501.html
不显示删除回复显示所有回复显示星级回复显示得分回复 开发网游中的同步问题(socket相关)[问题点数:100分]
欢迎大家前往。