邊煜一屁股坐到主控臺前,熟門熟路地把全息芯片夾進調試塢。

藍色指示燈亮起。

一排參數從屏幕上滾過去。

沈恪站在旁邊,手裡拿著連接線,低頭看了一眼接口。

“你上次說的延遲抖動,就是這裡?”

“對。”邊煜敲了兩下鍵盤,“渲染引擎冇問題,光場重建也能跑滿,就是交互協議這塊,幀同步偶爾會漂。”

“漂多少?”

“峰值十二毫秒。”

沈恪把線接好。

“對普通遊戲不明顯,對全息不行。”

“所以我說它欠揍。”邊煜理直氣壯。

其玉站在旁邊,小手扶著桌沿,努力仰著腦袋看屏幕。

奈何個子太矮,再使勁兒,也隻能看到一部分。

那些跳動的字母和數字更看不懂。

但他卻看得認真。

邊煜已經顧不上他了,一邊啟動模擬器,一邊跟沈恪說:“你看這裡,動作采樣是六十幀,服務端判定也是六十幀,但本地渲染插幀到了九十。問題是延遲補償算法冇把手勢預測算進去。”

沈恪坐到另一側,調出源代碼。

“你把手勢和位移放在同一條預測鏈裡了?”

“嗯。”

“難怪。”

邊煜扭頭:“嗯?什麼情況?”

沈恪把一段代碼選中。

“位移可以線性外推,手勢不行。手指動作有停頓,有反悔,還有微調。你用同一個補償模型,快的時候準,慢的時候就會飄。”

邊煜盯著屏幕兩秒:“……有道理。”

“把手勢拆出來,單獨做狀態機。”

“狀態機?”

“觸碰、懸停、抓取、釋放,每個狀態給不同權重。比如抓取後,位置預測可以強一點,懸停的時候保守一點。”

邊煜拍了下桌子:“可以啊沈恪!你這個人不說話的時候像在發呆,一說話就能救命。”

沈恪把鍵盤推給他:“少誇。改。”

“改就改。”

邊煜嘴上不服,手已經飛快動起來。

其玉看著哥哥的手。

啪嗒啪嗒,很快,像小雨打在窗戶上。

哥哥好厲害!

接著又看向沈恪。

en……這個哥哥不像煜哥哥那麼話多。

眼神落得穩,手指指到哪裡,煜哥哥就改到哪裡。

兩個人就像……拚積木。

一個負責把積木倒出來,一個負責指導怎麼拚。

很快屏幕上全息遊戲的測試場景打開。

半空裡浮出一片淺藍色網格。

網格向四周鋪開,變成森林。

樹葉不是貼圖一樣糊在平麵上,而是有層次地懸在光裡。

風一吹,葉片邊緣有細微的折光。

遠處有一條溪,溪水從石頭旁繞過去,水麵反射著天光。

邊煜戴上輕量眼鏡,拿起手勢環。

“來,跑一把。”

沈恪也戴上,兩人進入測試模式。

其玉站在旁邊,一動不動。

邊煜抬手,虛空裡出現一把短弓。

沈恪那邊是一枚透明的控製球,裡麵有一圈圈發光的坐標。

邊煜拉弓,箭矢成形,瞄準遠處的靶子。

鬆手——

箭飛出去,可惜冇中紅心。

偏了一點。

邊煜立刻皺眉。

“怎麼又這樣?”

沈恪低頭看日誌:“不是渲染延遲,是輸入上報晚了。你看,客戶端第2417幀采到釋放動作,服務端第2419幀才判定。”

“網絡模擬隻有三十毫秒,所以不是網絡,是協議包。”

邊煜把日誌拉開,“我壓縮了手勢數據。”

“壓太狠了。”沈恪說,“釋放動作的關鍵幀被合並了。”

邊煜沉默一秒,然後小聲:“我為了省帶寬。”

沈恪看他:“省到箭都飛歪了。”

邊煜:“……”

其玉忽然開口:“哥哥,箭為什麼要聽電腦的話?”

兩個少年同時停住。

邊煜這才想起旁邊還有個小不點:“哎,其玉,你還在啊。”

其玉點頭:“我一直在哦。”

邊煜有點心虛,撓撓頭:“哥哥剛才忙,冇顧上你。”

其玉認真地說:“嗯嗯,我知道,你們在修箭。”

沈恪摘下一邊眼鏡,彎腰看他。

“想試試嗎?”

其玉看了看那個手勢環,滿眼好奇:“我……可以嗎?”

“當然可以。”

邊煜有些擔憂:“他太小了吧,手勢環都——”

話還冇說完,沈恪已經把椅子往後挪了挪。

將其玉抱起來,讓他坐在自己腿上。

“用兒童模式。”

“行吧。”邊煜轉身調設置。

沈恪把小一號的輔助環套到其玉手腕上。

“這個不重,你抬手,它就知道你想做什麼。”

其玉抬了抬手,半空裡出現了一隻小木鳥。

鳥撲棱了兩下翅膀,落在一根樹枝上。

“哇!好神奇!”其玉眼睛亮了一下。

他伸出手,慢慢靠近。

小木鳥往旁邊跳了一步。

其玉停住。

“它怕我?”

沈恪耐心解釋:“不是怕,是它在判斷你的動作。”

“判斷是什麼?”

“enn……就是它在思考,你是要摸它,還是要抓它。”

其玉低頭看自己的手:“那我慢一點,它是不是就知道我要摸它?”

“對。”

沈恪握住他手腕,帶著他慢慢往前。

“你看,動作慢,手掌打開,係統會把你判定成友好互動。”

小木鳥歪了歪頭,然後低頭啄了一下其玉的指尖。

其玉抿嘴,很輕地笑了一下。

邊煜在旁邊看見,忍不住說:“哇,它真給你麵子,我剛才伸手它啄了我三次。”

其玉想了想,現學現賣:“是因為哥哥你動作太快了。”

邊煜捂住心口:“好好好,我被三歲小朋友教育了。”

沈恪唇角彎了一下。

他把日誌窗口縮小,給其玉打開簡單任務。

“試試把這顆果子放進籃子裡。”

樹枝上垂著一顆紅果,旁邊有一個小籃子。

其玉伸手去拿,果子從枝頭掉下來,滾到地上。

他愣了愣:“哥哥……我冇拿住。”

“抓取的時候,手指要合起來。”沈恪示範,“這裡有碰撞檢測,你的手碰到果子以後,係統會看你的手指有冇有收攏,如果收攏,就算你抓住了。”

其玉又試了一次,這次果子被他穩穩拿住。

他放進籃子,籃子亮了一下。

任務完成,屏幕角落跳出一顆小星星。

其玉看著那顆星星:“它又是怎麼知道我放進去了?”

邊煜馬上興奮起來:“這個我會!”

沈恪看他一眼。

邊煜清清嗓子,“因為籃子有觸發區域,你把果子移動到籃子範圍裡麵,係統檢測到它們的坐標重疊,就會判定完成。”

其玉想了想:“如果我放在籃子邊上呢?”

“那要看碰撞體。”沈恪接過話,冇有因為他隻有三歲就敷衍糊弄,“如果隻是視覺上挨著,但碰撞體冇有進入籃子區域,就不算。”

其玉點點頭:“我知道了,就像拚圖,放在旁邊,不是放進去。”

“對。”