请教如何利用java实现多人同步游戏

时间:2022-01-05 10:13:40
比如一个坦克对战游戏,两名玩家同服务器之间如何实现参数传递才能够保证游戏的实时同步进行呢?请高手们给小弟点指点吧~~ 谢谢了!

12 个解决方案

#1


线程 同步通信

#2


那还用不用分别在服务器及两台客户机上创建坦克的实例对象呢?

#3


你既然都创建一个玩家了,为什么还不会在加一个呢

#4


晕,Re楼上的:我的意思不是如何添加用户,这不成问题。
  我困惑的是该怎么让客户机同服务器端实现参数传递,传什么?传的是坦克这个对象还是传递坦克的位置,如果说是后者的话,那么又如何实现同步呢?不停地使用repaint()方法吗?小弟组织语言的能力欠佳,不知各位高手们可否理解~~

#5


就传位置,速度和方向和它的动作,传到各客户端自己计算,

#6


有点开窍了,我得好好盘算盘算~~

#7


个人认为应该是这样的,服务器间的同步,应该是多个线程之间通信,反正就是整个游戏某时的状态是一个共享单元,服务器与客户端之间传递参数,在客户端组织成画面等的

#8


哦,那么楼上大哥的意思是在服务器内计算玩家坦克之间的位置、移动等等数据,然后再通过线程同步通信反映给每台客户机,能否这么理解呢?可是,我还是想问:到底用不用在服务器里画出那些坦克吗? 网上我也没有找到关于线程同步的多人游戏的例子,真是郁闷之极……不过还是感谢高手们不吝赐教……

#9


我总算是有思路了:游戏房间可以用线程池来实现,即玩家向服务器提交申请开辟一个房间就等于申请一个线程池,线程池内的线程数就是房间内的玩家数;然后用 XML 来储存管理房间列表,并通过 JDOM 来对 XML 内的数据项进行增加和删除;JDOM 又需要用到 JavaBean 来实现,这样一来,JSP 技术就有了用武之地,那么这样一个 B/S 模式的网络游戏就诞生了……

#10


UP!

#11


Continue UP !

#12


现在终于可以结了:
原来那些多人游戏实现都是相互传输指令集,他们里头包含着各客户机的地址,或是计算机名,然后跟着响应键盘或鼠标的相应事件代码,这些指令集一股脑地发送给这个游戏的所有客户计算机,然后服务器计算机会根据这些指令集进行解析并响应成对应的动作,那么你就可以看到别人的动作了。

#1


线程 同步通信

#2


那还用不用分别在服务器及两台客户机上创建坦克的实例对象呢?

#3


你既然都创建一个玩家了,为什么还不会在加一个呢

#4


晕,Re楼上的:我的意思不是如何添加用户,这不成问题。
  我困惑的是该怎么让客户机同服务器端实现参数传递,传什么?传的是坦克这个对象还是传递坦克的位置,如果说是后者的话,那么又如何实现同步呢?不停地使用repaint()方法吗?小弟组织语言的能力欠佳,不知各位高手们可否理解~~

#5


就传位置,速度和方向和它的动作,传到各客户端自己计算,

#6


有点开窍了,我得好好盘算盘算~~

#7


个人认为应该是这样的,服务器间的同步,应该是多个线程之间通信,反正就是整个游戏某时的状态是一个共享单元,服务器与客户端之间传递参数,在客户端组织成画面等的

#8


哦,那么楼上大哥的意思是在服务器内计算玩家坦克之间的位置、移动等等数据,然后再通过线程同步通信反映给每台客户机,能否这么理解呢?可是,我还是想问:到底用不用在服务器里画出那些坦克吗? 网上我也没有找到关于线程同步的多人游戏的例子,真是郁闷之极……不过还是感谢高手们不吝赐教……

#9


我总算是有思路了:游戏房间可以用线程池来实现,即玩家向服务器提交申请开辟一个房间就等于申请一个线程池,线程池内的线程数就是房间内的玩家数;然后用 XML 来储存管理房间列表,并通过 JDOM 来对 XML 内的数据项进行增加和删除;JDOM 又需要用到 JavaBean 来实现,这样一来,JSP 技术就有了用武之地,那么这样一个 B/S 模式的网络游戏就诞生了……

#10


UP!

#11


Continue UP !

#12


现在终于可以结了:
原来那些多人游戏实现都是相互传输指令集,他们里头包含着各客户机的地址,或是计算机名,然后跟着响应键盘或鼠标的相应事件代码,这些指令集一股脑地发送给这个游戏的所有客户计算机,然后服务器计算机会根据这些指令集进行解析并响应成对应的动作,那么你就可以看到别人的动作了。