如何让玩家相信游戏是公平的

标签: 概率与桥牌 算法 游戏开发 | 发表时间:2014-02-10 03:28 | 作者:云风
分享到:
出处:http://blog.codingnow.com/

去赌场参观过的同学应该都见过那种押大小的骰子游戏。庄家投掷三枚骰子,把骰盅盖住,玩家可以押大或小。开盅后,如果发现三个数字之和大于等于 11 就算大,小于等于 10 就算小。如果你猜对了,庄家就 1 赔 1 算给你筹码;否则输掉筹码。另外,还可以以不同赔率压数字,或压三个相同。

为了保障庄家利益,三个相同的数字算不大不小。从概率上讲,这让长时间内庄家必胜。 概率分析见这里

如果把这个游戏搬到网络上如何呢?(注意:网上赌博在很多国家是被禁止的,这里只做技术分析而已)

如何让玩家相信庄家没有作弊,真的产生了随机的骰子呢?

记得网易泡泡曾经在聊天室中做过一个简单的赌大小的文字游戏。我一同学兴致勃勃的玩过,他告诉我系统一定作弊过的。他写了个程序监控每局游戏开盅前的下注情况,到最后一秒再下住,永远下注少的一边(也就是跟庄),只花了一天时间就刷了无数泡泡币。

其实这只是游戏实现者的贪心和无知而已。其实这个游戏的规则保证了庄家利益,庄家没有必要作弊。但有些游戏设计者就是脑子转不过弯来,的确考虑过作弊。不是连六合彩这种极大化庄家利益的游戏规则都有流言暴出庄家作弊么?

那么,是不是网络版的赌大小一定得不到玩家信任呢?

其实有一个简单的方法可以向玩家证明骰子的随机性:

  1. 每局游戏前,先随机三个 1-6 的数字,并同时生成三个足够长(比如 80 字符, 长度在屏幕方便显示的范围即可)的文本随机串,把数字附在随机串的两端。比如随机出 2,4,5 这三个数字,就同时生成形如 2xxxxxxxxxxxxxxx2 , 4xxxxxxxxxxxxxxx4, 5xxxxxxxxxxxxxxx5 (xxxx 每次随机) 的字符串。计算这三个字符串的 md5 值,并事先通过网络展示给玩家。

  2. 玩家收到三个秘密串后开始下注。下注时间有限,只有几分钟的时间。由于 md5 的不可逆性,在这么短时间内,不可能知道串的原文。注:网络上所谓的 md5 破解,都是基于收集有意义的字符串的 md5 值构成海量的数据库比对查找的,并非对 md5 结果做逆运算。纯随机串的 md5 值不可能在很短时间求逆。

  3. 下注时间过了后,系统通过网络公布事先的三个随机数字构成的随机串,也就相当于开盅。这时候,玩家应该认赌服输了。如果他认为系统作弊,可以自行校验系统公布的串的 md5 值是否和事先公开的值相等。

如此便可证明,骰子是在玩家下注前就确定下来的,而不是根据玩家下注的行为更改让庄家获利。

没错,现在有数学证明可以在有限时间构造出另一个符合规则的串有相同的 md5 值。但那也需要相当的计算能力。如果这个网上赌场开的时间足够长,是没有那么多计算能力支撑长期的作弊的。之所以不必选用可能更安全的同类算法,是因为 md5 的普及率和认知程度最高,计算工具也随手可得而已。

如果想进一步提高信任度,让玩家相信没有提前计算出 md5 碰撞值,可以在随机的 xxxxx 中进一步加上上一局游戏的骰子 md5 值,让每次随机量都是和上一次相关的。甚至可以加上上一局游戏参与玩家的赌注金额。这样几乎不可能提交计算某一次游戏的随机串的 md5 碰撞。

关于 MD5 的碰撞构造,多个 md5 chunk 比单个 chunk 要容易的多。单 chunk 的碰撞构造在 2012 年的这篇 paper Single-block collision attack on MD5 中提到的方法的计算复杂度在 2 的 50 次方 MD5 运算量级。不是现在普通的计算机计算能力所能承受的。

虽然不是所有玩家都可以理解这个规则,但规则容易直接在游戏中公示。服务器记录所有历史的数据供玩家备查。还是很容易取得玩家群体的信任的。

相关 [相信 游戏] 推荐:

如何让玩家相信游戏是公平的

- - 云风的 BLOG
去赌场参观过的同学应该都见过那种押大小的骰子游戏. 庄家投掷三枚骰子,把骰盅盖住,玩家可以押大或小. 开盅后,如果发现三个数字之和大于等于 11 就算大,小于等于 10 就算小. 如果你猜对了,庄家就 1 赔 1 算给你筹码;否则输掉筹码. 另外,还可以以不同赔率压数字,或压三个相同. 为了保障庄家利益,三个相同的数字算不大不小.

游戏指南

- Blacat - 韩寒
这是一个复杂的国度,人们并不是那么渴望文人范畴里的自由,如果你上街问问,大家都觉得自己过的挺自由. 人们已经习惯了在台上台下的两种话语,你只要不冲进他......>>点击查看新浪博客原文.

我相信 Google+

- pestwave - 36氪
一方面,Google+ 现在有 4000 万用户,是历史上增长最快的社交网络,而且它的用户已经上传了 34 亿的照片. 另一方面,Google 不肯说自己有多少活跃用户,一些人说 Google+ 流量开始大幅下滑,Google 的管理层自己都不用 Google+,并且很多人认同 Google 工程师 Steve Yegge 的长篇文章 – Google 不懂平台.

游戏开发商开源HTML5游戏

- - Solidot
游戏工作室Wooga开源了其开发的HTML5游戏Pocket Island,源代码托管在GitHub上,该公司在官方博客上介绍了他们的开发经验,认为HTML5游戏有潜力,但尚未做好准备,开源的意图将是让其他人了解他们的工作,学习和改进. Wooga认为,2012年也许不是HTML5的黄金时代,但它的黄金时代即将到来.

JS游戏引擎

- 米随随 - HTML5研究小组
If you don’t have anything better to do and want to help fellow redditors interested in JS game dev out, feel free to fork the list and modify it as you like.

Google+加入游戏

- Thomas - Solidot
Google宣布了Games in Google+,为旗下社交网站引入了游戏功能,Google+正从类似Twitter的信息交流平台变得更像是其竞争对手Facebook. 游戏暂时还没有对所有用户开放,但Google承诺会在不久以后让每一位Google+用户都能玩上游戏. 目前提供的游戏包括了愤怒的小鸟,数独,Bejeweled Blitz等.

我的iPad游戏

- Aim - Aether
说是以办公和看书为主,实际上从使用时间来看也是这样,但是不知不觉还是买了一屏的游戏(整个桌面也才三屏而已),这还不包括随时删掉的无数没啥意思的游戏. 晒一下清单,有兴趣的同学可以拿去. 支持多人对战基本都属于必买的游戏. 和iPhone、Touch,以及电脑上的多人联机游戏不一样的是,iPad的大屏幕和多点触摸允许多达四个人在一个iPad上面对面的游戏,这种体验和任何网络游戏只能面对冰冷屏幕的感觉是完全不一样的.

体感游戏合家欢

- Duo - 南都周刊-热点新闻
就像当初满腔豪情买下后最终被落满尘的跑步机健身器材一样,Wii在很多人家里也陆续步入 “偶尔想起来玩儿一下”“现在基本没碰”的阶段. 美国艺电(EA)总裁John Riccitiello认为未来体感游戏的发展应该建立在一个“更加细分的市场”上. 打打Wii还能稍微让身体动一下. 任晓米,24岁,游戏年龄:4年.

spy++和游戏修改器

- 大宝PKU - C++博客-首页原创精华区
这几天做了两个东西,spy++ 和游戏修改器. spy++ 就是模仿 vs的那个工具spy++. 游戏修改器,就是暴力搜索内存,找到我们关心的数据,然后进行更改. 总之这些东西做过之后感觉就是都不难,但是在做的时候多少会感觉点吃力. 闲下来无事,记录下它们的过程吧. spy++ 分析(用vs2005做的——).

与月亮一起游戏

- mechelle.04 - 碌碡画报