我的Sublime设置

写在这里,免得每次在一个新的地方又要重新网上找相关资料。

sublime text 3 package control install:

import urllib.request,os; pf = ‘Package Control.sublime-package’; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), ‘wb’).write(urllib.request.urlopen( ‘http://sublime.wbond.net/’ + pf.replace(‘ ‘,’%20’)).read())

继续阅读

腾讯很可能知道你每天都打开过哪些网页哦

近来无事在家写一些爬虫程序,但是抓包的时候却发现一个很诡异的包经常出现,就是下面这个。
qq1
点开一看,非常生气,原来是把我输入的网址给秘密的发送到 http://c.gj.qq.com/mailreport 这个URL去了,内容如下:
qq2
然后查看发送进程,居然是chrome!!!(见第一幅图)于是换了个猎豹浏览器试了下,并没有发送这个包,可以肯定是chrome除了问题!我的Chrome是官网下载的,应该是没问题的,于是很自然就想到肯定是偷偷给我的chrome装了什么插件,于是查看了下插件列表,只有这货是腾讯的:
qq3
于是尝试将它禁用,再试一次:
qq4
很好,这个包并没有再出现了。证据确凿,这个电脑管家真是细心周到,每天把我看过什么网页一五一十全部汇报上去了,感(qu)谢(ni)备(ma)至(de)!

谈谈如何设计超过你驾驭能力的游戏系统

点此阅读图文并茂版

其实标题是有一点误导性的,标题里说的驾驭严格来说是指你的大脑能够直接驾驭的意思。这里我将一个人能驾驭的东西分为两种,一种是直接驾驭,一种是间接驾驭,什么意思呢?举个例子。

一个人的家乡,他出生的地方,假设他应该是再熟悉不过了,那么我认为他的大脑是能够驾驭这个地方的地形的。在我的定义里,如果是能够直接驾驭的人,那么他就应该能够瞬间能掌握这个地方的所有细节。简单的测试就是他能够非常准确迅速的将这个地方的地图给画出来,在规划线路的时候,脑中有个很清晰的类似地图APP导航一样的线路出线。

但还有一种熟悉的方式就是虽然我不知道地图怎么画,但是把我扔到任何一个地方我都能知道附近的地形。同样,规划路线虽然没法做到上面那点。但凭着脑海中对这条路有几个分叉,每个分叉对应哪个地方,然后逐步的规划,再通过正推反推,最终形成一条路线(这只是我对大脑思路的一个逻辑模拟,实际上它可能也就是一瞬间就完成了)。这就是我想说的间接驾驭。

说完了定义性的东西,那么其实今天想记录的就是如何通过一些手段去设计出我们能够间接驾驭但是没法直接驾驭的复杂系统。在这里要说的是两种方法:分层设计和闭包设计。

这两个概念,有人可能会说这东西是学程序才要学的,这也许是一个误解,这些东西并不是专属于编程的,而是逻辑思维训练后的产物,(其中闭包是数学推理中的,所以才说数学是很锻炼逻辑思维的)所以它们会影响你的逻辑设计。

首先分层就是把你要做的事情按照层级来划分,通过一层层的递进从而最终实现目的。简单举个例子,以用基本电子元器件(二极管,电阻什么的)制造计算机来举例子吧。如果直接让一个人用这些东西来做计算机,估计会疯掉的吧。但是如果换个思路,首先用基本电子元器件做成一些更高级的元件,比如与门,非门。再用这些高级元件去构成更复杂一点儿的,比如加减器,计数器等,接下来在用这些做成能够简单四则运算的CPU,存储器,那么计算机的雏形就已经出来了,接下来要做的就是把这些元件的性能做得越来越强大(引入集成电路)。看似无法完成的任务就通过这么一步步最终居然就实现了,这就是分层设计的威力。简单来说就是从下往上,每一层的结果变成了上一层的基石,通过将整体的复杂逐步拆分到每一层分解它的复杂度从而让我们能够对每一层直接驾驭,最终实现间接驾驭。

万物相通,其实游戏设计一样,通过游戏规则的分层设计,也许就能够设计出很多原本我们无法驾驭的游戏玩法。

第二个要说是闭包(不是一些计算机语言中的闭包,而是离散数学里定义的),具体定义可以自己去查阅。通俗点理解大概就是有一个元素的集合,它包含了一定规则,而在这个集合里的任意的元素都可以依照这些规则进行演算,且无论如何演算它的结果仍然被包含在这个集合中。比如有理数的集合和四则运算规则组成的闭包,任意的有理数之间都可以进行四则运算,且运算出的结果仍然是个有理数。

因为最近对这个感悟比较深,就稍微多说点。应用到游戏里,比如我们设计一个进化游戏,游戏由病毒,高级病毒,超级病毒3种生物组成,战斗力分别为1,2,3,我们的目的就是要培养出具有足够高的战斗力的病毒军队。其中有一些规则:每人初始只有一个病毒,病毒可以进化,中途无法通过其他途径获得任何病毒。这里如果进化规则设计成病毒->高级病毒->超级病毒,那么这不是一个闭包,因为其中的进化规则导致超级病毒并不能应用进化规则。带来的后果也显而易见,每个玩家最终结果只能拥有一个超级病毒,游戏的天花板立马就显现了。如果要提高天花板怎么办,可能有以下三种办法:
1 加入更高级的生物,但是终归最终玩家还是能够走到终点。
2 引入新的规则,每个生物进化到最终版本可以提升战斗力数值。
3 修改原有的进化规则,补充超级病毒的进化规则,即超级病毒可以进化为4个病毒,这样就形成了一个闭包。(数值保持3到4)

这里2和3都可以彻底解决天花板问题,如果只是单纯比拼战斗综合确实也并没有太大区别。但如果这游戏还具有战斗系统,且是实时战斗,一个生物与多个生物能产生的结果就会不一样,那么3带来的复杂度的提升就超过了2(当然,进化规则可能要相应修改,比如超级病毒只能进化为3个甚至2个病毒,因为毕竟个数也是一种潜在战斗力)

同样是设计一个游戏系统,为了解决一些问题或是创造更多变的玩法,方法的不同也许会导致最终结果呈指数级不同。所以我也是推荐一些游戏策划不妨多了解了解理性的逻辑知识,不要让自己永远停留在感性的阶段,仅仅依靠直觉(天才本能,然而大部分人并不具有)和经验(其实就是去借鉴自己过去做过的游戏或者其他同类型游戏)去做设计。