边煜一屁股坐到主控台前,熟门熟路地把全息芯片夹进调试坞。
蓝色指示灯亮起。
一排参数从屏幕上滚过去。
沈恪站在旁边,手里拿着连接线,低头看了一眼接口。
“你上次说的延迟抖动,就是这里?”
“对。”边煜敲了两下键盘,“渲染引擎没问题,光场重建也能跑满,就是交互协议这块,帧同步偶尔会漂。”
“漂多少?”
“峰值十二毫秒。”
沈恪把线接好。
“对普通游戏不明显,对全息不行。”
“所以我说它欠揍。”边煜理直气壮。
其玉站在旁边,小手扶着桌沿,努力仰着脑袋看屏幕。
奈何个子太矮,再使劲儿,也只能看到一部分。
那些跳动的字母和数字更看不懂。
但他却看得认真。
边煜已经顾不上他了,一边启动模拟器,一边跟沈恪说:“你看这里,动作采样是六十帧,服务端判定也是六十帧,但本地渲染插帧到了九十。问题是延迟补偿算法没把手势预测算进去。”
沈恪坐到另一侧,调出源代码。
“你把手势和位移放在同一条预测链里了?”
“嗯。”
“难怪。”
边煜扭头:“嗯?什么情况?”
沈恪把一段代码选中。
“位移可以线性外推,手势不行。手指动作有停顿,有反悔,还有微调。你用同一个补偿模型,快的时候准,慢的时候就会飘。”
边煜盯着屏幕两秒:“……有道理。”
“把手势拆出来,单独做状态机。”
“状态机?”
“触碰、悬停、抓取、释放,每个状态给不同权重。比如抓取后,位置预测可以强一点,悬停的时候保守一点。”
边煜拍了下桌子:“可以啊沈恪!你这个人不说话的时候像在发呆,一说话就能救命。”
沈恪把键盘推给他:“少夸。改。”
“改就改。”
边煜嘴上不服,手已经飞快动起来。
其玉看着哥哥的手。
啪嗒啪嗒,很快,像小雨打在窗户上。
哥哥好厉害!
接着又看向沈恪。
en……这个哥哥不像煜哥哥那么话多。
眼神落得稳,手指指到哪里,煜哥哥就改到哪里。
两个人就像……拼积木。
一个负责把积木倒出来,一个负责指导怎么拼。
很快屏幕上全息游戏的测试场景打开。
半空里浮出一片浅蓝色网格。
网格向四周铺开,变成森林。
树叶不是贴图一样糊在平面上,而是有层次地悬在光里。
风一吹,叶片边缘有细微的折光。
远处有一条溪,溪水从石头旁绕过去,水面反射着天光。
边煜戴上轻量眼镜,拿起手势环。
“来,跑一把。”
沈恪也戴上,两人进入测试模式。
其玉站在旁边,一动不动。
边煜抬手,虚空里出现一把短弓。
沈恪那边是一枚透明的控制球,里面有一圈圈发光的坐标。
边煜拉弓,箭矢成形,瞄准远处的靶子。
松手――
箭飞出去,可惜没中红心。
偏了一点。
边煜立刻皱眉。
“怎么又这样?”
沈恪低头看日志:“不是渲染延迟,是输入上报晚了。你看,客户端第2417帧采到释放动作,服务端第2419帧才判定。”
“网络模拟只有三十毫秒,所以不是网络,是协议包。”