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