游戏果酱(Game Jam):一种娱乐性质的游戏开发比赛,参与者需要依据主题在四十八小时内从无到有开发出一款游戏。
前夜
开车送媳妇闺女去乌兰布统草原骑马。天已黑透,车开远光,在废弃的忽必烈影视城左转,沿沙坡土路颠簸一阵,闯入草原。草原辽阔,却被铁网木桩分割成一块块,按导航朝目标方位开,遇到围栏便要找门、开门、关门。走了许久发现导航图标不动,原来早就没了卫星信号。打电话问邵哥:“你沿着那条公路开!”“周围没路!我们在不知哪片草原上!”月亮、北斗、远处的灯光都用起来,最后开进了一家牧民的后院,随后上了田边小道、土路、公路,终于抵达夜宿的小院儿。
十一点多了,媳妇劝我住下,明早再回多伦参加Game Jam,但我去意已决。夜已深,怕再迷路,去找邵哥问路。推门进屋,大灯已熄,床头一盏黄灯给屋里各式杂物镀上一层金,电暖气的暖意将我引向床边,邵哥裹着被子靠在床头。他年纪大,懂文化,爱摄影,平日骑马照顾指点我们颇多,也是我这个局外人在马圈里最聊得来的一位。我递手机给他,请他指一个回程的导航位置,手机弹出了九宫格键盘。“哟,这能行吗?要不您说名字我来录入?”“没事没事,我也习惯用这种键盘。”九宫格拼音是从低智能手机一路带过来的旧习惯,我们俩老到一块儿了。“不能直接导多伦,得先定位在这个加油站。”邵哥搜出一个加油站,设为导航目的地。“你啊,先开到这个加油站,到了以后再导多伦,就不会走错了。”“这路好开吧?别是碎石路。”“好开,好开,我们都是这么开。”“谢谢邵哥,您早点休息吧。”“今天非得回去啊?现在可是够晚的了,这儿有地方住。”“是啊,还有事儿,已经定好了。”出了小院儿和媳妇拥抱,外面冷透了。钻进车里,朝媳妇反复挥挥手,驾车再次驶入黑暗。路上遍布炮弹坑,左右躲闪急刹。从小道驶入省道,心刚放下,前方路上闪现几摊血迹,随后一个血呼啦的肉躯横在地上,血染白毛,不见脑袋。开出百米才见到一个羊头。
开进多伦县城,总算可以关掉车的远光。旅店还是上次那间,马场的老板和这儿熟,提前打招呼订好了房。上楼进房间,很大,但摆着两张床,床之外的可用空间很小。已是后半夜,电视柜上搭起开发环境,坐下比划几下,电视柜高,胳膊只能高高架着。挪到旁边的矮柜,请走上面的绿萝,胳膊高度合适了,但腿被卡在下面。开发游戏靠手,腿就委屈下吧。绿萝盆已干,给它们添满水。上床定表,扫了眼比赛官网,发现不是上午9点开始,而是6点。这规矩改了两年了,但我一直记不住,早年间参赛的印象太深了。闹钟向前拨,只能睡四个小时了。
第一天白天
清晨被闹醒,比赛主题已公布:Space is limited,眼熟,此前也有过类似的主题。Game Jam的主题是参赛者们提议并投票选出的,题目雷同的情况时有发生,因为每次的参赛者也总是那一拨儿。头沉眼酸,倒回床上,不敢睡,闭着眼醒盹,醒着醒着又睡去了。媳妇一通电话把我吵醒,以为是提醒我起床参赛,电话里传来的却是吼声。“你闺女不听话!非要给马梳毛,不让她梳她非梳!”“啊?什么数猫?”“她还叫嚷‘妈妈行我为什么不行?’我管不了你这闺女!”我从床上坐起来,清清嗓子,让闺女接电话。“妞妞,妞妞?妞妞!”“嗯!干嘛呀?”“你这是第一次骑马穿越草原,就你一个小孩儿,在外面得听妈妈的话,听马倌儿、听邵叔叔的话。”“知道啦!”“不让你干嘛,就听话别干。让你妈接电话。”“非要梳!非要梳!怎么说都不听!”电话那头儿能听见马倌在远处喊:“你就不应该跟她置那么大气!”劝媳妇消气,调解完毕挂断电话,头清醒了,嗓子也通畅了。
下楼开车去老地方喝羊汤。还不到7点,店里已被水蒸汽熏得热腾腾,人很少,老板娘迎过来。“羊肚儿汤,一个烧饼,一个沙葱包子。”老板娘冲后厨喊:“今天的包子蒸出来了吗?”“还没包呢!”“包子只有昨晚剩的,新蒸的还得等半小时。行吗?”“剩的就行,我就想尝尝。”赛前第一顿想吃点有意思的。菜很快上齐,羊汤够老,肉烂汤醇,保持了一贯的水准。沙葱包子咬开里面有小葱段,吃起来比葱适口,似韭菜,味更、重,吃着过瘾。因为剩了一晚,葱发黑,呈墨绿色,口感绵软。包子里的羊肉多是肥肉,我把一颗颗晶莹的脂肪粒挑到盘里,堆成小丘。吃了早饭出来,气温随着太阳升了一点儿。回到旅店,想起屋里两瓶矿泉水快喝完了,去旁边的小卖铺拎一大桶。售货员在和朋友聊天:“昨天来了几个外地的,说你们这儿也太冷了,冬天还不得冻死!我就心想,我一辈子隔这儿,也没见冻死,冷你不多穿点儿,穿那么少不是活该!”我作为外地人赶紧走了。
回屋开始做游戏。“有限空间”是老主题,不想再头脑风暴,翻找以前记录的游戏灵感,锁定了两个:搬家收拾东西,小区倒车。先试搬家。编辑器里用方块搭了个收纳箱,物品用尺寸各异的圆球、方块代替,鼠标拖拽往盒子里码。三维视角难以观察箱子里的空隙,码放物品的时候抓不住技巧,只是瞎放,没啥乐趣。放弃搬家的创意,试试倒车。平地上搁几个方块当作车,摄像机高空俯视,方便观察倒车环境,用键盘控制其中一个方块在环境里倒着走。试了试倒车进入狭小空间,能倒进去,需要耐心,缺点挑战。回想自己倒车是坐在车里通过后视镜观察环境,拿捏不准还得下去看看,猜想倒车的趣味在第一人称视角。将摄像机塞到车内驾驶位,又在车外左右、车内顶棚分别放了三台摄像机。游戏画面成了车内视角,另有三个小视窗分居左、右、上,呈现后视镜的画面。同样的环境,倒起车来却困难多了。像保安一样看着各个“监控画面”与坐在车里左顾右盼还是有区别——但我说不清具体是什么,只觉得眼前的游戏倒车比真实倒车还难。
难到自己都玩不动,干脆下楼吃饭,还是那家麻辣烫。上次来多伦,滑滑板把左肩摔脱臼了,医院等了两小时复位上,沉着左肩,感受着周身各处此起彼伏的刺痛,步行两公里找到这家透着橘光的麻辣烫。店内明亮整洁,端上来的食物热气腾腾,这一切给了我慰藉。今天进门还是同样明亮温暖的光,但服务员换了。我选好菜端过去。“原汤。”“原汤也有点辣。”“嗯,我知道。我不怕辣,怕油。原汤就行。”吃完回到酒店,拿出旅行咖啡杯,倒半杯牛奶,再倒入两包咖啡粉,用牙刷柄搅匀,继续倒满牛奶,再搅匀。一口口喝完,苦、酸、滑。阳光正好,街上冷清。把衣服摊开在床上晒着,衣服不潮,只是不想浪费这阳光。
坐回电脑前。游戏还是第一人称视角,但看着编辑器画面里的俯视固定视角,玩起来还算轻松有趣,看着像是滑稽倒车视频集锦。决定使用固定视角。从车里取出摄像机放回空中,关闭几个后视镜的监控画面。游戏能玩了,还得把胜负判定加上。规则设置为“车碰到东西就输”,但碰撞检测总出问题。为了辅助排查,我在碰撞点生成一个红色小球。一阵鼓捣,问题修正了,但我把红球留下了——连输几次后墙上、车上留下一排小球,像是节日的彩灯,庆祝司机的失败。反复试玩很久,抬头屋里已暗下去,床上晒着的衣服早不在光下,阳光缩到了房间的一角。
第一天晚上
下楼晚饭,还是麻辣烫,服务员换成了一个大婶儿,又叮嘱我一遍:“原汤也带点辣啊!”回到楼上没敢再喝咖啡,今天是Game Jam头一天,晚上还是得睡的。打电话给媳妇,已顺利入住蒙古包。今天草原穿越赶了一天路,明天去附近的五彩山玩,会轻松得多,我也放心多了。开发了一天,再坐回桌前觉出难受了——椅子后顶床前贴桌,腿挤在中间动弹不得。我打量一下房间,把小桌横过来对着门,椅子就可以在过道里前后移动了,但桌子把床前的过道堵死,上床不方便。无所谓,反正床用处不大。不能喝咖啡,晚上工作开始前还缺点仪式感,肚子里的麻辣烫顶着胃不肯放松。去洗了个澡,水流很大,水温很热,蒸得人都飘起来,出来后像是刚睡饱了,心里不禁琢磨着工作室正是缺这样一个洗澡的地方。再坐回座位,总有一股臭味儿在鼻子前晃,拿起塑料拖鞋闻了闻,是它没错。穿上新袜子,又把旧袜子套在了外面。
过了一个白天,游戏还只能输不能赢,玩起来不像个游戏。按照过往经验,这种进度可能做不完,心里起了急。地上放了个白色方片,开进去就赢。继续做了3个关卡,基于自己在小区里停车的经历,玩了一遍,能玩通,心才放下。时间已过12点,录了一段倒车入库的动图发到比赛官网上,刷新了几次网页,有3个点赞。倒在床上,街灯的黄光从窗帘缝里渗进来,我的脑子正在从工作桌前赶往被窝儿。把窗帘拉紧,被子盖头,闭紧眼睛,强迫自己快点睡去。
第二天白天
六点的闹钟把我闹醒,脑子还是一团浆糊,唤醒电脑,昨晚发的帖子得到了44个赞,在这个比赛里算多了。截图发给媳妇,没回。下楼冷得我一激灵,弓背碎步走到停车场。车玻璃上一层白霜,用手擦了擦,是冰碴,擦不掉。没热水,只能靠太阳晒,等一阵子应该能化,但时间不容耽搁。跑过潮湿的街道,钻进羊汤馆,老板娘认出了我:“大兄弟又来啦!”今早没敢再点沙葱羊肉包子。羊汤现做得等,我上二楼找一个僻静明亮的座位,拿出笔记本画了几张关卡设计稿。喝完羊汤喝咖啡,一路走回来肚子已经不撑了。
Game Jam第二天,不能像第一天那般随性。罗列了所有工作条目,排定优先级,整出一篇文档,对工作量做了预估。简单收拾了床,将厚衣服晾晒在床上,换上轻薄的衣服和宽松的睡裤。游戏能玩了,该打扮打扮了。从物品建模开始,第一个场景是大街,只有栏杆作为布景。球体和圆柱体模型游戏引擎里自带,只做了一块砖头模型,加上球和柱拼成栏杆的部件,再用他们组装出各种长度和转角结构。将前三关里的方墙换成栏杆,有大街的样子了,但车碰到栏杆纹丝不动,玩起来干巴。给栏杆加上碰撞反馈——车一碰,栏杆就像故意找茬似地向上弹一下,明显反应过激,游戏里透出了点幽默感。继续做模型。有了栏杆的经验,后面小区的围墙和森林里的树就照猫画虎了。下面该主角了——车。此前考虑过三厢车、两厢车、SUV,甚至卡车,但真要下手才觉得做不过来。先做出主角的小车,停车游戏的灵感来自平日在小区里停车的经历,主角便依照自己的车做成了两厢样式,配以棱角分明的卡通风格。看过真车的照片才发现灯真多,前后左右。但游戏的画面风格简洁,于是只做了前后两组车灯,像两对圆眼睛,车立刻有了性格,透出一股呆劲儿。加上后视镜,像支棱起一对招风耳,有个性,但给倒车增加了难度。此前只顾车身就行,现在还得盯着耳朵,车凭空宽了好多,耳朵碰墙时特想把耳朵揪掉。
耳朵虽烦,但车好歹有了摸样。已是中午,下楼午饭,继续麻辣烫。又换了服务员,是此前摔滑板遇到的姑娘当班。那天傍晚,我拎着带血的滑板进店,点完单,要的原汤。“原汤也有点辣。”“没事儿,我怕油不怕辣。”我用几根手指夹出手机付款,手掌蹭破两块皮,两小时没处理,血已干成暗红色,新皮还在编织结构,破口处形成浅红发亮的薄膜,抻平手掌就扯着疼,伤口周围覆盖着柏油路上蹭的黑。那姑娘拿着扫码器对准手机,吓得一哆嗦,扫码器一晃,身子退后,咧嘴皱眉。我这才注意到手上的伤口在暖光下像僵尸身上的溃烂。她的反应让我重新感觉到了疼,手一哆嗦,“滴!”付款成功。时隔两周,服务员没再被吓到。
坐在靠街的座位吃麻辣烫,观察着四周的动静。另一桌两个女人在聊天,一个短发,一个长发。短发的戴方框眼镜,棕色短袄,有股英气,说道:“当年你说让我过过当班长的瘾,后来我当上了就没再下来。”“谁知道你还真能干,要不现在也当不上这长那长的。怎么着,要谢谢我吧。”“谢啥?谢你当年给我让贤?”两人笑了。对面女人穿红羽绒服,笑眼,话少,仿佛是短发女人的反义词。过了一会儿,红衣女人的丈夫带着闺女进店,女人没管他们。短发说:“一看你们就是夫妻,谁也不管谁,各玩各的。”
回屋继续开发。又试了试后视镜,删了。测试中发现每个关卡中总有一辆车是最捣乱、最可气的,比如停偏了一点,把车位挤成极限车位,要么停过了,车头从一排车里探出来,拐弯的时候屁股总是蹭到它。游戏时遇到这种车,心里运气,情感羁绊很强,我盘算着或许能有些什么用场。
车像模像样,衬得游戏视角太破落。摄像机摆在高空垂直向下拍摄,视角像最新型的倒车影像,车和周遭情况一览无余,但场景和车的造型都白做了,看起来就是一些方块和圆球。摄像机太平也不行,否则看不清自车与周遭障碍的远近关系。要不随着周围环境的变化自动改变视角?工艺复杂,Game Jam里太小题大做了。念起咒语:“有没有更简单的方案?”念过几轮,望着暂停中的编辑器画面,想到可以试试静止摄像机。视角不能动了,每一关的摄像机拍摄角度既要照顾倒车的能见度,又要兼顾画面的观赏性,是个两难问题。但每个关卡的结构简单,一个画面就可尽收眼底,只要摄像机别太垂直,看着都还不错,至于辅助倒车,只需考虑每关最卡人的那段路程的拍摄角度即可。在几个关卡里摆了摆固定机位,试玩几遍,没什么阻碍。画面因为静止了,更像是监控录像画面,有审美设计的空间。
摄像机暂告段落。时间越来越少,进度还好。车现在有样子,但没生气,往前开往后倒只是平移。得给它弄出点人气儿。车的外观和人有几分接近,前车灯像眼睛,但无神。贴一个光锥在眼上,眼睛会放光了,可谓有神,但看多了觉得这神是假的。因为车灯常亮,车或静或动,眼光只是呆滞。我让车灯在前进时亮起,目光如炬像要与前车拼命,停止时熄灭,就像睡了。后车灯也如法炮制,做成后眼,不如前面的大,但眼小聚光,配上倒车时的低速,让车有了一种偷偷摸摸做贼的气质——前进如君子,倒车如小人。
车像人了,但碰了壁就冒出一个红球,看着不伦不类。我需要换一个简单抽象,大家看了就能懂的符号,这事儿emoji一直在做——找到个生气符号,四条红色弯弯线,勾出个青筋暴露的样子。不是碰撞,而是生气,不像车,但像人。摘掉红球贴上怒气贴纸,驾车在小区里狂飙一通,围墙、敌车各种生气,给我逗乐了。
碰三次游戏失败重来,我在画面左上角加了个碰撞计数的界面。但测试时总也记不清碰了几次,碰着碰着突然就失败了——盯着倒车呢,谁会留意天边的的界面?试试碰一次就失败,全程提心吊胆,但更接近真实倒车——一次都不能碰,否则就4S店见了,而且把界面也省了。
不放心难度,多玩了几遍,总撞在一辆车的右前灯。能不能简单点儿?让车碰到以前撞到的地方不会再发生碰撞,就像给墙、车贴了防撞角,撞得越多,游戏就越简单了。但如此一来,生气符号显得不生气了——撞在自己的伤口上,咬牙忍住疼,让玩家继续开。照着“补丁、纱布”的感觉去找替换的emoji,只找到“创可贴”。一路撞过来,创可贴满天飞,衬得开车人很细心——撞了!下车,俯身查看,从兜里摸出一片创可贴,揭掉塑料纸,瞄准伤口,按上,贴平。塑料纸塞兜里,停好车再找垃圾箱扔,不知不觉已攒了一兜……
第二天晚上
抬头天已暗,下楼吃饭。麻辣烫店里几位员工在吃工作餐。我拿出便携咖啡杯、咖啡粉、牛奶,冲咖啡。“您那是咖啡吗?”男店员胳膊肘支在桌上,探身看着我手里小垃圾桶形状的咖啡粉。“是咖啡。”“你看,我说是咖啡吧!”“这种咖啡粉很好溶,冷水也能冲开,可以直接加常温牛奶里。”“好高级,我们这地方都没见卖的。”“也还好,网上可以买到,要是在意咖啡的口味,可以试试。”“我也喝咖啡,最近才开始能喝美式,之前都喝不下去。”“美式高级,懂咖啡的人才能喝。”我们相视一笑。
工作进展顺利,心气儿高,餐点多了,吃撑了也没吃完。没直接回屋,去旁边的汇宗寺逛逛。天黑了,灯亮了,广场地砖上纵横排列着射灯,上百道光指向天空。我踩着灯走,一盏一盏,不时被光晃到眼睛。红色影壁打着光,要照亮上面的文字,但上面没字。这寺是满汉会盟的产物,分新老两座,都是经历了几番战火几番重修。去年来时,老寺前立着两尊古旧的石狮子,棱角模糊。如今换了新的,纹理清晰锐利,却没什么味道。
回到旅店,洗澡,整理衣物,拖延些时间,迎接晚上的持久战。拿出笔记本,翻出早上在羊汤馆画的关卡草图,照着在编辑器里码。前几关环境是大街,栅栏一段段连成排。第一关最简单,没敌车,终点停车区摆在栅栏边——侧方停车。后面关卡逐步加入敌车,靠着栏杆停几辆就像是闹市里的路边停车,对着栏杆停上一排则像是超市的停车场。第二个环境是小区,用围墙围出一个方形空场,几个关卡发生在同一个场景内,只是停的车有变化——回家早,车位多;回家晚,车位紧张;车停歪点儿就成了难关。最后是树林,参考我常去的森林公园停车场。一大片土地,小树苗间隔栽种,隔出一块块停车区域,虽然只是四角有树挡着,但要想直插进去便感觉到树木位置的刁钻,只能开出来老老实实倒车入库。一鼓作气做完十二关,测一遍,小区里几关卡我很久,又属这个环境关卡多,于是删了两关,但保留一个极难的。玩过一遍,有了连贯的体验,一个爱情故事在脑子里清晰起来。
我站起身,从床上爬过堵路的小桌,到窗前向下张望。夜生活已蔓延开来,街两侧店铺霓虹闪烁,店前车位全满,街上不时开过一辆打着双闪的车,龟速踟蹰不前,是在找停车位。人都在灯光含糊的店里,偶有在外的,也像街上有什么巨大的东西,挤得人只能贴墙快走,赶紧闪进某扇雾气昭昭的门里——应是很冷。我拉紧窗帘,灌下一听红牛。
游戏现在看着像样,但没任何声响,越是美化得多,越是显得哑。该让他出声儿了。碰撞时弹出创可贴,关乎游戏胜败,是最重要的音效。去开源音效网站上搜“车、碰撞”,都是车从远处呼啸而过,“嘭!咣!”,撞得钢铁扭曲、玻璃粉碎——不是这种碰撞,但我会听完,好奇它们怎么录到的。打量了一下游戏画面,搜“玩具、碰撞”,选了个连续敲打铁皮机器人三十下的音频。拽进音频编辑软件,音轨上冒出三十个高低不一的山丘。选中三个声音温和的低矮山丘,裁掉其余,逐条导出到游戏引擎里。开车在小区里撞,听起来像是:车撞了,啪!赶紧糊上个创可贴,司机早有准备,是撞车老手。
接下来是主角汽车的音效。搜索“汽车引擎”,有跑车的轰鸣声,但装不进小车。老爷车的引擎像拖拉机,让小车感觉老态龙钟。有的引擎合适,但声音由小到大,越升越高,最后已超过百公里时速,不能循环播放,没法用。最后锁定一段Mini Cooper的引擎声,应是原地空档怠速的声响,震感强,频率低,像是低速行驶。公司早年做多媒体广告业务时,我坐过一次甲方项目经理的Mini Cooper。车从头到尾贴英国米字旗,车座硬,车过沟过坎颠得厉害,开、坐这种车都需要拿着股劲儿。我爱躺倒坐,坐不住这种车。今天我有机会将它的心脏塞到我做的小车里。音频三分钟长度,选出稳定、循环感好的十秒,处理成循环音轨,绑到车上。随开随播,能感到车的移动是由引擎在驱动了。开了一阵,盯着车,听着声,还是有什么地方别扭——引擎轰隆隆,但车开起来稳稳的,与声音不合拍。算出引擎震动的频率,据此让车身上下震动,音画有了配合。
把游戏打个包,上传到网站上,建个临时的游戏下载页面,避免最后提交关头抓瞎。抬头看表,凌晨三点,眼皮撑不住了。扑倒在床,定了一小时的闹钟,依次向后每10分钟闹一次,重复六次。脱衣脱袜盖被,摆出大睡一场的架势,但衣服叠好搁在枕边,不换短袖睡衣,穿长袖睡去,给起床减少负担。脑子还滞留在工作状态,翻腾许久。分不清是被闹钟吵醒了,还是一直在半睡半醒间等到闹钟响起。坐起身,呆一会儿,扫了眼表,一件件拿起叠好的衣服穿上,坐回工作台。头不沉了,但晕,眼发酸,越揉越酸,胸口像憋着口气喘不出来。拿起红牛,又放下。电热壶倒一点水,坐等烧开,兑满凉水,灌下一大杯温水。扫了眼剩下的工作,好在都不太靠脑子。
调配色。依真实经验:砖灰、树绿、车多彩,归置出来不少有颜色的东西。时间所剩无几,我再次掏出心里那把“剪刀”——取消主角车之外的其他颜色,只设一白一灰。白为主,景物大面积喷涂:墙围、栏杆、树干。灰为辅,点缀细部:墙角、柱头、树叶。游戏世界变成了灰白,失去了性格,眼睛更离不开主角车那团橘红。
灰白只能渲染出明暗层次,不同环境还需要不同的氛围色彩。首先是街道。去想象最糟糕的人类城市——喧闹,少绿,人匆忙,聒噪的汽车,呼啸而过带起一阵风,但柏油路连灰尘都卷不起来——规整而缺乏生命的活力。我把环境色调白,去靠近那毫无植被遮蔽的正午街道的乏味感——一片亮灰,整洁方便,但呆久了不自在。第二个环境是我熟悉的小区。白天回家停车不难,因为车都开去上班了。从天擦黑开始,车陆续回家,停车难度逐渐升高。若是深夜回家,开到大门口往里望,心都得提起来——能否停下全凭运气……拉回游离的思绪,得出结论:夜间停车难,小区应是夜景。夜的颜色鬼魅多变,我自知美术不精,去网上搜寻色板。以“夜晚”关键词检索出青、蓝、紫几种夜色,作为环境色叠加在灰白的世界上。试了几个都太暗——真是深夜,什么都看不清,次点儿的显示器怕是要黑成一团。固定颜色,提高亮度,直到能看清环境,调出一片月色皎洁。郊外树林延用此法,搜寻森林的绿,让郊外如明媚的早春。
那辆在每个关卡里制造麻烦、别别扭扭的“敌车”,翻找红色系色板,挑出一个玫红,有女性的气质,又隐含侵略性。再给敌、我二车的材质增加一些反光,一红一橘在环境里格外显眼,如话剧舞台上的男女主角。
窗帘透出微光。拉开一角,太阳还没露头,晨光借着大气的折射先行抵达,灰色的街道和低矮的房子被照出些细节,染上一层黄,倒像是游戏里的环境。看了眼比赛官网,倒计时还剩一小时三十三分,没读帖子,想必不少人已经“交作业”了,还有人宣布弃权并祝大家好运。
回到音效网站,搜索三个环境的氛围声音。街道搜出来大多是车水马龙,摩托、汽车不时呼啸而过,都用不了。在给小区找音效的时候反而找到一条合适的,标题写的是“白天的住宅区”,声音主要是马路旁的嘈杂声,远远的、含糊的,始终不会太突兀。游戏里的小区是夜里,按住宅区去搜都是白天的喧闹,于是改找夜间的环境音效。夜里的声音若不在市中心,便会混进自然的声音,碰到一条有蛐蛐叫的,氛围感一下就对了。森林的声音不容易找歪,无非是飞虫、流水、鸟鸣、风啸,游戏里的森林阳光明媚、树木纹丝不动,选定一条鸟鸣稀少的。鸟一叫,更显森林幽静。
回到游戏首页检查,白底上一行字:点击开始。打开游戏结局页,黑底大字:结束。想起上午的一个灵感:“开端结局用游戏关卡实现,首尾呼应”。新建一个游戏关卡,里面空着只摆一个停车框,摄像机改平视,让停车框居左,车居中。车入框后,摄像机缓缓抬起,露出一片空白,标题浮现,随后直接进入第一个正式关卡。既然首尾呼应,复制一个首页关卡放在最后,但停车框旁多了那辆小红车,原因留给玩家自己去猜。停车到位后的标题换成“结束”字样。开了一趟,不像是结束,因为天色还是大亮。调出环境参数面板,打开雾效,雾色设为红,环境色设为黄,把雾效拉近,画面在车头前方从黄过渡到红,渲染出一幅夕阳正浓的景致。游戏结尾的意境够了,开端反着来——灰白过渡到淡蓝,调出个孤独黎明的氛围。开了一趟,氛围都对,只是游戏标题还没定下来。
做的游戏是停车,但三个环境的关卡玩下来,心里隐约能形成一段故事——是停车,也是故事——想起儿时常看的电视剧《编辑部的故事》,游戏起名为《停车的故事》,英文译为A Parking Story。放个A在前,暗示这是段若有若无的小故事。
切到浏览器,官网提示还剩九分三十六秒。打出Windows游戏包,传到此前准备好的游戏页面上。
再看官网,提示还有额外一个小时用于提交游戏。忘了这条“额外时间”的规则了,长出口气,拉直瘫软在椅子上的身体。回编辑器里测一遍游戏,从首页开始。时间紧迫,不能真玩,把车直接放入停车框,仅检查能否顺利过关。游戏算是做完了,但比赛还没完。进入各关卡,将车摆在好看易懂的位置,逐一截图。十多张截图里,每个环境只留一张最精彩的,传到网站上装点门面。再挑出最好理解的一个关卡,玩一遍录个视频,选最纠结的五秒,导出gif动图,传到网上作为游戏封面。游戏文字描述省了,停车这事儿还有人看不明白吗?“额外一小时”已过,比赛进入试玩评分环节。我在官网、游戏页面、编辑器几个窗口间切来切去,像是在检验成果,又像是在检查疏漏,但实际什么也没做。
第三天清晨
再抬头已是八点,拉开窗帘,阳光刺眼。关电脑,下楼。停车场里,车未落霜,也许是霜已经晒化了。我围着车转了一圈,没开。溜达去羊汤馆,九点才到。每张桌子都坐满人,老板娘在后厨帮忙,逮住一个服务员点餐,要了个沙葱包子——今天来的晚,包子能吃上新蒸的。一楼满座,上二楼,坐听旁桌聊天,讨论今天驾车穿越草原,直听到他们敲定了方案餐才上来。包子里的沙葱翠绿,但羊汤味儿淡,羊肚没烂——总是要留些遗憾。