Perl的 IO 操作太繁琐了

看来看去,所有提到 Perl  IO操作的地方,都说要用 FILEHANDLE。每次都是 filehandle,用之前要绑定,用完了要解除,烦都烦死了。总共代码没几句,读一个文件就是两句,open一句close一句。读入之后还有个奇葩的 chomp…… 不明白当初设计这样的读取方式是何意。语法糖都这么多了,顺手就把这个换行给去了嘛,非得让人手动来一下。偏偏这个chomp还不返回截掉尾巴后的字符串,只返回截掉了几个。不爽不爽,真心不爽。

还有那个if 后置,既然这样设计了,为啥不到位点呢,直接把 if .... else 都给弄进去得了,比如 xxxxx if yyyyy or else zzzzzz。 那样写起来多流利。如果 or else 这样两个字合起来的不好做,那就搞一个 oresle 这样的嘛。xxx?yyyy : zzzzz 这样虽然也能用,但一看就是抄C的,而且一点也不自然。

如果让我设计 IO 操作的部分,我绝对会设法把 <$filename> 给弄成直接读取文件。现在这表达式给了从命名文件handle中读文件,简直让人吐血。既不容易记忆又没多少人用。反正我看到的大多还是沿用 BARE WORD那种大写字母当 filehandle的形式。至于那个 typeglob,更是捣乱。 <$hash{$file}> 这样就是 typeglob, <$file  > 这样也是typeglob,<$file>却是从名字句柄读文件,这存心就是挖坑让人跳啊。而且 $ 这符号实在是滥用了。 标量用这个,各种reference也用这个,filehandle也要用这个。虽然说后面这些都可以认为是标量,但标量跟标量毕竟是不同的啊,操作方式都不一样,你都凑一起,搞的好像类型很少的样子,掩耳盗铃么?

要有更好的RPG环境设计

玩过很多RPG游戏,网游中2005年后玩的最多的就是WOW了,这一款也足够经典,可以代表很多类似的作品;而单机的,近年的大作基本都没怎么错过。总的来说,游戏是越做越好了,但是总觉得还有不少可以改进的地方。有些可能会耗费很大的成本,乃至当前技术难以实现;有些则完全是设计上的问题。

这里说的RPG,专指欧美类型的。主要特点是想要营造出一个世界的氛围。我对日式RPG那种所谓剧情流完全不屑一顾。要剧情我何必玩游戏,直接看小说/动漫/电影不就得了,还省时省力。而且还老是烦得要死的回合制,非得回合的话,战斗场景做成战棋类的不更好么……

当前的主流游戏,对于环境的互动还是远远不够。各个游戏中,环境的作用基本上还仅仅只是局限在地形限制上,并且单就这一点,做的也并不完美。地形的限制大体可分三种:禁止移动,减速移动,高处落下。其中高处落下这一点在很多游戏中还并未实现,即便是3D游戏。比如说Dragon Age 和 Wizard 。我称之为“伪3D”。既不能跳,又不会掉下去。断绝了某些地方走捷径的念头,也根除了走路不慎直接摔死的危险,让真实性大打折扣。禁止移动则比较常见了,一堵墙,一块石头之类的,都可以做到类似效果。减速移动算是很能体现“地形”的一点,但是实现这一点的游戏也并不多。当然这里说的是地形,要除开中了陷阱之类的意外状况。WOW里面,能体现减速移动的,好像只有在水里,至于雪地之如冬泉谷,泥泞地之如尘泥沼泽,沙漠之如塔纳利斯,以及各种常见的上下坡,对于移动速度都没有任何影响。其他游戏中,完全不能下水的就有一大把,能下水的那些还好基本上都有实现移动速度上的变化,然而其他的地形却一样没能看到什么影响。既然水中能实现,那么这个完全不是个技术问题,而是个设计问题。倘若能实现这一点,那将更有真实感和代入感,玩家在战斗时也会更注意选择有利地形之类的东西。

说到有利地形,不得不吐槽下WOW中脑残的怪物寻路设定。站在山上打山下,怪物居然完全无视地形可以直接穿过山岩来到你面前的。偶尔找到一个通过发挥自己的优势,比如远程之于近身,站在某个怪物无法攻击到的位置,却会被判为bug,着实让人扫兴。我觉得一个好的RPG游戏,应当鼓励玩家通过利用周遭环境而获得尽可能大的优势,因为现实中人们也是这么做的!

 

环境不仅包括地形,还有些别的什么,比如说天气。非常多的游戏还没有天气系统,这些落伍于时代的就不提了。但是拥有天气系统的游戏,也大多只是将其当作一种装饰品,而没有什么实际作用。下雨了,刮风了,下雪了,沙尘暴了……不过是自然景观罢了,对穿行于之中的人物没有任何影响。这未免太假了点。我期望能有这样一个游戏,各种天气状况都会产生实际的作用,下雪了,能让人物受到寒冷的影响;刮大风了,能影响相应的行动;下雨了,能把人打湿…… 可惜到目前为止,还从来没有玩到过。要实现这些,技术上完全没有难度,只是增加几个人物属性维度的问题,当然,也会增加整体复杂性倒是真的。

 

环境中还有各种各样的物品。如何实现与物品的互动算是个大难题。现今的不同游戏有不同的实现方式,直接造成了自由度上的不同。不过受限于技术难度,完美的物品互动没有办法实现。即便自由度如 上古卷轴 这样可以除了主线人物外见谁砍谁的游戏,也没法操作人物用斧子劈了一扇随处可见的门。WOW中,与物品的互动主要通过Loot这一动作来引导实现。开尸体,开箱子,开…… 而其他一些在这点上更主流一些的游戏,会选择 “拾取” 这样一个动作,比如打死怪,地上掉出东西然后捡起来,比如箱子上有个碗,见到后捡起来。也有些是杂糅的,开尸体和开箱子用Loot,捡东西则用拾取,比如上古卷轴。然而无论如何,能互动的物品终究是有限的,划定在一定范围之内的。没打算让你动的东西,是绝对没法动的。这个是RPG游戏中让人沮丧的失真感的主要来源。设想一下,倘若所有的物体,乃至高山乃至地面,都成为可以互动的objects,会是多么让人振奋的事情啊。可惜似乎技术难度太大了点。现今的计算能力也许不足以实现呢。而且还有一个很致命的问题:同一件物品,在现实中可以有很多种不同的使用方式,比如一根棒子,可以当武器进行攻击和防守,可以当延长物去够那些够不着的东西,可以当烤肉架…… 而这个在游戏中会很难实现。特别是要将这世界的所有东西都这么来一下的话,那会是个噩梦。

 

Google与Facebook也开启争端了

报道原文在此

由头还是数据导出的问题。前几天我打算导出163的邮件到Gmail时就发现了,曾经可以导出的,现在被163给屏蔽了。但是Gmail依然可以导出到163。这次跟Facebook的争端也一样。Google要求Facebook允许用户导出好友列表而Facebook不愿意。但是Google并没有因此而如何反制,依然故我的坚持着。“As passionate believers that people should be able to control the data they create, we will continue to allow our users to export their Google contacts”。

这也许可以称得上一个伟大之处。不过考虑到Google是靠搜索引擎起家的,它所坚持的“Open”原则多少还是有自己的缘由的。

荒腔走板,别具风格

 最近没事喜欢听虾米上的音乐,因为音质比较好,然后专辑比较全,速度也还可以。今天随便点进了某人打的一个包,一路听下来,有喜欢的,有不那么喜欢的,但是都没有留下太多印象。直到听到一首名字叫《夕日坂》的歌时,感觉很是奇特。那种唱着唱着,突然飘起来的曲调,让我很是着迷,又觉得似曾相识。

后来嘛,突然想到干脆查一下来源吧,然后猛的看到边上写着演唱者是大名鼎鼎的初音ミク!!我就说怎么这么耳熟,原来是初音…… 没吃过猪肉也见过猪跑,没好好听过初音的歌,也被熏染了不少了,难怪接受起来毫无障碍。

又干脆在虾米上搜索了一下初音的专辑。也许是关键字不对,我输入“初音ミク”并没有得到我想要的匹配结果。但是依然地,还是能找到几张精选集。

电子合成音的特色非常明显。音调很滑。起落也是说来就来,没有一丝拖泥带水。这种怪异的风格让我十分喜爱。

技术宅拯救世界啊。

Everything has a price

 这句话是地精的口头禅之一。当然,它们是精明的生意人,任何东西都可以被量化成一定数目的货币。而我,只看到“代价”二字。

 

代价是一种制约。正如我在合租中水电费分配方案上的意见一样,无论多么同情照顾怜悯对方,依然不可以独自承担所有的费用。费用必须按一定比例分担。这样才能让对方在使用的时候有所顾忌,不能随心所欲。

代价也能让人慎重。除去机会成本这种必然存在却经常难以评估的代价,一个明确并且价值相当的代价,会使人更加地深思熟虑,仔细选择。

代价更使人珍惜。免费的培训经常是收效甚微的,因为受众大多不珍惜,除了时间之外什么也不用付出,而有的人正好不缺时间。收费的培训则效果好得多,并不仅仅因为教员更努力了,更多的是因为受众更专心了。越是价格高昂,就越是让人刻骨铭心。考试也一样。十几块钱的六级我也考了两三次,100多的软考我就不敢造次。

 

这世界上会有很多情况下的最优解,然而总的来看,任何时候都存在着选择,在各个“way”的代价与收益中取舍。