我叫朱熹,名字是不是听起来很耳熟,没错,名字和宋朝“程朱理学”集大成者朱熹一模一样,可惜人家是一代大儒,而我,呵,一个从母胎出生就单身了二十几年的屌丝。父母给我取这个名字本来是想让我和朱文公一样出人头地,怎奈我资质太差、学历浅薄,是一个庸庸碌碌之辈,说起来我还真是配不上这个名字。
四年前刚从一个不知名的十三线二本大学毕业,大学专业学的是软件工程专业。没错,我就是现在社会上所说的码农,所谓“钱多话少,死的早”的人群之一。毕业的时候经济不好,由于学校也不是什么名校,给那些大公司投的简历都打了水漂,倒不是说面试不通过,而是连面试的机会都没有!!!经济不好,大公司都开始减少社招、不大规模裁员就不错了,就算有岗位招聘,也都是招高级工程师,新人他们也只招 985、211 学校的,像我这种十三线二本大学的,估计简历刚发送过去,就被人家的简历过滤系统设置的关键词就过滤掉了,根本就到不了 HR 那里。
没办法只能病急乱投医,写了个自动化程序,把我的简历自动发送给各种公司的游戏岗位,通过这种广撒网的方法,我投个一百多家,至少能有几家愿意给我机会面试吧。皇天不负苦心人,终于是有几家愿意面试我了。其中有一家我觉得不错,现在想来当时还是太年轻了,不谙世事,才会被骗过来,天天过着加班的苦逼生活。
公司游戏架构早就写好了, 名叫 ReAngView,像我们这种普通的码农很多底层代码是无需触碰的,只需要安心地写好我们的业务代码搬砖就好了,但这一部分往往都是脏活累活,导致经常加班。老板之前是一个玩世不恭的二世祖,而且是独子,终日花天酒地,后来他那有钱的老爸过世给他留了一大笔资产,去世前嘱咐他要找些正经事业做,这人仿佛就开窍似的、浪子回头。他对游戏没有任何热情,开游戏公司纯粹是听说做游戏很挣钱,做游戏的方法也很简单粗暴,换个皮肤、换个故事脚本就当成一个新游戏来卖了。
说倒是很轻巧,换个皮肤、换个故事脚本就行了,就像某个国产浏览器,拿个谷歌浏览器,换个软件图标,就宣称完全自主研发,然后去骗钱融资那么简单。实际上哪有那么简单,有很多繁琐的细节代码要开发,就不别说游戏框架本身的 bug 了,这个框架是几年前一个大神开发的,我入公司不久后,他嫌工资低就被其他公司挖走了,这人叫什么我不知道,我与他只有数面之缘,只知道大家都叫他赢神。
后来的新人谁敢动这个框架的代码啊,公司那么多已经发行的游戏运行在这个框架之上,动了出了问题谁负责啊。但是痛苦啊!基于这个框架来开发游戏,终日就像戴着镣铐跳舞的囚犯一样,小心翼翼地躲开那些已知的坑点,如果你遇到一些前人都没遇到的问题,那么恭喜你,中奖了!你就在那里慢慢加班调试去吧,一调试经常就是一两点。
可以说苦不堪言,要离职吧,又不敢,因为没有掌握什么核心技术,今年又遇到行业不景气、大裁员,害怕离职后找不到新的工作,怎么办呢?能怎么办,得过且过呗,至少熬过这个行业寒冬先,嗯,活下去要紧!今年,剩者为王!
最近开发的游戏是关于元末农民起义的游戏,里面的主角就是大家熟知的明朝开国皇帝——朱元璋,玩家所要做的操控朱元璋就是打败各路诸侯,最后建立明朝。听起来很不错是不是?但是就是个经营类游戏。因为原本的游戏框架就是专门针对经营养成类游戏开发出来,无论你怎么改、怎么换皮肤、换脚步,也只能开发出一个经营类游戏而已。
说到朱元璋,我与他之间唯一的关系,应该就是我们都姓朱?不,好像不止,仔细想想,我差点成了他的“祖宗”。传闻朱元璋在建国之后,一度想认朱文公做祖先来着。在那个等级十分森严的封建社会来说,有个好出身、背景十分重要。如果你成功了,又没有一个好出身怎么办呢?有办法,那就是追认祖宗啊!
什么?祖宗也能追认、乱认?当然能,而且这还是我中华民族的“传统美德”哩。那这个“美德”的始作俑者是谁呢?就是西周王室。司马迁的《史记》中记载了一段故事,说后稷的母亲姜原出门的时候看到了一个很大很大的脚印,她踩了上去,然后呢?然后居然就怀孕了!生下来的这个孩子就是后稷,后稷及其后代又继续繁衍,慢慢地就诞生了姬氏这一族来。后来武王伐纣,推翻了商朝,建立了周朝,定天子七庙的时候,就把后稷定位太祖。这就是中国可考的最早杜撰、追认祖先的例子,此后便一发不可收拾,后人频繁效仿,这祖宗也就越认越乱了。
我去,这也太扯淡了吧。现代人会这么想,但是我们的古人可吃这一套哩。想想汉高祖刘邦,《史记. 高祖本纪》中说他是她妈妈被一条龙趴在身上后,怀孕生下来的,所以他是真龙天子,当上皇帝那是上天的旨意。哈哈,刘邦父亲这绿帽戴的,还是龙给戴的,无可奈何,无可奈何啊。
不过,朱元璋没认成。为什么呢?因为朱熹生活的年代离得太近了,种种证据都摆在那里,他们家也是世代农民,街坊领居也都在,自己父亲、爷爷的坟墓在哪里,兄弟姐妹是谁,大家都知道。说自己祖先是朱熹,骗谁呢,谁都骗不了,最后只好作罢。差一点,就差那么一点点,我朱熹就成了朱元璋的“祖先”,成为皇亲国戚了,以后就可以吹嘘我乃大明之祖,好不威风,可惜可惜了。
“我说朱夫子,这半个月前提的需求,你改完没有啊!赶紧吧,下周就要上线发版本了,你怎么还磨磨蹭蹭的,我觉得你这里不行,要改一改,这里我觉得也不行……”,这个站在我眼前,一直说着“我觉得”、尖嘴猴腮的家伙,名叫王望,是这个项目的经理。此人是十分狗腿,除了跪舔老板、胡乱改需求、提需求之外,我看不出此人有何才能,对项目的推进有任何帮助,添堵倒是大大的有。天天把什么游戏模式创新、软件工程管理、设计模式挂在嘴边,其实他懂个屁游戏,懂个屁编程,懂个屁软件工程管理。现在挂在嘴边这些名词,是他报名参加一个什么速成培训班学来的,至于这些名词是什么意思,我估计他是搞不明白的,搞不明白没关系啊,说起来觉得很厉害、高大尚就是了。他不是软件工程科班出身,在进公司之前的也是和游戏毛关系没有,之前干什么的?二世祖呗,他唯一和游戏沾得到边的就是:他表哥是一家游戏公司的老板。而这个老板就是我老板。老板的姑妈觉得他继续鬼混下去不行,就拜托老板让他进公司工作工作,让他涨涨见识,有些事做。果然,二世祖的亲戚也是二世祖,祖传的二世祖,世祖基因很永久,一根永流传。
进来就进来呗,偏偏是在我们这个项目成立不久后进来的,刚好项目经理刘斌要离职,老板让他进来跟着刘斌学习,两个月后刘斌离职,让他来接手。刘斌还在的时候,这个人还不敢太放肆,毕竟是新人,规规矩矩按照刘斌的指示来,项目的推进还是有条不紊的。后来刘斌离职了,他正式上位了,噩梦就开始了!天天觉得这不行那不行,什么玩法不创新啊,UI 不够精致啊,然后各种胡乱提需求、改需求,导致项目组连续加班三个月了。有几个人受不了这鸟人就离职了,就我最耐扛,坚持到现在,没办法我就是这么勤勉耐劳,其实是我还有房贷、车贷要还,否则老子早就尥蹶子不干了。此人也是没礼貌、自来熟,喜欢给人取花名,不称名字、不称职位,说是这样可以让团队更加亲近亲近,氛围更好些,某个知名软件大企业就是这么做的,这叫企业文化,作为团队管理者,他率先表态,叫自己令狐冲。噗,你可能要笑,为什么这人要叫令狐冲呢?因为这样他就是得到风清扬真传的人了,必将带领我们团队横扫游戏武林!听到我名字后,就立马给我取了个“朱夫子”的外号,以后就不分场合地叫我“朱夫子”,上次去和合作方开会的时候就直接叫我这外号,搞得合作方一脸懵逼,最后会议上与会人员哄然大笑,搞得我很是尴尬。总着,遇到此人,我算是倒了八辈子霉运了。
“嗯,好的,嗯,好,好,我会按照您说的改的,OK,OK,对,嗯,您说的很对,我会改的……”。我微笑虚心说到。你可能会诧异朱熹你不是很讨厌这个人吗?怎么对他如此跪舔。因为我深知如果你不答应这瘟神,随机而来的是更多的麻烦,你只要敢反驳,他会在你面前一直说下去,直到你屈服。其实他说什么,我也是左耳进右耳出的,每次他在我面前唧唧歪歪的时候,我都是用手机录音一下,他走后我再将语音转成文字来看他所说的事情,然后再来改改代码。
由于有了这样一个不靠谱的头儿,我的代码也不敢把业务代码写的太死,没用的代码我也不敢删除,要么就放在那里不调用,要么就注释一下,反正老子就是不删,冗余就冗余呗。不是有代码版本和分支管理么,为什么要这样做呢?因为此人反复无常,今天说不要的功能明天可能又要了,什么分支、版本,你是应付不了这种变动的。我经常和我的同事开玩笑说我的软件有几百个配置、开关,一切换就可以变动到另外一个逻辑分支去。
“吴道子,麻烦把那个新的图片素材上传到 git 仓库中,我待会加班要用。”我站起来和对面的设计美工小姐姐说到。吴道子?小姐姐?这又是什么鬼?这也是“令狐冲”王望整出来,他说这设计美工就是我们团队的画家,吴道子是我国古代的画圣,所以就给这小姐姐取了这个花名。莫名其妙,一个妙龄女子硬生生被叫成了一个老头子。一来二去,大家习惯了,也就这么叫起来了,这个小姐姐也是随和,居然丝毫不在意。
加班改功能是痛苦的,慢慢长夜难熬,其他项目组的人都早就下班了,偌大的办公室只剩下我一个人。修改了五个多小时后,此时我已经意识模糊,头痛欲裂。我编译了一下代码,发现游戏没法运行了。我的天,什么鬼,不要这样啊,这还让不让人下班啦。没办法,只能慢慢调试了,一步两步,一步两步,是魔鬼的步伐,经过半个多小时后,我发现这不是我业务代码的问题,问题出在了游戏底层框架的代码的一个 API 逻辑判断上,这可怎么办啊,框架的代码我又不能动,别慌,山人自由妙计,我可以代码热替换啊,这样我就可以在不动框架代码的前提上,在软件运行时,动态替换掉对应的 API,换成我自己修复好的 API,这样运行也正常,底层代码又不用动,哈哈我真是个天才!好,就这样干!
改完之后,我启动电脑上的虚拟机运行游戏试玩一下,一个过场动画后,突然游戏节目白屏了卡死了,不会吧,我又没有改到游戏渲染那一部分的代码,怎么就不行了,这个破框架,破轮子!时间已经到了凌晨四点半,这个时候回家睡觉,三个小时后又得挤公交换地铁过来上班了,然后又得上一天班,搞不好还得加班。想到这里我就气不打一处来,我愤怒了,我用我手指在命令行终端胡乱敲了一段字,然后用拳头狠狠砸中了键盘的回车键。
突然办公室的灯忽明忽暗、不断闪烁着,最后灯都灭了,看来是跳闸了,我走去门边把电闸拉上,我回头一看,此时我的电脑显示器发出了刺目的白光,那光太亮了,亮到令人睁不开眼睛,我用左手遮挡着眼睛,慢慢显示器发出巨大的吸力,许多桌椅、杯子、书都被吸进去,仿佛背后有着一个力大无比的抽风机,到底怎么回事我不知道,我只知道我如果不紧紧抱紧这扇门就完蛋了!
我死命地抱紧门,但是吸力真的是太大了,犹如那二十级台风的风力,我整个人居然就被吸得悬空了起来,手脱离了抓取物,整个人朝着显示器飞去。见鬼了噜,我命休矣!别人改代码顶多改出 Bug 来,大不了被炒,我这改代码改出了鬼,要命了!来不及我多想,我被吸入显示器中去了。
“哎,头好疼!”我开始醒了过来,只觉头十分之疼,我用手揉了揉脑袋瓜,睁开眼睛,视线开始变得清晰,只看到了四周都是白茫茫的一片,看不到边,完了,我死了?早就听说有些程序员加班猝死的新闻,自己不以为然,好了吧,这下子自己“因公殉职”了吧。这里是天堂还是地狱?看着白茫茫的一片,不像是地狱,至少我看过的电视剧里的地狱不是这样的,所以这里是天堂?但是如果是天堂,那天使呢?上帝呢?
不等我多想,不远处就传来了一个声音:“终于有人来了!”,这个人慢慢向我走来,随着距离越来越近,我总于看清他了,他就是公司游戏框架的作者——赢神。怎么,他也死了?而且和我一样,好事做多了,到了天堂?
“赢神!你怎么在这里?这里是什么地方?我又为什么来到这里?我是不是已经死了?这里是天堂么?我能不能复活?”我急忙问到。
“小伙子,你问题那么多,你希望我先回答那一个啊?”赢神笑道。
“没事,是我紧张了,赢神你说”,都到了这了,我也只能寄希望于赢神的解答了。
“这里是 ReAngView 框架的太虚幻境结界,是我在框架代码中埋的彩蛋,我写了个定时器判断,如果到了今天的凌晨四点半还有人在加班,并且动态篡改了框架的 API,就会触发这个幻境结界,我本以为没人会到这里,没想到你来了。”赢神解释道。
“那赢神你是怎么到这里的?你刚刚也在加班改代码,然后自己中了自己的彩蛋?”我反讽道。
“非也,我从公司离职后,到另外一家大公司上班,本来以为是脱离地狱来到天堂,没想到是进入了另外一个大坑,加班不止,终于在一年后的加班中猝死了,在我灵魂弥留之际,我的意识遇到了程序之神——林纳斯,他看在我对于游戏编程如此执着,赋予我意识永生之力,并允许我复活一小时,编写我人生中最后一段代码,所以我就写下了 ReAngView 框架的太虚幻境结界这个彩蛋,并将自己的意识注入到框架之中,默默地守护着 ReAngView 框架的使用者们,期望有一天能有人来到这个游戏世界,这一等就是几年,等来了你。”
“既然这里不是天堂,那我已经死了么?”,我连忙追问道。
“哈哈,没有,你还没有死,你只是刚好触发了这个彩蛋,被卷入了游戏之中了,只要你完成游戏任务,通关了自然就可以离开这个结界。”赢神笑着对我说。
“那如果通不了关呢?”我急忙问道。
“在游戏开始后的四十年游戏时间内,如果通不了关,那么你将”
“会怎样,困在这里?”我打断了赢神的话,插嘴道。
“boy,你想多了,不是困在这里,而是你在现实世界的身体将会死去,也就是你们说的猝死”。
什么!居然要通关游戏,才能离开这个鬼地方,不通关,太久还会死!!!问题是这个游戏自从被王望接手后,便改得十分的困难,说什么我们要玩法创新,要面向高玩、硬核玩家,难一点才能吸引玩家充钱啊。当初没在意,反正玩的人有不是我自己,开发而已嘛,管他呢,好了,这下好了,受苦受难的第一人就是自己!果然出来混,迟早是要还的。
“好了,很快游戏就要启动了,我不能久留了,祝你好运,boy”,看着赢神开始变得虚空起来,我急了,“别啊!”我急忙想抓住他的手,可是我没能抓得到,随继他就完成一堆 0101 幻化在空气之中,渐渐消失了。
“游戏要开始了哟,请玩家做好准备。”这声音我很熟悉,因为这段声音就是我前几天录制吴道子小姐姐那甜美的声音,用来做游戏进入时的过场音频的。
怎么办?怎么办?游戏马上就要开始了,王望那家伙魔改后的变态游戏,赢神你好歹也给我点装备啊,我这种非酋,拿什么通关啊!
“5!4!3!2!1!0!游戏开始!”
咦,怎么没动静,莫非是游戏启动失败了?我四处张望,没有什么变化啊,感觉脚下有点奇怪,低头一看,呵呵,地面没了,我整个人开始从空中坠落,原来我刚才是在这游戏的天堂上啊!上帝啊,不,赢神啊,林纳斯大神啊,保佑我至少掉到水里吧,掉到山上的石头上我可就完蛋了,丢落速度越来越快,本来就胆小的我昏厥了过去,等待着我的是什么?死亡?狗命?还是通关?