首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当通过游戏中心发送字典而不是结构时,有什么不同?

当通过游戏中心发送字典而不是结构时,有什么不同?
EN

Stack Overflow用户
提问于 2013-11-09 23:51:45
回答 1查看 88关注 0票数 1

我正在使用游戏中心为我的iOS游戏实现一个多人模式。

它基本上是一个基于转弯的RPG (但它使用的是实时模型),所以我真的不需要太频繁地发送数据。

我注意到大多数示例使用结构发送数据。一个属性是消息类型,另一个属性只是用来解释消息的额外参数。

就我个人而言,除了工作上的轻松(至少在我的具体情况下),我喜欢寄一本字典而不是一本结构。

我想知道通过游戏中心发送结构和字典之间的客观区别,这样我就可以衡量是否真的值得这样做。

一些因素:

  • 这是一个基于转弯的RPG。你等着你的对手发出信息,告诉他们他们的决定。由于缺乏动态性,因此数据交换不太频繁。如果有的话,我要说的是,球员通常需要大约5秒的时间才能做出决定。
  • 我所有的数据都以可靠的方式发送。
  • 我的字典通常包含大约3-5个键,其中的值通常是NSStringNSNumber实例。
EN

回答 1

Stack Overflow用户

发布于 2013-11-16 05:14:07

字典使用的空间比简单的结构要大得多。有了字典,您就有了很大的灵活性,您可以在运行时创建字典并发送它,只要字典中的所有对象都是可序列化的。代码也很容易编写。如果您需要执行发送数组之类的操作,或者发送在编译时不知道的多个对象,那么发送字典是一个很好的选择。实际上,如果您知道您在消息中使用的所有对象都是可序列化的,那么您只需要一个可以用于所有字典的编码/解码方法。

示例:Convert nsdictionary to nsdata

结构通常使用较少的空间。您需要在编译时定义您的结构-您需要知道您计划发送的数据的结构。你不能动态地这么做。如果需要发送多个数组,则需要事先知道大小,因为不能在运行时发送多个可变长度数组。

适用于您的情况,如果它是“基于转弯的”,如果这里或那里的几秒钟不会产生太大的影响,那么NSDictionary可能对您更方便。

如果您正在编写第一人称射击游戏,或者某种需要每秒发送30或60次数据的动作游戏,那么您可以使用最小的格式发送数据,以避免延迟问题。

在一个理想的世界里,不管是基于转弯的,还是基于fps的,你都不想发送超出需要的数据,因为你在浪费带宽,你的应用程序发送/接收消息的时间会更长。最优的方法是创建您自己的格式,将浪费的比特数最小化(例如:如果您知道您发送的数字永远不会大于10,那么您只使用4位来表示它)。但在现实中,它可能会使编码如此高效的编解码方法变得棘手。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19884636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档