帝都的风雪还没停。
林希拍掉肩头的雪,推开738厂临时研发室的木门。
研发室原先是个杂物间。
六个煤球炉子烧得通红,屋里热气扑面。
十几名年轻人挤在里面,汗味、煤烟味、焊锡味混在一起,呛得人嗓子发紧。
人群中央,一台14寸彩电摆在铺着绿呢子的工作台上。
屏幕上色块闪烁。
旁边裸露的PCB板上,飞线密密麻麻,像蜘蛛织了半张网。
“动了动了!”
“右边那台坦克出来了!”
“往左打!”
“快开炮!”
满屋子的大学生拍着桌子大呼小叫,跟打仗似的。
看到林希进门,领头的平头青年赶紧挤出来。
他黑眼圈重得像挨了两拳,可眼睛亮得吓人。
这是燕大计算机系的尖子生,李建新。
“林总!”
他递过来一个长方形硬塑料手柄。
这是林希托华闰特意从樱花国买回来的。
李建新声音里压着兴奋:
“咱们花了一个礼拜,把《坦克大战》的底子敲出来了。”
“您给掌掌眼!”
林希脱下大衣,没客套。
他直接拉开折叠椅坐下,接过手柄。
脑海里,弹幕已经开始飘了。
【卧槽这画面……说是坦克大战,我真没认出来。】
【这画面,有点抽象啊!】
【别闹,83年的8位机能有画面就不错了,你还想要虚幻5?】
【重点是这帮人一个礼拜就把雏形敲出来了!83年的大学生什么含金量啊!】
林希没说话,大拇指按在方向键上。
屏幕上,由黄色方块拼成的粗糙坦克开始移动。
他往前推。
坦克动了。
猛地松手。
坦克却像在冰面上踩刹车,又往前滑了半个身位才停下。
林希调转车头,试图贴着屏幕边缘的砖墙走。
坦克刚蹭到墙皮,画面猛地一顿。
方向键失灵。
屏幕足足冻了两秒。
下一刻,坦克在原地抽搐了几下,竟然弹到了墙的另一边。
林希又连按两下开火键。
“啵——啵——”
电视喇叭里传出沉闷的电子音。
一个白色小点慢悠悠飘出去,打在土墙上。
停了半秒。
墙才缺了一块。
没有爆炸,没有火花,小点就这么没了。
屋里安静了三秒。
脑海里弹幕瞬间炸了。
【好家伙,这祖传画质,包浆都盘出来了。】
【这手感看着都急,坦克搁这溜冰呢?】
【贴墙卡死,开炮延迟。卖北美能被雅达利玩家骂到退钱。】
【这不是坦克大战,这是坦克散步。】
林希放下手柄。
研发室里的热闹劲儿,肉眼可见地矮了半截。
他转头看向李建新:
“说说,问题在哪。”
李建新脸一下涨红了。
他快步走到黑板前,拿粉笔敲着流程图,语速很快:
“林总,真不是代码糙。”
“是这块8位芯片算力太低。”
“主要问题在碰撞判定。”
“我们现在是逐像素扫描。”
“坦克每走一步,就拿它覆盖的256个像素点,跟周围障碍物逐一比对。”
“Z80主频只有3.5兆赫兹。”
“一秒要刷新六十次画面,还得算敌方坦克。”
“运算量一上来,帧率直接掉到个位数。”
他攥着手里的方格纸,声音里透着不甘:
“我试过降低判定频率,四帧算一次。”
“结果坦克直接穿墙。”
“贴墙卡死,也是因为算力被吃满了。”
“这是物理算力极限,真没法改了。”
旁边几个学生跟着点头。
在他们的认知里,模型越完整,逻辑越严谨。
至于机器跑不跑得动?
那当然是机器的问题。
林希看着黑板上密密麻麻的算法草稿。
思路清晰。
也确实严谨。
但严谨不等于好用。
在课本上,这是标准答案。
在工程里,这是拿榔头拧螺丝。
“让开。”
李建新愣了一下,下意识让开半步。
林希扫了一眼代码笔记,坐到开发机前。
“你们的思路没问题。”
“但代码不是这么写的。”
他拿起粉笔,在黑板上画了个不规则的坦克轮廓。
“你们现在算每一个像素。”
“可玩家看不到像素。”
说着,他干脆利落地在坦克外面画了一个长方形方框。
“给每个物体包一个看不见的矩形边界。”
“在电脑里,它就是四个数。”
“X1,Y1,X2,Y2。”
“墙壁也一样。”
林希用粉笔敲了敲黑板:
“判定碰撞时,不比像素。”
“只比这四个坐标。”
“X轴有没有重叠?”
“Y轴有没有重叠?”
“都有,就是撞了。”
“两次比较,一次加减,完事。”
“这叫碰撞箱。”
屋子里瞬间静了。
李建新半张着嘴。
脑子里像被人敲了一锤。
不用算几百个像素?
只算四个坐标?
“两次?”
他声音有点发干。
林希看他一眼。
“两次。”
他转回身,双手压上键盘。
每一下敲击,都像敲在李建新的心口上。
屏幕上,几百行臃肿的像素判定代码被删掉。
汇编指令一行行跳出来。
……
林希没有重写全部程序。
他只把最吃算力的核心判定剜了出来,换成一段干净到近乎寒酸的逻辑。
不到两分钟。
核心逻辑十七行。
连注释都没写。
“编译,运行。”
林希按下回车,把手柄丢给李建新。
画面刷新。
李建新咽了口唾沫,大拇指按下方向键。
坦克启动。
没有延迟。
松手。
稳稳停住。
一毫米都没多滑。
他死死贴住砖墙往上推摇杆。
黄色坦克顺着墙根往上走,丝滑得像抹了油。
不卡顿。
不穿墙。
他猛按开炮键。
“砰砰砰!”
三发炮弹几乎没有延迟,干净利落地砸穿砖墙。
监控数据上,算力占用瞬间降了三成。
李建新僵在原地。
周围几个学生看看屏幕,又看看黑板上的方框。
没人说话。
困扰他们五天五夜的“物理极限”,被四个坐标点干碎了。
直播间弹幕滚动起来:
【我去,碰撞箱!AABB碰撞箱!】
【这玩意儿后世是游戏引擎第一课,但在83年……他们连游戏引擎都没听过。】
【主播这是拿三十年后的行业共识,降维打击八十年代萌新啊。】
【工业设计第一法则:能偷懒绝不硬算!】
林希拍掉肩头的雪,推开738厂临时研发室的木门。
研发室原先是个杂物间。
六个煤球炉子烧得通红,屋里热气扑面。
十几名年轻人挤在里面,汗味、煤烟味、焊锡味混在一起,呛得人嗓子发紧。
人群中央,一台14寸彩电摆在铺着绿呢子的工作台上。
屏幕上色块闪烁。
旁边裸露的PCB板上,飞线密密麻麻,像蜘蛛织了半张网。
“动了动了!”
“右边那台坦克出来了!”
“往左打!”
“快开炮!”
满屋子的大学生拍着桌子大呼小叫,跟打仗似的。
看到林希进门,领头的平头青年赶紧挤出来。
他黑眼圈重得像挨了两拳,可眼睛亮得吓人。
这是燕大计算机系的尖子生,李建新。
“林总!”
他递过来一个长方形硬塑料手柄。
这是林希托华闰特意从樱花国买回来的。
李建新声音里压着兴奋:
“咱们花了一个礼拜,把《坦克大战》的底子敲出来了。”
“您给掌掌眼!”
林希脱下大衣,没客套。
他直接拉开折叠椅坐下,接过手柄。
脑海里,弹幕已经开始飘了。
【卧槽这画面……说是坦克大战,我真没认出来。】
【这画面,有点抽象啊!】
【别闹,83年的8位机能有画面就不错了,你还想要虚幻5?】
【重点是这帮人一个礼拜就把雏形敲出来了!83年的大学生什么含金量啊!】
林希没说话,大拇指按在方向键上。
屏幕上,由黄色方块拼成的粗糙坦克开始移动。
他往前推。
坦克动了。
猛地松手。
坦克却像在冰面上踩刹车,又往前滑了半个身位才停下。
林希调转车头,试图贴着屏幕边缘的砖墙走。
坦克刚蹭到墙皮,画面猛地一顿。
方向键失灵。
屏幕足足冻了两秒。
下一刻,坦克在原地抽搐了几下,竟然弹到了墙的另一边。
林希又连按两下开火键。
“啵——啵——”
电视喇叭里传出沉闷的电子音。
一个白色小点慢悠悠飘出去,打在土墙上。
停了半秒。
墙才缺了一块。
没有爆炸,没有火花,小点就这么没了。
屋里安静了三秒。
脑海里弹幕瞬间炸了。
【好家伙,这祖传画质,包浆都盘出来了。】
【这手感看着都急,坦克搁这溜冰呢?】
【贴墙卡死,开炮延迟。卖北美能被雅达利玩家骂到退钱。】
【这不是坦克大战,这是坦克散步。】
林希放下手柄。
研发室里的热闹劲儿,肉眼可见地矮了半截。
他转头看向李建新:
“说说,问题在哪。”
李建新脸一下涨红了。
他快步走到黑板前,拿粉笔敲着流程图,语速很快:
“林总,真不是代码糙。”
“是这块8位芯片算力太低。”
“主要问题在碰撞判定。”
“我们现在是逐像素扫描。”
“坦克每走一步,就拿它覆盖的256个像素点,跟周围障碍物逐一比对。”
“Z80主频只有3.5兆赫兹。”
“一秒要刷新六十次画面,还得算敌方坦克。”
“运算量一上来,帧率直接掉到个位数。”
他攥着手里的方格纸,声音里透着不甘:
“我试过降低判定频率,四帧算一次。”
“结果坦克直接穿墙。”
“贴墙卡死,也是因为算力被吃满了。”
“这是物理算力极限,真没法改了。”
旁边几个学生跟着点头。
在他们的认知里,模型越完整,逻辑越严谨。
至于机器跑不跑得动?
那当然是机器的问题。
林希看着黑板上密密麻麻的算法草稿。
思路清晰。
也确实严谨。
但严谨不等于好用。
在课本上,这是标准答案。
在工程里,这是拿榔头拧螺丝。
“让开。”
李建新愣了一下,下意识让开半步。
林希扫了一眼代码笔记,坐到开发机前。
“你们的思路没问题。”
“但代码不是这么写的。”
他拿起粉笔,在黑板上画了个不规则的坦克轮廓。
“你们现在算每一个像素。”
“可玩家看不到像素。”
说着,他干脆利落地在坦克外面画了一个长方形方框。
“给每个物体包一个看不见的矩形边界。”
“在电脑里,它就是四个数。”
“X1,Y1,X2,Y2。”
“墙壁也一样。”
林希用粉笔敲了敲黑板:
“判定碰撞时,不比像素。”
“只比这四个坐标。”
“X轴有没有重叠?”
“Y轴有没有重叠?”
“都有,就是撞了。”
“两次比较,一次加减,完事。”
“这叫碰撞箱。”
屋子里瞬间静了。
李建新半张着嘴。
脑子里像被人敲了一锤。
不用算几百个像素?
只算四个坐标?
“两次?”
他声音有点发干。
林希看他一眼。
“两次。”
他转回身,双手压上键盘。
每一下敲击,都像敲在李建新的心口上。
屏幕上,几百行臃肿的像素判定代码被删掉。
汇编指令一行行跳出来。
……
林希没有重写全部程序。
他只把最吃算力的核心判定剜了出来,换成一段干净到近乎寒酸的逻辑。
不到两分钟。
核心逻辑十七行。
连注释都没写。
“编译,运行。”
林希按下回车,把手柄丢给李建新。
画面刷新。
李建新咽了口唾沫,大拇指按下方向键。
坦克启动。
没有延迟。
松手。
稳稳停住。
一毫米都没多滑。
他死死贴住砖墙往上推摇杆。
黄色坦克顺着墙根往上走,丝滑得像抹了油。
不卡顿。
不穿墙。
他猛按开炮键。
“砰砰砰!”
三发炮弹几乎没有延迟,干净利落地砸穿砖墙。
监控数据上,算力占用瞬间降了三成。
李建新僵在原地。
周围几个学生看看屏幕,又看看黑板上的方框。
没人说话。
困扰他们五天五夜的“物理极限”,被四个坐标点干碎了。
直播间弹幕滚动起来:
【我去,碰撞箱!AABB碰撞箱!】
【这玩意儿后世是游戏引擎第一课,但在83年……他们连游戏引擎都没听过。】
【主播这是拿三十年后的行业共识,降维打击八十年代萌新啊。】
【工业设计第一法则:能偷懒绝不硬算!】
