之前一直提到串流、云游戏等等的概念,恰好不久前也有同好分享了psv串流的经验,想到自己也是多年摸索串流游戏的实践,还算是有一点心得,于是便想与大家分享一下。
论坛里高手如林,我若有说得不对的地方,还请不吝指正。
献丑了。
说起在可移动设备上游玩单机游戏,一直是我的一个梦想,尤其在大约十年之前,可以手持游玩的设备,最时髦的便是PSV,那个鲜明亮丽的画面效果,即使放在当下,也仍不能说过时,但在当时,我却思忖着如果这玩意能用来玩PS3的游戏就好了,后来又听说PS4的游戏可以通过PSV远程游玩,于是这便在我心中留下了一个念想。
待到PS4发售,我便兴冲冲地尝试着用PSV来连接PS4远程游玩,但实际效果却令我大失所望,延迟卡顿严重,游戏体验非常糟糕,几乎无法正常游玩。尝试一番之后,我只得放弃。
等到2015年,一个新的设备的出现,又给我带来了远程游玩的希望,这玩意就是nVidia推出的设备nVidia Shield,这个算是掌机的东西定位就是远程游玩,也是在那时候起,nVidia基于自家的显卡,推出了集成在Geforce Experience中的串流服务,同时也推出了自己的云游戏平台,Shield一方面可以通过串流服务连接本地网络的电脑实现局域网内的远程游戏,也可以通过nVidia的云游戏服务,畅玩云端的游戏!
这个概念实在是太美好,我几乎是第一时间就入手了Shield,满怀期待地希望能实现自己的云游戏之梦。
然后现实体验却给我泼了一盆凉水,首先云游戏的服务根本就连不上去,即使科学上网,也无济于事,且不说科学上网的流量和带宽限制对于云游戏的需求,根本无法满足,就算是本地局域网的连接,依然是卡顿掉帧,完全无法游玩。
彼时虽然很受打击,但心想着既然它敢吹这个功能,那是不是并非设备的问题,而是我网络环境的问题呢?于是我便开始艰难地在外网搜索少得可怜的资料,最终知悉需要能够支持5G的Wifi,才可实现高速的Wifi传输以支撑串流所需的网络速率。
了解了这一点,我就连忙购置了一台支持5G的路由器,并且对配置进行了一番优化,用Wifi连接上Shield,再把PC通过网线连接路由器,然后开启串流,终于,卡顿没那么严重了,游戏可以玩了!让我甚为欣喜。
就这样游玩了一段时间后,新鲜感褪去,Shield设备的弊端开始显现。
巨大的机身手柄,完全不适配亚洲人的手型,我握住手柄时甚至有些按键都无法按到;而屏幕的分辨率却捉襟见肘,只有720P的分辨率,且屏幕亮度不高,视觉效果实在是差强人意,再加上卡顿掉帧以及串流画面降质,甚至让人感觉效果还不如PSV。
那是我感觉也许云游戏就只是个还无法实现的梦而已,之后随着主力设备全面转向苹果,便暂时停滞了探索。
随后,很偶然的机会,我了解到了有个项目把Shield的串流技术应用到了Shield设备之外,这个消息又让我燃起了探索云游戏的热情,那时我正好入手了一台小米Max3,硕大的屏幕实在是非常适合做串流的载体,于是我便又开始了在外网的探索,才终于结识了如今几乎已经成为我每日应用的项目。
Moonlight。
那时的Moonlight还有些简陋,但也已经具备了串流游戏的基本功能,源于Shield的优秀的传输速率和传输效果,简单够用的配置项,对手柄的良好支持,唯一的遗憾就是用于串流的主机必须使用n的显卡,不过好在我当时的主机配备的是1070的显卡,恰好满足。
搭配上手柄的Max3,终于在Moonlight的加持下,成了我爱不释手的游戏机,我几乎在那上面游玩所有可以支持手柄的游戏,而后在发现了Controller Companion这类用手柄模拟键盘鼠标的应用后,我几乎把所有原本需要坐在电脑前才能做的事情,都搬到了在这上面,从此之后我再也不用正襟危坐在电脑前了,我可以摊在沙发上、躺在床上、坐在厕所里……随时随地享受游戏的乐趣。
不过,人类的欲望总是难以满足了,才刚满足了温饱,马上就又浮想联翩了。
虽然我的串流配置感觉上已经颇为有模有样了,但是我依然在想,如何才能得到更好的体验?于是我总结出几点可以继续优化的方向:
1、更好的画面效果
2、更低的延迟
3、灵活度更高的连接方式
这里面前两点是从优化游戏体验出发的,而后一点是解决自己面临的实际问题——手中的设备越来越多,如何让他们可以串联起来,能够方便地随拿随玩。
首先,我分析了前两点,发现这两点其实很多解决方式都是相通的,简单来说就是提升设备的性能,具体来说是几个方面:
1、提升网络传输效率,这一点就要从主机的连接方式、Wifi的规格和频段等方面入手。
首先5G频段是快于2.4G频段的,这个在使用Shield掌机的时候就深有体会,为此我当时不得不买了个支持5G的路由器,但5G频段穿墙能力差,因此需要路由器有较高的发射功率,而Wifi6的传播速率又胜于Wifi5,因此一个支持Wifi6的优质路由器是必须的。
另外就是用于传输的主机最好通过网线连接路由器,不过我当初没有铺设相应的网线,因此这一点无法满足,不过以实际体验来看,我通过支持Wifi6的无线网卡,将主机连接路由器,效果还是可以的,不过有条件用网线的话,最好还是用网线。
2、提升主机和串流终端的性能,主要的提升点在于编解码的能力,H265的效果比H264好了不是一星半点,因此主机的编码能力和终端的解码能力就非常重要。
通过我自己的实际测试,不得不说高通的芯片在H265解码上要比其他芯片好不少,我曾经兴冲冲地购买了一台华为的M6平板,搭载的麒麟980处理器,打开Moonlight一测试,延迟达到了惊人的50多ms,最高甚至到了80ms,要知道小米Max3搭载的只是636的处理器,但同等环境下延迟最高也没有超过20ms,我对麒麟满怀敬意,但用于串流显然无法满足我的需求。
另外从网络传输速率来看,要想实现Wifi6级别的数据传输速度,终端也必须要能够支持Wifi6才可以。
3、增大屏幕尺寸、提升屏幕的分辨率,说到这个,Max3原本的效果也并不算差,从屏幕尺寸来说甚至放到现在也非常适合,但是分辨率确实是差强人意,因此为了追求画面表现,我先是从分辨率和刷新率下手,采用了一加7作为终端,看中它主要是因为全面屏,不得不说现在的各种挖孔屏、刘海屏对于我来说简直是鸡肋,我几乎没有任何前置拍摄的需要,可却不得不为了这个我不需要的玩意,严重破坏了视觉体验感。
一加7作为终端,直到现在我也依然推荐,那块屏幕的效果确实非常震撼,无边框感的全面屏,90hz的刷新率,再加上它可能支持Wifi6的潜力(不知道现在支持了没有),可算是极具性价比的选择。
另外从“大”的方面,我也做了些尝试,简单来说,就是探索利用平板作为终端的可能,首先我想到的就是iPad(Moonlight也支持iOS),尝试了iPad Mini,但是手柄的支持确实是个问题,测试了几款手柄后,发现要么常规的拉伸手柄无法支持这样的宽度,要么就是可以适配的手柄体验极差,于是只好作罢。
iPad失败后,我开始从Android阵营挑选目标,首先尝试的就是之前说的华为M6,但是效果确实没法满足需求,另外也存在手柄支持的问题,我改造了一个拉伸手柄,让它可以支持更宽的尺寸(从此我的Max3也可以夹进去了!),但是宽度也仍然有限,而小尺寸平板又太少,这要如何是好呢?
此时,一个凶残的想法在我心里冒了出来,为什么就不能采用10寸甚至更大的平板呢?我可把手柄藏到平板下面,用一个支架和平板连接,这样就可以从重心上保持稳定。抱着这样的想法我到淘宝上搜了一下,发现居然真的有人这么做了!我连忙与他联系,确认了思路确实和我一致之后,连忙下单了两个,到手后发现设计上有些不太适用,又和卖家沟通,把我的改进意见和他说了之后,重新订制了一件。
这次拿到手之后,简直完美!将支架调节好后,拿在手上非常稳固,重心位置也非常适宜,没有头重脚轻的感觉,除了整体下来相对较重之外(接近一公斤的重量!),视觉体验堪称完美!
总结下来,要达成前两点改进,我需要做到以下几点:
1、支持Wifi6的路由器
2、支持Wifi6的采用高通处理器的终端,需要具备大尺寸全面屏和高分辨率
3、配备了n显卡的高配置主机,采用网线或支持Wifi6的无线网卡连接到路由器
4、适用于终端的手柄,需可以被识别为兼容X360的手柄
于是我权衡各个方面的影响,最终采用了以下的配置:
1、 TP-Link AX6000双频全千兆无线路由器,可支持Wifi6
2、 三星Galaxy Fold3,配置了888的处理器,支持Wifi6
3、 联想的拯救者R9000K,配置3080的显卡,支持Wifi6
4、 小鸡的X2手柄蓝牙版
这套配置下来,基本上串流游戏没有任何压力了,1440P的串流网络延迟基本在10ms以下。
虽然这个配置远称不上完美,但是对我来说够用了,而且这里面也平衡了终端画面的效果和便携性,虽然平板看起来效果最好,可是太重,但通过更便携的设备想要尽可能好的画面尺寸和效果,目前可选的也只有折叠屏的手机,华为和小米的折叠屏我也试过,但是他们的长边和折叠方向一致,配合夹式手柄存在问题,三星目前是最适合的,虽然浪费了一些尺寸,并且屏下摄像头效果稀烂,但相比之下整体呈现效果是最好的。
下面分享下目前我采用的Moonlight配置,具体的使用教程网上很多,我就不赘述,只说几点需要注意的地方:
1、 分辨率:
这个需要同时考虑传输端的分辨率和终端的分辨率,实际上这个是指传输的视频流的分辨率,也就是说他不会去考虑主机的分辨率是什么样,他只会把画面压缩成指定分辨率的尺寸然后传输,所以即使你主机的分辨率是1440P的,你也可以用720P来传输,而且实际上如果网络条件一般的话,使用720P也不失为很好的选择。
另外就是如果终端的分辨率没达到1440P的话,那选择1440P反而会降低画面质量,因为终端会近似地把画面压缩到适合屏幕的分辨率,反而效果变差了,所以一定要选择自己手上的终端能达到的最大分辨率(基本上看短边的那一侧)。
还有就是目前Moonlight也支持本地分辨率的传输,这个会根据你终端的实际分辨率来从主机压缩视频,不过现在终端的分辨率比例基本上都和主机的不同,所以如果不做任何调整,就采用这个的话,虽然可以实现显示满屏,但是比例会非常奇怪,如果一定想要用这个的话,那就要在主机端先通过自定义分辨率把比例调整到适合终端的比例。
2、 帧数和码率:
可选帧数是根据终端的实际刷新率来供选择的,要注意的是这个帧数不一定和你实际看到的帧数一致,这个理论上指的是传输时,视频的传输帧数,实际上你看到的帧数要比这个设定的帧数要低,在Moonlight的配置里,也可以解锁终端不支持的帧率,开启这个可以让视频流以高于终端实际刷新率的帧数传输,其实在网络环境很好的情况下,也可以考虑开启,这有时候会让画面显示能达到终端的最大刷新率。
而码率影响的是画面质量,实际上这就是控制压缩视频时的损耗,理论上设置的码率越高,画面就会越好,这个需要配合着分辨率和帧数来调整,通常你选择了不同的分辨率和帧率后,这个值会自动跟着变,来适配分辨率和帧数的需求,但这个其实可以自行调整,在一定的区间里,实际上画面表现并不会差异太大,比如我设置1440P分辨率90帧数,它的推荐码率是80Mbps,但实际上我改为60Mbps会得到更稳定的体验,但是画质并没有特别明显的差异。
3、 编码方式:
Moonlight的默认设置是当稳定时才启用HEVC,但很多时候他在传输时会默认采用H264,这就导致在同样的网络条件下,只能得到更差的传输画质和更高的延迟,所以我推荐是强制使用HEVC,所谓的不稳定至少我从没遇到。
然后我对于想要尝试串流游戏的朋友,提一些建议:
1、 终端设备建议采用搭配845及以上的设备,或者660以上理论上也可以
2、 能上Wifi6尽量上Wifi6
3、 手柄的话,虽然有些小贵,不过小鸡的X系列手柄确实手感不错
4、 主机务必采用1070以上的显卡,可以保障比较好的传输效果
这次先分享到这里,以后有机会再分享下关于我提到的第三点改进方向“灵活度更高的连接方式”,以及我如何搭建了自己的“云游戏”。
谢谢大家。