我正在使用游戏中心为我的iOS游戏实现一个多人模式。
它基本上是一个基于转弯的RPG (但它使用的是实时模型),所以我真的不需要太频繁地发送数据。
我注意到大多数示例使用结构发送数据。一个属性是消息类型,另一个属性只是用来解释消息的额外参数。
就我个人而言,除了工作上的轻松(至少在我的具体情况下),我喜欢寄一本字典而不是一本结构。
我想知道通过游戏中心发送结构和字典之间的客观区别,这样我就可以衡量是否真的值得这样做。
一些因素:
NSString或NSNumber实例。发布于 2013-11-16 05:14:07
字典使用的空间比简单的结构要大得多。有了字典,您就有了很大的灵活性,您可以在运行时创建字典并发送它,只要字典中的所有对象都是可序列化的。代码也很容易编写。如果您需要执行发送数组之类的操作,或者发送在编译时不知道的多个对象,那么发送字典是一个很好的选择。实际上,如果您知道您在消息中使用的所有对象都是可序列化的,那么您只需要一个可以用于所有字典的编码/解码方法。
示例:Convert nsdictionary to nsdata
结构通常使用较少的空间。您需要在编译时定义您的结构-您需要知道您计划发送的数据的结构。你不能动态地这么做。如果需要发送多个数组,则需要事先知道大小,因为不能在运行时发送多个可变长度数组。
适用于您的情况,如果它是“基于转弯的”,如果这里或那里的几秒钟不会产生太大的影响,那么NSDictionary可能对您更方便。
如果您正在编写第一人称射击游戏,或者某种需要每秒发送30或60次数据的动作游戏,那么您可以使用最小的格式发送数据,以避免延迟问题。
在一个理想的世界里,不管是基于转弯的,还是基于fps的,你都不想发送超出需要的数据,因为你在浪费带宽,你的应用程序发送/接收消息的时间会更长。最优的方法是创建您自己的格式,将浪费的比特数最小化(例如:如果您知道您发送的数字永远不会大于10,那么您只使用4位来表示它)。但在现实中,它可能会使编码如此高效的编解码方法变得棘手。
https://stackoverflow.com/questions/19884636
复制相似问题