java – 通过网络或互联网制作多玩家游戏
嗨,我在
Java中编写了一个多玩家游戏,我想知道我需要学习什么和/或我应该使用什么来使游戏可以通过网络或互联网上的多台计算机播放.谢谢,我真的很无知,因为在哪里开始,所以任何建议都是有帮助的.
解决方法
那些其他答案都是相当高的水平,这是很好的,但你不想要高级别,你想要低级别,如“我如何使它实际发送数据,这是什么意思和什么发送等“这是你做的:
一,TCP或UDP?如果你不知道这些东西是什么,请阅读它们,因为我没有空间在这里给出一个很好的破坏,但是你的选择知道如下: > UDP对于你不一定关心消息可靠性的游戏是有好处的,并且更喜欢数据只是继续发送,如果你错过了一些东西,哦.这对于基于实时操作的游戏(例如HALO:Reach或使命召唤)来说是有益的.在这些中,如果发送对象的位置,并且对象永远不会在那里,最好发送一个新的位置,而不是重新发送一个旧位置(现在更老),所以一直保证可靠性并不重要.也就是说,你必须有一定的可靠性,所以你仍然需要某些事情来保证交付,如对象创建和对象销毁.这意味着您需要在UDP之上实现自己的半可靠,基于优先级的协议.这是困难的. 所以,问自己什么是重要的,了解TCP和UDP如何工作,然后做出明智的选择. 也就是说,现在您必须通过网络同步对象状态.这意味着您的对象需要序列化为可以在字节流中表示并写入套接字的内容.写入插座很容易;如果你可以写一个文件,你可以写一个套接字,这真的不难.重要的是确保您能够将对象表示为缓冲区,因此如果对象具有对其他对象的引用/指针,那么您将无法发送这些指针,因为它们在其他客户端上不同,所以你必须将它们转换成所有主机通用的东西.这意味着ID,尽管对象的ID在所有主机中必须是唯一的,因此您必须有一种方法来在主机之间进行协调,以使两个主机不会创建具有相同ID的不同对象.有办法处理这样做的主机,但我们不用担心这个(提示:使用主机的ID和网络ID之间的某种映射.更大的提示:不要这样做,如果你不需要). 那么现在你可以发送数据,好了,现在呢?每当游戏状态发生变化时,您必须以其他方式向其他机器发送更新.这是客户端 – 服务器体系结构所在的地方,如果需要,也可以是对等的.客户端 – 服务器更容易实现.此外,一个主机“代理”作为服务器仍然是客户端 – 服务器,任何说不同的人是错误的. 所以,服务器的责任是“拥有”所有的游戏状态.只有服务器可以肯定地说出一个对象的状态.如果你想移动一个对象,你告诉服务器你想移动,然而服务器然后告诉你你应该移动对象,你不只是做(虽然某种客户端预测通常是有用的).因此,服务器将更新的对象状态发送到所有其他主机. 所以,你提到了一个回合制的游戏吧?很简单: >您将要彻底解决目前转向的客户端.一旦该客户端执行了他们想做的事情,将该转发的结果发送到服务器.然后,服务器验证客户端的移动(不要仅仅信任客户端,以这种方式发生作弊),并将它们应用到其对象状态. 这就是你需要做的一个回合制游戏.提示:使用TCP 还有一些其他有用的技巧可以减少您的邮件的大小和频率,并跟踪不是基于回合的游戏,并且实时执行,但是如果您有一个基于回合制的游戏,那么正确的事情做大概是使用TCP,而不用担心任何其他的东西.这里有一些链接到有用的网站和文章,将为您提供有关如何完成游戏网络编程的更多信息: 让我知道,如果你想要更多的细节,任何这些东西,或者如果你有更多的具体问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |