0%

今天不吹牛、不搞笑、不乱用第一人称叙述,好好写一篇正经点的文章。

《新加坡2022》游戏攻略(一):凌晨四点的香港

你认为出国是一件有趣的事吗?我想,大部分人的答案都是肯定的。出国嘛,在新鲜的地方,碰到新鲜的事物,想必是充满乐趣的。可是,一出国我才发现,出国,尤其是出国居住一段时间而不是出国旅游,是一个充满挑战的过程。你需要克服沟通上的障碍,了解当地的生活方式,迅速把国内的生活经验迁移到新的国家里。又正逢全球疫情,严格的防疫政策更是令适应新生活的难度大增。对我来说,这几天的出国体验与其说是游玩,不如说是攻克一款角色扮演游戏。接下来,我将按时间顺序分享一下持S-Pass(新加坡的一种工作签证)在疫情尚未结束的2022年在新加坡安顿、生活的经历。希望这篇文章能给即将出国却没有出过国的人一些启发,同时也能让大部分人看得有趣。

冒冒失失地启程

如何用一段文字来描述上海地铁的拥挤呢?

一般人肯定会去描写上班高峰期上海地铁的“盛况”:地铁像浸满了水的海绵一样,再用它来吸水的话,能把水滴吸进去,同时也会把一些水漏出来。

但我不会这么写。我会写道:九点半,上班高峰期已过,通往徐家汇的地铁上依然挤得水泄不通。

要问我为什么会知道这件事?没办法,出国前最后一天,我还是起了个早(相对而言),被迫体验了一次上班期的上海地铁。为了完成任务:获取核酸检测报告,我不得不在早上前往离宾馆较远的一个医院。

任务名:获取核酸检测报告

任务背景:我是在头一天晚上先在香港中转,第二天下午4点抵达新加坡。入境香港和新加坡时,需提交入境时前48小时内的核酸检测报告。

任务目标:

  • 获得时间合适的核酸检测报告
  • 核酸检测报告必须是英文

如上所述,我在出发第二天下午入境新加坡,最早要在出发前一天下午4点做核酸检测。考虑到医院的服务时间、入境时间与飞机抵达时间的时间差,我打算出发当日上午做核酸检测。由于核酸报告必须是英文,我保险起见挑了家只出双语检测报告的医院(我不想打广告,就不说医院名了,可以轻松地在网上搜到)。于是乎,我只好一大早挤地铁赶往那家离我的宾馆较远的医院了。

仔细一想,这么早起来挤地铁,完全是转机害的。要是能够直飞过去,就没这么多麻烦了。可是,从香港转机到新加坡,只要2000多元,其他的转机方案都7000起步,从上海直飞更是10000起步。不过也托了是住在上海的福,能有从香港转机的选择,国内其他地方似乎连这个实惠的选择都没有。为了省点钱,踩着时间点去做核酸检测这点苦头还是得吃的。

我9:50到的医院,酒店12点退房,医院到酒店的交通时间是半小时,时间并没有那么赶。但是,登记检测信息时,工作人员热心地告诉我,我没有在个人信息中上传护照信息,打印的报告里不会有我的护照号码,建议我登记了护照信息再做检测。同时,他还告诉我只有在上午11点前完成检测,报告才能在下午4点时得到,否则报告得第二天才出来。我的护照还在宾馆里。这样一看,时间非常紧迫。我算了下,现在回宾馆,最早也是10:50回到医院,太赶了。同时我还回忆起来,新加坡仅要求核酸检测报告上有证明身份的信息,除了护照号外,出生日期也算是一种身份证明。相比于报告上没有护照号,在规定的时间里得不到检测报告更成问题。于是,在0.03秒内,我完成了回忆与利弊分析,没有选择回去,而是直接做了核酸检测。

出发的一大早,我就碰到了一项需要决策的挑战。虽然略显冒失,但我还算是成功了。没想到,这次的挑战仅仅是个开始……

上海机场

做完核酸检测,我在时间充裕的情况下整理好了行李,在宾馆退了房。我身背沉甸甸的登山包,一只手推装了Switch、PS5、书、衣服的旅行箱,另一只手把杂物袋按在旅行箱上辅助推行,就这样踏上了旅程。

刚才的核酸检测任务还没有结束。报告是4点钟给出,但我4点钟的时候必须要赶到机场了。报告是电子版的,我不可能去医院要一份纸质报告,只能在机场打印。还好上海浦东机场是有打印服务的。我按照网上的信息,在T2航站楼2楼星巴克对面找到了打印处,花6元打印了一张纸的报告。至此,获取核酸检测报告任务正式完成。

我还预约了携程的取外币服务,在A号值机口附近成功以1:4.9的高价换到了一点新加坡元(正常的汇率是1:4.6),就当是花一点小钱体会一下为什么贪官的资产不好转移到国外吧。

正当我悠哉游哉地准备去托运行李时,猛然看见“充电宝禁止托运”这一信息。我的充电宝塞在大旅行箱里。为了避免未来的大麻烦,我强忍着麻烦,打开了旅行箱,从衣服堆中挖出了充电宝。果然,我碰到了意料之内的麻烦——行李被打乱后,旅行箱关不上了,这可太麻烦了。我只好把最厚的棉袄从旅行箱里拿出来,这才解除了麻烦。没想到,这件棉袄在后面还帮到了我,正所谓麻烦反被麻烦误啊。

国际航班的值机处的服务非常到位。工作人员细心地帮我检查文件,还叮嘱我要提前下好一个填新加坡入境信息的APP。国际航班的安检处人也很少,总算不用排老长的队了。我刚想多夸几句国际航班的好处,就被安检给刁难到了。安检时,不仅要脱外套,带金属的皮带还得脱——唉,脱就脱,反正是男生嘛。什么?螺丝刀、剪刀都不能带?唉,扔就扔吧,亏我当时特意从房间里翻出来的。怎么书包检查了好几次还要检查?书包里电线太多了?为什么叫我们拿出电子设备的时候不叫我们把电线也拿出来啊。真没想到做飞机安检的时间能超过安检排队的时间。

我向来是讨厌提前到火车站或机场的。但今天我特意在起飞前提早了3个半小时到机场,时间还将将够用。感觉机场的主线任务也不算好做啊。

第一趟飞机

上了飞机,整趟旅途最舒服的时间到来了。

我第一次坐上了两列过道,一排8个座位的大飞机,第一次在飞机上看到可以自己选择节目的机载电视。飞机上的电影都挺新,我本来兴致勃勃地播放起了柯南最新剧场版,却偶然看到隔壁大哥正用耳机连着电视,又一看电视只支持USB的耳机口,我没有能接USB的耳机,因为不能享受到最完美的体验,一气之下关掉了电视。

还好我是电脑不离身的人。我反手就掏出电脑玩起了不吃资源的小型游戏。飞机上微凉,我正好披上棉袄,不冷不热刚刚好。就这样,我在娱乐、就餐与瞌睡中,度过了舒适的机上时光。

没想到啊,飞机上我不仅享受的是最后的晚餐,还是最后的睡眠。

折磨人的过夜转机

在香港转机,钱是少花了,可麻烦事一点也不少。我必须在香港机场停留,直到去新加坡的航班启航。我得从晚上9点多停留到第二天约中午12点,在机场候机室过夜是免不了的了。

任务名:香港机场过夜

任务背景:在去新加坡的航班抵达之前,我必须一直待在香港机场候机室。

任务目标:

  • 熬过这段时间

在订票的时候,我就已经做好了在机场过夜的准备了。我看了下别人的攻略,得知可以躺在三连坐的座位上睡觉过夜。但我也做好了最坏的打算,反正早上6点抵达上海的绿皮火车我都熬过来了,随便找个地方靠一靠,一晚上睡不好也没什么问题。

办完第二天新加坡航班的登机牌后,我找好一个有插座的座位,搭起了一个临时个人领地。这个有插座的座位是二连坐,躺不下来,果然事情没有那么顺利。幸好我准备了后手——我在出发前,买了三包装的抽纸,这些抽纸放在我手提的杂物袋里。我在到上海机场之前的那个午休时,恰好发现放在行李箱上的杂物袋里的抽纸可以做为我坐躺时的侧面靠枕。实验表明这个靠枕睡起来还挺舒服的。我本来准备把这个天然靠枕装置做为香港机场过夜的杀手锏,却猛然发现我的行李箱早就拿去托运了。看来我的准备还是有一些漏洞啊。

没关系啊,我也不亏,有无限电量的电脑,就可以通宵玩游戏了。在机场转机,就省了几千块钱。等于说我通宵玩游戏一晚赚了几千块钱。这么一想我不仅不亏,反而赚大了。

小玩了一会儿,我想起还有个新任务要做:

任务名:新加坡租房

任务背景:我要在新加坡有一个临时的居住地,离学校尽可能近,不能太贵。

任务目标:

  • 获取足够房源
  • 成功解决居住问题

我之前就计划在过夜的时候来搜集新加坡房源信息。出发之前,我总会觉得时间还早,而且不能看房,搜集信息没什么意义。在有充足时间,且事情愈加紧急的情况下,搜集房源是最高效的。

之前我租房都受到了帮助,因此没花太大功夫。这次,对租房方式的不熟悉加上对国外的不熟悉,令搜索房源成了件对我而言极其困难的事。还好这晚时间有多,加上我过人的智力与游戏装备购买比较经验,我迅速掌握了新加坡租房网站(propertyguru)的用法,了解了学校附近租房的普遍价位。当然,实话实说,并不是我搜集信息的能力很强,而是学校附近的房子都太贵了,在我预算之内的房子根本就没几间。若是加上整租这一需求,满足条件的房子中仅剩下了一所公寓。这下也好了,没得选择,等于不用选择,等于选择完毕。很早之前我就了解过这所公寓,条件和价格都没什么大问题,到时候直接去住就行了。

想到这里,我心中的一大重担总算落地,心情瞬间愉悦起来。接近凌晨两点,机场笼罩着昏昏沉沉的气氛,只有我一个人大幅度地摆着手,在机场里兴奋地踱步,想象着之后的美好生活。

可惜,大脑和胃部同时向我发出了警告,我只好老老实实地回到座位上,以低功耗模式思考起来。我啃起了早就准备好的巧克力,令大脑可以持久地工作。

夜还很长,该干些什么呢?机场灯火通明,施工人员在最不会打扰到旅客、最恰当的时间里轰轰隆隆地进行着机场设施的修建,过夜的旅客们则瘫倒着勉强地休息着。这令人讽刺的对比太过于强烈了,我忽然灵感涌上心头,想动键盘写下一些东西。可惜灵感和情感到位了,大脑的运算能力不够了。我望着机场的天花板——香港机场的天花板,由三角形的金属板拼接而成。拱形的屋顶连接着候机室的两侧,由长廊的尽头延申而来,犹如巨龙的鳞片一般。机场内灯火通明,可黑夜中的天空却从屋顶金属板间的缝隙间透了进来,提醒着人们这是凌晨两点的候机室……我大概是想这样动笔,从景物写到在机场睡觉的人,讲一讲机场的不人性化,感慨下大伙儿转机的不易。但我的大脑当时太困了,空有思路,想了好久也没想好该怎样把天花板的模样描写清楚。

我意识到自己困了,开始准备睡觉,可机场恶劣的环境又令人难以入睡。我只好选了一个令我最容易入睡的方法:我找了个提供桌椅的办公区,以最接近上课时的坐姿趴在桌上,一边想象着老师讲课的场景,一边催自己入睡。果然,还是上课时的睡眠最香,我很快就睡着了。顺带一提,我是披着棉袄睡的,棉袄在制冷系统完美运行的香港机场又帮了我一次。

天亮了,为了时刻关注登机的信息,我回到了离其他人很近的原来的座位上。我靠在座椅上,第一次觉得薄而硬的座位是那么适合睡觉,惊醒后又立刻贪婪地入睡是多么令人满足。加上巧克力的能量续航,我在没有饿死也没有困死的情况下熬到了抵达新加坡的一刻。——前往新加坡的航班并没有提供饮食,对我而言坐飞机只是让睡觉的椅子变得软了一点而已。

Hello Singapore

到了新加坡,我看到软绵绵的床和香喷喷的美食已经在向我招手了,肚子反倒不饿了,精神也抖擞了起来。

在入境处,我提供了以下材料:

  • IPA(入境基本证书)
  • 核酸检测报告
  • 疫苗报告(是用微信小程序防疫健康码国际版生成的)
  • 护照

此外,在之前的两个机场除了提供这些材料外,也有若干信息要填。上海机场出境前要填什么海关信息,填去往香港的健康签名;在香港机场要填去新加坡的健康签名,还要填什么ICA表格。反正主要是打好疫苗,准备好核酸检测报告就行。剩下的资料工作人员都会帮忙指导。我算是比较幸运,在新加坡入境处花的时间少于上海和香港办理值机的时间。

按照之前的计划,我本来是要在机场买好手机卡和交通卡的。但我糊里糊涂跟着同行的旅伴走到了打车处,他告诉我没做完核酸检测前是坐不了公共交通的。我也没心思去思考他这段话是什么意思,只是想快点打上车,把行李放到宾馆里。

的士来了,司机是一位黄种老人,头发花白,却精神地帮我搬着行李,用老绅士来形容再贴切不过了。上了车,我说道:”I want to go to this place (我想去这个地方).” Meanwhile I show the destination on the cell phone to the driver. 啊,不对,是我同时还给司机看了手机上标出来的目的地。

我这才发现,随着离国内越来越远,生活的方式变得越来越陌生。而我,得去主动适应这全新的环境……

2022年3月博客广告

最近我可以在毫无压力的情况下放假了。我准备写一堆文章出来。敬请期待。不过现在肯定没有人会天天盯着我的博客,大概看的时候我已经把所有文章都写完了。

我和大家坐在一起吃饭。

把“大家”称作“同学们”的话,有点不太恰当,因为其中有些人严格意义上没有和我在同一间教室里一起学习过。倘若把年纪相近,在同一所学校同一段时间的校友都称作同学的话,把大家都叫做同学才算是勉强正确。

那为什么回到家乡后,第一件事是和大家出来吃饭呢?

因为在我看来,大家都是“朋友”吗?


六七年前,同样一批人也是这样坐在一起吃饭。

但是,和大家在一起交谈时,我并不是很舒心。

我和有些人并不是很熟,不能像关系特别好的同学一样,自由自在地交流。

在那时,因为某些原因,我不得不强行找到一些能够交谈的人,以用一层薄纸封住我空虚的内心。

又因为某些原因,这层薄纸被捅破了。我发现,我的内心没有变得充实,反而日渐腐烂。

在修补内心的同时,我开始憎恶起这层阻碍我看到真相的纸来。

什么样的人才可以称得上朋友呢?

那恐怕只有和我思考水平相当,能够和我发自内心探讨深刻的问题的人吧。不需要花费多余的心思,只要所心所欲地说出自己真实的想法就好了。

以这个标准看去,我没有几个朋友。

也好,剩下的人对我来说,怎样都无所谓了。就是他们害得我没有及时发现自己内心的病症。

果然,如我所愿,我的内心一天天强大起来。只寻找这种意义上的朋友,成了我的信条。


时至今日,我的想法似乎还是没有怎么改变。

随着时间的过去,我已经不用再费心思考朋友的定义,能够自然地和人接触了。

但如果有人问我什么是朋友,我依然会思索一会儿,再给出之前那一模一样的回答。

如果是在今天之前,还没有和再次大家坐在一起吃饭之前,我肯定是会这样回答。

现在,在这个饭桌上,之前就没什么共同语言的同学,如今也没有太多的话可以讲。

现在坐在我旁边,以前曾经玩在一块的同学,也因多年经历上的割裂,而不知道从哪个话题开始聊起。

大家都只好聊着吃饭之前,下午一起体验的游戏项目。

最近的共同经历,只有刚才的那几个小时了。再不然,就是中学时的那些事情了。

几年前,和同一批人相处时,那坐如针毡的感觉再次传了过来。

可是,我已经不是以前的我了。面对这令人恐惧,仿佛要把我拉回过去的感觉,我选择了抵抗:我要尽快离开这里,远离大家。我不想变回过去那个空虚的自己。

嗯,如果是真的和朋友一起的话,会有这么令人焦虑吗?


但是,吃完饭后,大家把我拉到了下一个活动地点。

顺应着气氛,我和大家正常交流着。

就和今天下午一样,我们只是说着普通的话。

就像以前一样,没有深刻的思想,没有刻意的组织言语,我只是和大家说着话而已。

那不就和以前一样了吗?我仿佛是回到了因为心灵的空虚,而和他人交流的状态。

我已经不是以前的我了。我应该讨厌这样的情景才对。

可是,不知道从什么时候开始,我不太想离开这里了。现在的一切,不但不令我讨厌,反而让我觉得怀念。

正因为我已经改变了太多,能够再次体会到以前相同的感觉,就像是回到了以前一样。就好像这只不过是期末考试过后的一次聚会而已。

仔细想一想,过去的我的体验真的有那么糟糕吗?为什么我会沉醉于不再能回到的过去呢?

和不是朋友的人在一起的时光,会令人这么难以割舍吗?


所有的活动结束后,我和一个同学恰巧在一起坐地铁回家。

以前,我们好像是经常会聊好玩的游戏。现在的我们,在玩的游戏上,似乎没有什么交集了。

我逐渐找回了现在的我的状态,主动地找了一些有意义的话题。我向他询问了近来的状态,并试图稍微聊一聊学科、职业这种稍微深刻一点的问题。

但是,和我预料得一样,谈话很快就以沉默告终。

有了四五年经历上的差别,我们早已像两束发散的光一样,射向了永远不会再次相交的远方。

或许从一开始,我们就没有相交过。我们性格之间的差异,本来就不足以支撑长时间的有效对话。

不过是恰巧,能够在同一时间、同一个教室里上课而已。

地铁即将来到换乘站,他要下车了。我像是要抓住什么似的,提前祝他新年快乐。

他笑着说,过几天在祝福也不算迟。

啊,我都忘了,过几天大家还会出来聚一次会。说新年快乐,还是有机会的啊。

但是,说再见的机会应该没有多少次了吧。

他……之前是我的朋友吧?

那么现在也一定还是我的朋友。


下了地铁,我走在陌生的街道上。

说是陌生,只是因为地铁的出口建在了一个比较偏僻的巷子里。毕竟之前是没有地铁的。

什么嘛,只要走出小巷,还是我熟悉的街道啊。

说起来,之所以我对这里很熟悉,是因为我曾在附近住过一段时间。

我还在家乡的时候,换了好几次住处。今天我们跑了好几个地方,恰巧经过了每一片我熟悉的区域。

我一步一步走着。我努力地看着四周陌生的店铺与熟悉的道路,希望能把这一切的场景都在脑中刻下一丝印记。

为什么连一草一木也令我感到不舍呢?难道这些没有生命的场景,也是我的朋友吗?

什么是朋友呢?我又一次问了自己同样的问题。

能够和我探讨深刻问题的熟人——今天之前的回答是这样。

能够轻松地交谈的熟人——好像不是所有人都能找到合适的共同话题吧。

关系不错的人——这不是一般意义上的,对“朋友”两字的详细而无用的描述吗?

共同拥有一段愉快的时光的人——

这是我最终得出来的结论。


离别之际,人为什么会对其他事物感到不舍呢?

经我的观察发现,人是自私的。

人自出生之际,就只能体会到自己的感受。人只会为了让自己获得更多的美好的感受,而贪婪地活着。

反过来说,人并不会主动在意其他事物,除非这些事物能够给自己带来好处。

或者,这些事物被当成了某个人的所有物。在意这个事物,就像在意自己那样符合道理。

路边的景色。

远去的故友。

这些事物显然不是能直接给我带来好处的东西。

可是,这些东西怎么也不像是我的所有物啊。

唯一能解释的就是,人不仅会把有形的事物当成自己的所有物,还会把经历当成自己的一部分。

对于家乡的风景来说,这里记载了我成长的一幕幕。它是我的经历中的一部分,是我自己的一部分。

对于人来说也是类似。和他人一起的,令人开心的经历,是我的一部分。

可是,朋友不是那么简单的一个词。朋友,可是要得到两方的认可才行啊。

那么,就这样解释好了。我们共同拥有一段愉快的时光。两段蜿蜒而不断延申的人生曲线上,那不起眼的几个交点,是我们人生的一部分,是我们互相视作朋友的证明。

离别,意味着再也见不到某事物。

意味着那些时光、那些风景不再会有了。

意味着人永远损失了一些东西。

面对不得不经历的损失,自私的人类会感到不舍啊!


最近在玩“素晴日”,里面有几个话题令我很感兴趣。

一个是说,我们每个人都有一个自己的世界。

这个想法不假。人只有感知到了世界,思考并回应着世界,世界对人来说才有意义。

每个人都触碰了世界的一部分,对世界的交互方式有自己的理解。

那些东西,正是我们每个人自己的世界。

在我的想象中,每个人的世界都是外观一个不断的变动着的球。

说它是球也不算准确。球是三维的,只能和我们能看到的一切一样,记录三维的场景。

可是,自己的世界不仅有我们认知某一处的场景,还有我们在不同时刻见到的场景。

自己的世界,还包含着属于自己的经历。经历是有时间这一维度的,所以哪怕说我们的世界是球,那也得是一个不断变动,反映着不同时间的场景的球。

每个人都有自己的世界,即每个人都有一个属于自己的球。

总能找到一个时刻,两个球有了重叠的部分。

所以不用太悲观啊!即使同意了世界是由自己定义的这个观点,也能在自己的世界里找到别人的痕迹。

还有一个话题是说,人是唯一认识了死亡的生物。

事实上,死亡是生物永远也达不到的状态。生物死亡,即永远失去了“生物”这一称号。

所以,其他的生物都安然地活在世界上。

只有人会畏惧死亡。

为什么不会体会到的东西,会令人害怕呢?

我想,这是因为人体会过失去吧。

咽下去的东西,就再也体会不到它的味道了。

即使能重复做同样一件快乐的事情,同样的事情带来的乐趣终将令人厌倦。

只要是人,是有着高级智慧的人,就会意识到失去的存在。

死亡,意味着失去所有令人快乐的事物。

所以,人哪怕永远不会见到死亡,也害怕自己的世界被剥夺。

生活的价值,就是死亡失去的价值。

那也就是说,正是有了注定的死亡,才会有努力活下去的价值。

死亡的本质是失去。

那么,正是离别,赐予了我们朋友的价值。

合眼告别美梦

七月,刚来上海参与为期半年的实习时,公寓旁地铁口前的野花还鲜艳地长着。哪怕是两场台风过后,树丛中仍能看见几抹彩色。可惜,最冷的新年一月来到了,再也不能看到树丛里的花朵了。

我所在的公司,离最近的大学只有数公里之隔。但校园内外的风景,却有天壤之别。校园里,只有低矮的教学楼,来去匆匆的行人,每天能看到的净是沉闷而重复的事物。而公司所在的写字楼有四十多层高。站在落地窗前,能看到黄浦江与天空交汇在一起,楼盘、马路、汽车,不过是背景板上的几处点缀。

刚来到办公室时,我还有点战战兢兢,不敢站在高处向下看。很快,我熟悉了周围的人,熟练了手头的工作,走遍了附近每一家美味的餐馆。现在,再站在窗前俯视大地时,我只会悠然地欣赏着外面的景色。

我的工作并不累人——当然,有些时候除外。十二月,我们组的项目即将上线。全组人都绷紧着弦,马不停蹄地赶着进度。月底,在全组人的掌声中,我们的项目如期面世。很快,项目受到了公司内外的一致认可。项目宣传稿发出去的第一时间,从不关心社交平台的我立刻转发了这篇宣传文。按下“发送”键后,手机界面跳转到了我的朋友圈,我忽然笑了出来:短短一分钟里,我的朋友圈被同一条宣传文刷屏了。而发出消息的,全是我们组里的人。大家虽然没有把激动的心情表达出来,却在宣传文发出后立刻不约而同地转发了这篇文章。

项目完成后,恰好要进行年终述职。身兼开发与管理二职的小组主管自豪地汇报着我们小组这几个月的工作内容。看着我参与过的一项项工作,我的思绪不禁回到了五个月前。

刚来公司的时候,我的编程环境怎么都配不好,连办理企业微信都花了整整一周。

来公司两周多后,我才初次为项目贡献了代码。虽然在现在看来那只是一份简单的修改,却让我感到自己总算是融入了整个小组。

后来,我实现了一个完整的功能,甚至还主导了一次大型的代码重构。

我习惯了与组内的前辈认真讨论工作的内容;我学会了其他部门共同协作;我结识了其他组的朋友,和他们一起聚餐。

总算啊,我们的项目上线了。大家的付出,都有了回报。

未来,这样的生活应该还会进行下去吧?

项目上线后,还会面对更多的挑战。我还会一如既往地为项目贡献自己的一份力。我越干越久,技能越来越丰富,说不定能独当一面,主导更多的工作。

凭借我的条件,找个门当户对的女朋友,安安稳稳地结个婚应该不是很难吧?到那个时候,我应该会搬出出租屋,租一个大一点的房子。

再攒个几年的钱,应该就能凑够房子的首付款了。我总算能住在自己的房子里了。是不是考虑再买辆车?或许还要考虑生孩子的事情了?

是啊,随着时间不断流逝,一切都会顺利地进行的。

到那时,我不再是骑自行车,而是开着汽车来到写字楼下。

我会穿着更成熟,更得体的衣服,与熟悉的同事们打着招呼。

敲一敲键盘,吃个午饭,睡个午觉,转眼就到了下午。

今天是每周组会的时间。在会议室里,我又会看到小组主管。

听着她汇报着我们小组的工作内容。

“……今年我们组把代码库开源了。明年,我们会探索更多方向……”

看吧,就像这样,她还会总结着我们组的工作内容。

“……我们会为我们公司做出更多贡献……”

嗯,为了我们公司。等等,“我们”的公司。那是谁的公司?明年一月,我就要离开这里了啊!

”……以上就是我的述职报告。“

小组主管完成了她今年的年终总结。我猛然回归神来——轮到我进行2021年的年终述职了。

”我虽然只在这里实习一小段时间,但我依然出色地完成了我的工作……“

和之前准备的一样,我熟练地开始了我的演讲。

”……在介绍我的具体工作之前,请允许我带大家一起回顾一下我的成长轨迹……“我把刚刚回忆出的内容,一字不差地描绘了出来。

当然,我没有讲出之后”梦境“里的那些事情。梦里的事情,是不是永远无法成真啊?

”……具体来讲,过去我做了这些事情……“

不对,过去的几个月对于我整个人生来说,算是美梦一般的存在了。刚毕业,没有家庭的压力,没有身体的负担,幸运地来到了这里。这是我之前想也不敢想的生活啊!

”……未来,可能我在这待不了多久了。但我真的很怀念在这里的时光,会继续当我们项目的社区贡献者……“

这真的不是一句客套话,这是我的真情实感啊。我虽然没和组里每个人都认真地聊过天,但我们曾经谈论过无数小细节,在同一片办公区里一起工作了几个月。没有组里的大家,哪有最后的成果,哪有这么开心的时光呢?我的想法,能传达给大家吗?

”……我在过去的工作里学到了很多。未来,我还会继续努力。谢谢大家。“

还好,我还可以谈着未来一个月的计划。我还可以轻轻合上眼,把这终将结束的美梦给做完。

然后,迎接告别。

初三的最后一天,全班浸没在泪水中,而我却木讷而不解地看着其他人。

大四的最后几晚,宿舍里的四个人默契地通宵玩着联机游戏。

下个月,我会一边告别,一边收拾行装。之后,我会转过身去,独自远离这令我看过无数美景的高楼。

公司,不过是又多了一份离职记录;上海,不过是又冷漠地送走了一位外乡人;亚洲大陆,不过是又见证了一次飞走的航班。

而我,又永远失去了一段生活,又多了一段新的生活。

阅读理解环节

  1. 如何理解标题“合眼告别美梦”?(14分)

    答:“美”,表示这段经历对作者来说十分享受(2分)。“梦”,表示作者终将告别这样的生活(2分)。用“合眼”而不是“闭眼”,更强调睁开眼又再次闭上眼睛的动作(1分),表达作者已经意识到这段经历已经步入尾声(1分),却依依不舍的心理(2分)。“告别”,是作者主动进行的,体现了作者抛弃旧生活,迈向新生活的决绝(2分)。标题虽然只有短短六字,却把作者对过去生活的赞美、对意识到一切终将过去的苦恼、对告别过去的不舍、对不再留恋过去的坚定这些复杂的感情都写了出来,可谓是妙笔生花(4分)。

  2. 文章中提到了结婚。结婚之后,竟然只是”租一个大一点的房子“,几年后才买房。没有房子,哪结得了婚?这里逻辑有没有问题?

    如果有人觉得这里逻辑有问题,那么说明这个人的心态已经不再年轻,已经完全融入这个无情的社会了。这个时候,你不应该去去关心我的文章写得有没有逻辑问题,而应该反思一下,自己什么时候开始心态发生了变化,什么时候把结婚和买房绑定到了一起。当你想通这些问题的时候,你一定已经收获了很多,而不会再去在意我文章写得有没有问题了。可以说,我这个地方故意要这样写,故意要去钓鱼,故意勾起读者对于自己的反省。

  3. 文章里提到的”开源“,”代码库“是什么意思?

    我们见到的程序,都是从源代码里生产出来的,就和食物是根据配方生产出来的一样。一般公司不会提供源代码。而”开源“,指公开一个项目的源代码。”代码库“,一般指 GitHub (放代码的网站)上开源出来的代码项目。

    补充资料:公元2021年,天才开源项目开发者周弈帆作为元老级开发者,参与了著名开源项目 MMDeploy 的开发。该项目成功减少了开发人工智能应用的成本,为后来全世界的人工智能化革命埋下了重要的伏笔。

做为天才卡牌游戏玩家兼设计师,我十分热爱卡牌游戏,经常向他人安利我喜欢的卡牌游戏。

一天,我的好朋友和我讲:“最近出了款叫《邪恶冥刻》的卡牌游戏,融合了”炉石”、”万智牌”、”游戏王”的玩法,还有《杀戮尖塔》中的Roguelike机制,强烈推荐你去玩。”

“这是款对称卡牌游戏吗?”做为资深卡牌游戏玩家,我立马提出了这个问题。所谓对称卡牌游戏,就是每个玩家的规则都是一样的,用同样的方式击败对手。而非对称卡牌游戏一般出现在PVE(人对战电脑)中,玩家一般使用卡牌作战,而boss只有血量和技能,不使用卡牌战斗。

“是的,但这款游戏做得很好。“朋友看出了我似乎有所顾虑,依然极力向我推荐着这款游戏。

我将信将疑地去体验了这款游戏,结果不出我所料——游戏的平衡性出了大问题。

最近我准备简单点评一些游戏。虽然我的点评可能会极度专业(我相信这个世界上没有多少人能提出像我这样专业的评论),且以批评、改进意见为主,但在介绍游戏的简况和优点时,我会用尽可能用通俗易懂的方式表达,让游戏经验较少的人也能读懂。《邪恶冥刻》给人的体验很糟糕。就像你去一家中端的饭店就餐,里面的装修、服务不输高档饭店。服务员热情地给你端上一块精美的一人餐蛋糕。虽说是一人餐,蛋糕上放满了琳琅满目的水果和巧克力。你舔了一口奶油,不禁感叹道:”太美味了!“你连忙又吃了几口,却发现这蛋糕越吃越没有味道。吃完之后,你发现肚子还是半饱。于是,你默默抱怨道:”有这个钱去装修饭店,不如在菜品上多下点功夫。“

在我看来,《邪恶冥刻》是一款十分可惜的游戏。作者很有实力,有丰富的游戏制作经验。他做出了一款画面表现力强的大杂烩游戏。刚玩一会儿,你会觉得游戏的各个机制都很吸引人。但是,游戏的平衡性极差,你很快就觉得游戏没有挑战性了。玩完了一个又一个看起来很有新意的关卡后,你用十来个小时就通关了整款游戏,看着作者花了不少时间做出来的演出(即玩家不能交互,而是像看电影一样看游戏剧情),感到索然无味。整款游戏可以用虎头蛇尾来评价,甚至是”虎头蛇身“。作者明明有丰富的游戏设计经验,却浪费了很多时间与资源去做冗余的游戏机制和演出,真的很令人惋惜。整款游戏的创意运用得好的话,这将是一部足以记入卡牌游戏历史的游戏。可能是因为卡牌游戏本身的平衡太难掌握了吧。

下面我将按照老规矩,先介绍游戏的亮点,再详细列出游戏的缺点。

本文有一定剧透,虽然游戏不是由剧情主导的,被剧透也没啥关系

卡牌游戏大杂烩

”我的回合!抽取一张松鼠牌!献祭一张松鼠,召唤一张狼崽。狼崽会在下一回合,变成3攻2血的狼,并在回合结束时朝前方自动攻击。失败的天平,会向你那边倾斜3点。“

”战斗胜利,我选择移动主角,朝左边的路前进,在篝火处升级我的狼崽。现在狼崽的生命,从1点变成了3点。”

如果玩家需要在游玩的同时描述游戏内容,我一定会这样进行解说。

有经验的卡牌游戏玩家在看完上面两段描述后,一定会露出会心的微笑:《邪恶冥刻》借鉴了许多游戏,包括”游戏王“的献祭系统、《炉石传说》的攻击与血量、《Artifact》的自动攻击、《杀戮尖塔》的Roguelike卡牌系统。

加入游戏机制是一件简单的事情。但难能可贵的是,《邪恶冥刻》把各个机制结合起来,创造了一套小而精的卡牌游戏规则:说它小,是因为游戏战场小,卡牌数量少,战斗结束得块;说它精,是因为游戏规则有趣且自洽。

小的游戏,做精自然容易。但这样的游戏往往会面临游戏内容不足的情况(比如《陷阵之志》(”into the breach”),体量小而近乎完美)。作者似乎意识到了这一点,他用一种特别的方式来添加游戏内容:通过大幅度改变游戏的玩法来创造新的关卡。

游戏系统大杂烩

除了最初的Roguelike卡牌系统外,作者在保持核心玩法是卡牌对战的前提下,还引入数个不同的游戏系统。”像素画面“、”开卡包“、”向上下左右四个方向拓展地图的塞尔达式2D地图“。这些本不可能在同一部游戏中出现的元素,奇迹般地出现在了这同一部游戏里。作者的初衷算是达到了——随着游戏内容的增加,玩家的游戏时间确实得到了延长。

除了一些常见的”对战“、”冒险“游戏机制外,《邪恶冥刻》还把解谜要素(在我的定义里,”解密“指打开隐藏砖块、用钥匙打开门、发现boss弱点这种轻度的需要玩家动脑的游戏机制,”解谜“则指独特、高难度的谜题机制,需要玩家认真思考,这些机制一般是游戏的核心玩法)融入了游戏的所有章节里。在完成卡牌游戏的挑战之余,玩家一定要通过解谜来推动游戏的进度。这些解谜没有冗余之感,是玩家在激烈的卡牌对战过后的完美调剂品。

在一部游戏中塞入数个大的游戏系统,这是一般的游戏不敢做的事情。也只有有经验的独立游戏作者,敢于在自己的作品里炫技。很难得,这些游戏系统融合得不错,过度没有很突兀,值得游戏经验不是很丰富的设计师学习。

成也卡牌,败也卡牌

卡牌游戏的特点是什么?

从玩家的角度出发,卡牌游戏最大的特点就是趣味性。简单的规则,狭小的战场,就能演绎出一部部精彩的对局。如前文所讲,得益于卡牌游戏本身的特性,《邪恶冥刻》设计了一种简单而趣味性极强的卡牌游戏机制。如何打出强力卡牌,怎么摆放卡牌,怎么样造成有效伤害……卡牌游戏的每一个机制都引入了思考。在一切都确认完毕后,玩家就能双手离开键盘,看着卡牌自动攻击,并触发卡牌效果的联动,最终获得游戏的胜利(或者翻车),体验着思考带来的成就感。(关于卡牌游戏的认真研究将会出现在以后的文章)

但从设计师的角度来看,卡牌游戏的设计难度是极大的。卡牌本身具有的随机性,加上卡牌间难以量化的联动效果,让卡牌游戏的平衡性成为了一个难题。《邪恶冥刻》主要就输在了平衡性这一点上——游戏在后期实在太简单了,战斗胜利丝毫不能给玩家带来乐趣。

越是机制精致、联动性强的卡牌游戏,越能给玩家带来耳目一新之感,也越难维持平衡性。这真是一件矛盾的事情。

这里将先分章节,再从宏观到具体,逐条列出我还能记住的游戏平衡性上的具体问题。这些内容是写给玩过游戏的玩家看的。

总体

游戏机制

  1. 血量差为5点的胜利条件,对于先手行动的玩家来说,过于容易触发。反过来,boss太强,玩家就会被秒杀。这是游戏的核心机制,也是一切平衡问题的根源,确实不好改进,不然游戏就完全变了。一些可能的改进意见会在后文提及。
  2. 缺乏对手牌臃肿的惩罚。一般情况下,卡牌游戏要求卡组精简,不然抽到关键牌的概率会缩小,卡组整体强度降低。做为一个每回合抽一张卡的游戏,理论上卡组臃肿带来的影响是很大的。但因为第1条胜利和失败都过于简单,为了让玩家在前几回合不被秒杀,作者在设计时让对手的卡组进攻性不至于太强,其结果玩家卡手几回合都没什么关系。这无论在单机卡牌游戏还是多人卡牌游戏中都是不允许的。
  3. 缺乏抽牌上的联动。这一条导致了第2条问题,玩家容易卡手,对手强度不敢太强,玩家卡手反而不被惩罚。
  4. 对手下回合策略已知。这条由《杀戮尖塔》发扬的机制是回合制游戏的一项历史性突破,我非常喜欢它,且赞同这条机制出现在卡牌游戏里。但无疑这条机制令游戏的难度又降了一层。
  5. 游戏中,有”站场“这个概念,即上回合生存的生物,下回合还能进行攻击。这是一条滚雪球的机制,有场面的玩家会一直扩大优势。而对手对于场面的控制极差。这导致玩家控制场面后很容易获得胜利。

细节

  1. 部分卡牌效果过强。如”检索牌库中的一张牌“。

第一章

游戏机制

  1. ”检索牌库中的一张牌“与无限资源之间的组合过于BT。比如令所有松鼠牌具有”检索“效果,这等于让玩家自由地控制手牌,所有战斗都失去了难度。作者保留这些强大的组合,可能是想让玩家觉得游戏很有趣。但是,还是那句话,卡牌游戏是以难度恰到好处的战斗为核心。一旦玩家无敌了,后面的战斗都是垃圾时间,有什么趣味可言呢?
  2. 强行打脸牌过弱(飞行牌),这导致防守牌(防空牌)也没有价值了。可能作者想设计出面对对面的打脸牌,玩家可以用防空牌来防御,也可以用打脸牌还击这样的充满抉择的游戏体验。但是,战场就那么点大,血就那么多,战斗一下就一边倒了,这种抉择根本体现不出来。如果战场更大,血量更多,维持血量差的博弈才会更加明显。
  3. 高费牌都难以打出,尤其是骨头牌。
  4. 种族机制联动不足,一旦联动了又过于强大。

细节

  1. 剧毒秒最终boss很有趣,但平衡性因此更加差劲了。
  2. 第三关boss难度实在太低了,这是很明显的设计水平有问题。第二阶段,玩家至少可以拿走对方一张牌,而且玩家场面上是有牌的,至少有一张牌可以直接攻击到对面。玩家轻松就可以在第二阶段一开始秒杀boss。
  3. 几大终极奖励的强度明显不一样。”每回合抽两张牌“、”抽牌变成检索“无疑是超强的能力,而”战斗开始获得8个骨头“的强度太低了。

第二章

游戏机制

  1. 献祭机制配合几乎无消耗的骨头机制过强。高费献祭牌太容易被召唤了。
  2. 高费骨头牌太难召唤了。
  3. 宝石机制(万智牌机制)的强度过低。
  4. 我现在根本记不住boss的卡组了。boss的卡组实在太弱了,且后面的boss不比前面厉害多少,我前期随便组的一套卡组就能打过所有的游戏内容。我虽然不能说出boss卡组设计上具体的问题,但很明显boss的卡组强度过低。

细节

  1. 游戏的一场战斗是可以无限次进行的,这导致玩家可以获得无限多的金钱,进而获得无限多的卡牌。”能无限获得的资源,必然要有一个能无限输出的途径“,这是我在小学的时候就领悟的游戏设计原则。在这样一个卡牌游戏里,能无限获取卡牌就是不合理的。玩家可以刷无限的牌,让游戏的攒卡机制报废。虽然这游戏的平衡实在太烂,战斗太简单,玩家根本不需要去刷钱就能获取胜利。
  2. 对应游戏机制的第1条,有张无消耗的牌,效果是能用一根骨头换一个骷髅。这张牌能瞬间产生大量的祭品,让高费献祭牌登场。这牌强度太高了。

第三章

游戏机制

  1. 游戏流程过长,后期各种卡牌效果联动、堆叠,整套卡组的强度已经爆表了,多强的boss都打不过玩家。
  2. 自定义卡牌很有趣,但这导致了第1条的效果堆叠问题。剧毒、顺劈、回手,这样一张无限资源的牌一旦摸到,游戏直接胜利。
  3. 电路通路的太难触发了,而且到了游戏后期,其他牌已经过强了,这个机制变成了鸡肋。

细节

  1. 有一个给卡牌加1攻,但卡牌死亡后永久被移除卡组的效果。这个效果的设计水平很低。这个效果的本意是加强一张卡,但要冒风险。但是,加1攻并不是多大的提升,反倒是移除一张卡能够提升整套卡组的质量。设计的本意很难达成。
  2. 有一张低费卡,能够对初次出现的敌人造成1点伤害。这张牌效果的强度太高了,比不少高费牌还强,直接让防守变得特别简单。

提升平衡性的建议

游戏小而精的机制,令游戏平衡性很难提升。但在对卡牌游戏设计有诸多思考的我看来,在核心机制不变的前提下,游戏的平衡性仍然有很多提升的余地:

非对称性

关于PVE卡牌的对称性上的思考,是我在比较《炉石传说》冒险模式和《杀戮尖塔》之后进行的。《炉石传说》本来是PVP游戏,凭借着玩家间的博弈,游戏的平衡性天然能够得到维持。所有卡牌都是为聪明的人类玩家设计的。但在炉石的PVE中,AI的水平很差,游戏的平衡性直接就崩溃了。由于游戏的胜负极大取决于对战双方的水平,哪怕给AI塞很多好卡来强行提升PVE对战的平衡性,玩家还是很难从PVE中获取足够的乐趣。反观《杀戮尖塔》,整套游戏就是基于非对称战斗的。只有玩家在使用卡牌,怪物只会按照简单的规则放技能。玩家不和对手博弈,只需要最大化自己卡组的能力即可。非对称的战斗,绝对更加适合PVE卡牌游戏。

坚持使用对称卡牌机制是造成新游戏规则无法拓展、难做平衡的最重要的原因(所以说在玩游戏之前,我就很在意这是不是一款对称性卡牌游戏)。在《邪恶冥刻》中,游戏机制可以向非对称的方向修改。玩家的操作可以一直用卡牌来表示,但是敌人的表达形式可以多种多样。事实上,游戏中就有一些非对称的战斗:战斗的胜利不再是使血量差大于5,而是杀死特定的敌人。朝这个方向做就对了呀!

血量与场面

自始至终,游戏的胜利条件都是血量差大于等于5点。“血量差”这个概念令游戏的攻守之间的抉择非常有趣。但是,很明显,5点的血量差非常容易产生,boss战可能顷刻之间就结束了。

提升胜利所需血量差是一个眼见的提升平衡性的手段。但如果无脑提升血量,并不能改善游戏的平衡性。游戏的胜利条件表面上是血量占优,但实际上只要控制住场面,再大的血量差都能产生。也就是说,游戏真正的胜利条件,是取得场面的胜利。

在传统有卡牌战场的游戏里,血量这一机制的设定,其实是给游戏新增了一个胜利条件:我可以靠控制住场面,慢慢打死你;也可以通过快速造成伤害,在你的怪物还没召完前把你“抢血”抢死。这对应了传统卡牌游戏的控制卡组和快攻卡组。在《邪恶冥刻》中,设计师可能是为了让游戏多一种胜利条件,让快攻卡组可行,才令血量差这么小。

可惜,游戏的胜利条件设置得太糟糕了。作者也注意到5点伤害太容易打出,所以给boss加了很多“嘲讽”(令对方单位无法直接对我方角色造成伤害)怪物。这反过来使玩家的快攻卡组几乎不可行了。血量差5点的设定,讽刺般的起到了反效果,游戏只剩下了控制场面这一种赢法。

血量差5点是一个核心机制,几乎所有卡牌都围绕这一点做平衡,要改起来恐怕很难。但如果让我来对游戏修改的话,我会在游戏初期保持5点血量差的胜利条件,前期的弱卡以此为平衡标准进行设计。随着游戏进行,血量差的要求会逐渐放大,后续卡牌强度也逐渐增加,以新的血量差为平衡标准。

但我不能保证这种修改是有效的,实际的平衡性还需要在测试中确定。可以想到,由于胜利条件是血量差而不是血量,玩家可以通过不断进攻来代替防守,使得防守变成了一个很没有意义的事情。想把这个机制下的平衡做好还是太难了。游戏做得小而精,就不得不面对这种平衡性上的重大挑战,这种游戏还是太难设计了。

技能卡

游戏设置了许多新颖的机制,但令人意外的是技能卡(相对于怪物卡的概念,能立刻产生效果,用完立刻丢弃)这种基础机制竟然没有出现在游戏里。大概能够猜到,引入技能卡的话,游戏的平衡性将会更难维持。而且电脑的AI很不好写,想产生势均力敌的对称性战斗更难了。

如果让我做的话,无论会引入多少新的困难,我都会加入技能卡的设定。技能卡是对游戏机制做加法,而且是对游戏内容维度上的提升,可以极大扩充游戏的设计空间。也就是说,设计师有更多的空间去设置卡牌的能力,更容易设计出不一样的卡来。只要把游戏最基础的平衡性搭好,后续添加新卡、维护新卡的平衡性都会简单很多。

但估计还是出于维护那小而精的游戏机制,设计师没有向游戏里添加技能卡的设定。反正我是认为加入技能卡能大幅提升游戏的可玩性、平衡性。

手牌资源

卡牌游戏一大核心、一大可玩之处,就是抽牌系统。玩家牌库中哪怕有再强的牌,手牌数量不够,或者因为卡组臃肿抽不到想要的牌,都会导致当前的战斗陷入窘境。抽牌系统是卡牌游戏必须要做好的一点。

理论上,卡牌间不仅要有场面上的交互机制,还应该有手牌上的交互机制:比如什么有某一种族就抽一张牌,抽一张同名牌等。玩家需要动脑去最大化抽牌效果。《邪恶冥刻》的手牌资源控制得极为糟糕:要么是无脑强而无聊的手牌资源机制,什么消耗一根骨头获得一张白板卡,什么亡语把卡牌回手,什么去牌库中检索一张牌;要么这张卡就和抽牌一点关系都没有。连”抽一张牌“这种再基础不过的效果都没有。设计师根本没有花心思在抽牌系统上,根本没有去想怎么样构建一套好玩的抽牌体系。

没有考虑手牌资源,导致玩家的牌库很容易臃肿;牌库臃肿,玩家就容易卡手;玩家卡手,如果boss强度过大,玩家一两个回合就撑不住了。设计师很明显发现了这个问题,所以根本不敢给boss太强的卡组,以照顾那些很容易卡手的卡组。这让游戏的平衡性崩溃得一塌糊涂,让卡牌游戏的一大玩法——构筑精简的卡组彻底消失。

让我来做的话,一定会考虑加入更多与手牌资源有关的机制,且和现有的种族、场面等机制结合起来。但同理,加入这些设定会让游戏发生翻天覆地的变化,很多东西都要重新设计。

平衡性总结

我玩完游戏已经一个多月了,但我随手一列,还是能从机制和细节上列出这么多平衡性问题。可以看出作者对于卡牌游戏平衡性的把握是如此糟糕。这要放到一个PVP卡牌游戏中,设计师早就被玩家喷死了。

成也卡牌,败也卡牌。基于有趣的卡牌游戏框架,设计师设计了一个简单的卡牌游戏系统,这个卡牌游戏玩个几盘感觉还不错。但是,设计师必须为这样一个简单的系统付出代价:这样的系统的平衡性非常难做,很难往里面添加有趣的新卡。糟糕的平衡性,会极大拖累游戏的可玩性。这样一个卡牌游戏系统,撑死了就只能支持10来个小时的游戏时间。等玩家稍微熟悉整套系统后,这个卡牌游戏就一点也不好玩了。

丰富性与平衡性的讨论

这一节,我就不理性地进行分析,而是发表下我个人的看法了。

我喷了这么多平衡上的问题,也夸过游戏在丰富性的创新。综合而言,我对设计师的这种设计思想极度不满,对这部作品感到十分惋惜。

你说你做一个小体量的卡牌游戏,游戏机制差不多自洽。哪怕内容不多,几小时就玩完了,玩家体验尚可。我会认为这游戏非常有新意,做得很值得学习。

你说你做了一个小体量、平衡性极差,又臭又长的游戏,我会说这是个垃圾游戏,不用去玩。

问题是《邪恶冥刻》在初期以一个新颖的卡牌游戏系统吸引了玩家的眼球,后来又用这个差劲的系统浪费了玩家很多时间,同时炫技般地不断加入丰富多彩的游戏系统。不管是大一点的构筑/roguelike/有限资源这样的游戏资源系统,还是爬塔式/塞尔达式/自由式的地图系统,还是小一点的自制卡牌、读取玩家电脑信息、修改卡牌、临时添加战斗机制等一系列在现有游戏机制上的装饰,都做得十分丰富。设计师真的是设计水平很高。这要换一个游戏框架,比如换一个2D平台游戏,游戏一定会非常好玩。

但可惜,这就是一个卡牌游戏。卡牌游戏的趣味的核心,是恰到好处的难度。这种靠平衡性吃饭的游戏,就是考验设计师的硬实力,怎么样在设计好的游戏框架下,添加合理的游戏内容。加再多花里胡哨的装饰品,试图在游戏框架上扩充,而不去认真把框架内的东西填充好,是无法提升游戏的平衡性,无法做出一个足够好的游戏的。这就好比你写作文,内容乱七八糟,你说“我字写得很好看”;你写程序,逻辑混乱不堪,你说“我变量名取得好,注释写得清楚”;谈个恋爱,你长得不帅,没有钱,不会说话,你说“我程序写得很好”。这有用吗?最核心的评价指标达不到,其他的东西做得再好,有什么用呢?

我不会推荐,甚至会大力阻止别人去玩这款游戏。不是因为我不喜欢这款游戏。我从这个游戏里学到了很多东西:无论是好的设计思路,还是需要规避的缺点。我也十分认可设计师本身的水平。但是我太喜欢这款游戏了,以至于我会不断想象这款游戏如果是我做出来的会怎么样。如果是我做出了这样的游戏,我会非常难过:明明很有水平,也很有想法,却做得这么不好玩。这比做出了一款纯粹的烂游戏更加令人心疼。我这种矛盾的心理,令我对《邪恶冥刻》给出了极低的评价。这事关一个艺术家、一个设计师的尊严:费尽心思却做得有失水准的东西,宁可扔掉,也不该拿出来展示。

“《密特罗德》在Switch上出新作了?”

第一次见别人推荐这款游戏时,我还在纳闷:“这什么游戏啊?听都没听过。”但我上网一查,竟发现这游戏还有另一个家喻户晓的翻译:《银河战士》。

现代的一些2D平台跳跃类游戏会叫做“银河城”游戏,这是因为这些游戏的创意都源自于两个元老级游戏系列:《恶魔城》与《银河战士》。这类游戏有一种特点:场景中往往会设置一些初期无法通过的道路,勾起玩家的好奇心。随着玩家的能力不断解锁,玩家能去的地方越来越多,会在探索中不断满足着好奇心。我玩过早期的《恶魔城》,并没有发现这些特点。那么,这些特点肯定是来自于《密特罗德》了。抱着无限的期待,我开始了《密特罗德》最新作——《密特罗德:生存恐惧》的游玩。

熟悉的陌生人

在2D平台游戏中,有一个常见的设定:主角宽高比一般是1:2。高度为1的地方,主角是无法通过的。这一来自《超级马里奥》1代的设定大大增强了游戏的解密性:对于玩家来说,主角的身高是有意义的,玩家可以通过路的高度和主角的高度来判断这段路能不能通过,并且玩家可以通过改变主角的身高,来通过原来可能无法通过的道路。

游戏刚开始没多久,我就看到了许多这样的高度为1的”洞“,洞后面有宝物。而主角尚未解锁能够改变自己身高的能力,这些洞目前是无法通过的。我一下就反应过来,未来主角可能会获得缩小的能力。《星界边境》中,主角有一个变身成小球的能力,是不是这个能力的创意是来自《密特罗德》呢?果不其然,玩了一段时间后,主角能变身成小球了,之前的小洞全部都能通过了。

说来奇怪,这是我第一次玩《密特罗德》系列的作品,但里面的游戏元素我却非常熟悉。从我小时候在4399上玩的一个完全照抄密特罗德的叫做”魂斗罗5“的flash小游戏,到现代的《盐与避难所》、《空洞骑士》、《死亡细胞》、《星界边境》,每一个游戏都有《密特罗德》的影子。发现的熟悉元素越多,我就越惊叹于《密特罗德》的伟大——这就是足以称为元祖的2D平台游戏啊!

抛开变小、二段跳这些具体的机制不谈,从本质来看,《密特罗德》像任天堂的其他作品一样,把解密要素完美地融入了一个动作游戏里。而特别地,《密特罗德》把2D平台游戏的解密性给发扬光大了。正如前文所讲,先给玩家看一些初期无法通过的道路,再让玩家不断获得能力,探索初期无法探索的区域。这种像推理小说一样的先设悬念,再让玩家参与解密的手法,极大拓宽了玩家的游戏体验。

除了解密性上的突破,《密特罗德》还在地图设计上给后来的游戏带了一个好头。随着主角能力解锁,道路不断打通,初期的路与后期的路联通在一起,构成了一个复杂却有序的地图网。相比从头到尾只有一条线性道路的设计,这不仅减少了玩家跑图的时间,更让地图有了一种”艺术感“。这一创新被更多的游戏所吸收,我相信《黑暗之魂》这样的3D游戏的地图设计也是受到了《密特罗德》的启发。

玩到最后,《密特罗德:生存恐惧》也没有带给我什么新鲜感,但这让我更是对这个游戏系列肃然起敬:《密特罗德》的元素已经融入了现代游戏中的各个角落。

缺点

夸完了优点,这里直接来说《密特罗德:生存恐惧》的缺点。明明这是一个很成熟的游戏,却在各个层面上出现了设计上的缺陷,实在是不应该。真的是“让我做都能做得更好”。

游戏性

先从宏观的游戏性层面来讲。

  1. 奖励道具的鸡肋。我去玩了下初代FC上的《密特罗德》,当时飞弹是一个很强力的道具,但一开始主角的飞弹储备有限。因此,提升飞弹储备上限是一个重要的提升,可以看成是质变。在最新版的《密特罗德:生存恐惧》中,依然把飞弹储备上限当成奖励。但在这一部作品中,飞弹数已经绰绰有余,提升飞弹上限基本无法提升角色的战斗力。有的时候,玩家辛辛苦苦解谜越过了某一障碍,却得到了一个鸡肋的奖励,心情上肯定是大受打击。类似地,主角的生命值也很高,提升生命基本没什么收益,游戏还很吝啬地把1/4个提升生命上限的道具放在一个极难的挑战后面。总之,奖励道具的鸡肋让玩家的探索欲大幅降低。这一条缺点的本质是游戏机制不够丰富,能够给玩家的奖励太少。说得难听一点,这就是设计师不思进取,吃老本,不去引入新的设定。
  2. 主角后期能力过强。一开始,主角能开一管枪;后期,主角能开三管枪,子弹能贯穿敌人,甚至还能穿透地形。玩到最终boss前就更离谱了,主角碰到小怪就能直接秒杀,像捡到了无敌道具一样。这样路上的小怪就失去了存在的意义,玩家赶路的时候会很无聊。这可能不是一个缺陷,而是一个特性:设计师希望玩家在后期不用顾虑小怪,而是能专心收集地图中的隐藏道具。但正如第1点所讲,游戏根本无法让玩家产生收集增益道具的欲望,这个特性是很失败的。主角能力过强,从本质上看,是小怪缺乏多样性、缺乏难度,总之就是各个方便都设计得极其糟糕。如果小怪的强度能够跟上主角能力的提升,那根本不会让玩家产生能力过强的感觉。《密特罗德》的小怪设计已经被各个后来者完爆了。
  3. 一次性解密道具。《密特罗德》的一大核心玩法是不断获得新能力、新道具,打开原来无法通过的障碍。理想情况下,新能力除了能让主角通过障碍,还能提升主角的行动能力或者战斗能力,在各个场合都能发光发亮。但是,《密特罗德》中,很多新能力就是用来一次性打开一扇门的,用过一次后以后就再也用不到了。这种“工具人”般的新能力,就和最原始的迷宫游戏中的钥匙和门一样:拿到钥匙,打开门,钥匙没用了。这种设计太糟糕了,倒不是说这种设计会影响玩家的体验,而是这些冗余的游戏机制令游戏性的“美感”大大降低。

游戏内容

  1. 怪物设计水平不高。前面已经提过了,小怪的设计有很大的问题。这部boss的设计倒是还过得去。但是,游戏中有几场精英怪,怪物的动作是一模一样的。本来在这种游戏中打大怪就是一个背板的过程。第二次碰到同样的怪时,玩家已经记住了怪物的招数,打起来也没什么意思了。这里既可以说是缺乏设计水平,也可以说是毫无诚意,拿同样的内容来糊弄玩家。
  2. 游戏流程过短。这可能不算一个缺点,只能说游戏只做了这么长。问题是这个作品有一些赶工的嫌疑,几乎每个道具都解锁一个主角的功能,但有一个道具一下解锁了三个功能,突然主角就变得无敌了。如果不是赶工,就是这样设计的,那么这样做也很不好,游戏的体验突然出现了断层。

实现细节

实现细节的缺陷指的是游戏操作、UI等细节中一些不合理的地方,这些小细节往往会大幅降低玩家的体验。这些缺陷能够在程序、美术层面轻松改掉,而不会影响整体的游戏设计。

  1. 游戏中有一个机制,主角可以蓄力,再进行大冲刺。蓄力完成后是有时间限制的,过了几秒后玩家得重新蓄力。因此蓄力完成时,主角的身体会变色,以提升玩家蓄力是否存在。问题是,蓄力完成时主角会闪紫光,后期主角的服装也是紫色的,主角跳起来身上还会闪光,玩家根本无法分辨出主角是否保持了蓄力完成状态。在某些情况下,是否保持蓄力的信息是十分重要的。反正这给我带来了极差的游戏体验。40年前FC《魂斗罗》1代都能通过闪烁红蓝两色来来提示玩家主角是否处于无敌状态,现在这个作品这么简单的一个UI提示都做不好,不知道UI团队在干什么,也不知道他们是怎么测试的,为什么测试的时候没有发现这个问题。
  2. 改不了键位。这没有任何辩驳的余地,设计师和程序员都得背锅。连改键位的自由都没有,不习惯这个键位的玩家要被气死。尤其是这种有跳跃键的游戏,玩家很可能已经习惯了用某个键跳跃。好不容易习惯了这个游戏的键位,玩之前熟悉的游戏还得在把习惯改回去。
  3. 蓄力跑的时候,要按下滚轮键,再移动滚轮。问题是按着滚轮键移动滚轮的操作手感实在太差了。还有很多和蓄力跑有关的按键设计,体验极其糟糕,不去一个一个提了。

总结

其实《密特罗德:生存恐惧》整部作品的质量还是过得去的,要实现游戏中精妙的地图设计,需要花很多心血来安排道具、障碍物的位置。除了流程过短,令人意犹未尽之外,游戏没有太根本的问题。但我昨天被这个游戏的垃圾操作设计给气到了,于是认真总结了一下游戏的缺点。看得出来,有的问题是开发预算、时间导致的,有的问题是设计师水平导致的,有的问题是测试不够导致的,有的问题是欠缺细节的打磨导致的。做为一个成熟的游戏开发公司,很多错误都范得很不应该。实在是很可惜,这款元老级游戏已经风光不再,很多地方的设计水平都被《空洞骑士》等后来者超过。只能说爱之切,责之深。可惜游戏设计师看不到我的评论,只能希望我以后做的游戏不要出这些问题。

猛然从梦中惊醒后,我第一眼看到的是从窗外射入的阳光。“完了,不会睡过了吧?”我心里一惊,赶忙翻身拿起床头的手机。还好,离闹钟响起还有十分钟。

随便吃了点早饭,我就连忙骑自行车前往公司。虽然离约定的上班时间还早,但毕竟这是第一天,迟到了可不太好。

办完各种手续后,已经快到中午了。我认识了组里带我的前辈后,便和同事们一起去楼下食堂就餐。

傍晚,去对面的商业街就餐归来,已经到了理论上的下班时间了,可同事们大多没有要离开的意思。第一天刚来,我也没有要紧的活,和前辈打了声招呼后,我小心地离开了公司。


猛然从梦中惊醒后,我连忙翻身拿起手机,发现闹钟已经响过几次了。我来不及吃饭,立马骑车赶向公司。

我以最快速度骑行着,好不容易在绿灯结束前过了一个路口,却在下一个路口被红灯拦了下来。“真不走运。”我懊恼地想着。

到公司时,离约定的上班时间已经过去半个多小时了,而办公室里还空着不少位置。虽然已经来工作了一段时间,但我还是不太敢去适应这种松散的氛围。

中午午休时间宝贵,我和同事们还是不得不去拥挤的食堂就餐。

傍晚,我们按照惯例去外面的商业街吃饭。吃饭时,同事们谈论着陌生的话题,我只能在一旁听着。很快,一天结束了。


从梦中醒来后,我又贪心地闭眼休息了片刻。很快,闹钟响起,我熟练地关掉闹钟。我已经习惯这个点起床了。

上海的红绿灯是有规律的。大路口红绿灯的一个周期,等于小路口红绿灯的两个周期。通过了第一个大路口的绿灯后,我时而加速,时而慢悠悠地骑行,精准地在绿灯刚亮的时候通过每一个路口。

到公司时,大部分同事都到了。我已经充分适应了所谓的”弹性工作制“。

十一点半,我准时停下手里的工作,和旁边的同事说道:”去吃饭吧,去晚了就要排队了。“

傍晚,大家犹豫不知道今天该去哪边吃饭。”去地下的商业街吧。“我提议道。

晚上,关上灯,躺在床上,我渐渐入睡,等待着明天的到来。


从梦中醒来后,我翻身拿起手机,关掉了一分钟后即将响起的闹钟。

吃过早饭,我骑车去上班……

晚上,关上灯,躺在床上,我以习惯的姿势入睡,等待着同一天的到来。


从梦中醒来后,我翻身拿起手机,意外地发现今天没有闹钟。

原来是自由的周末到了。

我随心所欲地玩了两天。


又到了工作日。从梦中醒来后,我关掉了手机的闹钟。手机上的日期确实在不断地变化,但我似乎又回到了同一天。

我逐渐克服了种种的违和,适应了打工的生活。一切都是那么规律,时间如下坠一般越过越快,我几乎不再对生活产生任何新的感想。


可我的心中始终有一股难以名状的危机感。一天,和我年纪相仿的实习生和我聊道:“我们组里那个三十出头的前辈,居然已经结婚生孩子了!”我忽然联想起了一连串事情:我出生时,我的父亲也才三十岁左右;前段时间我和朋友以及他相处多年的女友吃饭,那场景就和我父亲和他的朋友夫妇吃饭一样……各种回忆在我脑中不断交织,最后连成了一条清晰的直线:或许我们的未来,已经被过去决定了。倘若一切都正常地进行下去,大家的人生轨迹都是一样的:结婚、生子,看着孩子重走一遍我们的十年苦读路;而我们自己,会成为父辈,再慢慢变成祖辈,一点一点老去。

我终于反应过来,自己一直以来在担心什么事情了。我认为有一件死亡更可怕的事情:如果人失去了活力,把一切都交给命运,任由时间推动自己的行为,那么这个人的未来已经毫无趣味了。就像我每天上班路上的红绿灯,见过第一盏灯后,就能够准确地说出之后每盏绿灯的出现时间。把注定发生的事情再确认一遍,不是很无聊吗?

人离开这个世界,是在心脏停止跳动之后;而人失去活力,却早在失去了「自我改变」的能力之后。人们总在不经意间,无法改变自己了。

我喜欢暗自观察、分析、嘲笑他人。

有的人被幼时的记忆所束缚,无法挣脱已经保持了一辈子的思维。几年前是什么样,不出意料地,几年后仍是什么样。

有的人惧怕落下,不断奔跑着。可是,在他人设下的路牌前,他们只能闷头前进,最终回到环形跑道的起点。

我就是这样傲慢地总结着他人的行为。但可笑的是,我自己也是一样的。一年前,我为驻足不前而焦虑;一年后的现在,我把工作上的劳累,当成自己努力生活的证据。从满是“成绩”、“排名”、”科研“的令人窒息的学校,到工作内容充实得令人空虚的公司,我欺骗自己说自己一直有所改变。可我内心也知道,并不是我自己在改变,我只是随着外界环境的变化,被推着移动而已。我担心的事情可能要发生了,我要失去活力,失去改变自我的能力了。

不,我决不会允许这样的事情发生!我生来喜欢玩乐,决不希望自己失去追求更多乐趣的活力!倘若人是一颗能运动的墨点,那我的人生轨迹一定不是一条笔直的直线。我的留下的轨迹,必然是一条曲折蜿蜒,难以捉摸的曲线。无论线条多短多长、多曲多折,多浅多深,我都会用我的活力,留下独一无二的轨迹。

人人都知道改变就是好事,都会在年轻时追求改变。可是,人们难以分清移动与改变。移动,可以是低头前进,可以是被拉着、被拖着,还可以是站着不动看着环境的变化。最终,人或许不是止于不愿改变,而是彻彻底底地失去了改变自我的能力了。

真正的自我改变,是在心中设好了去处后,不断看清变幻莫测的环境,不断挣脱四面八方的引力,不断驱动麻木的四肢,不断抬起头,不断在停下来后前进。改变必然是累人的、痛苦的——不仅仅是身体上的筋疲力尽,更多的是焦虑与失落,是面对不断扩大的黑暗又无法喊出声的绝望。

我知道自我改变的艰辛,但我更害怕接受就此失去活力的人生,我愿意接受接下来将面对的挑战。我很幸运,现在的打工只是一次实习,未来还有再次掌控大量时间的机会。我所处的环境还会改变,我可以借着这股力前进。我不缺用嘴就能喊出的斗志,甚至早已有了规划,我只需要鼓起勇气,迈开脚步,重启我向前奔跑的人生。

我相信,很快,就会有很多人见证我的改变。

永不褪色的少年心——《女神异闻录5》(Persona 5)玩后感

“不过是回合制RPG(角色扮演游戏),有什么可玩的呢?”

在好友向我极力推荐《女神异闻录5》(英文名Persona 5,后文简称P5)时,从一岁开始玩日式回合制RPG,天天看女主角领便当剧情的我,曾露出过不屑的神情。

没想到,之后的一个多月里,在工作的空闲之余,我花100多个小时玩通了这款游戏。

我一直不肯写游戏评测,因为我想建立一个系统的游戏评价框架,之后用统一的方式来评价所有游戏。开博客到现在,我一篇谈游戏的文章都没写。但是,今天玩通了P5后,无数的情愫从我的心中涌出,我实在按耐不住想发表看法的冲动了。我打算从个人的体验出发,谈一下这款游戏,而不去理性地分析游戏的优劣在哪。

这篇文章会有一定的剧透,但应该不影响没有玩过游戏的人。

老树新花——最古老的游戏与最新潮的表现形式

游戏一开始突然放了一段画风亲切的2D日式动画。穿着帅气风衣的主角,穿梭于热闹的赌场中。我这才反应过来,这是个日本公司制作(日式动画),刚出了没几年的游戏(背景是现代)。我脑中瞬间萌生了两个问题:2D动画这么费钱,整部游戏的剧情都是用2D动画表现的?主角生活在现代,怎么进行战斗呢?

很快,这两个问题就得到了解答。动画结束,进入操作模式后,游戏就变成3D的了,大部分剧情也都是用3D表示的。很快,只见一个警卫突然变成了怪物,第一场战斗开始了。我立马反应过来:这应该是幻想世界。在现代背景中加入幻想世界的设定,就可以触发战斗了。

而看到了游戏的战斗方式后,我又露出了怀念的微笑:主角和敌人轮流行动,每人一回合只能行动一次;技能有不同的属性,击中弱点属性可以把敌人击倒;物理技能消耗HP,魔法技能消耗SP……。打完怪物后,主角要进入迷宫探索。

自诞生于示波器后,电子游戏的画质就在不断提升。在3D技术尚未发展成熟时,2D游戏都在想方设法加入一些3D动画,来提高游戏的整体观赏性。没想到到了3D技术日益成熟的今天,加入2D的手绘动画反而成为了一种时尚。在这个拥有智能手机的现代世界观里,拉风的服装、嚣张的音乐、不羁的UI……每一个游戏元素都在极力地证明这款游戏是十分”现代化的“。

但是,仔细一看,这个游戏的核心玩法和最早期的游戏一模一样。一人行动一次的公平回合制战斗,在迷宫里刷小怪升级,购买攻击力更高的装备后打boss看剧情。

这款游戏实在太矛盾了,披着最新潮的外套,却有着最古老的内核。不仅仅是新与旧的结合,这款游戏同样是”游戏“(交互艺术)与”剧情、音乐、美术、演出“(传统艺术)的结合。再准确点来说,这款游戏中,属于游戏的那些部分,全是旧的;不属于游戏的那些部分,却有很多新鲜之处。

这些看上去矛盾的结合,却产生了奇妙的反应:我在玩游戏的时候,不会像最早的那些玩家一样沉醉于回合制战斗系统,享受攒装备打boss的乐趣。更多的时候,我跟随背景音乐,调动自己的情绪,享受击中敌人弱点时音效与动画共同渲染出的激动瞬间,像旅行一样在3D迷宫里的遨游。

这些体验,一般只有在看电影才能获得。一般情况下,如果一款游戏不能带来独特于其他艺术形式(如小说、音乐、电影)的体验,无论体验多好,我都会认为这是一款失败、”退化“的游戏(如《隐形守护者》)。但是,P5带来的这些体验是任何其他艺术形式无法提供的。和另一款游戏性更少的作品《十三机兵防卫圈》一样,哪怕剧情、音乐、演出再多,交互的部分再少,只要一款游戏带来了极佳的体验,并且这些体验仅能用游戏来表达,非得玩家亲自动手去玩,用五感去体会游戏的每一分钟,那么这款游戏就是一个好游戏。

与传统艺术结合,却更好地表达了传统艺术带来的体验,这恐怕是玩完P5后多数玩家的共识。而更令我赞叹的是,P5给我带来了另一种从未有过的游戏体验——“沉浸感”。现在很多公司把VR包装成“元宇宙”(metaverse)在胡乱炒作,殊不知日本ACG里“异世界”的英文就是metaverse。真正具有沉浸感的世界,不需要先进的技术,不需要为了敛财到处炒作的“科技公司”,而需要用户有一定的艺术欣赏能力,需要设计者有先进的设计理念。从激进的角度讲,优秀的小说就可以看成一个全新的世界。但读小说时,读者永远只是旁观者。而游戏是唯一一种能够让用户参与进内容创造的艺术形式。好的游戏就能创造一个“异世界”,供玩家游玩、享受。在我看来P5某种程度实现了这一点。

我就是男主角

除了传统RPG的战斗,P5还有一半的游戏系统属于文字冒险游戏。主角要提升自己的个人能力(知识、勇气、灵巧、魅力、体贴),加深与其他人物的关系。在文字冒险游戏中,为了提升玩家的沉浸感,一般会让主角一言不发,由玩家决定主角的所有发言。P5保留了传统文字冒险游戏的这些特性。

文字冒险游戏的一个特例是galgame(美少女游戏),这类主打和美少女谈恋爱的作品虽然脱胎于游戏,却越来越向视觉小说靠拢,只勉强保留了选择关键对话这一交互选项。P5整体来说是galgame的超集,因为玩P5时经常需要选择发言,且主角也可以和女性角色提高好感度。

玩galgame时,我怎么也无法代入男主角。如果男主角在剧情中戏份比较多,我就会觉得男主角的行动和我的想法存在差异,很自然的以旁观者的身份来对待游戏;如果男主角配音也没有、立绘也没有、性格也没有,剧情还是莫名其妙地发展起来了,我就会开始疑惑:为什么要和这样的女主角发展剧情,为什么剧情还能进行下去?最后也会失去代入感。事实上,让玩家代入主角是非常难办到的,很多galgame已经改变了策略,忽略了代入感,默认玩家就是看客,完全把男主角当成剧情中的人物来看待。

P5选择了较传统的方式,男主角大部分时间都不会发言,剧情甚至基本都是配角推动的。让玩家选择的发言几乎改变不了剧情,比如在开始战斗之前让主角喊一句“出发吧”,队友失去斗志的时候说一句“加油”。除了在文字冒险部分和其他角色培养感情时,恰当的发言能提供更多好感度,其他地方的对话选择系统就是个摆设。一开始,我觉得P5的文字冒险系统设计得很差。

玩着玩着,我觉得有点不对劲了。剧情进行了一段时间后,沉着冷静、勇敢坚强、深谋远虑的女主角新岛真加入了队伍,我一下就被她的声音和外貌吸引住了(题外话:新岛真的声优是佐藤利奈,玩P5后我对炮姐的好感度也有所提升)。在和新岛真的关系发展到一定程度后,需要把魅力升满才能解锁后续剧情。我瞬间改变了之前的所有计划,开始全力提升魅力。周四,澡堂里是药浴,我冒着把身体烫坏的风险泡澡,就为了多加1点魅力;去家庭餐厅看书,我只点美化皮肤的饮料;睡觉之前,我认真阅读时尚杂志。总算,经过一段时间的努力,我把魅力升满了,顺理成章地过完了后面的剧情,在关键处选择了正确的发言,和新岛真达成情侣关系。没想到,过了几天后,我和另一个女性角色的关系也发展到了恋爱分歧点,我想也不想地避开了恋爱的选项。如果开启恋爱路线,就能把和角色的好感度升满,解锁对游戏有利的强力辅助技能。一般情况下,作为一个贪心的玩家,我是一定要把所有能获得的能力都获得的,管他什么脚踏几条船呢。但是,在选择这次的恋爱分歧点时,我竟然为和其他人发展恋爱关系产生了负罪感,毅然决然地放弃了能够获得特殊能力的选项。我总算意识到,我已经开始把自己代入到游戏里了。开始恋爱关系后,和这个角色再发生剧情就没有任何收益了,游戏也不会主动提示你去找这个角色。但是,我已经忘掉了这是在玩游戏。刚开始恋爱,怎么能就这样停下来呢?我奋然对抗着游戏系统,在图书馆门口、校门口、地铁口寻找着新岛真,和她一起去各个景点游玩,即使我明白再提升好感度也触发不了任何有效的新剧情。好在我还有作为玩家的最后一点理性,提前存了个档,在同一天里尝试了去不同景点谈恋爱的剧情,最后哀伤地和这不断重复却终将逝去的一天告别。

游戏发生在现实生活和幻想世界之间。在紧张的氛围中走出迷宫、打完boss后,玩家就可以在现实生活中开启文字冒险部分,和上完班后回家休息非常相似。走在涩谷的大街上,望着来往的行人,走进便利店购物,我享受着从战斗中解放的日常生活中。刚刚在游戏里战斗完的男主角,和忘记工作、沉浸游戏的现实中的我达成了巧妙的一致。这种现实与虚拟的一致让我真正融入到了日本东京的生活中。甚至有的时候会反过来,我把生活当成了游戏。夜晚,我一边散步,一边哼着城市里的BGM “Beneath the Mask”,仿佛自己是这个世界中唯一有智能的男主角;做了一场精彩的演讲,得到周围人的赞赏时,我感觉自己的魅力值得到了提升;拒绝男生的天文馆旅游邀请,接受另一个男生的公园乘船邀请后,我忍不住笑了出来——我在游戏里竟然做过一模一样的事情。

游戏本身的文字冒险系统无疑是十分简陋的。但正是在这样一个男主说话完全靠玩家的游戏中,配上RPG战斗、现代城市、女主角等要素,加上我个人的生活经历,我竟然在游戏中感到了前所未有的沉浸感。这太神奇了,我玩其他各种类型的游戏从来没有过这样的体验。

我开始习惯把自己代入游戏里的男主角了。在战斗中使用技能时,我会和主角一起喊出“pe-ru-so-na”。我甚至把自己代入进了主线剧情中。当男主角与其他主角久别重逢时,大家都热烈欢迎着男主。虽然每个人只有一两句话,我也搞不清楚他们为什么和一个“哑巴”的感情那么好,但我还是感到了男主角与同伴之间牢固的羁绊。剧情越进行到后面,我的这些感受就越深刻。仔细分析过后,我发现,不仅是游戏中的种种游戏元素令我感到了沉浸,游戏的剧情也很符我的胃口,让我感到“如果是我,也一定会这样做”的感觉。

给永远的少年的赞歌

本节剧透较多

前面也说到,由于游戏机制的原因,游戏无法对男主角进行刻画。而其他角色加入队伍后,很多时候都是例行发言。每个角色的个人剧情也只是稍微扩充了故事背景,没能做到对角色的深刻、多面的刻画。相比很多剧情优秀的作品,P5并没有把角色刻画好,几个标签就可以轻松描述一个角色。没办法,这毕竟是一个RPG,而且游戏想面向的玩家也不是有年纪有阅历的人,和其他作品比角色塑造还是太难了一些。

游戏的剧情上有亮点,但和人设一样,很多地方缺乏深度,导致玩家在剧情高潮时很难在情绪上感到同样的激动。游戏的结尾平稳而平常,没有特别大的高潮。我看的作品不多,不知道这样的结局在所有作品中排名如何,只能说结局不至于太差。

虽然P5在剧情上很一般,但我并不认为编剧没有水平。我能感到,剧情中留有很多隐喻。我最近写文章时慢慢领悟了“隐喻”这一技能。有的时候,我想表达很多事情,但是表达出来篇幅就很长,而且没有什么感染力。如果把这些情感、思绪藏于文字之后,让读者自己去体会,甚至根据经历的不同产生不同的体会,文章的表达能力就会更强。不管编剧本身是怎么想的,我从游戏剧情读出了许多价值观,其中很多想法我都是非常赞同的。通过我自己留隐喻时的经验,我推理出编剧是一个有一定深度的人,他把自己的想法藏在种种细节之后。那为什么一个有能力的编剧写出这样相对较为平庸的剧情呢?我想,肯定不是他不会写,而是他认为这部作品是给年轻人玩的,写一些给年轻人的剧情就行了。

为什么我觉得这个游戏是给年轻人玩的呢?很简单,看游戏的剧情梗概就知道了。P5讲了什么故事?一群穿着帅气服装的少年,以“怪盗”自诩,打败邪恶的大人,最后证明了真正的正义。故事看上去就是这么简单幼稚,只是游戏的剧情非常充实,让玩家觉得整个剧情确实是合理的而已。年纪小一点的玩家,一定会对剧情里的人物憧憬不已,幻想成为和他们一样的人;但年龄稍微大一点,经历了一些挫折后就知道,这只是一个幻想的故事而已,现实没有那么简单而美好。

但是,编剧显然不是一个年轻人。游戏里提到了许多不公的事情,这些事情很可能在现实中有原型,来自于编剧自己的听闻。如果费心思去刻画的话,一定会提高整个游戏的深度的。面对不公的事情,游戏里的解决方式是怎样的呢?很简单,用正义让坏人“醒悟”就行了。这是多么潦草的解决方法啊。这又是多么浪漫的解决方法啊!编剧知道现实中的事情很复杂,但是出于向游戏机制的靠齐,也出于对年轻玩家的考虑,写了这么一个浪漫的故事。

根据上述这些线索,我推理编剧明知世界很复杂,却要把故事往简单的方向去写,往年轻人能接受的方向写——只要坚持正义,就终能得到正义。如果这样看的话,P5就是给这种“少年思维”的赞歌,为少年们追求正义的梦想披上一层屏障,以使这些梦想晚一点被无情的现实戳破。

作为有阅历的成年人,还能写出这样的剧情,不知道这位编剧是确实还有一颗少年的心,还是说写出这种主旨简单的剧情没有什么难度。但不管如何,我也被剧情中的只言片语触动到了。我想,不仅是我,应该还会有很多其他成年人,会被P5的剧情所触动吧。人对事情的认知是螺旋上升的:最初可能是初生牛犊不怕虎,一旦在黑暗中触碰到了岩浆后,才能知道周围的环境不是天堂,而是地狱,因而感到恐惧。而只有接触过永恒的黑暗,经历过无尽的苦痛后,依然对美好有追求的人,才能称为勇敢的人。他们是永远的少年,永远忘不了少年时对美好的世界的向往。

我觉得我之所以这么喜欢这款游戏,之所以沉浸于游戏中,不仅是因为游戏的整体机制或者种种细节设定,更是因为我欣赏、羡慕主角们的经历。在我的心中,或许永远活着一个“怪盗”,在大功告成时,可以毫不羞耻地对全世界的人发出宣告:“这个世界由我收下了。”

游戏整体评价

发表了这么多看法,最后还是来整理一下我对P5这款游戏的评价。

从客观上看,P5的游戏机制老旧。不是说老的玩法就不好,而是这些玩法本身就不够好。RPG部分,玩法几乎和最早的RPG一样,稍微加入了一点点精灵宝可梦的属性克制和怪物捕捉系统,看得出来这些系统很多年都没有更新了。纯粹的回合制游戏就是不好玩的。回合制游戏的出现,本来就是早期机器性能、玩家欣赏水平、设计师设计水平共同导致的。现在还做出这种机制是很丢脸的。让我去做,随便加一点机制都会让游戏深度提高很多。迷宫中有不少谜题,但解密性不强,看得出来是为了照顾玩家,不然卡关会让玩家的体验很差,这一点给一个中评。和《黑暗之魂》一样,搞一个“巧妙”的电梯或密道,其实是一个看起来花里胡哨其实没什么用的设定。躲藏在掩体后面是迷宫中唯一一个有趣的通用设定,但做得不够好。RPG的整体养成思路其实不是JRPG(日式RPG),是DRPG(地下城RPG)。我一玩游戏就感到了和玩《世界树迷宫》(同公司的作品)一样的感觉:药品不够,玩家要评估自己的补给量,探索完迷宫后要回城补给。但这个游戏中剧情占比较多,不可能像一个真正的DRPG一样让玩家花时间在“探索迷宫-回城”这一循环上。结果就是这个游戏的RPG养成系统做得非常差劲。文字冒险部分没什么可以评价的,因为文字冒险本身的重心就不在游戏体验上,一般是在剧情上。文字冒险部分就是一个再普通不过的上个世纪就有的系统。

音乐、美术我没有资格评价。可能一些挑剔的玩家觉得3D建模不够好,不过这方面不是很敏感的我没什么看法(除了新岛真的脸部模型没有立绘好看)。音乐方面我只能用“好”这一个字来形容。在恰当的场合,有恰当的调节气氛的音乐音效,给玩家近乎电影级的体验,这是线性剧情RPG游戏的天生优势。P5在这一点上做得非常好,一般的游戏绝对没有这种演出效果。同时,这也是我第一次见游戏的日常音乐中出现歌曲,每一首歌的效果都很好,它们能够表达纯音乐表达不了的情感。

剧情评价了很多了。但我不是专业人士,修养不够,给不了客观评价。从以上分析也可以看出,我目前仅能,我也仅允许自己在游戏玩法上进行深入的评价,这方面我有充足的自信。

从主观上看,我在玩这款游戏时十分投入。经分析后,我发现我主要是在游戏中感到了代入感。对于我来说,这是一次全新的游戏体验。我喜欢,且感激这款游戏。除了代入感,游戏剧情中蕴含的主旨也让我备受感动。不管作者创作的本意如何,我对游戏剧情有了自己的一份解读与体悟。

我的收获

玩完这款游戏后,我有许多收获,主要集中在游戏设计上。

  • 如前文所讲,我认识到游戏与非游戏的边界不是游戏玩法与传统艺术形式占比多少,而是要看一款游戏的内容能否仅由游戏表达出来。如果写篇小说、拍部电影能有更好的效果,那这个作品就不配称作游戏了。
  • 续上点。游戏中的传统艺术形式(美术、音乐)非常重要,但所有这些形式都应该围绕游戏而做。P5就是一个例子,音乐做得很好,完美反映了各种情况下玩家所处的氛围。而游戏的剧情很多时候必须为游戏机制服务,不然只看剧情这一点的话游戏不一定比得过文学和电影。
  • 在游戏里加入2D日式动画是一个很好的主意。只要有足够的钱)。
  • 在游戏里加入歌曲是一个很好的主意。
  • UI不一定要规规矩矩,可以像P5一样有自己的风格。这对美术有一点的要求。
  • 让男主角当哑巴,加入一些不影响的对话选择,真的能提升玩家的代入感。
  • 把背景放到现代也很有趣,可以让玩家感到更加亲切。

差不多就这些了。我觉得P5应该是游戏史上有里程牌意义的游戏,它让日式RPG从棺材里伸出一只手,告诉世界它还没有死。它同样是我玩游戏经历中具有里程牌意义的游戏——我没想到一个不好玩的游戏也能这么吸引人。

我从小到大的一大梦想就是做国产日式RPG。现在这个梦想可以修订一下了。给我20年时间,等我有了资源后,我要做一款日式RPG。故事发生2010年代(我是中学生的年代)。游戏在具有优秀玩法、有足够的深度供玩家思考探索的同时,有着过得去的剧情、恰到好处的音乐、生动而不是华而不实的建模、契合主题的美术。简而言之,游戏玩法吊打P5,除了游戏玩法之外的地方力争做到比P5出色。

作为制作人,我要保障游戏每一环节的质量。程序不用说,我能让游戏代码质量达到可以开源的程度。我要提升音乐素养,不说自己负责部分音乐,起码要让我的音乐素养达到游戏素养的1/2(比如我现在的游戏素养属于世界前0.00001%,那么我音乐素养要达到世界前0.00002%)。美术相比之下比较好弄,因为这个东西是眼睛能看得见的东西。最后是游戏玩法,这自然不用说,不可能做得不够好。做得不让我自己满意,就不会拿出去卖。

游戏大获成功后,我要把游戏动画化。我要用实际行动告诉那些制作者:1)2D动画画风的游戏不能改编成真人电视剧;2)不能不加修改地把游戏改成动画,也不能改编得面目全非。

最后,感谢P5。在自己的博客写博文的一大好处就是能在无拘无束的情况下乱写,想到什么写什么。今天这篇文章就是这样,该认真组织语言的地方就认真写,该抒情抒情,想乱写的地方就乱写。今天我不仅玩完了游戏,还把很多感想一次写下来,可谓是双倍的快乐。这篇文章必然是要修改的,肯定有很多错别字。但我写了5小时,实在太累了,等以后再改吧。


更新

2022.8.9:修改错别字若干,修改不通的语句若干。没想到,过了大半年,我的文字编辑水平有了飞一般的提升。

苟活于世间 —— 初入社会有感 ~ Life Outside Campus

最近我获得了一份极佳的临时工作机会。薪资媲美互联网大厂,工作时间965,工作内容是我不算讨厌的开源项目开发。我独居于市区中的小房间里,骑车一刻钟就能到公司。公司内氛围良好,大家全是搞技术的出身,穿T恤凉鞋、和上司交谈时插科打诨都是正常现象。同事个个都很年轻,面孔就像学校里见到的同辈同学一样。

但是,在同事们聊天时,我只能当一个听众——他们的生活经历超出了我之前的认知。

有人谈自己被高薪诱去某个大厂工作了两年,工作强度大,上司欺压员工,经历种种不公才得以跳槽到现在的公司。大家纷纷赞赏他的忍耐能力,这样差的工作环境,竟然忍了两年。

有人说在其他城市能租一个两居室,自己住一间房,狗住一间房。来了这里,只能让狗屈居于客厅。另一个同事打趣道:“我现在住的还没有你家狗以前住的地方好。”

有新来的员工问关于落户的政策。大家纷纷提出自己的见解。话题渐渐从落户,到租公租房,到租一个郊区的房子要买车,到汽车每天要收高额的停车费。

有人在经验分享会上讲述买房流程,介绍买房时要考虑的注意事项、和租房有哪些不同。分享之后,同事提的第一个问题是怎么凑到买房的钱。演讲者不好意思地笑着说:“有6个钱包就可以了。”

有同事已经结了婚,抱怨生活中种种琐事带来的烦恼。我好奇地询问彩礼的事情。他认真地分析了各地的习俗,总结说只要彩礼的钱最后是给小两口用就没关系。他回头问我是不是在恐婚,我只好笑一笑岔开了话题。

有人早上到岗时间时早时晚,据了解他和女朋友一同起床。女朋友要早起上班时,他也跟着早起。周五下午,多数人都早早地回家,我问了后才知道,大家都要赶紧回家陪陪家人。

有一位同事刚和女朋友租了一间更好的房子,突然向他人谈起了自己情感上的问题。二人相识于校园,感情融洽。毕业后二人在开始工作,经济上主要由男方负责。平时小矛盾虽有,但这次的矛盾似乎难以缓和:男方平时想买个游戏都犹豫不决,女方却以借钱的名义想买一个贵重的装饰品。一石激起千层浪,过去忍忍就算了的小事全部变成了引爆矛盾的燃料。另一位同事以自己和前女友和现女友的生活经历,半安慰半抱怨地提供着建议。还有一位刚实习没多久的同事竟然也感到了共情,讲述自己工作后劳累无比,懒于在七夕回复在校女友的消息,对方因此断绝了联系。大家都感叹着单身的美好,劝我好好珍惜。我笑了笑,他们嘲弄道:“弈帆,不要笑,你以后也是这样的。”我不是在嘲笑他们,我是在苦笑自己对现实的切换感到无所适从啊!前几个月,单纯的本科好友还在向我炫耀着他女人缘有多广,形象地描述他是怎么如痴如醉地喜欢上了某个人。

工作、住房、情感,这些都是在学校里难以见到的话题。我淹没于一个个陌生的名词中,勉强地记下生活中的种种见闻。但是,有一件事是我不需要特别去记忆的:哪怕有舒适的工作,靠父母付了房子的首付,有了稳定的婚后生活,大家都不想生孩子,都嘲笑着三孩政策。

在三、四十岁的人口中听到这些话题,一点也不令人意外。问题是,我的同事们实在是太年轻了——放在大学里,他们就是路过的同学,就是普通的同龄人。我们的好朋友,基本上都是小学、中学、大学时同龄的同学。可以预见,我们这些同龄的好友,在进入社会三五年后,就会和我现在的同事一样,把重心放到无穷无尽的生活琐事上,变成既熟悉又陌生的样子。

傍晚时分,路上都是悠然地骑电动车回家的上班族。我一边想着上面这些闲事,感叹生活的不易,一边把劳累全部释放到自行车的踏板上,得意地赶超一辆又一辆电动车。忽然,伴随着由远到近响起的几阵急促的喇叭声,一辆电动车倏然从我身边掠过。不用看那颜色统一的安全帽、衣服、后备箱也知道,在这个时间还在马路上飞奔的,只会是一位送餐的外卖员。我们这些“名校”毕业,干着”体面工作“的程序员,好像还没有抱怨生活的资格啊。

这些都是在我视野内的见闻。在我看不到的地方,还有多少人机械地进行着重复性劳动?有多少人提心吊胆地游走在法律边缘的灰色产业?有多少中年人战战兢兢,生怕明天就被裁员?又或是有多少人已经在一声令下后失业,正为生计四处奔波?

再仔细一想,我们这些程序员,谈不上高贵,却也不能说没有抱怨生活的资格。对于世界上的大多数人来说,大家都是一样的——我们不过是苟活于世间罢了。古今中外,人类的目的都是一样的:活下去,好好地活着,幸福地活着。不管是在众人的期待下出生,立下过扬名立万的理想;在盛世时享受着家人的呵护,畅想过未来幸福美好的生活;在遭遇挫折时心有不甘,发出过改变一切的豪言;在众人中脱颖而出,妄想过自己是天之骄子;在初窥知识的边界后,为拓宽人类见闻而奋发图强过,都会在某时某刻,被迫离开心里的象牙塔,破开”自己永远会被他人照顾“的茧房,踏上普通平淡的生活之路。多数人都没有躺着活的资格,要靠自己的双手去挣钱,用钱换取住处,换取食物,在世间守住属于自己的一隅,普通地活下去。

不走出学校,自己看一看这个世界,是无法摆脱幼稚的思想的。感谢现在这段经历,让我知道了自己会活得怎么样,因此应该为了什么而活。

之前学了不少东西,今天以学习笔记的形式分享出来。学习笔记不适合作为入门的教程。

Git/Github使用方法学习笔记

从例子直观理解git

git是一个开源的分布式版本控制系统。如果你去网上搜git的定义,一定会搜到不少这样精确又令人看不懂的定义。今天,我准备根据我的笔记,来友好地介绍一下git相关的知识。

假设你要玩一个流程很长的RPG,你打了一天,打到了半夜。这个时候该做什么呢?没错,存档。不然下次就要从头开始玩游戏了。

除了继承之前的游戏进度,存档还有一个好处:如果你不小心输了,可以从上次存档的地方开始重新玩。甚至你玩着玩着发现进错了结局,可以从好早的档重新开始玩。存档,除了保存进度,还能记录下游戏发展向不同分支的关键节点。

现在再做一个很不现实的假设:你要玩一个无聊又冗长的RPG游戏,但是通关了之后你会得到一大笔钱。为此,你只开始关注能否尽快通关,而不去体验游戏的内容了。你在单位的电脑玩,在网吧的电脑玩,还在家里的电脑玩。你把所有好友都动员起来一起帮你玩游戏。但是每个人的进度不一样就没意义了。于是,你们想了个办法:大家玩完后,把存档放到网络上,下一个人就可以用最新的文档来了。

大家决定按贡献度分钱。同时,大家还想方便地交流每个人玩的具体情况,碰到了什么问题。于是,大家扩展了存档功能,不仅让存档保存游戏内容,还保存了每个人的保存时间、进行了多少游戏进度、想分享的游戏攻略等有意义的信息。

这就是git用法的一个形象的解释。在我的理解里,能够保存项目进度关键节点,并记录有意义的日志信息,就是一个版本控制,不同的人能在不同的设备上同步所有其他人的进度,就是分布式。源代码给你看,就叫开源。合起来呢,就变成了开源的分布式版本控制系统。

这个例子基本上是我自己想出来的,我在想这个例子的时候会主动思考git有哪些性质,这些性质与另一个通俗易懂的事情的哪些性质比较类似。通过这个过程,我反而加深了自己对git的理解。如果读者在学完git后,能够真正看懂这个例子,并且举出一个自己的例子,那就说明你基本理解了git。

这里推荐个比较有名的博客,上面有git的教程。我是跟着这篇博客上的教程入门git的。该教程举了个日志的例子(如下图)。该日志记录的内容,代表了git的大部分操作。可以暂且认为git就是一个自动生成这样格式的版本日志的程序。说得那么好听,git就是个自动记事本。

git的操作

一定要自己开一个项目去学习git,光看不动手很难学会

为了节约写作时间,让我能够写更多的学习笔记,最大化造福他人,我决定牺牲博文质量,偷懒地放上之前做的ppt。

Hello git!

完成上图中的操作,你就可以像写完了一门新语言的hello world程序一样,说自己已经掌握git了。

这么说有点夸张,但也不假。上图介绍了一次完整的git使用流程。首先,需要使用git init初始化一个git仓库,呼叫git这个记录员来帮你管理版本,不然你的文件夹只是一个普通的、无法进行其他git操作的文件夹。之后,随便新建并写入一个文件(假设它名字叫readne.md。用git add readme.md告诉git你加了这个文件。最后用git commit -m "改动信息"来让git把加的文件给记录下来。

我学到这里的时候十分疑惑:为什么要先add,再commit才能把文件记录下来。为什么不一次性把文件记录下来呢?听说还有个叫github的东西,我’commit’完,还要再进行一步操作才能把文件传到github上面。为什么我想在网上存一份文件要这么多步操作啊!

这里,考虑到知道git的人都知道github,而对git操作有着许多的疑惑,我打算用一张简单的数据流图(该图及后文的称呼并不严谨,仅供学习理解)来介绍git、github的关系,以便于接下来的理解。git与github的具体关系还是放到后面介绍。

其实啊,git init这条语句看上去没干什么,实际上在你的电脑里新建了一个“文件夹”(逻辑上的,而不是实际的)。这个“文件夹”是本地git仓库。而这个仓库呢,又分成两个分区:暂存区和实际的版本库。可以认为git是一个管家,add进缓存区,就是叫管家把事情记在脑子里;commit进版本库,就是叫管家用水笔把事情记在本子上——这样这条记录就确实储存下来,不好销毁了。那么,使用add把文件放入暂存区的好处就显而易见了:有的时候我们要改/加的文件很可能出错,我们再提交之前,需要把文件检查一遍,这样出了错就能及时更改。一旦文件commit了,更改起来就麻烦了,之前的错误记录也难以消除。

而github一类的托管平台,则又可以视为一个文件夹。这些文件夹可以看成是网盘,它们由运营平台提供,以便于你能用互联网在不同设备上访问自己的仓库。目前对于git、github之间的关系,add与commit之间的关系理解到这个程度就行了。

git提供了一个十分使用的命令——git status。该命令不会对git仓库进行任何的修改,而仅仅会输出当前git仓库的状态。如上图所示,修改已有文件,add,commit后,git status都会输出不同的信息。要查看具体的修改细节,可以使用git diff

如最开头所说,我们使用版本控制程序的一大原因,就是希望像RPG读档一样,能够让所有文件回到之前某个保存下来的状态中。这样的操作在git中叫做版本回退。上图给出了一个例子,我们不小心在文件里做出了错误的修改,还commit了。这个时候该如何把文件回退呢?

首先,可以使用git log,查看所有提交记录。之后,可以使用git reset --hard <要回退的版本>指令来进行回退。最新的版本叫做HEAD,上一个版本叫做HEAD^,上上个叫做HEADT^^……依次类推,可以快速地回退到上一个版本。除了用这样的方法指定版本号外,还可以用commit的id来指定版本(commit id在log中查找)。指定id的时候不需要把id输全,只需要输入前几位,保证不冲突就行。

除了commit后发现错误想回退,还有一些程度较轻的版本回退情况:不小心修改了文件而没有add,或者已经add了。对于这两种误修改,都有对应的解决情况:如上图所示,如果文件没有add,使用git checkout -- <filename>就可以把对应文件恢复到暂存区的最新状态(最后一次git commit或者git add的状态)。如果文件add了,使用git reset HEAD <filename>就可以把git暂存区中的文件恢复到没有add之前的状态(最后一次git commit的状态),这等于回到了上个问题,文件没有add该怎么恢复。再一次执行git checkout -- <filename>就可以把文件的内容也彻底恢复回去了。

git add是一个很神奇的指令。它的名字虽然叫add,但实际上不管是新建文件、修改文件、还是删除文件,都需要用git add来更新文件在暂存区中的状态。因此,与其叫做add,不如把这个命令称作update比较好。那么,现在问题来了:如上图所示,有一个文件,我不小心让它进入了git暂存区,我想在文件系统里保留它,但不想让它进入git仓库,该怎么操作呢?这个时候就要使用git rm --cache <filename>。这个叫rm的操作是真正意义是上的remove了,而不像add一样有一点歧义。如果想让文件从文件系统中也消失 ,可以用git rm -f <filename>

刚刚我们碰到了这样一个应用场景:有一个文件,我想在文件系统保留它,却不想让它进入git仓库。这些文件可能是我们为了调试而编写的脚本文件,我们不希望这些乱糟糟的文件上传到公开的仓库中。如果我们不做任何处理,每次输入git status都会看到这些在文件夹中存在却没有进入git仓库的untracked files. 该如何让这些碍眼的提示消失呢?这个时候,可以在git仓库的根目录下创建一个.gitignore文件。该文件用于描述不被git跟踪的文件,描述的形式可以是直接描述文件的全名,也可以用*来模糊匹配,还可以直接忽略一整个文件夹。上图的例子中,我们如果在.gitignore中加入test.py,再输入git status就不会提示有文件没有加入git仓库了。

使用github初始化仓库的话,可以自动创建一个.gitignore文件。这个文件也可以参考别人的仓库里的来写。

讲了这么久的git,终于可以来讲github了。git本身是分布式的,每台电脑都存储了所有的git仓库版本信息。但是,实际上使用的时候,为了在互联网上同步信息,我们一般需要托管平台的帮助。github就是这样一个平台。先直接看一看和github有关的操作吧。

不管怎么样,所有git操作都是基于一个git仓库。这个git仓库可以是我们本地的,也可以是github上面创建的。

如果本地有了一个仓库,那只需去github上创建一个空的同名仓库,再用图中的第一条命令把远程仓库和本地仓库关联起来。

但是,使用https的方法通信,很容易出现超时的问题。如果之前不小心对https格式的地址进行了绑定,可以先remove掉。

与github关联的正确方式是使用ssh,这是一种更安全高效的连接方式。先像上图一样再本地生成ssh密钥。

再把公钥放到github上。

这样就可以正常把本地仓库和github的仓库关联起来了。如果本地没有仓库,而是去克隆github上面的仓库,则可以使用git clone指令。

这里特别要说一句。如果只是用别人的代码,clone仓库本身就行了。如果想要对别人的仓库进行贡献,则最好先去github上面点一下fork,分支出一个完全一样的,属于你自己的仓库,再clone这个属于自己的仓库。因为对别人的仓库是无法进行修改等操作的。

和github的仓库进行关联后,还需要学习一些和分支有关的知识,才能开始使用github。以上图为例,在git里创建分支并在不同的分支开发,就好比在同一台电脑,同一款游戏里,不同的玩家玩到了不同的进度上。当前电脑(HEAD)由玩家dev控制,他玩的进度比较超前。之后轮到玩家master来玩,他看dev的进度很前,于是直接拷贝了dev的游戏存档,这样两个人的游戏进度就完全一样。之后master把dev的存档删了,因为这份存档已经没用了。在这个例子里,两个分支都是线性进行,因此只需要把旧的分支向新分支同步就行。但是,实际开发时,很可能两个分支往不同的方向发展,之后这两个分支还需要进行同步。这个时候就需要对两个分支的信息进行细心的比对,才能把两个分支的代码给融合起来。

开始那副图片描述的内容,可以用上图中的操作来实现。

这页ppt做得不好,它实际包含了两类不太相关的内容:

首先是对开始那些操作的收尾:把副分支向主分支合并后,副分支一般没什么意义了,这个时候可以直接删除。

有了分支的知识,我们就可以理解本地git仓库如何与github上的仓库交互了。我们本地仓库和github上的仓库其实是同一个仓库的两个分支,我们需要不断令这两个仓库同步。

如果本地仓库较新,应该用push,等于是把本地的内容向github上的内容合并。

如果github上的仓库较新,应该用pull,等于把github的内容向本地更新。

这里的命令写得不够具体。理论上两个操作的用法都是git pull/push <remote-repo-name> <branch>这样的格式的。远程仓库名一般叫做origin。但是可以通过--set-upstream可以指定push和pull的默认远程分支。直接git push/pull的时候命令行里会报错,按照提示设置upstream即可。

不管是开发自己还是别人的开源项目,都建议创建一个新的分支开发。开发完一项功能后,把新分支推送到github上,再利用github的pull request把分支合并到主分支上。这种开发方式使得在添加新功能时,所有人都能看到哪些代码进行过修改,有利于多人协作。

更新github上的分支的几分钟内,github会主动提示你要不要进行pull request。或者是点击pull request一栏主动进行”New pull request“,都可以开启一个新的PR。

PR的标题和内容一般都有格式要求。如果是向别人贡献代码,一定要向别人的要求对齐。输入完对PR的描述后,就可以正式创建一个PR了。

(这里没截图)PR的审阅者可以在PR的file changes里面查看有哪些代码被修改,确认无误后可以点击approve,并在整个pr的最后面点击merge。这样,一个带有新功能的分支就正式被并入主分支了。

我之前就接触了github,一直用github gui进行个人项目的同步。但是push/pull/commit等概念一直没有弄明白。通过这次彻底的学习后,我建立起了git及github的知识框架,才算是彻底理解了这些工具的使用方法。这个知识框架可以总结为上图。如果一个人学完git的相关知识后,能在脑中建立起类似上图这样的数据流图,那么就可以说是基本理解了git什么多命令究竟是在干什么。

首先,要理解先得存在本地git仓库,在线github的git仓库才有意义。通过add命令,可以把文件夹里的文件托付给git系统进行管理;通过commit命令,可以让git把当前的内容”存档“。

为了使用github,需要把本地仓库和远程仓库关联。如果是从现有的远程仓库开始构建代码,则用git clone;如果是本地仓库已经有了代码,仅需用git remote add关联起远程仓库。后续所有的git pull/push操作都是在同步本地和远程的git仓库分支。

为了对别人的代码进行贡献,需要fork别人的仓库,形成一个自己的仓库。对自己的仓库进行更新后,再以pr的形式请求更新别人的仓库。但开发个人/私有项目时,也建议使用pr的形式更新代码。

git的笔记差不多就这么多。还有很多知识没有在笔记里提及。比如如果合并存在冲突的代码。其实在有了整体的概念后,这些细枝末节的知识反而都很好理解了。

我反正在学完了git的基础知识后,就再也不用命令行,而是用一些其他工具来进行git仓库的管理了。我现在在使用vscode的git管理系统。里面add、commit都可以方便地进行操作。冲突合并也就是点一点按钮的事情。

我的博客的分类/标签管理方法

之前我把博客里所有博文的分类、标签进行了重构,一直没有提及。这里简要介绍一下重构的内容,及重构后分类和标签的使用依据。

之前的分类和标签貌似是英文。我也不知道自己怎么想的。既然博客的内容全是中文,那么读者也全是会中文的人,用英文的分类/标签没什么意义。当然,我是发现自己想给新分类取名,却怎么也不知道如何用英文来表达某个中文词语的意思时,才准备把所有分类/标签改成中文的。

现在的分类是按照文章的性质进行分类。目前分类仅有两级,直觉上分三级可能更好一点,不知道以后还有没有改进的空间。

目前有学习/杂谈/经验分享/记录这几大类。”学习“就是分享一些客观正确的事情。”工具用法指南“包括软件的安装使用方法,这些是最没有技术含量、原创性,最死板的内容‘;”知识“是我对某一学科的知识的再表达,主要是巩固我自己的学习,内容有一定的原创性,但根本目的还是复述别人的知识,这个名字取得不好,改成”知识分享“或许更合理一点;这篇文章所属的”学习笔记“可以说是劣化版的”知识分享“,原创性稍高一点,但完成度低,内容连贯性差,不适合作为第一手学习资料,适合作为参考,或者用于我口头讲授的素材。

”杂谈“就是中小学生作文。有的文章是有一些深意的,有的文章是随便写的,”趣文“里的就真的是写来玩的。

”经验分享“和”杂谈“一样,是原创性极强的作品,主要是我个人的见解。但提出系统性的个人见解非常困难,还需要保证不与客观事实或参考资料有出入,目前文章较少。”经验分享“这个名字也不是很恰当。说不定以后”经验分享“专门来放一点原创性强,但是不够有深度和完成度,随便写的一些经验分享文章。专门开一个”我的理论“来放最具原创性和深度的文章。

”记录“里包含了专门对我完成的某件事做描述的文章。这里有些东西是为了好玩而写,有些东西是为了丰富个人简历,专门写给别人看的。

分类只能给所有文章从性质这一个维度上进行一个大概的分类,但我感觉用标签检索文章更加合适。标签比分类更加灵活,可以像分类一样描述文章性质(日记),也可以描述文章涉及的内容(数学),还可以标识一类专题(未来可能出现的”博士毕业论文“)。目前标签我是想到什么放什么。

用标签的时候会有一个问题:理论上标签越多越好,但是如果某一天突然想出一个新标签,但以前有些文章可以套入这个标签,却还没有加,我该怎么给以前的文章加标签呢?或者说我想出了一个新标签,却忘了以前想出了类似的标签,取了个不同的名字,这样标签该如何对齐呢?感觉标签使用起来非常麻烦。一个简单的方法是怠惰处理,以前的内容不管了,只管现在和未来的标签是正确的。

写这篇学习笔记的感想

确切来说,要分成对”学习笔记“的感想和对写这篇文章的感想。

我之前一直不肯写学习笔记。一个人真要学会一个东西,不一定要像”学霸“一样记下花花绿绿的笔记,只需要在关键处进行顿悟式的理解,再在脑中建立知识框架即可。在学一个东西的时候(尤其是学习需逻辑思考而非记忆事实的知识),很可能什么都不用记,或者只是对关键知识进行了演算或者分析,留下一些草稿。记录笔记,其实应该是一个向他人表达知识的过程,应该把这个过程用于巩固知识的理解。在这一过程中,把问题讲清楚一般是十分困难的,因为我们的大脑此时都用于如何让脑中的知识变通顺,而无暇顾及他人能否理解我们在讲什么。只有完全学懂了,才可能写出漂亮的笔记或教程;若是对知识的理解更高一层,才可以写教材。我之前一直认为我写的学习笔记没用,因为这些学习笔记属于我个人学习的副产品——正如我们呼出的二氧化碳一样。要把它们转换成能给人看的东西,需要花很多心血。我自己学东西的时候,经常去网上查资料,总能查到这样的一些学习笔记:这些学习笔记缺乏逻辑性,完全不能用来进行自学,看它们就是在浪费时间。我不希望自己的发出来的学习笔记干扰他人的学习。但最近我开始愿意发出自己写的学习笔记了。

这里再次强调一遍学习笔记所属的性质。我之前”知识“(未来将改成”知识分享“)中的文章,是以现有教材为素材,记录我个人分析与总结的文章;而学习笔记,则应该算是自己写出来的学习素材,我加上了一些描述以使得它们勉强可读。这两类文章本质上来说都是我自学的时候用的。

现在开始讲我愿意发学习笔记的原因。首先是因为最近我有分享知识的需要,制造了一些用于讲授的学习素材。这些素材只要加工一下就能发出来让别人看了。有了积累,不发表出来,实在太亏了。我是不愿亏的人,很想有了东西就发表出来。

发学习笔记的最大问题是需要加入一些描述性的文字。写这篇学习笔记之前,我的想法是随便写点文字描述一下就得了。但是,写着写着,我发现不多写点字是不可能把抽象的知识描述清楚的。最后,我只好在文章质量上进行妥协。文字优美与否、通顺与否我已经关心不了了,我只能尽可能让文章可读,并且赶快把文章写完。赶快做出了一个能用的东西,比憋半天什么都做不出来要好。

我之前不想发学习笔记的另一个原因是,我把学习笔记和教材搞混了。教材需要对知识进行面面俱到而精准无误的描述。这样的工作量的巨大的。现在我想通了:学习笔记就是参考资料,我也强烈建议读者不要把学习笔记当成自学的资料来用。学了一会儿,或者知识掌握得已经差不多后,再来以批判的眼光看学习笔记,哪里写得好,哪里有疏漏。这样看待学习笔记才是对的。

再吐槽一下写这篇文章的感想。

我讲这几页ppt的时候感觉十分轻松。我感觉随便写点内容就能把ppt串起来了。但实际写文章的时候却不是这样的,我感觉ppt缺斤少两,逻辑混乱,得加大量的文字才能把话说清楚。最后,我花了比预计多得多的时间才把这篇博文完成。

可见,基于语音的授课的教学效果还是很好的。加上答疑机制的存在,理想情况下教师能够把要讲的知识完全传授给学生。只要学生稍微会学习,老师有强大的表达能力,就能把知识通过上课这种方法传授出去。可惜,大部分人不会教学,逼得学生通过阅读的方式自学。阅读式学习对教授者和学生的要求都更高。真的要感谢那些写出优秀教程/教材的人。

再对我自己和读者强调一句:凡是以实践为目标的技术,一定要在实践中学习,不然学不进去。我们从小到大写那么多作业,就是为了利用实践来加强对知识的理解。对于一种编程技术,学习并验证学习情况的最好方法就是把这个技术用出去。

写这篇学习笔记太累了。如果还要保持产出,我只能进一步降低学习笔记的文章质量了。

星期五的下午

星期五的下午。

教室里的气氛逐渐热闹了起来,老师也放慢了语速。

下课铃一响,就像刚煮开的水一样,教室里顿时充满了吵闹声、桌椅的碰撞声。

几个同学笑嘻嘻地朝我冲了过来。

“去你家玩电脑吧!”

“可是,我爸爸说上周来的人太多了,还骂了我。”

“没事,今天我们不会那么吵的。”

“好吧,那你们可要早点回去啊。”

尽管带着一丝畏惧,我还是急不可耐地带着同学回到了家里。


星期五的下午。

虽然老师不在,教室里依然鸦雀无声,连下课铃也没有打破这份沉静。

我慢悠悠地收拾着卷子,一位好友前来搭话。

“今天你考得怎么样?”

“还好吧,后面大题也错了不少。”

“唉,明天又要考一天的理综。”

“是啊。”

寒暄几句后,好友先行离去。桌面收拾干净后,我一边想着晚自习和周末的计划,一边拖着脚步离开了教室。


星期五的下午。

吃过午饭,宿舍里的四个人都懒洋洋地躺坐在椅子上。

“你们论文写得怎么样了?”

我发起了午后的闲聊。

“马上就要交了,我的导师都不理我,很烦。”

”我还在写。“

“我的论文快写完了。对了,晚上继续打lol吧?”

“额……好吧。”

稍作思考后,我还是勉强答应了下来。


回过神来,现在是星期五的下午。

开完冗长的周会后,楼道里地响起了接连不断的脚步声。

“周五办公室里的气氛都欢快了不少啊!”

“是啊。”

只听一位同事在向旁边的人吐槽着。

“明天就是周末了,今天加班的心情肯定是最差的了。大家都想着早点回去啊……”

未听完他们的谈话,我就关掉电脑,背起书包,急匆匆地离开了办公室。骑上山地车后,我飞快地蹬着踏板,追过了一辆又一辆电动车,赶回了家里。

桌上不是装着XP系统,内存只有1G的老台式机,而是一台崭新的PS5。

今天的班上完了,再也不用想着如何准备考试了。想到这里,我轻快地打开了游戏机。

下个月也没有什么毕业论文要交。下周一别人吩咐什么,我做什么就是了。这个周末是属于我的。我满怀期待地畅想起周末的娱乐计划。

多好啊!没有人会担心我的视力,不让我玩游戏。

多好啊!没有令人压抑的考试,没有做不完的试卷。

多好啊!没有迷茫而焦虑的每一天,没有为远离压力而强作欢笑的逃避。

我过着之前梦寐以求的生活。平时高效率地工作、学习,周末无拘无束地玩耍。我发自内心地享受着现在的时光。

我可以像儿时一样,把全部时间投入到游戏里。

我可以像儿时一样,创造并沉浸于自己的内心世界。

我可以像儿时一样,不去担心明天的到来。

——可惜我不是小孩子了。

写博文的感想

用简练的文字把意思表达清楚,这是写文章必要而又需要花时间练习的事。熟练之后,文章简练了,写文章的时间也会缩短。恰好我最近常常有很多感想,却又担心时间不够,不敢下笔,我有着锻炼写短文的需要。正逢今天时间有多,我可以快速地写一篇小短文,抒发一下心里的感想,练习一下写作。写博客又不是什么特别的任务,没必要非得长篇大论。我争取尽快习惯简明扼要地表达思想,多多记录一些所见所闻、所思所想。

文章很简短,我却边想边写,写了很久才写完。恐怕是因为文章中融入了不少回忆与感情吧。蕴含在文字中的微妙的感悟,只有有经历的人才能看得出来吧。