李建新兩手攥著褲縫。
他寫了幾天、幾百行的邏輯。
林希用十七行幹掉了。
不是寫得快。
是他還在一塊磚一塊磚地數牆,林希已經在牆外畫了個框。
「這個方法……」
李建新喉結動了動。
「叫什麼?」
「碰撞箱。」
林希頭也沒抬。
「以後做任何遊戲,第一件事就是套碰撞箱。」
「記住了。」
李建新立刻翻開筆記本。
他把「碰撞箱」三個字寫了一遍。
又寫了一遍。
更新不易,記得分享101看書網
最後用力寫了第三遍,筆尖差點劃破紙。
林希端起搪瓷缸,喝了口溫水,掃視全場。
「機器的算力是死的。」
「腦子是活的。」
「做工程產品,不是寫數學論文。」
「別把機器當牲口使,逮著就往死里榨。」
沒人吭聲。
煤球爐子裡,火星輕輕爆了一下。
林希放下搪瓷缸。
「下一個誰的進度?」
角落裡,負責《邏輯方塊》的小戴哆嗦了一下。
是的,既然在這個時代,《俄羅斯方塊》是華國人發明的,林希就給他換了個名字。
《邏輯方塊》,一聽就是個教育軟體!
小戴頂著雞窩頭,扶著眼鏡擠出來。
剛才還看熱鬧,現在輪到自己,底氣頓時掉了半截。
「林總。」
「底層消除邏輯跑通了。」
「但是……」
他看了一眼李建新,又看了一眼黑板上的「碰撞箱」。
聲音更虛了。
「玩到第六層就死機。」
「這回……真是物理極限。」
這話一出,旁邊幾個學生表情都有點微妙。
剛才李建新也是這麼說的。
結果物理極限被十七行代碼按在地上摩擦。
小戴趕緊調出監控數據,指著飆紅的內存條解釋:
「機器內存只有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。
他們看林希的眼神,徹底變了。
那不是仰慕。
那是一群第一次抬頭看見山頂的人,終於明白自己腳下這條路,到底能通向哪裡。
解決了碰撞箱和位運算,十幾個大學生看林希的眼神全變了。
但林希知道,底層邏輯只是骨架。
遊戲能跑,只是及格。
能讓人罵著還想再開一局,才叫產品。
他喝了口茶,掃了一圈研發室。
「功能跑通了。」
「但打起來像往棉花上掄拳頭。」
李建新苦著臉點頭:
「對,乾巴巴的。」
「像兩塊橡皮擦打架。」
林希放下茶缸。
「因為沒上血肉。」
「遊戲不光是數學,還是心理學。」
他拿起粉筆,在黑板上寫下三個字。
多巴胺。
十幾個大學生面面相覷。
這詞他們聽過。
但沒人想過,寫遊戲還能寫到這上面。
林希問:
「誰打過靶?」
李建新愣了一下。
「軍訓打過。」
「槍托撞肩膀什麼感覺?」
「疼。」
他想了想,又補了一句:
「但挺帶勁。」
「對。」
林希點頭。
「動作只要給了足夠強的即時反饋,大腦就會記住。」
「它會催你——再來一次。」
他指向屏幕。
「現在的問題是,開炮靜悄悄,爆炸軟趴趴。」
「玩家按下鍵,大腦收不到確認信號。」
「當然覺得沒意思。」
「那怎麼加?」
「三個地方。」
林希豎起一根手指。
「第一,開炮瞬間。」
他坐到開發機前,敲了幾行彙編。
屏幕渲染原點,被他硬生生往開火方向偏了兩像素。
下一幀,再拉回來。
「炮彈飛出去那一幀。」
「畫面抖一下。」
「幅度別大。」
「大了叫暈,小了才叫勁。」
「編譯。」