我想知道-有没有创造过以下游戏:
- 对等体,没有一个对等体被指定为主机
- 竞争(不合作,玩家互相对抗)
- 可证明是公平的(任何玩家都不可能作弊)
- 不要给任何玩家过多的信息(例如,不要向正在运行的应用程序泄露其他玩家的机密)
这样的游戏的一个例子是扑克游戏,其中每个玩家和他们的游戏只能知道自己的手,而不知道其他玩家的手而不依赖于他们中的任何一个。我知道有一些游戏可以证明是公平的,但是我所知道的全部都存在于服务器-客户端配置中。
我想知道-有没有创造过以下游戏:
这样的游戏的一个例子是扑克游戏,其中每个玩家和他们的游戏只能知道自己的手,而不知道其他玩家的手而不依赖于他们中的任何一个。我知道有一些游戏可以证明是公平的,但是我所知道的全部都存在于服务器-客户端配置中。
Answers:
我不知道是否已经创建了这样的游戏,但是它们确实已经被理论化了。关于该主题已经发表了几篇论文。您可能需要研究承诺方案,以解释两个意见不同的方如何在物理距离较远的情况下翻转硬币(另请参见此1981年论文:通过电话进行硬币翻转)。
一篇非常详尽的论文是例如作弊对等交易纸牌游戏:
我们提出了一种 防作弊的点对点协议,用于实施在线交易纸牌游戏。我们将分解所有TCG共有的动作,并说明如何在两个玩家之间执行这些动作而无需第三方裁判(通常需要无偏见的服务器)。在每个动作中,可以防止玩家作弊,或者如果他们作弊,则对手将能够证明自己已经作弊。最后,我们将展示这些方法的安全性,以及如何将它们与其他样式的TCG和其他点对点游戏混合使用。
我们提出了一种具有可证明的反作弊保证,可证明的安全和有效的协议,但会降低性能。然后,我们开发了该协议的扩展版本,称为异步同步,它避免了代价,是无服务器的,提供了可证明的反欺诈保证,在丢包的情况下也很健壮,并提供了显着提高的通信性能。此技术适用于常见的游戏功能以及大型多人游戏的群集和基于单元的技术。具体来说,我们提供了零知识证明协议,以便玩家彼此之间处于特定范围内,否则就没有距离的概念。我们的性能要求得到了基于真实游戏轨迹的模拟分析的支持。
尽管这不是偶然的游戏,但我正在开发一款接近您要求的AIR游戏。
但是,请注意...
我认为“不可能...作弊”是一种错误的说法。如果您不控制所有方面(硬件和软件),则可能会作弊。
虽然不是游戏,但我认为比特币网络是您正在寻找的主要示例。
编辑
我将对您的主要问题进行一些扩展。
首先,没有某种程度的权威要求,我看不到任何要求“证明公平”条件的游戏。从排行榜到小额支付,集中式系统和权威都可以并存。
其次,我能想到的最好的示例游戏是早期的神奇宝贝游戏。尽管内部网络物流可能不是对等的,但它遵循相同的原则。
最后,移动平台特别适合点对点游戏。我认为这个领域非常缺乏,这就是为什么我目前正在开发一系列点对点游戏的原因。
根据使用情况,可能有一些帮助:
如果您需要同时获得用户的输入,而又不能过早地利用信息来为其带来好处,则可以使用承诺方案。本质上是:
这可以用于多种用途,包括共享的随机数(两者均通过承诺提供整数,并在共享后将它们进行异或运算以得到共享的值。)
但是,这对于像扑克之类的游戏来说是不够的,因为它要求只有一个人才能知道纸牌,同时还要能够从共享卡组中抽牌。维基百科使用一种方案,即两个玩家分别对每张卡进行多次加密,可以很好地进行共享改组。这就形成了一种情况,需要2个密钥来解密任何给定的卡,并且两个玩家都拥有1个。这篇文章引用了性能方面的问题,但是我认为AES或类似的东西在2个玩家扑克所需的规模上并不昂贵。
如果我正在设计一种算法,我将让玩家在游戏开始时计算一个随机值,以用作其余所有操作的种子,并共享该值的哈希值。这样,他们就可以在赛后分享该价值,并且您可以验证他们是否正确遵循了协议,而没有任何恶作剧。