第一章 2006,网吧的键盘声

李君宪最后记得的,是2026年上海那个雨夜。

医院消毒水的味道混着窗外梅雨季的潮湿,心电监护仪的滴滴声越来越慢。同事在病床边低声说:“君宪,你那个项目……被砍了。”他想笑,笑不出来。三十五年,从洛阳到上海,从小策划做到主策,做过的游戏几十个,能被人记住名字的,一个都没有。

眼前黑下去的瞬间,他脑子里闪回的,是大学时在网吧通宵敲代码的深夜,屏幕蓝光映在脸上,那种纯粹的、做点什么东西的快乐。

——

“网管!三十五号机再加五块!”

粗粝的喊声把李宪从黑暗里拽出来。

他猛地睁开眼。

油腻的键盘,十七寸CRT显示器凸起的弧度,屏幕右下角的时间:2006年3月18日,星期六,22:47。QQ在右下角跳动,是个女孩的卡通头像。耳机里传来CS1.6的枪声和队友的脏话,隔壁座的大哥正敲着键盘在《梦幻西游》里抓鬼。

“我……”李宪低头看自己的手。

手指修长,没有长期敲键盘留下的薄茧,手背上更没有那块2023年烫伤的疤痕。他颤抖着摸向脸颊——皮肤紧实,没有熬夜熬出的法令纹。抬头看向黑屏显示器里模糊的倒影:蓬乱的头发,年轻到有些陌生的脸,还有那件洗得发白的深蓝色李宁运动外套。

这是他大三下学期的模样。

“重生……”这个念头像电流般击穿全身。

他几乎是跌撞着站起来,椅子腿在网吧水泥地上刮出刺耳的声音。周围有人不满地瞥了他一眼,又迅速转回屏幕。李宪——不,现在他是李君宪了,他扶着油腻的桌面,大脑疯狂运转。

2006年。

智能机时代的前夜。诺基亚N系列刚出,Symbian系统如日中天,但所有人都认为手机就是用来打电话发短信的。iPhone还要等明年才发布。国内游戏市场是《传奇》《梦幻西西游》《征途》的天下,单机游戏被破解和盗版逼到绝路,独立游戏?这个词还没诞生。

而自己,洛阳理工学院计算机系大三学生,二十一岁。

“君宪,发什么呆呢?”旁边伸过来一只手,拍了拍他肩膀。

是王浩,睡他上铺的兄弟,圆脸,戴黑框眼镜,正叼着根没点燃的烟——网吧禁烟,他过干瘾。前世里,王浩毕业后回了老家信阳,考了公务员,后来偶尔在同学群发点养生文章。

“没、没事。”李君宪声音有些干涩,他重新坐下,强迫自己冷静。

“你博客不是要更新么?”王浩凑过来看屏幕,“写你那什么……游戏设计理论?要我说,有这功夫不如跟我刷副本,我这儿缺个医生。”

屏幕上是新浪博客的编辑界面。

博客名称:“君宪的游戏手札”。最新一篇草稿标题:《关于游戏叙事结构的几点思考》,写了三行,卡住了。发布时间是昨晚。留言数:0。访问量:可怜的127。

就是这个博客。

前世的李君宪,从大三开始断断续续写,写了十几年,最火的一篇转载也就三百阅读。他曾经天真地以为,只要把想法写出来,总会被人看见。后来他才明白,在算法和流量为王的时代,没有推广,真诚的文字连被埋葬的资格都没有。

但此刻,这个简陋的博客界面,在李君宪眼里却闪着光。

2006年的博客,是中文互联网最后的知识贵族时代。keso、和菜头、王小峰……这些名字正在用长篇博文定义什么叫“内容”。新浪博客刚推出不久,徐静蕾的“老徐博客”正火,但技术、创作类垂直内容,还是一片蓝海。

更重要的是——人人网。

李君宪点开浏览器收藏夹,登录那个熟悉的蓝色界面。这时还叫“校内网”,限定高校IP注册,正是最纯粹的大学生社交圈。他的主页空空荡荡,只有几个同班同学,最新动态是室友张强发了张食堂的土豆鸡块照片。

还有……息壤中文网。

他输入这个记忆深处的网址。网站界面朴素,分类还是“武侠”“奇幻”“都市”那些老派标签,但首页推荐上,已经能看到《鬼吹灯》《明朝那些事儿》这些后来封神的名字。前世的他,也曾是息壤的扑街作者,写了两本没人看的网游小说。

游戏、博客、小说。

这三个在前世各自挣扎的支线,此刻在2006年的这个夜晚,在洛阳理工学院后街这家名为“极速”的网吧里,轰然交汇。

“王浩,”李君宪转过头,声音因为激动而有些发抖,“你说,如果做一个游戏,不打架,不升级,就是……开个小店,做做饭,有人来吃饭,听听他们的故事,会有人玩吗?”

王浩愣了两秒,然后大笑:“你睡糊涂了吧?不打架谁玩啊!《传奇》砍人不好玩吗?《梦幻》刷装备不香吗?”他凑近,压低声音,“我告诉你,隔壁班刘明他哥,在深圳做游戏,说现在最火的是《征途》,充钱就能变强!你要做就做这种,赚钱!”

李君宪没接话。

他重新看向屏幕,新建了一篇博客。

标题删掉重写,手指在键盘上悬停了几秒,然后落下:

《回到2006,我想做点“没用”的东西》

“现在是2006年3月18日晚上十一点。我刚在网吧醒来——字面意思的醒来,也可能是重生。周围是CS的枪声、梦幻西游的背景音乐,还有键盘的噼啪声。空气里有泡面和烟味。

“突然想做个游戏。很小的那种。小到可能只有几十兆,小到用现在的电脑,十年前的老爷机都能跑。

“这个游戏里,没有打打杀杀,没有升级刷装备。你只是洛阳老城一个小吃店的老板,每天早上去集市买食材,回来研究菜谱,招待南来北往的客人。客人会聊天,会讲他们的故事,你听完了,故事就记在你的小本子上。天气会变,春天有牡丹花会,冬天会下雪。生意有好有坏。

“听起来很无聊,对吧?

“我也觉得。在2006年做这种游戏,大概会被所有人笑。但我就是想做。

“为什么?因为我看过2026年的游戏市场。那时有4K光追,有VR头盔,有开放世界大到让你跑断腿。但很多人下班回家,打开Steam,对着几百个游戏,不知道玩什么。我们有了最好的技术,最炫的画面,但好像把最开始那种‘做点好玩东西’的快乐弄丢了。

“我想找回那种快乐。从最小的东西开始。

“这个游戏,我管它叫《洛阳小店》。

“我会在这里记录开发过程。每天更新。写到做出来为止,或者写到放弃为止。

“最后,如果你也在这个时代的某个角落,想做个‘没用’的东西,请联系我。也许我们可以一起,把这个无聊的世界,变得稍微有趣一点点。

“——李君宪,于洛阳理工学院后街,极速网吧,35号机。”

敲下最后一个**,李君宪长舒一口气。

没有检查,没有犹豫,他直接点击了“发布”。

博客页面刷新,显示发布时间:2006-03-18 23:11:22。阅读数从0跳成1——那是他自己。

“你写完了?”王浩凑过来看,“我靠,真写啊?还2026年……你漫画看多了吧?”

“就当是漫画吧。”李君宪笑了笑,关掉博客页面,打开Visual Studio 2005。这是他电脑上唯一的开发环境,还是上学期《C++程序设计》课装的。屏幕亮起蓝色的IDE界面,一个空白的Win32控制台工程。

他没有立刻开始写代码,而是打开Windows自带的画图工具。

像素画。

这是他在2026年带项目时,为了减压自学的技能。那时像素风独立游戏回潮,《星露谷物语》《蔚蓝》证明了,好的游戏不在画面多炫,而在心有多诚。

他新建一个32x32像素的画布。

第一个要画的,是主角。一个模糊的、包子脸的小人,系着围裙。没有细节,只有轮廓。然后是店面:一个四格宽的铺面,门口挂个“营业中”的木牌。再是街道:青石板路,远处模糊的城门楼剪影——那是丽景门。

粗糙,简陋,甚至有些幼稚。

但李君宪画得很认真。鼠标移动的每一格,都带着某种仪式感。这是他在新时空的第一笔。前世的他,画过无数精细的原画,3D模型,次时代贴图,但都没有此刻这个32x32的像素小人来得真实。

“你这画的是啥啊?”王浩看了一会儿,摇摇头,“还没我小学画的像。行了,我真刷副本去了,你继续你的行为艺术。”

李君宪没理他。

他保存图片,命名为“player_stand_1.bmp”。然后切回VS,开始敲代码。

没有引擎,没有框架,一切从零开始。他决定用最原始的Win32 API,配合绘图软件。这样写出来的代码效率低,但兼容性最好,2006年任何一台Windows电脑都能跑。

第一个晚上,他只做了三件事:

1. 创建了一个800x600的窗口,标题是“洛阳小店 v0.01”。

2. 把那个32x32的像素小人贴到窗口中央。

3. 让小人能用WASD键移动,碰到窗口边界会停。

当那个粗糙的包子脸小人,随着他的按键在屏幕上笨拙地移动时,窗外天色已经微亮。

“我操,六点了?”王浩伸了个懒腰,屏幕上是《梦幻西游》的登录界面——他通宵抓鬼,现在准备下线。“你搞了一宿,就搞出个这?俄罗斯方块都比这好玩。”

李君宪没说话,只是盯着屏幕上那个简陋的窗口。

小人停在那里,背后是空白的灰色背景。但在李君宪眼里,那空白处正在慢慢浮现出东西:冒着热气的汤锅,木质的长条桌,墙上的菜牌,窗外摇曳的树影,还有推门进来的、模糊的客人轮廓。

“这只是一个开始。”他低声说,更像是说给自己听。

结账下机。走出网吧时,清晨的冷风扑面而来。

洛阳三月的早晨,天是灰蓝色的,街上已经有早起卖早点的摊子支起炉灶,胡辣汤的香味飘过来。李君宪深吸一口气,空气里有煤烟、泥土和食物混合的味道——这是2006年北方小城的味道,他已经二十年没闻过了。

口袋里的诺基亚3100震动了一下。

是条短信,来自陌生号码:“看了你的博客。游戏很有意思。我是美术系的,也许能帮忙画点像素图。———林薇”

李君宪站在网吧门口,盯着那条短信,看了足足一分钟。

然后他抬起头,看向东边天际。云层裂开一道缝隙,金色的晨光漏下来,正好照在远处老城的城墙轮廓上。

他按下回复键,一个字一个字地敲:

“我是李君宪。明天下午三点,图书馆一楼咖啡角见?”

发送。

把手机塞回口袋,他裹紧那件洗得发白的李宁外套,朝着学校方向走去。脚步很轻,很稳。

路过校门口那家打印店时,他停下来,走进去。

“老板,复印一份这个。”他从笔记本上撕下一页纸,上面是用圆珠笔画的、歪歪扭扭的草图:一个简单的店面平面,灶台、桌椅、柜台的位置。

打印店老板是个中年女人,接过纸看了一眼:“这是啥?店铺装修图?”

“算是吧。”李君宪笑了笑,“游戏里的店铺。”

老板摇摇头,没再多问。复印机嗡嗡作响,吐出一张带着热度的A4纸。李君宪付了五毛钱,把复印件仔细折好,塞进书包夹层。

走出打印店时,他最后回头看了一眼网吧的招牌。

“极速网吧”四个红色大字,在晨光里显得有些褪色。三十五号机,那个他重生的地方,此刻应该已经被网管清理干净,等待下一个通宵的少年。

但他知道,有些东西,已经不一样了。

回到宿舍时,另外两个室友还在睡觉。张强的鼾声震天,刘明蜷在被窝里,只露出一撮头发。王浩已经爬上了床,衣服都没脱就睡着了。

李君宪轻手轻脚地坐到自己的书桌前。

那台花三千块攒的台式机,显示器是二手的大肚子CRT,机箱嗡嗡作响。他按下开机键,等待漫长的XP启动。桌面壁纸是Windows自带的草原蓝天,图标乱七八糟。

他新建了一个文件夹,命名为“LYXD”(洛阳小店拼音首字母)。

然后把昨晚的代码工程拖进去,像素图拖进去,那张复印的草图用手机拍了照(30万像素的摄像头,拍出来一片模糊),也存了进去。

做完这些,他打开新浪博客。

那篇《回到2006,我想做点“没用”的东西》下面,有了三条留言。

第一条是广告:“专业代写毕业论文,加Q详谈”。

第二条是:“博主中二病晚期,鉴定完毕。”

第三条,来自一个叫“像素猫咪”的用户:“喜欢你的想法。我学动画的,也在做独立小游戏,可以交流。另外,你博客的音乐播放器代码写错了,自动播放会卡住。”

李君宪盯着第三条留言,看了很久。

然后他回复了“像素猫咪”:“谢谢。音乐播放器已修复。另外,你的《像素猫咪大冒险》我玩过,第三关的跳跃手感可以调松一点。”

发送。

他关掉博客,打开人人网。

在自己的主页,他发了一条新状态:

“开始做一个游戏,叫《洛阳小店》。你是洛阳老城一个小吃店的老板。就这样。每天更新进度。”

配图是那张粗糙的店面草图。

发布。

做完这一切,窗外的阳光已经彻底亮起来,透过脏兮兮的玻璃窗,在水泥地上投出斜斜的光斑。宿舍里依然有鼾声,有梦呓,有年轻身体熟睡时散发的温热气息。

李君宪靠在椅子上,闭上眼睛。

前世的片段还在脑海里闪回:上海凌晨的写字楼,永远开不完的评审会,被砍掉的项目,病历上冰冷的诊断,还有最后雨夜里逐渐模糊的天花板。

然后他睁开眼。

眼前是2006年大学宿舍斑驳的墙壁,墙上贴着《魔兽世界》的海报,室友从老家带来的旧挂历,还有一张不知道谁贴的、已经卷边的课程表。

他拿起笔,在桌上的台历上,把3月19日这一天,用力地圈了起来。

旁边,他写下几个小字:

“第一天。”

然后他打开VS,新建了一个源代码文件,命名为“game_main.cpp”。

光标在屏幕上闪烁,等待第一个字符。

李君宪活动了一下手指,敲下:

// 洛阳小店 - 主程序开始

// 作者:李君宪

// 日期:2006年3月19日

// 这是第一天。

#include

#include

窗外,学校的起床广播响了。是那首万年不变的《运动员进行曲》,穿过晨雾,传遍整个校园。

新的一天,开始了。

而他,刚刚写下这个新时代的第一行代码。