1945年8月6日,日本广岛核爆炸。63年后,Jonathan Blow选择在同一天推出自己的独立游戏《时空幻境》(Braid)。两年后,我遇到了这个游戏,不知不觉中自己的人生轨迹因此游戏而改变。
作为从小在FC游戏机旁和街机厅长大的80后,我对游戏一直有发自内心的好奇和向往。然而随着电脑的普及,主要游戏平台转换到了PC端,游戏也从FC以及街机时代讲究游戏性和对抗性转向了更看重画面和收益。游戏成本增加,大多数大型游戏更注重迎合大众、循规蹈矩,磨去棱角的同时也不再有太多的新意。记得家里第一次买电脑,我兴致冲冲地装上了之前在游戏杂志上看到的《波斯王子》,结果玩了两个小时就没有新鲜感了。从此放弃了游戏,也放弃了对游戏的那份渴望。
直到2010年,在大学寝室刷电驴的时候无意间看到了《时空幻境》的资源页面,光看它的画风就给我一种很别致的感觉,索性下下来玩玩看。我完成了第一个世界后感觉这个游戏还是挺有新意的,时光倒流运用的很有创意。然而完成第二个世界后,我目瞪口呆了,我感受到这游戏绝对不是那种抖机灵、冒冒泡的小游戏,它所能达到的深度我已经无法估测。
在巨大好奇心驱动下,我舍不得错过任何一个角落、一个亮点,“小心翼翼”地完成了游戏,之后又回味了不知多少遍。我第一次感受到原来游戏也可以拿来讨论人生、讨论迷茫(是的,我在《时空幻境》中感受到的就是Blow对于追寻真理的迷茫)、甚至讨论宇宙规律,游戏居然可以到达这样的高度。《时空幻境》不仅唤醒了我童年对游戏的那份向往,更让我增添了一份对游戏从未有过的敬畏。
我很好奇是何等高人能做出来这么牛逼的游戏,在Youtube上找到了制作人Jonathan Blow的采访、以及演讲视频(2010年能找到的演讲还是有限的几个)。因为大学的专业是电气工程,并不懂代码,即便我英语方面无字幕没问题,但也很怀疑能不能听懂他讲的游戏开发知识,因此以学英语的心态把所有的视频都听了一遍。
不得不说,了解到他这个人比玩到他的游戏给我的震撼更大。就像武林中绝顶高手只讲修为不讲武功一样,站在编程和游戏设计顶端的这个男人的演讲也大多是理念和思想,并不常讲技术。通过演讲,我感受到了这个伯克利退学的CS和英语双专业大神对数学、物理和宇宙真理发自内心的追求,以及通过游戏怎样向玩家沟通这种向往甚至其中的迷茫。
在名为video game and human condition的演讲最后他引用Alan Moore的话(之后我因为这个演讲看了Alan Moore的纪录片,并喜欢上了他的漫画)表达了自己对创作的看法:
It’s not the job of the artist to give the audience what the audience wants. If the audience knew what they needed, then they wouldn’t be the audience. They would be the artists. It is the job of artists to give the audience what they need.
的确,在我不知道自己想要什么的时候,他的游戏和演讲给予了我所需要追寻的东西。
这个画面让我想起了《独立游戏大电影》中Blow的独白:Making it was about let me take my deepest flaws and vulnerabilities, and put them into the game, and let’s see what happens.
走出校园后,典型工科男的我与体制内文化格格不入。在这期间,Jonathan的演讲、访谈、以及新游戏《见证者》的开发日志(连续关注了六年)就是我内心的诗和远方,是我在反智和压抑环境中的灯塔。苟且了两年后,我终于‘顿悟’,决定重新出发,学习编程,把之后的人生轨迹押注在游戏上,即便永远做不了《时空幻境》,只要我能读懂源代码,会做一般的游戏,就很开心了。
接下来这几年,我硬着头皮从计算机的底层架构、汇编语言、C++一直学到操作系统,也跟着Youtube上的游戏编程专栏,一行一行的实现其中的代码。之后通过实践上层的cocos2d到底层的openGL和DirectX,让我对游戏的程序架构进一步深入。一路走来,收益匪浅。
在学习游戏源代码的过程中,我极其震撼的发现原来游戏的底层是基于我从小就很有兴趣却不知道具体有什么用的数学知识驱动的。游戏角色行走、碰撞、跳跃是通过数学公式来搭建物理模型实现的,摄像头的平移、偏转是矩阵变换完成的等等。一直没放弃的英语学习让我在学习源代码和浏览stackoverflow的时候更加高效的理解其中内容。就这样,对数学的兴趣、对游戏的向往和还算可以的英语技能支撑着我熬过了那一个个让人无助的bug和学习渲染管线时的焦虑和不解。
几年后,当我用openGL和SMFL从底层到上层实现Minecraft的原型,点击compile通过编译并运行的时候,我百感交集:小时候天天守在游戏机旁的我做梦也没想到自己有一天能够编写游戏。
曾经有个外国朋友问我:Why did you decide to learn making games?
我回答他:All my life, I love three things: math, English and video game. If you combine these three, you make video games.
通关后的这一独白和我产生了共鸣,我认为chocolate bar, magnetic monopole等代表那些不被外人接受又无可自拔的追求。打游戏的人在外人眼里叫幼稚,喜欢写代码的人在别人眼里叫呆板。Jonathan Blow也是和大众格格不入,那又怎么样呢?借用《V字》中的话: It is the last inch of us. But within that inch, we are free.
就在三个月前,我没有顶得住当下人工智能热潮,也决定把全部精力投入到机器学习方向。这个领域大部分还是在撸数学,经过3d游戏底层锻炼后(可能是受Blow演讲的影响,我一直没去用Unity,而花了大部分时间学习底层渲染API),我对矩阵相乘、微积分、线性代数和程序架构等知识已经不用再复习,短短3个月,我已经完成了openCV、神经网络和tensorflow的入门、上手和简单任务,看起技术书籍也不是那么费劲。很骄傲我的人生能在游戏上体验三个层次:玩游戏,做游戏,做个智能机器人玩游戏(reinforcement learning还没学好,正在努力)。
回头看来,如果不是遇见了《时空幻境》,我可能一辈子都不会想着去学编程,数学、物理、英语这些概念可能对我来说永远都只是考入重点大学的介质工具,最重要的是,我对技术甚至生活的那份向往和激情可能很快就会被麻木的三点一线工作所吞噬,最后沦为“30岁死80岁埋”的蛀虫。我没有像许多大牛一样,从小找到自己人生的意义一路开挂。但我相信自己是个幸运的人,在还有机会改变的时候遇到了《时空幻境》,点燃了对技术和知识的渴望,改变了我的人生轨迹。
四月二十几号看到Blow要来核聚变做演讲,我万分激动,随即发了朋友圈:“大神要来,买票,请假!”。本想这辈子一定要去湾区拜访一下他的(似乎他现在在西雅图居住)。
无比幸运的是,演讲后碰到了他,之后和朋友聊起这次见面的时候,我感慨道:For the first time in my life, I couldn’t remember what I was saying!
激动得语无伦次,只有依稀记得的对话
“Hi, Jonathan, I become a programmer because of your game braid”
“Oh, really”
“Absolutely, you changed my life, man. Thanks for everything”
“Good luck with the programming”
很多人长大后变成了自己小时候讨厌的人
Thank you, Jonathan Blow.
我变成了自己小时候会觉得很酷的人