网站大量收购独家精品文档,联系QQ:2885784924

unity3d网络交互方法.docxVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
unity3d网络交互方法

unity3d--网络交互的方法Remote Procedure Calls(RPC)也叫RPCs,远程过程调用通过网络在不同的机器上调用函数。这也包括玩家本地游戏实例。Client可以传送RPCs到Server,Server也可以把RPCs传到一个或者多个Client上。最普遍的情况是,RPCs用于不是很频繁发生的动作。比如客户端开了一个开关想要开门,它可以传送一个RPCs到Server告诉Server门已经打开了。然后Server可以传送另一个RPCs给所有Client,执行它们本地的函数将同一扇门打开。RPCs用于管理和执行独立的事件。调用RPCs几乎和调用普通函数一样简单,但是仍然有一些重要的区别需要理解。1.一个RPC调用可以有任意多的参数。所有的参数当然都会被通过网络传送。越多的参数会让带宽使用越多。所以应该尽量减少参数。2.需要指定谁将要接收正在被送出的RPC。有几种RPC调用模式,概括了所有常见的情况。你可以在以下这些模式执行RPC函数:everyone,仅在server,除了自己外的everyone,一个指定的Client或玩家。状态同步(State Synchronization)状态同步用于共享不断变化的数据。最好的例子就是在一个动作游戏里一个玩家的位置信息。这个玩家总是移动,来回跑、跳跃、等等。即使是不需要控制他的网络中的其他玩家,也需要知道他在哪,在做什么。通过不断的传送关于这个玩家的位置信息,其他玩家就可以精确的表示这个玩家的位置。这种数据通常定期的、频繁的通过网络传送。因为这种数据是时间敏感的,而且需要通过互联网管道从一个机器传到另一个机器上,所以尽可能的减少这种数据的传送量是非常重要的事情。简单的说,状态同步一般需要很多带宽,所以你应该做一切可能的尽可能减少带宽的使用量。状态同步目前支持两种类型的传输的可靠性保证(reliability)。可靠的差值压缩(ReliableDelta Compressed)和非可靠(Unreliable)的方式。可靠的基于差值压缩的方式(ReliableDelta Compressed)可靠的差值压缩(Reliable Delta Compressed)模式会自动比较上次客户端接收到的消息。如果相对上次消息没有数据发生变化,就不传输数据。但是在它之上数据将在每个属性的基础上进行比较。举例来说就是,如果你的位置发生了变化但是方向没有变化。只有位置会被传送过来。在这种模式下,Unity内部打包时在每个属性前增加1位决定是否发生了改变。如果没有改变,这个属性并不会包含在序列化的数据中从而节省了很多带宽。Unity也会保证每个被送出的封包都会到达,在UDP丢包的情况下,它会重发这个封包,直到封包被接收到。这意味着如果一个包丢了,之后送出的封包在丢包重发并且收到之前不会被应用。在那以前,所有之后送出的封包将会放到一个缓冲中等待。非可靠(Unreliable)在非可靠的模式下,Unity不管当前的状态是否改变都会将其送出。状态不会被差值压缩传送,因为并不会知道送出的数据是否会实际到达接受者。文章出处:(狗刨学习网)决定使用哪种方式Unity的网络层使用UDP非可靠无序协议,但是却可以像TCP一样发送有序的可靠的封包。它内部使用ACKs和NACKs控制封包的传输,确保没有丢包。但使用有序可靠的封包的缺点是如果一个封包丢了或者延误,所有东西都会停下等待直到那个封包安全到达。这在延时敏感的网络中传输时,会导致明显的延时。非可靠的传输一般用于,你明确知道无论怎样每帧都会改变的数据。举例来说,在一个赛车游戏中,你可以认为玩家的车一直在运动。这种情况下,基于差值压缩的可靠传输除了增加了消耗并没有带来什么实质性的利益。一般而言,当你知道数据一直在改变并且减小延时是至关重要的事情时,你应该使用非可靠的传输。如果被被Network View跟踪的数据并没有每帧都在改变,并且带宽对你来说很重要时,基于差值压缩的可靠传输更好。明白延时和带宽不是同一件事情是十分重要的。它们是你在不同情况下想要优化的不同的属性。使用C#的Socket类因为Unity支持C#语言,所以可以在一个脚本对象中使用C#提供的套接字类,实现自定义的数据传输。这样做提供了很高的灵活性和控制能力,可以用Unity的客户端连接非Unity的服务器程序,反之亦然。其他相关知识Master ServerMaster Server是一个当前正在寻找客户端的活动的游戏与正在想要连接到游戏中的玩家客户端?见面的场所。它的另一个目的是隐藏IP地址、端口等细节信息,进行一系列的技术性操作工作,配置网络连接,有时候也可以在一些不太可能进行连接的情况下配置连接,比如说处理防火墙,或者NAT洞穿。每个单独运行的游戏服务器为Master Server提供

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档