Pulpcode

捕获,搅碎,拼接,吞咽

0%

此篇博客我将尝试用一个个小故事来和你分享我对游戏的经验和理解。

与作者交流

《机械迷城》是一款解谜游戏,游戏从被丢到垃圾堆的机器人主角开始,拨开层层迷雾,解救机器女友。游戏所在的城市,建筑,人物,动物都是机械。游戏里有个场景是需要玩家通过拼图来接电线。拼到一半时,一只机器猫头鹰叼走了一块拼图,飞到了电线上,折腾了很久,怎么也拿不到那块拼图,后来我以为要去别的场景找一块相似的拼图,但是别的地方根本找不到。又回到之前的场景,发现猫头鹰其实站在电线上模仿我,我向左走,猫头鹰向左走,我向右走,猫头鹰向右走。所以我试着反复的伸长和缩短自己的身体,猫头鹰也跟着模仿,然后电线就被它上下抖了起来,幅度越来越大,最后电线被摇断了,它跌了下来,我就拿到了那块拼图。我在这里感受到了游戏设计者通过机器猫头鹰的行为对我指引。

jixiemicheng_maotouying

曾经有个朋友跟我说过这样一句话,单机游戏自己一个人有什么可玩的,和别人一起玩才有意思。我想这种想法并非少数,其原因在于觉得自己玩仅仅是对着一堆冷冰冰的程序,而与别人一起玩才有互动一说。不过有这种想法的人,应该没怎么玩过游戏吧,至少没怎么玩单机单机游戏。首先我们来思考这样一个问题,读本小说应该两个人一起读么,看一部电影电影需要两个人一起看么,这里暂且不聊看完之后的剧情讨论环节,或者陪对象一起看电影的浪漫情节。在欣赏这些文艺作品的时候,应当安静的去感受。同理游戏也应该被这样对待。我们在读小说的时候,其实是在和作者交流,我们在看电影的时候,其实是在和导演交流,同理我们在玩游戏的时候,应该是和游戏设计师交流。

交流本身是一个很宽泛的词汇。并不是说你我面对面才是交流,你写一篇文章,或者画一幅画,间接让我看到,我体会到了你的想法,这也是交流。

在虚拟中寻找现实

在游戏《植物大战僵尸》里有一种植物叫寒冰射手,它是在豌豆射手的基础上,给豌豆添加冰冻效果,从而减速僵尸。游戏中还有一种头上着火的树桩植物。从它头上经过的豌豆能有点燃效果,加大攻击力。有一次我灵机一动,在寒冰射手前面放上火树桩,那不正好给僵尸来个“冰火两重天”么?当我在游戏里实验这一思路时,我发现我想错了,寒冰射手的冰豌豆划过火树桩后,变成了普通的豌豆。感觉游戏的设计者识破了我的意图,我尝试用别的思路,把火树桩种在寒冰射手的后面,普通豌豆种到火树桩的后面,这样火豌豆和冰豌豆都打到僵尸身上来个冰火两重天。可实验后我发现冰火两重天虽然实现了,但没有减速和加倍伤害并没有同时生效,火豌豆会移除冰豌豆带来的寒冰减速效果。像这么一款休闲类的游戏,居然有冰火互斥的物理引擎在?不得不说设计者的思维缜密,连这种小细节都想到了,反观很多所谓的大制作却做不到这一点。

阅读全文 »

开篇

在《如何阅读一本书》中,作者介绍了阅读的几个层次,分别是“基础阅读”,“检视阅读”,“分析阅读”和“主题阅读”。
其中“基础阅读”是指能够读懂书中内容的初步阅读。“检视阅读”是指系统化略读,在阅读初期就对书籍有一个大致的了解判断。“分析阅读”是指追求理解的全面性阅读。最后的“主题阅读”是指带着主题在多本书中主动研究的阅读方式。
作者在书中特意提到,这四类阅读是层次渐进的,既第一层阅读并没有在第二层阅读消失。之所以要提起这本书是因为平时在做技术分享的时候,积累了一些感悟,我认为在技术分享这个事儿,同样也分为几个层级的。

基础分享

第一个层级我叫它“基础分享”。在这个层级中,要做好两件重要的事,第一个是主动分享。第二个是清晰表达。

主动分享
我发现有很多程序员不愿意做技术分享,主要还是心态没有转变过来。原因我整理了这几种:

觉得自己当前做的不够好不配分享。认为自己学过的别人都会,等以后全都学好了再去分享。

这种有点完美主义有点自卑的情绪就好比在想等自己足够优秀的再去追喜欢的女生一样。你要觉得准备好了再去,那是没有准备好的一天的,有些时候就是要先硬着头皮上,所谓完成比完美更重要。这次大胆尝试,下次做的更好就行了。

阅读全文 »

红黑树和跳跃表都是高效的数据结构,但redis的zset底层实际使用了跳跃表而非红黑树是为什么?

这篇博客的内容来自于我在公司分享的一部分内容,其目的是探讨如何对比两种数据结构?背后的原理是技术选型的思路?

当然要说明一点,要说zset是跳表也不完全合适,使用的其实是改进后的跳表,比如允许key重复。

那么如何对比两种数据结构?首先要看他们支持哪些操作,这些操作的复杂度是多少?

那对于大部分数据结构而言,它们要支持的操作无非就是增删改查,分的更细一些就是单个查找和范围查找,找最大最小之类的。那么接下来我们就分别对比下这两种数据结构,对应操作的时间复杂度是多少。

阅读全文 »

提示,文章中有引用英文原文,如果你使用了浏览器自动翻译,会让文章读起来怪怪的。

cpu load是cpu比较关键的一个指标,当你的系统cpu load 高问题时,如果你去网上查阅资料一定会查到类似“cpu load 是统计一段时间内正在使用和等待使用CPU的平均任务数”的指标,当说到等待cpu时,更明确的解释是“处于不可中断睡眠的(D状态)的任务
”。man的解释是:

The load average is calculated as the average number of runnable or running tasks (R state), and the number of tasks in uninterruptible sleep (D state) over the specified interval.

所以看上去当你的系统出现cpu load高,但是cpu使用率却很低的时候,去找到这些不可中断状态就成了唯一线索了。

但问题是什么是不可中断状态,如何去找它们,我在网上搜了一些中文资料,发现大部分博客是截取的书中内容,或者相互抄袭,还有甚至有明显错误,比如有些博客让你用top命令找D状态,但真实情况是D状态存在的瞬间那么短,你怎么可能用top命令找到D状态呢?还有些博客说不可中断状态就是等待IO,那IO到底是磁盘IO还是网络IO,再说IO还有很多阶段啊,难道我发起个阻塞调用这段时间会一直是不可中断状态?找了半天没有一个让我一下明白到底啥是不可中断状态的。所以我打算在外网找一些答案,经过了长时间的查找,还是有所收获的,在这里分享出来。

阅读全文 »

我的mac屏幕在两年前碎了,因为公司有满年限回购电脑的机制,所以在领了新电脑之后,我花了500元买下了这部旧电脑,一直放在家里插着显示器直接使用,这样我就不用每天背着电脑回家了。也许你会好奇为什么我没有修屏,原因有两个,第一,虽然可以直接在公司直接找资产部门进行维修,但修一个屏要2200元。第二是因为我已经修过一次了屏了,而且就在第二次屏坏的一个月以前。当时我真是心痛,没想到忍痛花2200元修一个屏,不到一个月就要再修一次。所以当时生气的我选择放着先用吧,就这样一直放到现在了。

现在又要拿出来修是因为我觉得那个旧mac编译大型程序稍有些稍卡,所以我决定修了碎屏mac给对象平时做ppt用,然后给自己更新了一个mac mini当台式机用。

不过我确认维修价格的时候,却有些生气,因为他们告诉我维修价是2700。我问他们是涨价了么,他们说没有一直是这个价,一开始我还真以为是自己记错了,然后我查到之前维修的聊天记录和支付账单,果然就是2200,我把账单给工作人员看,他们又开始敷衍的解释说,这个可能是之前供应商的报价,他们的价目表一直是2700。当时我就有些生气,说的话完全前后对不上。

你可能觉得这已经是我个人的电脑了,为什么拿去公司修。但其实这个电脑目前还不属于我,因为我只是交了钱,并没有在公司注销,所以这个电脑目前还是公司资产,我不注销的原因是因为注销会把电脑所有东西都清空,包括操作系统。我真怕清空到连外接显示器的驱动都给了清空了,那样的话在修显示器之前,是无法使用的。

阅读全文 »

在我的脑海中里,始终有一些深刻的镜头画面,一些残存的记忆碎片,可能是一部电影,一个游戏,或者是一个玩具。之所以称它们是碎片是因为我实在不知道它们到底叫什么,完整的样子是什么,因为太小众了,年代又有些久远。它们本身就不是《机器猫》,《超级玛丽》这种被大家所熟知的东西。这些记忆总是是不是会在你眼前晃一下,但是你想更深入回忆一下时,却又进行不下去,前段时间狠下决心,决定凭着仅有的记忆碎片寻找这些作品的名字和那段有趣的历史。

碎片1-红白机游戏

那是一款在小时候玩过的红白机FC游戏,我从一个土豪同学家里借来的,那个游戏应该比较冷门,因为那个卡带我只见过一次,印象深刻的是那个卡带就一个游戏,但是不是那种三国类加电池记忆卡带,游戏的画面并不光鲜,但是元素比普通FC游戏多很多,一开始过场动画是一个飞机失事,游戏中操作的人物可以跳的很高,而且起跳摆起手来的姿势像是中国僵尸那样,导致周围的一些小伙伴称之为“僵尸游戏”,房子上的雪球还会掉下来。关卡一开始有一个很长的,长满尖刺的坑,根本跳不过去,需要用手抓住上面的绳索荡过去,游戏里如果长时间不烤火还会冻死,记得还可以在商店里购买类似枪的道具,通关结局是搭上一个飞机离开,但是如果闯关失败,则会看到一个人头像的照片,看着有点像成龙,这游戏我只见过一个人通关,就是我弟,但是我询问我弟更多的信息,他说只有点印象而已,当时我们获得卡带都是被拆开壳子的芯片,所以也没有关于卡带封面的记忆。

我在百度搜索了很多关于游戏的关键词,在知乎和v2ex上都有提问,都没有答案,询问儿时的一些小伙伴他们有些只是有印象,有些甚至都不记得自己玩过这样一款游戏了。后来无意中发现百度贴吧的fc吧,里面有很多fc大神,有一个人给我答案,我去搜了下视频果然是我记忆中的那个游戏,它的名字叫《绝岭雄风》英文叫《cliffhanger》

阅读全文 »

就“编程像什么”这个问题,我思考了很久了,可以说每隔一段时间都会有新的想法,但始终没有一个令自己满意的结论。此篇博客尝试将自己思考的一些内容都总结出来。

1.武侠

上大学的时候,在图书馆翻到一本书叫《编程高手箴言》,这本书的作者同时也是播放器“超级解霸”的作者,梁肇新。算是老一辈的大神程序员,稍微大一点的人应该知道这款播放软件,当时中国盗版光盘盛行,但播放盗版vcd,dvd电影会很卡,正是超级解霸这种本土软件,用了一个“跳跃的算法”,尝试在卡的视频上进行“跳帧”,满足了当时老百姓用电脑看盗版盘的需求。这段故事在这本书里也有介绍。梁肇新在书的开篇,用“手中无剑,心中有剑, 手中无剑,心中也无剑”等几个阶段,来形容编程的几个阶段,现在看来是有点中二,但是当年看到这段文字的时候,确实心中有些激动,脑海中浮现出一个通过不断练习,让自己水平越来越高的一个程序员的形象。或者说不是一个程序员,更像是一个功夫世界里的侠客。

虽然我是90后,但我其实比较关注老一辈程序员的。我在学生时代,就特别喜欢听他们讲过去编程的故事,写汇编程序,在dos上开发程序,精通MSDN。当年有本叫《疯狂的程序员》的小说,是一个80后程序员将自己真实经历改编而成的。可以看到他们当时的编程环境差,日子艰苦,一本技术书翻到烂,但是又觉得很快乐。从他们的故事里,你会发现一种特别的武侠情节,也许金庸小说是他们年少时期的快乐源泉。这是一个简单直白的想法,也是许多程序员的想法,做好技术。通过练习变得更强,在这件事上,古今中外应该是统一的吧,比如在小时候看的动画片七龙珠里,甚至出现了“精神时光屋”这种东西,找一个异次元空间花大量时间练习,国外传过来这几年很火的10000小时定律也是这个思路。想要变得更强么?练习吧。

jingshenshiguangwu

但是不仅限于变得更强,学出境界,武侠情节还有另一层意思是武侠与人世间的是是非非,与世无争,所以类似侠客,还有一个词叫工匠,这个词同样描绘了一个苦心修炼技术,与世无争,牛逼又低调的人。貌似日本尤其吹嘘这种工匠精神,做一件事,把它做到极致。虽然中国也有很多的极致的工匠,比如玉雕,木雕啥的,但没有像日本吹的那么邪乎,动不动这个仙人那个仙人的。

阅读全文 »