rvm+shoes的安装

UPDATE1:在更新了3.2之后,shoes的安装方法简化了很多。官网上的.run文件能用了,在ubuntu之下只需要用sh命令运行.run文件,然后进入相应目录,在终端中运行./shoes即可。之后也可以通过ln -s命令在usr/bin中创建一个快捷方式,省得以后每次找shoes的路径了。

UPDATE2:如果用gem install shoes安装的话,会安装一个很古老的shoes的版本,基本没办法使用。目前shoes4正在解决这个问题。现阶段如果想通过gem安装的话,推荐gem install green_shoes。不过绿鞋和红鞋之间存在部分差别

UPDATE3:由于shoes3在更新到了3.2之后,终于解决了.run文件运行出错的问题。所以如果是装3.1版本的shoes,下文才有用。

这篇文章中提到了,迫于shoes难装,被迫转向tk的痛彻心扉的经历。不过世上无难事,只要有东哥。在东哥的催促下,我还是把昨天的那个nokogiri装不上的问题解决了。

其实按照官方的这个wiki,rvm+shoes装起来超简单。rvm装ruby的过程在这篇短文中提到了,所以前面那些都不用看,所需要的就是从后半段开始。即,这么一段。

$ gem install bundler
# Clone Shoes source and build
$ git clone git://github.com/shoes/shoes.git ${SHOES_DIR}
$ cd shoes
$ rvm use 1.9.3
$ bundle install
$ rake

不过在运行bundle install的时候会装到一半就错误跳出,提示如下。

An error occurred while installing nokogiri (1.5.5), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.5.5'` succeeds before bundling.

昨天也就是卡到这里不知道该怎么办了,最后转向了tk。

今天又祭出stackoverflow,发现是libxml2没有装,于是按照下方顺序即可完成安装。

$sudo apt-get install libxml2
$gem install nokogiri
$bundle install。
$rake

既然shoes都装好了,那还是转回shoes吧,感觉shoes比tk好用了不是一点...

rvm+tcl/tk的安装

暑假放假一个月了,这一个月里百无聊赖。在尝试了玩游戏、画画、看游戏视频、跟美剧,最终纷纷腻掉之后,还是决定继续完成上个学期中期开始搞起的那个字模转换程序。

之前在这篇文章中也提到了要用shoes写GUI,那中类似于css的方法确实很好用。不过鉴于当时只有一台电脑,而且是windows,搞ruby实在是头疼,遂决定等几个月研究生开学了有新电脑了把旧电脑装成ubuntu,会轻松很多。

不过理想很丰满,现实很骨感。昨天下午尝试了整整一下午,结果一直装不好shoes。一怒之下,我决定还是用自己原来用过的东西,回归tk好了。

于是我抓起最后这根稻草,果断$ dpkg -l tk,发现ubuntu果然自带,还是最新版的8.6,奈斯。

于是信手搞了个Hello World!

结果就这也报错。

1:in `require': no such file to load -- tk (LoadError)

于是跑到/.rvm/src/ruby-1.9.3-p547/ext/tk下,$ruby extconf.rb看看缺了些什么。

log如下。

juiceyang@juiceyang-pc:~/.rvm/src/ruby-1.9.3-p547/ext/tk$ ruby extconf.rb
check functions.checking for ruby_native_thread_p() in ruby.h... yes
.checking for rb_errinfo() in ruby.h... yes
.checking for rb_safe_level() in ruby.h... yes
.checking for rb_hash_lookup() in ruby.h... yes
.checking for rb_proc_new() in ruby.h... yes
.checking for rb_obj_untrust() in ruby.h... yes
.checking for rb_obj_taint() in ruby.h... yes
.checking for rb_set_safe_level_force() in ruby.h... yes
.checking for rb_sourcefile() in ruby.h... yes

check struct members.checking for struct RArray.ptr in ruby.h... no
.checking for struct RArray.len in ruby.h... no

check libraries.checking for t_open() in -lnsl... no
.checking for socket() in -lsocket... no
.checking for dlopen() in -ldl... yes
.checking for log() in -lm... yes

Use ActiveTcl libraries (if available).
Search tclConfig.sh and tkConfig.sh...............................
Fail to find [tclConfig.sh, tkConfig.sh]
Use X11 libraries (or use TK_XINCLUDES/TK_XLIBSW information on tkConfig.sh).
checking for XOpenDisplay() in -lX11... yes

Search tcl.h.checking for tcl.h... no
......
Search tk.h.checking for tk.h... no
......Can't find "tcl.h".
Can't find "tk.h".

Can't find proper Tcl/Tk libraries. So, can't make tcltklib.so which is required by Ruby/Tk.
If you have Tcl/Tk libraries on your environment, you may be able to use them with configure options (see ext/tk/README.tcltklib

合着tcl和tk都没有?!我赶紧再次$ dpkg -l以防自己老眼昏花幻视了,结果发现都有啊!

好吧,果断还是得祭出stackoverlfow。发现8.6版本还不支持...

于是又把8.6版本的tcl/tk删除掉。然后从这里下载到了8.4.20版本的tcl/tk。(据说大神都是直接wget从sourceforge上下...)

然后将tcl和tk分别解压,添加到$PATH里,然后分别安装如下。

$ cd tcl8.4.20/unix
$ ./configure --prefix=/usr --enable-shared
$make
$make install
$ cd ..
$ cd tk8.4.20/unix
$ ./configure --prefix=/usr --enable-shared
$make
$make install

然后再$ruby test.rb,发现没问题了。

《Valiant Hearts: The Great War》——屁股坐偏了的历史游戏

《Valiant Hearts: The Great War》是育碧Montpellier工作室制作的历史题材解谜游戏,该工作室除了本作,出名的还有《雷曼》系列。事实上,本作所使用的引擎和《雷曼:起源》、《雷曼:传奇》所使用的也是同一个引擎(前一段时间发售的《光之子》也是用的这个引擎,不过不是Montpellier工作室做的)。所以基本可以预见《勇敢的心》并不是一个类似于《Goat Simulator》一样的试验作,事实上,Montpellier工作室也将该引擎使用的十分出色。

/*-----Spoiler Alert-----*/
/*-----剧 透 警 告-----*/

1. 剧情

游戏讲述了第一次世界大战期间,一个由法国人和德国人组成的家庭的悲欢离合。一战爆发之后,法国境内的德国人都被遣返回国,德国女婿卡尔也被迫和自己的妻子儿子分别。随着战争进度的演进,女婿卡尔和岳父也分别被法国和德国征召入伍,从此成为了战场上的敌人。故事也自此展开,围绕着卡尔回到故乡和妻儿团圆进行。

战争中的人类本是个不错的切入点,本作中的同一个家庭却隶属于两个国家的设定更能锦上添花。可惜的是,两个国家和一个家庭的冲突并没有在本作中得到体现。剧本只是集中在女婿卡尔一心一意想回到故乡见到妻儿上,卡尔的角色更像是一个离开家庭已久一心盼归的男人,而并没有体现出其士兵的身份。可能卡尔也是紧急被征召,而且在法国生活的时间已长,已经被同化成法国人了吧。从这点上了来说,卡尔的角色塑造有些扁平。

相对之下,岳父埃米尔的塑造稍微成功了一些。其不仅作为父亲、祖父、岳父,对家庭无时无刻的不施以思念和关心;而在战场上看到战友有可能牺牲的时候也会心情灰暗,在最后的法式万岁冲锋中也表现出了一个普通士兵的迷茫和手足无措。相对于卡尔的角色塑造,明显其丰富立体了很多。

剧情的安排上也多多少少存在一些问题。比如第四章中描写了加拿大军团在西线上的战斗。我可以理解制作者想要把西线上战斗过的协约国部队都介绍一遍的心情,不过加拿大军团和故事没有一毛钱关系,你又何必说呢?结果打完加拿大军团这一节之后完全摸不着任何头脑,对于剧情推进也没有任何作用。

2.画面

游戏采用了卡通的风格,画面的风格中也依稀可见《雷曼》的痕迹,游戏进行中的提示也有些漫画分格的感觉。

在镜头切换的时候,如果物体离镜头近的话,边缘就会有明显的毛刺,有些像低画质模式下的Flash动画。不过物体在离镜头较远的时候,毛刺就几乎看不出来了。

而且战场的画面的层次感很好。近处的铁丝网、不远处的烟和战壕、很远处的土坡、非常远处被灰尘遮盖的天空,立体的表现了一战西线战场上的激烈残酷的战争环境。玩家虽然只控制眼前角色的一举一动,游戏的制作者却也顾全到了背景中的战斗。战斗的进行也不只是局限于玩家所在这一点,是在一条散兵线上进行的。如果用摄影的话说大概就是景深够深。

画面的色调也很统一,色彩的饱和度普遍不高,给人一种老照片的感觉,也迎合了本作的历史题材。不会因为色彩丰富,给人造成潜意识里的不适应感。

3.音乐

毫不夸张地说,音乐的合理运用是本作的最大亮点。

游戏制作者十分擅长通过音乐控制游戏的节奏感。以游戏的第三关举例,在坑道里引爆TNT之前,会有一组铜管乐器有节奏的渐强,会觉得压迫感一点一点的变强。直到TNT引爆的那一刻,铜管乐器的声音突然消失,就像爆炸之后一切归于平静时的恐怖。又比如女婿卡尔逃离战俘营时,会有固定节奏的提琴,伴随着画面上的追兵,会使人觉得很紧张;而随着发射的闪光弹,提琴声也会突然出现并随着闪光弹逐渐熄灭而消失。穿插在游戏中的三次“飚车小游戏”,也会随着经典曲目的节奏,出现不同的障碍,很有些玩音乐游戏的手感。

游戏制作者也十分擅长通过音乐烘托某个场景的氛围。还是以游戏的第三关举例,地道战那部分背景十分安静,同时又士兵的悄悄话的声音,如果仔细听的话,能够听到锤子和镐有节奏的轻轻敲击岩石墙壁的声音,那种大战之前只隔着薄薄一张纸的安静却又紧张的战斗氛围十分明显。

4.表现方式

本文的题目也看到了,起这种题目明显不是要夸本作的,还是为了给本作挑挑茬。接下来将在多个角度给本作挑些毛病。

4.1.历史观

我认为这是本作最大的问题,直接导致故事的叙述角度出了问题,也就是题目中所说的“屁股坐偏了”。

第一次世界大战的起因文科生们背的很熟,理科生们虽然背不出个一二三四也大概知道些许。无非是因为德法民族仇恨、俄奥法德之间的利益冲突引发的军备竞赛等等。无论如何,第一次世界大战定性都只是一场新旧帝国主义重新划分势力范围,重新瓜分世界的一次战争。也就是说,一战不像二战一样,是有着正义与邪恶之分的。明明是初中生都知道的事情,游戏的制作者们却在这个事情上栽了大跟头。

制作者们在本作中俨然是把法国人民放到了受害者一方,而德国人则被塑造成了邪恶的一方。游戏的过程中可以看到法国的士兵像进了屠宰场一样被德军草割,哪怕在堑壕战中法军都是始终处于不利的一方,游戏的tips中也只说明了法军的伤亡如何之大。这恐怕都只是为了激起玩家们对于一战中法国人民的同情,同时憎恶被丑化了的德军。

游戏中的主要反派也是唯一反派Baron Von Dorf。他帽子上的骷髅头暗示了其是邪恶的一方。这个反派的的铁十字估计是普法战争时期拿到的。顺便说他的装束不是很像德国人,倒像奥匈帝国的。

虽然游戏的制作组是法国的制作组,夸夸法国也说的过去,毕竟有几百年的民族自尊心。不过在一个历史游戏中,屁股坐偏到这个地步,不遗余力的黑德国就确实有失偏颇了。某种程度上来说,这和伪造历史在性质上来说并没有什么不同。

4.2.游戏方式

游戏的游戏方式确实乏善可陈。本来就没有什么创新的游戏内容,都只是在嚼前人嚼过的馍,还孜孜不倦的不停的嚼只能说游戏制作者有些漫不经心。

例如上文中提过的飚车小游戏,事实这种游戏方式至少在液晶掌机中就出现了,后世并无突破,只是很小的修改后打肿脸充数——就像本作中的那样。而这种飚车小游戏第一次出现可能还有些新意没反应过来,但是像本作中重复三遍,玩家不烦是不可能的。

本作中也使用了不少QTE,不过都是玩剩下的,并没有什么特别出新意的地方。游戏中的女医生安娜救人时的QTE制作组也是屡试不爽,全篇估计能有20多次。不知道制作组是不是劲舞团的脑残饭。

4.3.谜题设置

前文中说过了,本作是一个解谜游戏。解谜游戏的要求是什么,自然是解密的环节要符合逻辑,也就是玩家要能够想到,却不容易想到。事实上做一个好的解谜游戏很不容易,谜题埋的太浅玩家觉得太简单没挑战,谜题埋的歪了玩家觉得这是故意刁难人,会出现抵触情绪。只有当谜题买的深,而且埋的正,才会让玩家觉得心服口服,制作者高实在是高。

从这个角度上看,本作的制作者确实欠些火候,很多地方设置的不合逻辑。比如藏在画后面的钥匙,画并没有高亮提示;比如高亮的苹果需要用D打落,而别的高亮的基本上都是用空格来互动;比如与背景融为一体的书架后面竟然还能藏人;比如密码锁拧对了密码却要在停留几秒才会显示正确;比如带钩子的绳子不是把人勾上去的,而是晃起来吧东西勾下来的。

游戏中遍布莫名其妙的谜题。另外还有许多放在几角旮旯的手雷,必须要人命令狗去叼过来。而事实上这个过程除了操作繁琐些,难度是一模一样的(尤其是从智商上而言)。颇有些故意刁难人的感觉。

4.4.历史题材作品的严谨性

还有一点问题是由于它的题材性质产生的。这是一个历史题材游戏,而且作品中也通过收集要素来讲述一战中人们的生活方式。可以看出来,制作组是想通过这个作品来叙述一段历史的。不过可惜其作为娱乐向过于死板,作为严肃向又不够严谨。

比如发明毒气弹的并不是把自己关在地下室里搞科研的黑暗科学家,而是弗里茨·哈伯

最后就导致作品有些四不像的感觉。

4.5.细节问题

这些问题到也不是什么大问题。只是为了证明制作组并不是很用心很认真。同一个场景里,门里门外的两个表会出现时间不同的情况。

法国人好像是比较浪漫啊!德国人太死板了!

5.总结

总的来说,这是个还说的过去的游戏,是个不及格解谜游戏。

如果玩家只是想抱着休闲的态度,顺便轻松的了解一些一战知识的话,会发现故事的剧情太沉重;如果玩家想认认真真来场智商考试的话,这个游戏又太侮辱人类平均智商。

正确的对待方法应该是将其当作电视剧一样的东西,纯粹用来消磨时间而已。玩过之后,恐怕多数人脑子里也会像看完电视剧之后一样什么都不剩把。

rvm安装ruby

最近买了新电脑,旧电脑装了ubuntu想熟悉一下linux,顺便以后的代码工作估计多数就要转移到ubuntu上做了。

今天在装ruby的时候遇到了一个问题。就是在按照这个ruby安装指南的时候,在安装完rvm之后,执行"rvm install"命令的时候会出现错误,log为

“Requirements installation failed with status: 100.”

后来在stack overflow上查到了原因,是因为执行这个指令的时候会update一下,但是有的repo是404 not found,update失败之后就会安装ruby失败。

所需要做的也很简单,就是首先确定是哪些repo是404的,然后在/etc/apt/sources.list下找到对应的自定义的repo的文件,删除掉这些文件(需要sudo)。删除掉之后首先执行"sudo apt-get update"一下,然后再执行"rvm install"即可。

最后执行一下"rvm list",可以看到安装成功了。

《战争之人:突击小队2》——宗师级炒冷饭

说起来本人也算个伪军迷。小的时候只是觉得武器装备什么的很酷,看了些印在扑克牌上的航母坦克之后,便去找了些看起来名字很唬人的书来看,《世界空战》《100场战争》等等。煞有介事的攒下一笔小金库跑到新华书店,买了两本《军事装备史》放到书架上镇宅。无聊之余还在QQ群里和一样中二的少年们争论滑膛炮和线膛炮孰优孰劣,珍珠港事件背后是否有张巨大的黑手。

现在想想确实有些可笑,小小年纪便知道装X,还是不走寻常路,在别人还在旋风冲锋龙卷风的时候就差点走上军宅的歪路。我甚至可以想象出来小时候自己看着别人摆弄着“战斗陀螺”时候的一脸不屑。自己这么虚荣果然是从小的时候就埋下的祸种。

咳咳,跑题了。这次主要还是要说说自己玩《战争之人:突击小队2》这个游戏的一些感觉。

mowas_sensha

用静止的观点来看的话,这是个不错的游戏。其拥有了《战争之人》系列的各种优点。

  • 配置要求低。10年的普通笔记本玩起来的话也可以有个不错的帧数。
  • 操作性强。这个是《战争之人》系列的一个大卖点,战役中的每个人都是可以操作的,从打扫战场捡装备,到蹭上坦克扔手雷。这些细小的动作都是可以操作控制的。
  • mod应该会支持的不错。据说突击小队1的mod在突击小队2发售之后都转移到突击小队2了。如果以后1代的mod都能转移到2代的话,确实mod是比较丰富的。

当然看了这篇短文的题目就知道重点不在于夸这个游戏。上文中简述了这个游戏的几个优点,不过前文中也说了,是以静止的观点来看。如果用运动的观点来看的话,就会发现上面所说的几点都是《战争之人:突击小队》具有的,《战争之人:突击小队2》只不过是继承了前代的这些优点(都没有发扬光大的),甚至在更新的青黄不接的时候,mod的支持数量反倒不如1代。

如果一个没有玩过1代的人直接玩2代,就会发现这个游戏实在是个不错的游戏。而如果让一个玩过1代的人玩2代,多数人都会抱怨1代和2代的差别真是小。

2代只是在1代的基础上加了几张战役地图,加了很少的武器。1代中的一些缺点也没有在2代中得到修改,比如在2代中依旧存在同样的地图换个国家就算新的战役的问题,战车也依旧无法按照玩家的意志自由的去撞倒建筑物,战役地图中单位和单位之间距离仍旧太近导致战术空间太小,补给卡车携带弹药种类太繁杂等等。

另外2代甚至出现了1代中没有的问题,比如步枪兵的弹药携带过少,只有100发多一点,如果不设置开火方式的话随随便便就打光子弹。

种种迹象看来,所谓的2代撑死只能算作游戏的一个补丁,还是那种内容很少的小补丁。而事实上这个补丁在steam上竟然要卖35刀,不得不说这个补丁实在是有点贵,1C骗钱骗的不要脸。

从1代和2代的游戏内容变化来看,游戏开发商始终没有什么诚意。甚至比不上某些mod的制作者,比如SirHinkel制作的德国战役mod制作的武器和地图甚至比游戏开发商还要用心。对于这样的开发商,实在是提不起什么信心。也基本可以预见照此以往,在不远的将来,《战争之人》这个还挺经典的系列就会砸在1C的手里。作为一个二战题材游戏的爱好者,这实在是令人惋惜。