在国内,虚拟现实市场目前缺乏一个标杆性的平台代表,能够引领整个行业的发展方向。在此,我们很难说腾讯的Tencent VR将成为其中的带头者,其整体方略也并非是为了成为硬件层面的一极而是身居其中经营一个内容生态平台。但不容否认的是,这样一个巨头的入场将为国内虚拟现实市场注入一股不小的推动力。
腾讯在VR领域的探索和尝试,主要有腾讯智能创新业部和腾讯互娱研发部两个部门承担,其中前者负责了硬件开发平台部分,后者则是在游戏内容及社交方面进行探索。
从2015年开始,腾讯互娱事业部就在VR内容领域开始进行了相关尝试。其中,2015年下半年做了代号为Comet 的项目,这是一款太空飞行射击游戏,重点在游戏引擎、渲染、操控进行了探索。2016年上半年,做了代号为Solar VR的项目,这是一个多人互动的轻社交应用,类似Facebook Spaces和Altspace ,允许多用户在VR中一起打牌、画画、社交等。
4月24日,腾讯互娱前沿技术中心专家李君白在Unreal Open Day上详细分享了腾讯为什么做以及如何做好轻社交平台Solar VR的经验。以下为我们稍作调整和整理后的演讲:
我是来自腾讯前沿技术中心的李君白,今天为大家带来我们腾讯中心UE4引擎从事社交平台的开发经验。我个人使用Unreal3也有很多年头了,开发过不少的游戏,加入腾讯在《天涯明月刀》做过自研引擎的架构开发,现在负责Solar VR社交游戏平台的开发工作。
我今天的分享包括三个部分,做轻娱乐平台Solar VR的背景介绍、开发过程当中的技术分享经验以及去年下半年的Demo的演示过程。
首先是背景介绍,大家知道为什么我们做轻社交的娱乐平台嘛?众所周知VR是全新的领域,在VR下很多的开发领域都面临着革新和创新,我们的应用是立足于以社交平台为基础的开发定义。我们需要带给人们的是一种玩家交互之间的沉浸感和交互临场感。
社交比起纯粹的VR来说黏性和用户反复体验性是非常强的。以市面上的VR游戏为例,很多都是以一次性体验的效果,这样很难吸引玩家再次进行体验。其实市场上有很多社交VR先行者,包括Altspace VR、Rec Room以及Facebook Spaces。
VR的社交是完全崭新的,有很大可以期待的想象空间。根据我们长期的数据统计结果,Rec Room的周活跃用数超过其他几个VR社交应用的总数,所以我们觉得轻娱乐是关键。
于是,我们有了Solar VR的构想和尝试。大家可以想象在这样的空间里面好友聚在一起可以打牌,可以参加唱歌、开会。我们在开发过程当中会对社交玩法中的某些元素进行提取,比如,打牌的私人会所空间,大家可以在一起去玩。
那么,为什么选择UE4作为VR的渲染引擎呢?其实UE4有很多优点,在此不一一详细列举了。
我更看重的是可靠的引擎基础和高质量的渲染架构。UE4的语音质量和渲染质量在业内处于领先地位。对完善的工具链要重点提出,工具链是市场上的优势,在长期的Unreal使用过程累计了很多可靠性非常强的工具链,无论从美术的资源支持还是从程序的生成过程都是非常好的。这样完善的工具链会带来整个开发流程上的顺畅性和高效性。
在讲过Solar VR项目背景后,现在分享一些开发过程中的经验,希望能够与大家进行讨论。
首先我们的原型是在Unity上实现的,后来决定要迁移到Unreal平台上,这其中有很多的切换,比如说代码、数据、开发流程等的切换。从Unity切换到Unreal上来,我们用了一个星期的时间。
在代码切换上有几个方面,其一是把原来的服务器的代码移植到客户端。其他移植过程中最主要的问题就是第三方插件,大家大可以放心,大多数第三方知名的插件在Unreal中都可以得到相应的切换。
数据都是可以重用的,但场景是需要重新构建的,如果需要的话也可从Unity导出场景列表,再从Unreal中一次性导入。这取决于场景和重新工作。
Unreal需要建立比较完善的CR的持续构建的体系,来保证美术和策划能够及时地得到更新的程序。
我为大家介绍一下我们的技术选型。我们使用了Unreal Delicated server,传统的游戏后台都会使用数据包重复、服务器写套逻辑。我们选用的是Unreal自用的Unreal Delicated server同步的逻辑,为什么这样选择呢?有几个原则。
因为是社交游戏,有大量的物理交互在里面。我们很看重物理,想在服务器单独写引擎,这个代价很高的,我们想一用DS server直接实现优势。我们可以把服务器的代码移到服务器上来,在一些小的团队服务器人员在紧张的情况下就可以不用参与游戏逻辑的开发,而是由客户端程序员去参加,这是很有利的一点。包括整个过程当中,服务器后台也只布置了一位人员做后台DS server的开发。我们用这套系统的话会有签权的体系。我们用Client端向Game Server申请迁入的时候,就产生了Generate Token ID,再通过注册从GS上返取回玩家数据以后再往客户端发送通知,再把Room信息送过去,再把切割信息跟DS对上,DS做过签证的验证以后,Clinet和DS server就建立了连接。建立这样的连接以后,后面的游戏都可以直接进行通信,就不用依赖于后台的任何逻辑,后台只负责登陆登出和数据库访问。后面我们还会做一些像DS Masager来管理创建和销毁,这样整套东西可以在这样的服务器架构下完美地运作起来。
说到了DS server,有一个坑要跟大家分享一下。我们开发过程中会遇到很多的Replicate的问题。它的方法会带来一些问题,比如当我们Server想写一个代码的时候,哪怕经过了若干桢服务器想做函数代用,本以为Clent已经拿到了,但过程是不确定的。
另外一个例子也是一样的,哪怕是在同一桢里写两个条件,在Clent仍然无法保证A比B先得到,所以是不能依赖于Replicate的。
我觉得不能依赖于replicate让逻辑得到充分的保证,我们把关键的数据copy好以后,在合适的时候通过RPC的方法发出去,这样可以在服务器端拿到RPC,这个顺序就可以得到一定的保证。
刚才都是技术选型的背景,现在要回到主题,就是说在VR中开发应用有什么特性?在VR下最主要的关键因素有几个。一是,我们有一些基础交互的操作,在社交的前提下,我们更重视人面对面地交流,其实每一举、每一动包括嘴型、IK表现都是被对方仔细观察的。所以,这个东西的要求比一般的游戏都要高很多。
除此之外,VR是沉浸式体验的环境。在这种环境下,玩家对声音的敏感度是非常高的。所以,这就要求我们对Spatial Audio3D声音的设计和实现都要提出更多的需求。当然VR下最永恒的话题就是优化,因为投显设备都是要求90桢率的情况下,优化和效率永远是VR绕不开的话题,在关键上要做一些取舍。
VR交互上还有很多的设计,包括手部动作的设计、交互动作延迟、手臂、脚部、角色VR下移动、口形语音同步力反馈、Camera控制、手势识别等。这些主题在交互前提下都是非常重要,但由于时间关系,我随便提出两点跟大家分享一下。
首先是一个手势的识别。大家知道,可以识别手指按下未按下的状态,通过这种动态的辨别可以在用Animation Layer + Mask合成动画过程,美术手只要提供张开和闭合的动画可以让完整地模拟出来。
对于物件交互来说,有很多种,但是每一种都需要我们仔细地去实现。比如,我们用拳打东西的时候要考虑到伸开手的时候动作是什么样的,闭合的时候是什么样的,打出去以后和力度产生的冲击力有多大,带来了力反馈这种参数的调整,或者说是摇一摇功能,需要去测摇一摇的频率、力度是多少。交互的动作都需要去精细地调整。
这里我们做了结论的分享,关于多人情况下扔东西延续的分享。我们可以把桢同步和状态同步稍微融合了一下,做了这样的优化。
在手拿到东西之前,我们手的同步是通过自己的手本身的同步来做的。当我们拿起东西和松开东西当中的第二阶段,我们是通过状态同步的。当我们发出指令来同步状态,我们手在拿东西的过程当中东西是可以跟着手继续运动,这样的情况下本地玩家是感受不到任何延迟的,体验是比较好的。
我们把手扔出去的时候可以同步对象的位置和朝向,可以把他角速度和朝向速度都同步,在模拟最后的时候,速度比较小的时候可以把它的速度慢慢回到服务器应该的位置上,这样玩家在网络情况波动的情况下也能感到比较好的体验。
我再说说VR中交互物件开发和玩法设计。我们的游戏是想在游戏中实时创建和销毁以蓝图为单位的交互物件,在游戏当中可以拿出来成直接可以玩的游戏的设计。
这样的情况下面临一个问题,物件在VR中有多种多样性,对于交互来说,用户的学习成本非常高。我们的设计师后来想出通过讨论做出一种方法,比如大家看这是一个手柄的控制器把所有的AB、XY都定义成功能键,我们再把手柄反面的键定位为Action键,这样三种基本元素的组合形成了整个交互物件的最基础操作。
这样做有两个好处,玩家的学习成本会非常低,他们拿到物件以后试试A和B就可以知道怎么用,这对我们移植非常有利。在这样的基础建立好以后,我们开始了敏捷的迭代开发,可以让程序员并行地开发很多种原型,甚至考虑让玩家UGC创建出内容为我们的游戏增加内容,保持内容的持续性。
在这一方面,我们的团队在比较短的时间内验证了很多的玩法。有一些是刚开始的设想实现了以后就放在那里,大家讨论哪一个东西比较好。比较好的情况下会投入美术资源优化,这些东西都是建立在操作基础上,所以所有东西都是以这样的基础下开发,就会很快地开发出很多原型让大家来体验。
引擎开发源码,如果团队有一定的能力能够把控源码的质量和方法,应该使用源码去进行开发,为什么?因为用源码以后可以做底层的优化。对于一些升级来说,可以选择性地升级一些新的Unreal引擎带来的想法。这也是开源的优势。
最后想给大家的分享的是,引擎开发当中腾讯社交组件Plugin的继承有两个,一个是Apollo Voice,它是第三方语音交互的集成,大家可能不是很熟悉。《王者荣耀》的开黑语音大家应该很清楚,平台都是以这样的平台为基础,后面有专门的语音服务器来组织语音的传送和多人对话。VR社交里面声音是非常重要的一点,会提供给很多后处理的声音来处理,包括混响以及空间声音定位,这都是比较有意思的。Apollo Voice也是作为公司的组件。
后面是QQ的远程桌面共享。这个大家年轻的时候都帮妹子远程修电脑时用过,但是我们把它集成到VR中以后,可以实现很多很有意思的尝试,比如说,直播电竞解说、大屏看电影、多人同屏协作工作、远程开会等。我们把图片、模型、文本、声音都直接从电脑里拖到VR世界中,就像是从异空间拉入到VR世界中,在VR世界中产生虚拟的世界。
后面就是一些有意思的展示。这是《英雄联盟》的直播体验,是去年年底Demo的展示,可以调整装备。自拍杆拍出来的照片可以摇一摇;语音球可以给玩家的同伴留语音,可以摇一摇点赞,并且把它传送给其他社交好友,作为语音留音箱。多人连线可以一起组队。这是直接从游戏里面拿出来玩的《德州扑克》,这是刚才说的可以从电脑里直接把照片、模型拖拽到虚拟世界当中,这是刚才一开始说的,除了可以打牌还可以在一起唱歌,这是我们做的K歌的星空剧场,你唱歌高兴的时候机器人还可以跟你一起互动。
【来源:99VR视界】
发表于2025-09-26 17:34:00
发表于2025-09-26 16:00:00
发表于2025-09-25 15:29:00
发表于2025-09-24 17:07:00
发表于2025-09-23 14:58:00
发表于2025-09-22 17:18:00
发表于2025-09-22 17:11:00
发表于2025-09-19 11:37:00
发表于2025-09-19 10:38:00
发表于2025-09-18 14:50:00
京ICP备11027698号 CopyRight 2010-2015 All Rights Reserved