麻省理工没教我的 iOS玩家教会了我

CocoaChina 2013-07-26 17:37:03 2745
对我来说,在Monorail这款游戏当中,更有价值的不是精确的逻辑推理,而是熟练地修复破碎的(有问题的)解决方案。
 
Monorail是我开发的一款iOS益智游戏,在发行这个游戏之前,我认为我已经找到解决这个谜题的最好办法。出乎意料的是,用户给出了一个令人吃惊的,更好的解决策略。这个经历改变了我写程序的方法,也让我重新思考初创企业的业务。
Monorail要求用户形成完成一个闭合的回路,把所有的站点连接起来,最终能让火车通过所有的站点。并且,火车必须一次性通过所有站点,不能重复。游戏设计类似于真实城市中的单轨运输系统。
 
我的解决方法是,在放置每一条线之前,先进行仔细的逻辑推理。
我的策略:Careful-Logical-Deduction
 
这个游戏设计尤其适合这个策略:考虑到起始条件,每个谜题(关卡)仅有一个可行的路径,这使得用户可以推理出每条铁路线放置的位置,直到完成本轮游戏。
 
比如,你可以从一个完成的路径中看出,每个站点恰巧连接了相邻的两个点--一个是火车进站点,一个是火车出站点。而角落的站点,由于位置特殊,只能连接到相邻的两个点。
 
我通过层层逻辑推理,想出如何把这些站点全部连接起来。我解决问题的方法是逻辑推理,一个个放置这些铁路线,直到我完成整个路径。
 
更好的策略: Iterate-and-Repair
游戏发布后,我使用Flurry做了大量统计,想看看用户的游戏完成情况,我担心游戏关卡会太难。在看了系统分析后,我发现用户完成某个谜题(或关卡)的时间要比我预想的少很多,原本我还想着游戏设计的太难了。用户是如何做到的呢?原来他们发现了一个更出众的解决方案。
 
1.用户一般会从随机的路径开始,想到哪里就在那里连几条线。 
2.然后修复错误
3.不断重复
4.如果整个路径连的乱七八糟,看起来毫无希望,他们干脆点击“clear”按钮,重新开始。
我称之为“Iterate-and-Repair”策略。
  
这样看起来,与一开始就力求谋划出一个正确路径相比,不断重复修改现有的错误“局面”似乎更简单,也更快些。即便有时候你可能偶尔点击到“clear”按钮,重新开始。
 
这个认识激发了我对编写电脑程序的重新思考。
 
现在我更加重视从一个合理的起始点进行迭代和重构,而不是试图提前设计出最好的解决方案。
 
如果代码真的是完全写砸了,那么我会点击“clear”(隐喻)按钮重新开始,重新找到一个更好的出发点。
 
我甚至用这个方法来写这篇博客,好文章就是要不断重写。
 
对我来说,这是个很好的启示,此前我更多地从小心翼翼的逻辑推理出发。
 
我想此前的工作方法主要受我在麻省理工的数学本科教育影响,很多观点和内容都以精准的逻辑推论为基础。
 
另外,我发现我的一些麻省理工的朋友在玩这款游戏时,也习惯先小心翼翼地进行逻辑推理。
 
现在,我更多是一个“Iterate-and-Repair”类型的家伙,我想我是一个更好的puzzle-solver,更好的程序员,以及一个更好的创业者。
 
来源:blog.aaroniba.net