谢谢YidingHe
就像你说的,需要一个主机,比如星际,每个人的操作都应该通过主机告知其他人。
现在举个例子:
玩家C移动一个机枪兵到很远的一个地方,此操作会通过主机告知其他玩家,此时,玩家C又将机枪兵点回来,停下了,但由于网络延时,其他玩家看到此兵还在移动,如何解决?如果是在混战中他已经打死了别人的一个小兵,又该怎么办?

解决方案 »

  1.   


    楼主玩过网络游戏吗,比如魔兽世界?我记得05年魔兽世界刚出来的时候有人就开加速外挂,我一个奥术飞弹打上去,那人的移动速度比我的飞弹还快,画面上看飞弹总是追不上他,但是看血量他已经掉血了.魔兽世界晚上人多的时候服务器会卡,RAID的时候经常看到一种现象,就是你看见旁边的队友跑进怪堆里,但是怪没有过来,过一会又发现队友其实就在身旁,这可能就是延迟吧,客户端发送移动的请求给服务器,服务器就一直让人物移动,当客户端发送停止的请求给服务器时,由于延迟客户端的画面上的人物并没有停止,我想要是连魔兽世界这样的游戏都没有彻底的解决这个问题,楼主也可以吧?
      

  2.   

    感谢ligoou,我就是想实现您所说的同步信息以及服务器来更正客户端
    请问哪位有这方面的经验或想法,请不吝赐教,谢谢!
      

  3.   

    用socket的话 一端作为host 一端作为client
    client只上传和接收host传输来的信息host负责处理游戏
      

  4.   

    感谢大家,socket编程我有一定的经验
    但没实现过服务器来更正客户端
    定时发送同步信息吗?数据量太大了,所有有动做的对象都要更新.时间间隔呢?专起用一个线程吗?
    请问哪位有这方面的经验或想法,请不吝赐教,谢谢!
      

  5.   


    22楼 顶一下客户端只有2个权限  一个是send request 还有一个就是 execute response而真正处理交互数据的只有host你点一下机枪兵让他往前走到XX  客户端发一个request:机枪兵要走到xxHOST开始处理 并回复一个response: 机枪兵可以走到xx客户端开始execute response: 机枪兵走到xx
    其实客户端完全没有权限去处理自己的数据  他可以处理收到的response
      

  6.   


    我不知道你是不是学过OS哇游戏跟键盘有点像的键盘是有一个队列  系统每隔10ms去读一下这个队列(windows是10ms) 最终当windows confirm了你这个request的时候 他才去干事  网络游戏也是一样的  当你有request的时候  他是马上发送给HOST的而同时又有一个线程每隔比如50ms去读一下HOST的response  每个游戏的处理方法根据游戏的性质会不一样  但是视频游戏肯定是这样的最多可能的改变就是  上面说的接受response的方式是由客户端去像HOST拉的也可以变成HOST往client推的方式  就是有了一个response 就马上发送给client 而不是client每隔50ms 去update一下
      

  7.   

    谢谢大家,结帖了,新的内容讨论我又开了新帖:
    http://topic.csdn.net/u/20100109/18/b6a979c7-707d-4185-b269-bd87683be501.html
     不显示删除回复显示所有回复显示星级回复显示得分回复 开发网游中的同步问题(socket相关)[问题点数:100分]
    欢迎大家前往。