« May 2006 | Main | July 2006 »

June 27, 2006

eve 随想及虚拟物品交易合法化

近期玩 eve 比较多,因为很受启发,所以尽力在跟公司的同事推荐。很多同事对这个游戏不看好,至少觉得光通有可能因为养不起这个游戏,而像 eq 魔剑那样在中国市场失败。

donews 上有这样一个帖子:光通从闪耀三周年是否会走向暗淡的四周年? 开篇就提到了 eve 这个重头戏:


公测之前的准备工作不可谓不热闹,大型公会均纷纷入驻,各媒体给予了充分暴光,但结果呢,只有光通公布的区区38000人的PCCU。新闻中也看到为了防止外挂而加入的CDKEY模式,看来外挂并不象光通之前所说的毫无作用,CDKEY在WOW之中运用的非常成功,EVE是否妥当并不好说,66元的包月对于只有38000人的游戏来说,只会让人数更为减少。同样EVE受着可能会出现SF的困扰,至少我手里已经得到了EVE欧服的部分原代码和服务器端。


显然,写这个帖子的人不懂 eve 。其实我也不太懂,既而在晚上做了一些思考:

  • 3 万多人同时在线少不少? 够不够?
  • cdkey 真的主要用来减少外挂吗?
  • 私服的问题会很严重吗?

我首先了解到的是,eve 的欧洲服务器上,是官方支持虚拟物品交易的。这一点,国内的许多运营商也在做,用的所谓免费这个幌子。而还有很多游戏,官方是反对虚拟物品交易的,比如暴雪的魔兽世界。其实虚拟物品交易的危害性是显而易见的,至少在现有游戏模式下是。它违背了玩家最需要的公平性,对游戏的长期运营产生了负面影响。到底这个影响有多大,我想很多人对此做过研究。google 一下,会有一些收获,我们公司的研究部门也有专人做过论述,在我的硬盘上还保有一份长长的 pdf 文件,以及相关的 ppt 。

eve 为什么要违背这个原则? 根据它在欧洲长期成功运营的结果来看,是因为它的游戏规则适应了虚拟物品交易的冲击。

其实,国内可以找到一个类似的例子,那就是我们公司的大话西游和梦幻西游。我们其实同样允许了虚拟货币的交易,即点卡交易系统。虽然点卡交易系统只能把点卡换成虚拟货币,但是在玩家足够多,虚拟物品足够丰富时,所以虚拟物品都是可以通过和虚拟货币交换得到,当然还需要虚拟交易市场保证稳定。

eve 官方同样支持月卡和虚拟货币/虚拟人物/虚拟装备兑换,鉴于游戏中,几乎所有装备都可以用虚拟货币购买到,那么就不太需要虚拟装备交易了。这和系统直接贩卖虚拟物品绝不一样,后者会破坏整个经济体系。

现在来解答前面提出的三个问题:

  • 3 万多人同时在线少不少? 够不够?

其实,我的同事认为,这个游戏收费后可能连 3 万同时在线都达不到。2 万或许是一个好成绩。我想,我们不能以常规评价 mmo 之运营成功于否的标准来衡量它。同时在线人数的确是人气的表现,而且也保证了点卡收入。但是并非同时在线人数越高,为这个游戏付费用的自然人就越多。梦幻西游目前是国内 mmo 中同时在线人数最高的,远远超过魔兽世界。但是我不认为玩魔兽世界的人会比玩梦幻西游的人少。关于这一点,我们可以从 google 趋势上看出些什么。在这个趋势比较中,我加入了传奇。从梦幻与传奇的分界点的时刻,我觉得是可以相信 google 趋势的分析的。

为什么梦幻西游可以有如此之高的同时在线人数呢? 因为我们的 client 做的很轻量,同一台机器上同时开上 3,4 个都没有问题,而且回合制的玩法允许了一个自然人同时控制几个 player 。(ps. 从这里也可以看出,当初我一再坚持把 client 的分辨率设计在 640x480 而不是 800x600 是多么重要。当初我们曾经短暂的修改过一次分辨率,花了不少程序的精力,却立刻改回来了)

让一台机器同时开多个 client ,写 client 技术实力还是次要的,最主要的是游戏设计本身是否允许这样。

eve 就是这样一个游戏,它可以允许一个玩家同时玩更多的号,却不需要同时上线。老实说,他的 client 写的并不怎么样。挂久了系统会越来越慢。我怀疑有一定程度的内存泄露。所以,eve 里一般不会出现一个自然人玩家同时上线的情况了,而自然人正是游戏付费的主体。

eve 是一个以月卡运营的游戏,其实单一月卡运营的游戏,对于运营商来说最理想状态就是,为之付费的用户越多越好,而同时在线的人数越少越好。因为同时在线人数下降就意味了运营成本降低。当然,同时在线人数不能过少,太少会影响游戏世界的活跃度。这个活跃度,对游戏世界的维持是很重要的一个因素。我们强力打击挂机外挂,一部分原因就是为了维持它。那么, 3 万人够不够呢? 因为这个游戏逻辑上只有一个世界。历史上,还没有一个 mmo 做到了如此多人之间的互动。从支撑整个游戏世界的活跃度来讲,应该是够了的。

eve本身不太需要玩家长期在线,它的技能提升全部可以离线完成。所以,付费玩家的数量与同时在线玩家数量的比例应该远高于其他 mmo 。

不过,最终,看惯了几十万,上百万同时在线数字的我们。可能还是觉得 2,3 万过少了一点。不禁为光通担心。光通似乎也担心收入情况,据说把月卡价格设定在了 66 元。或许连光通这个代理商都没有真正理解这个游戏。

eve 的技能数设定非常的复杂,我想著名的游戏中,只有文明可以与之媲美。而 eve 中学习提高技能的唯一途径是时间。这个时间不是在线时间,而是真实的时间。你不可以用增加在线时间的方式缩短它。而科研,制造,采矿,战斗 .... 等等职业的分工,那些枝梢抹节的区别, 导致了一个玩家如果需要样样精通,要么就用等量的时间来换,要么就用并行修炼多个号来做到。时间对每个人是公平的,只有月卡,总有人可以通过买大量的月卡来修炼不同的技能。eve 的游戏模式决定了,大部分职业,你只需要 10 天半个月上去设置一下菜单就可以下线了。这样,一个人管理多个虚拟人物变的很简单。这给游戏运营提供了高额收费的可能性。(跟梦幻西游 在技术上允许你同时开多个 client 是一回事,只是做的更彻底)

那么,真的有很多玩家愿意投入几倍甚至十几倍的月卡钱来玩这个游戏吗?直接来看,不可能。因为这个游戏的玩家市场不是很大。有能力玩好的玩家更少。只有会玩,喜欢玩,且有经济实力的玩家才会一个月花十几张月卡钱来玩这个游戏。

这里,就不能不提在国内已经成为规模的虚拟物品交易公司了。

以前,我是极端痛恨这种寄生在网游行业中的这些人的,从这个游戏,我对这个人群的价值有了新的认识。当官方保证虚拟货币交易时,只要限制交易必须通过月卡这个媒介。事实上,钱还是被游戏运营商拿到了。虚拟物品交易公司其实提供了付费游戏玩家和免费游戏玩家中的一个桥梁,他们最终得到的月卡还是会销售出去的。据我所知,游戏点卡或者月卡不被消费掉,这笔钱不会被记入公司的收入中(至少我们公司的财务制度是这样)。那么一个问题就是,游戏设计本身能不能消耗掉过多的月卡?这个问题,前面已经回答过了。

本质上,梦幻西游 的点卡寄售系统的道理是一样的。我们必须让游戏吃掉过多的点卡,所以必须不断的增加同时在线人数的规模。最终,通过点卡寄售系统,我们分到了别的游戏由打钱公司(或是虚拟货币交易公司)赚的钱。而 eve 则不需要,他的游戏规则,导致了玩家在条件允许的基础上,尽量的多开帐号。而多开帐号正是月卡稳定收入的来源。

写到这里,不禁真的为光通担心。真的是 66 元月卡的话,会赶走许多潜在玩家。一个愿意每个月投入几百上千块在游戏中的玩家不会在乎月卡是 66 还是 33 。如果他计划一个月投入 660 元在游戏中,那么区别无非是供养 10 个帐号还是供养 20 个帐号的差别。但是 33 比 66 无疑可以吸引更大的玩家群。

其实 eve 中供养多个帐号的玩家很大程度上反而不是对游戏投入金钱最多的人,他们完全可以凭借游戏中的实力卖掉虚拟货币赚月卡。反而大量供养 2 到 3 个帐号的玩家是投入金钱最多的人群,66 元月卡他们可能只养两个号,而如果月卡只要 33 元的话,他们就可以养四个号了。对于单个自然人来说,收入并没有太多变化。

运营游戏的收入的计算方法其实应该是,游戏自然人玩家数目 * 平均每人每月的金钱投入。在一个自然人玩家很有可能不只供养一个帐号的游戏中,月卡价格过高不一定会增加每人每月的金钱投入,但对游戏自然人玩家数量的负面影响却是很明显的。如果我是光通这个项目的决策者,绝对不会把月卡价格定到 66 元这么高。

  • cdkey 真的主要用来减少外挂吗?

再回答这个问题就很简单了。我不认为 cdkey 对这个游戏的外挂打击的帮助有如魔兽世界那么大。因为 eve 真的不如其他 mmo 那样害怕外挂的冲击。但是,cdkey 对增加游戏收入比任何其他游戏都会多。

  • 私服的问题会很严重吗?

对于只有一个逻辑世界的游戏,需要担心吗?对于一个必须长期时间投入,并且需要大量自然人参与的游戏,需要担心吗?


最后,如果让我来修改 eve 。我会改进玩家管理多个帐号的方式,直接对玩家玩的角色数量收费,而不需要退出重新登陆。月卡会直接做成虚拟物品放到游戏的虚拟市场上交易,甚至可以做成把月卡分解成若干碎片,减低单个单位的价值,方便进入流通市场。玩家可以自己合并这些碎片来转换成月卡。

June 25, 2006

周末玩了一下 eve

eve 是最近炒的比较火的一个游戏,我的同事把他定义成小众游戏。我不想这样下定义,但是自己的一个观念就是,所有人都喜欢的游戏最终很容易沦为平庸,而一部分完全不喜欢的游戏,却有可能让另一部分非常钟爱。eve 或许就是这样一款游戏,不得不承认,我喜欢他。

周末玩了一下,发现很多设定跟我现在的设计很类似。不过这个游戏上手的确需要许多时间,我想这一点会吓走许多的玩家。不过也好,如果将来我们使用其中类似的设计的话,那时的玩家或许更容易上手一点。

June 21, 2006

打成了一次大满贯

我的桥牌生涯实在是太短,所以平生第一次大满贯在昨天晚上才出现。不完全是运气,牌不好叫也不好打。联手牌点其实是不够的,叫牌的时候想了许久才下了决心把 6 加到 7。首攻,明手摊开后又想了很久。但最后毕竟打成了。留文纪念之 :D

June 14, 2006

看到一段关于 const 的讨论

摘录的一段:


My experience from other languages (C, C++, Objective C, Java, Smalltalk, etc) suggests that trying to add some notion of const to the language is detrimental. It's rarely of use to the compiler, adds little or no safety barrier for programmers, is confusing, and isn't always helpful documentation. I've seen grown men weep over C's const, and highly paid C++ professionals argue for hours over the meaning of const in C++.

The right place to annotate things with notions of constantness is the type hierarchy. See, for example, java.awt.Raster / java.awt.WritableRaster (from Java's 2D api), NSDictionary / NSMutableDictionary (from Objective-C's foundation classes).

drj


以为然也

魔兽世界之过?

看到这样一篇文章,魔兽世界之过 。老实说,作为一个从美服 beta 开始接触 wow ,然后在美服付费玩了大半年,既而转战国服一年的老 wow 玩家来说。我在喜爱 wow 的同时, 也赞同文中的观点。

group > solo 就我自己来说,是反对的。不过之前一直没说出口。我自己打 wow ,一直到 60 级都是 solo 并且觉得非常有趣。而且每个任务都不放过,每个副本都要完成(当然不包括后期必须太多人的)。前期的 5 人副本,都是在不太高的级别,邀请几个非常熟悉的同事以 3~4 人完成的。那种克服困难后的喜悦无以言表。尤其是在 24 级的时候单身一人完成圣骑士的圣锤任务,跑断了腿不说,还在死生之间转了很多次。

整个游戏过程,没有接受任何经济上的资助,最多跟同级的玩家借点点钱。

现在我已经不玩 wow 了,但是我有同事还整天泡在里面。听取了他的观点后,更坚定了我的想法。raid 的确是 wow 的硬伤之一。当然,还有文中提到的荣誉系统等。

这篇文章还是以牢骚为主,没有提供什么合理的解决方案。而且像 时间 > 技巧 这种设计,我想暴雪原本就想避免。60 级封顶或许就是一种手段(虽然实际上不解决问题)

我想提出的另一点就是,现在 MMO 中还有另外一个取向,即 经济投入 > 技巧 (也大于时间) 。更是伤害了游戏。wow 在规则条款中想避免,但是游戏设计上无法回避这个问题。

我想我们现在做的尝试更有意义一些:为了尽量避免 经济投入 > 技巧 的问题,需要设计一个完备的经济系统。然后限制玩家的自由贸易。这样就可以最大限度的阻止虚拟物品/虚拟货币买卖。

或许有人会觉得行不通,并且会影响玩家的游戏感。但是经过考虑,我觉得尝试一下,在游戏中从规则上禁止虚拟货币转移,并且只允许拍卖这一种虚拟物品交易手段。(我知道 wow 中可以用拍卖转钱,但是这点也是可以被改进的)

另外,group > solo 也也是应该被削弱的。尽量设计完备的玩家组织体系结构,而不是像 wow 工会那样完全自由的松散集团。玩家可以靠个人的努力得到团体中的位置。并且在团体活动中,并非大的集体协作行动。好比我们的战役系统,是少数领导者指挥多数,而不是现在 MMO 中乱哄哄街头群殴一样的所谓“国战”。

而且 wow 中的 raid 副本单次时间太长,也是应该避免的。长时间游戏,对玩家的身体健康的确会造成影响。而且上班的玩家更消耗不起每天的 raid 副本。学生玩家... 这个问题不用说了。长时间副本当然也有它不可取代的乐趣,我的设想是更长时间的谋略抗衡。比如长度几周甚至几个月的服务器间谋略,而每天的战役强制控制在1小时之下。

至于 时间 > 技巧的问题,暂时没有特别好的处理方法。但这一点上,我们现在正做出努力。比如强调服务器间对抗,这样针对整个服务器来说,大家时间投入都是类似的。(我们只需要规则限制服务器总的有效人数和有效人的日均投入的有效时间即可)这样,针对服务器的玩家群体的技巧性的位置就提高了。

回过头来,整个游戏的设计又回到怎么设计出玩家群体来的问题。简单的 wow 公会式的自由松散群体结构变的非常不合适。

针对玩家个人的时间——技巧的权衡,很多 mmo 设计者都设想过,但是不敢真的贯彻实施的方案是:玩家的能力会随着时间有升有降。希望我们的设计能够成功。

June 13, 2006

概率游戏

最近一直在打桥牌,每周2到3次。感觉自己水平提高的比较快。暂时用的精确叫牌,不过好多人打自然,决定过段时间多了解一些叫牌体系。当然,桥牌是个逻辑推理性很强的游戏,各个叫牌体系就算有不同,牌理也是相通的,我想都不难吧。我也不会去参加竞技性质的牌局,不用去刻意人工设计叫牌。

打牌另一个好玩的地方就是很多情况都是要计算概率的。昨天睡觉的时候想到一个问题,很常用,但是一直没有仔细计算过。

当庄家与明手确定有 8 张将牌的时候,对手的 5 张将牌分布的概率。

我大略算了一下,

  • 0-5 分布的概率直观上就知道很少。应该是 (21!/8!) / (26!/13!) * 2 = 3.91%
  • 1-4 分布的概率应该是 (21!/9!) / (26!/13!) *5 *2 = 10.87% (如果有一张 K 在外面,想赌这张 K 是一个单牌,概率只有 2.17% )
  • 那么剩下的 2-3 分布的概率即为 85.2%

当庄家和明手确定 9 张将牌的时候,对手 4 张将牌分布的概率为:

  • 0-4 分布是 9.57%
  • 1-3 分布是 15.3%
  • 2-2 分布是 75.13%

注: 2008 年 5 月 13 日补充:

以上概率计算错了,正确的应该是

4 张时:

3-1 是 49.74% 2-2 是 40.70% 4-0 是 9.57%

5 张时:

3-2 是 67.83% 4-1 是 28.26% 5-0 是 3.91%

最近没时间打牌,以下的概率数据应该根据以上修正,暂时没空改了。


接下来讨论另一个问题,如果联手 8 张将牌,少张 Q 。把 Q 憋死的概率就是:1-4 分布中,Q 为单张的概率为 2.17% 。或者 1-4 分布,且 4 张在对我方有利的位置(这个时候飞牌几乎总可以成功,除非庄家将牌 1-7/0-8 分布,这种情况不多,暂时忽略)的概率是 4.35%,2-3 分布时且 Q 在 2 张这边的概率为 48.9 % , 如果落 Q 落在双张这边,我们在第 2 圈将牌时,将 Q 打下来的几率只有其中的一半,(如果没打下来,一般会优先选择飞牌),所以确保把 Q 打下来的概率是 2.17%+ 4.35% + 48.9%/2 = 30.97% 。一般想让将牌不丢,一般就要飞牌。当 3 张带 Q 在合适飞牌的方位时,联手只要有 10,9 或者 J 都可以选择飞牌,而且很容易飞中。联手保证有 A,K 没有 Q 的前提下,有 J 概率是 60% ; 没有 J 但是有 10,9 的概率是 16.7% (同时,J 必须在 3 张这边才可以飞,这种情况是 50%) ,合计 60%+16.7% * 50% = 68.4% , 3 张在对我方有利的位置的概率是 50% 。 所以,有 34.2% 的概率可以飞中。

综上所述,联手 8 张将牌,少张 Q 时:

  • 保证将牌不输墩的概率为 30.97% + 44.6% * 34.2% = 46.2 % 。

这个概率是在叫牌过程估算用的,当打牌的时候,因为已经知道 J,10,9 的分布情况了。概率就可以重新计算:

  • 有 J 的时候,飞中而不输墩的概率是 30.97% + 44.6% * 50% = 53.3% 。
  • 有 10,9 的时候,飞中而不输墩的是 30.97% + 44.6% * 25% = 42.1% 。
  • 不适合飞牌的时候。也可以赌 1-4 分布,在第2圈将牌中飞一下。因为 1-4 分布的概率很小,若飞不中,可能会丢两个输墩。所以一般在计算时不考虑这个赌博的因素,只能计算为 48.9%*50% + 2.17% = 26.6%

以上计算还不完全正确,主要是有 10,9 缺 Q,J 的飞牌的情况比较复杂,不想算了,应该对结果影响比较小。

当然,因为叫牌的过程可以提供额外的信息,实际的概率估算会对以上结果做一个修正。

June 12, 2006

在 Lua 中实现面向对象

在 pil 中,lua 的作者推荐了一种方案来实现 OO,比较简洁,但是我依然觉得有些繁琐。

这里给出一种更漂亮一点的解决方案:为了贴代码和修改方便,我把它贴在了 wiki 上。

Lua 中实现面向对象

在这个方案中,只定义了一个函数 class(super) ,用这个函数,我们就可以方便的在 lua 中定义类:

base_type=class()       -- 定义一个基类 base_type

function base_type:ctor(x)  -- 定义 base_type 的构造函数
    print("base_type ctor")
    self.x=x
end

function base_type:print_x()    -- 定义一个成员函数 base_type:print_x
    print(self.x)
end

function base_type:hello()  -- 定义另一个成员函数 base_type:hello
    print("hello base_type")
end

以上是基本的 class 定义的语法,完全兼容 lua 的编程习惯。我增加了一个叫做 ctor 的词,作为构造函数的名字。

下面看看怎样继承: test=class(basetype) -- 定义一个类 test 继承于 basetype

function test:ctor()    -- 定义 test 的构造函数
    print("test ctor")
end

function test:hello()   -- 重载 base_type:hello 为 test:hello
    print("hello test")
end

现在可以试一下了:

a=test.new(1)   -- 输出两行,base_type ctor 和 test ctor 。这个对象被正确的构造了。
a:print_x() -- 输出 1 ,这个是基类 base_type 中的成员函数。
a:hello()   -- 输出 hello test ,这个函数被重载了。

其实,实现多重继承也并不复杂,这里就不再展开了。更有意义的扩展可能是增加一个 dtor :)

ps. 这里用了点小技巧,将 self 绑定到 closure 上,所以并不使用 a:hello 而是直接用 a.hello 调用成员函数。这个技巧并不非常有用,从效率角度上说,还是不用为好。

June 07, 2006

网络游戏中的货币系统

现在 MMO 中经济系统往往是设计的关键。可能是网络游戏发展的时间较短,并没有形成系统的理论的缘故,我所了解的网络游戏中都没有特别好的处理好经济系统中货币的控制和流通问题。

我们知道,货币只是一种经济活动中一种媒介,货币本身是没有价值的。但是,网络游戏中却很难体现这一点。系统对游戏直接的货币投放是不可控制的,虽然很多设计人员企图控制,但只是收效不同而已。大体上,大家都是用玩家的在线时间换取系统货币总量的增加,而用玩家自身的修炼回收掉货币。还有一小部分是用上税和赌博的形式回收掉。

云风正在设计的游戏很不一样,是基于国家间的贸易和战争而不是个人修炼的。强调一种政府的管理,而非玩家自发组成的团体。我更希望做出一个战略感的游戏,而不是强调团体战术或者个人战斗。

国家间的竞争正是一种整体经济实力的竞争,所以经济系统尤其重要。我不得不慎重仔细的考虑这一块,方案考虑了好几次,这次总算有点条理了。

详细的策划案只能写在内部网络上,这里放出的只能是初期的一些构想,希望能给同好们一些启发。

首先只考虑单个服务器(单个国家)的发展:作为单个服务器,在没有政府的前提下,我们可只提供以物易物的手段。npc 不买卖物品,所以不需要提供货币。很多游戏经济崩溃后,其实又回到了这种状态,那么,还不如只提供这种手段。既而当政府成立后,再启动货币系统。

这个时候,系统发放给政府一笔货币,作为运作之用,之后系统不会平空给政府任何货币了。货币其实是没有价值的,在初期,我们也不可能发生进行周遍贸易或者掠夺,所以暂时把服务器看成一个独立封闭的状态。这笔货币就是作为一种经济活动的辅助工具使用,作为一个服务器玩家的群体,若想让整个服务器更快的发展,就应该让货币更频繁的流通。如果少部分玩家由于私心占有了大量货币不花出去,在宏观上会导致国家发展缓慢。

货币怎样在城市建设中发挥作用?这里以盖一幢建筑为例:

假设一幢建筑需要三天建成,每天需要 100 单位的木材。游戏系统强制木材只能从木材厂采购,而不能由玩家直接提供。木材的政府收购价格由政府的一个机构(由玩家担任)确定,但是不能任意指定。只能在一个范围做浮动,每天的浮动范围也被限制。收购价一旦定下来,货币先支付给木材厂,第二天,如果木材厂中有指定数量的木材,则强制收购;如果没有达到限定数量的木材,则延期。木材提供请求将被放入队列,队列满的时候,不能再接受预订请求。

对于木材厂,它本身拥有一定大小的现金库保存流动资金。每天木材厂可以在定额范围内向玩家征集木材(即木材厂的加工量是被限制的),价格由木材厂主根据现金存量标价。木材逐个单位的从玩家手头收购,每天的第一单位木材价格先被强制定为前一天收盘价,接着并允许木材厂主对其在小范围浮动。木材厂主每天注入一定数量的总金额,一旦这笔资金消耗干净,则不能再收购木材。每天可按一定时间周期(比如一小时或半小时)调整一次价格。如果一个时间单位没有人提供木材,木材价格会增长一个小幅度。在一个时间单位内提供超过一个单位的木材,从第2单位起,价格逐步下降。这个做法是让商品的价格一定程度上受到市场的影响。

通过以上流程,可以将政府的货币转移到玩家身上。玩家便可以用货币为媒介做交易了。同时,政府对玩家之间的经济活动征收交易税,以回收货币。其他回收货币的方法还有很多,比如传统的让玩家以提升自己能力的形式回收等。但是整个服务器内的总体货币在这个循环内不变。

额外的,我们设定一种特定的资源,比如金矿。只有政府自己可以把金矿制成货币。金矿可以由政府这个环节变成货币。私人是被禁止制币的。通过这个途径,整个国家的货币总量可以被得到增加。

而整个系统内的货币总量的消耗途径则是永久不再玩游戏的玩家带走的。

以上只是一些大略的构想,单从这点设计上,一定存在许多矛盾和不完善。想完整实施还需要很多的设计,文章仅仅是给有兴趣的朋友一些启发罢了。