李建新两手攥着裤缝。
他写了几天、几百行的逻辑。
林希用十七行干掉了。
不是写得快。
是他还在一块砖一块砖地数墙,林希已经在墙外画了个框。
“这个方法……”
李建新喉结动了动。
“叫什么?”
“碰撞箱。”
林希头也没抬。
“以后做任何游戏,第一件事就是套碰撞箱。”
“记住了。”
李建新立刻翻开笔记本。
他把“碰撞箱”三个字写了一遍。
又写了一遍。
最后用力写了第三遍,笔尖差点划破纸。
林希端起搪瓷缸,喝了口温水,扫视全场。
“机器的算力是死的。”
“脑子是活的。”
“做工程产品,不是写数学论文。”
“别把机器当牲口使,逮着就往死里榨。”
没人吭声。
煤球炉子里,火星轻轻爆了一下。
林希放下搪瓷缸。
“下一个谁的进度?”
角落里,负责《逻辑方块》的小戴哆嗦了一下。
是的,既然在这个时代,《俄罗斯方块》是华国人发明的,林希就给他换了个名字。
《逻辑方块》,一听就是个教育软件!
小戴顶着鸡窝头,扶着眼镜挤出来。
刚才还看热闹,现在轮到自己,底气顿时掉了半截。
“林总。”
“底层消除逻辑跑通了。”
“但是……”
他看了一眼李建新,又看了一眼黑板上的“碰撞箱”。
声音更虚了。
“玩到第六层就死机。”
“这回……真是物理极限。”
这话一出,旁边几个学生表情都有点微妙。
刚才李建新也是这么说的。
结果物理极限被十七行代码按在地上摩擦。
小戴赶紧调出监控数据,指着飙红的内存条解释:
“机器内存只有2K。”
“棋盘一共200个格子。”
“我用标准整型变量记录状态,1是有,0是没有。”
“一个整型占2字节。”
“200个格子就是400字节。”
“再加上下落、消行、方块形态……”
“一到第六层,内存就塞爆,直接溢出。”
林希揉了揉太阳穴。
早期语言里,拿16个比特存一个只需要1个比特的“是非题”。
这不是写程序。
这是烧钱。
虽然现在烧的是内存。
“你在2K内存上,用整型存1和0?”
林希看他的眼神,像老师傅看徒弟拿菜刀拧螺丝。
“这不叫编程。”
“这叫暴殄天物。”
“你当内存是你家大白菜,论吨批发的?”
小戴眼镜滑到鼻尖,忘了扶。
林希站起身,拿起粉笔。
“一个字节几个比特?”
小戴立刻回答:
“8个。”
“既然只有1和0两种状态。”
林希在黑板上写下:
0 0 0 0 0 0 0 0
“一个字节,8个比特,天然就是8个开关。”
“开,就是有。”
“关,就是无。”
“为什么要用完整整型记一个格子?”
他用力写下几个符号:
<< >> &
“位运算。”
“左移,右移,按位与。”
“一个字节管8个格子。”
“10列棋盘,两个字节就够。”
“20行,一共40个字节。”
他转头看小戴:
“400字节变40字节。”
“省出来的空间,够你玩到第一百层。”
小戴盯着黑板上那八个0。
旁边有人下意识掰着手指数,数到第八下,手停在半空。
一个字节,当八个格子用?
还能这么玩?
林希已经坐回键盘前。
几行极简的汇编指令跳出来。
位移。
按位与。
清除一行时,数据整体下移。
没有花里胡哨的结构。
没有臃肿的循环。
干净得像一把剔骨刀。
重新编译。
运行。
简陋的方块开始落下、堆积、消行。
第五层。
第十层。
第十五层。
画面依旧流畅。
内存占用暴降八倍,纹丝不动。
小戴盯着屏幕右下角的数字,半天才挤出一句:
“……这也行?”
研发室里只剩外面的风雪声。
如果说“碰撞箱”是换一条路绕过大山。
那“位运算”就是把一块铜板劈成八瓣花,还嫌不够省。
直播间弹幕飞过:
【给八十年代大学生一点小小的位运算震撼!】
【逼急了,老派程序员能把代码掰碎塞进寄存器里。】
【主播这是在给第一代程序员布道啊!】
【2K内存:求求了,终于有人把我当人看了。】
林希拍掉手上的粉笔灰。
“今天这两招,刻在脑子里。”
“以后写代码,先看手里有多大的碗,再决定下多少米。”
这一次,没人再拍桌子。
十几支铅笔同时落到纸上。
沙沙声很轻,却压过了炉子里的火星声。
李建新盯着黑板上的“碰撞箱”。
小戴盯着那一排0和1。
他们看林希的眼神,彻底变了。
那不是仰慕。
那是一群第一次抬头看见山顶的人,终于明白自己脚下这条路,到底能通向哪里。
解决了碰撞箱和位运算,十几个大学生看林希的眼神全变了。
但林希知道,底层逻辑只是骨架。
游戏能跑,只是及格。
能让人骂着还想再开一局,才叫产品。
他喝了口茶,扫了一圈研发室。
“功能跑通了。”
“但打起来像往棉花上抡拳头。”
李建新苦着脸点头:
“对,干巴巴的。”
“像两块橡皮擦打架。”
林希放下茶缸。
“因为没上血肉。”
“游戏不光是数学,还是心理学。”
他拿起粉笔,在黑板上写下三个字。
多巴胺。
十几个大学生面面相觑。
这词他们听过。
但没人想过,写游戏还能写到这上面。
林希问:
“谁打过靶?”
李建新愣了一下。
“军训打过。”
“枪托撞肩膀什么感觉?”
“疼。”
他想了想,又补了一句:
“但挺带劲。”
“对。”
林希点头。
“动作只要给了足够强的即时反馈,大脑就会记住。”
“它会催你——再来一次。”
他指向屏幕。
“现在的问题是,开炮静悄悄,爆炸软趴趴。”
“玩家按下键,大脑收不到确认信号。”
“当然觉得没意思。”
小戴推了推眼镜,小声问:
“那怎么加?”
“三个地方。”
林希竖起一根手指。
“第一,开炮瞬间。”
他坐到开发机前,敲了几行汇编。
屏幕渲染原点,被他硬生生往开火方向偏了两像素。
下一帧,再拉回来。
“炮弹飞出去那一帧。”
“画面抖一下。”
“幅度别大。”
“大了叫晕,小了才叫劲。”
“编译。”
他写了几天、几百行的逻辑。
林希用十七行干掉了。
不是写得快。
是他还在一块砖一块砖地数墙,林希已经在墙外画了个框。
“这个方法……”
李建新喉结动了动。
“叫什么?”
“碰撞箱。”
林希头也没抬。
“以后做任何游戏,第一件事就是套碰撞箱。”
“记住了。”
李建新立刻翻开笔记本。
他把“碰撞箱”三个字写了一遍。
又写了一遍。
最后用力写了第三遍,笔尖差点划破纸。
林希端起搪瓷缸,喝了口温水,扫视全场。
“机器的算力是死的。”
“脑子是活的。”
“做工程产品,不是写数学论文。”
“别把机器当牲口使,逮着就往死里榨。”
没人吭声。
煤球炉子里,火星轻轻爆了一下。
林希放下搪瓷缸。
“下一个谁的进度?”
角落里,负责《逻辑方块》的小戴哆嗦了一下。
是的,既然在这个时代,《俄罗斯方块》是华国人发明的,林希就给他换了个名字。
《逻辑方块》,一听就是个教育软件!
小戴顶着鸡窝头,扶着眼镜挤出来。
刚才还看热闹,现在轮到自己,底气顿时掉了半截。
“林总。”
“底层消除逻辑跑通了。”
“但是……”
他看了一眼李建新,又看了一眼黑板上的“碰撞箱”。
声音更虚了。
“玩到第六层就死机。”
“这回……真是物理极限。”
这话一出,旁边几个学生表情都有点微妙。
刚才李建新也是这么说的。
结果物理极限被十七行代码按在地上摩擦。
小戴赶紧调出监控数据,指着飙红的内存条解释:
“机器内存只有2K。”
“棋盘一共200个格子。”
“我用标准整型变量记录状态,1是有,0是没有。”
“一个整型占2字节。”
“200个格子就是400字节。”
“再加上下落、消行、方块形态……”
“一到第六层,内存就塞爆,直接溢出。”
林希揉了揉太阳穴。
早期语言里,拿16个比特存一个只需要1个比特的“是非题”。
这不是写程序。
这是烧钱。
虽然现在烧的是内存。
“你在2K内存上,用整型存1和0?”
林希看他的眼神,像老师傅看徒弟拿菜刀拧螺丝。
“这不叫编程。”
“这叫暴殄天物。”
“你当内存是你家大白菜,论吨批发的?”
小戴眼镜滑到鼻尖,忘了扶。
林希站起身,拿起粉笔。
“一个字节几个比特?”
小戴立刻回答:
“8个。”
“既然只有1和0两种状态。”
林希在黑板上写下:
0 0 0 0 0 0 0 0
“一个字节,8个比特,天然就是8个开关。”
“开,就是有。”
“关,就是无。”
“为什么要用完整整型记一个格子?”
他用力写下几个符号:
<< >> &
“位运算。”
“左移,右移,按位与。”
“一个字节管8个格子。”
“10列棋盘,两个字节就够。”
“20行,一共40个字节。”
他转头看小戴:
“400字节变40字节。”
“省出来的空间,够你玩到第一百层。”
小戴盯着黑板上那八个0。
旁边有人下意识掰着手指数,数到第八下,手停在半空。
一个字节,当八个格子用?
还能这么玩?
林希已经坐回键盘前。
几行极简的汇编指令跳出来。
位移。
按位与。
清除一行时,数据整体下移。
没有花里胡哨的结构。
没有臃肿的循环。
干净得像一把剔骨刀。
重新编译。
运行。
简陋的方块开始落下、堆积、消行。
第五层。
第十层。
第十五层。
画面依旧流畅。
内存占用暴降八倍,纹丝不动。
小戴盯着屏幕右下角的数字,半天才挤出一句:
“……这也行?”
研发室里只剩外面的风雪声。
如果说“碰撞箱”是换一条路绕过大山。
那“位运算”就是把一块铜板劈成八瓣花,还嫌不够省。
直播间弹幕飞过:
【给八十年代大学生一点小小的位运算震撼!】
【逼急了,老派程序员能把代码掰碎塞进寄存器里。】
【主播这是在给第一代程序员布道啊!】
【2K内存:求求了,终于有人把我当人看了。】
林希拍掉手上的粉笔灰。
“今天这两招,刻在脑子里。”
“以后写代码,先看手里有多大的碗,再决定下多少米。”
这一次,没人再拍桌子。
十几支铅笔同时落到纸上。
沙沙声很轻,却压过了炉子里的火星声。
李建新盯着黑板上的“碰撞箱”。
小戴盯着那一排0和1。
他们看林希的眼神,彻底变了。
那不是仰慕。
那是一群第一次抬头看见山顶的人,终于明白自己脚下这条路,到底能通向哪里。
解决了碰撞箱和位运算,十几个大学生看林希的眼神全变了。
但林希知道,底层逻辑只是骨架。
游戏能跑,只是及格。
能让人骂着还想再开一局,才叫产品。
他喝了口茶,扫了一圈研发室。
“功能跑通了。”
“但打起来像往棉花上抡拳头。”
李建新苦着脸点头:
“对,干巴巴的。”
“像两块橡皮擦打架。”
林希放下茶缸。
“因为没上血肉。”
“游戏不光是数学,还是心理学。”
他拿起粉笔,在黑板上写下三个字。
多巴胺。
十几个大学生面面相觑。
这词他们听过。
但没人想过,写游戏还能写到这上面。
林希问:
“谁打过靶?”
李建新愣了一下。
“军训打过。”
“枪托撞肩膀什么感觉?”
“疼。”
他想了想,又补了一句:
“但挺带劲。”
“对。”
林希点头。
“动作只要给了足够强的即时反馈,大脑就会记住。”
“它会催你——再来一次。”
他指向屏幕。
“现在的问题是,开炮静悄悄,爆炸软趴趴。”
“玩家按下键,大脑收不到确认信号。”
“当然觉得没意思。”
小戴推了推眼镜,小声问:
“那怎么加?”
“三个地方。”
林希竖起一根手指。
“第一,开炮瞬间。”
他坐到开发机前,敲了几行汇编。
屏幕渲染原点,被他硬生生往开火方向偏了两像素。
下一帧,再拉回来。
“炮弹飞出去那一帧。”
“画面抖一下。”
“幅度别大。”
“大了叫晕,小了才叫劲。”
“编译。”
