学历低可以学习VR游戏开发吗

VR游戏开发者调查出炉 学历与工资高却注定孤独一生
文章作者:青亭网 发布时间:日 14:17:56
着迷VR消息,作为游戏开发和高端技术的第一线,日本VR的情况一直吸引着大家的关注。日前,日本计算机娱乐(Computer
Entertainment)协会发布了一项调查报告。其中涉及不少有趣的数据。日本的VR游戏开发者有以下两大特点:VR游戏开发者学历最高:VR游戏开发者里硕士占比达到所有平台开发者中最高,达23.4%。此外博士学历也是占比最高,有2.1%。其他开发平台如掌机等都不足1%,手游甚至完全没有博士学历的开发者。VR游戏开发者收入最高:2015年年收入中,VR游戏开发者平均年收入达到了603万日元(约合人民币40万元),只有手游开发者的593万能够与之相提并论(约合人民币39万元)。另外,VR游戏开发者在日本占比并不很多,只有14.5%,相比智能手游的从事人员53.2%可谓少得可怜;而平均VR游戏开发者的从业时间已经大约有10年左右。接受调查的人里,有高达九成(88%)的人是公司的正式员工,独立开发者占比微乎其微,这说明不管是VR游戏还是常规游戏开发,在日本仍然是集中在正式的公司里。最后还有些有趣的信息,游戏从业人员总体的配偶状况十分堪忧,有配偶的仅占37.7%。至于有否孩子的差距就更悬殊了,几乎80%的人都没有孩子……
该作者的其他文章:
着迷网为有兴趣建设WIKI的个人或团体贡献者提供免费平台、开通免费域名及服务器支持。
在您提交申请信息后,将由我们的工作人员为您审核,并在一个工作日内通知申请结果~
斗图表情包【VR游戏开发干货】VR教程如何创建一个VR项目
稿源:新浪游戏
北京时间日凌晨,Oculus正式开放对首款消费版Rift产品CV1的预订。599刀的价格让很多VR粉丝心头一紧,不过想想第一代iPhone的价格也是这样,只能期待后续的版本降价了。
为了准备好学习使用Unity开发VR应用,我们首先要检查下自己的电脑硬件和软件配置是否满足要求。简单来说,显卡要NVIDIA GTX970或AMD290以上,CPU要Intel i5-459以上,内存8GB以上,要有两个USB3.0接口,一个USB2.0接口,一个HDMI 1.3接口。
操作系统比较坑爹,不支持Mac,也不支持Linux。支持Win7,Win8,Win10。
当然,还要把自己的显卡驱动升级到最新版本。
Oculus官方的检测地址:
http://oculus.us5.list-manage.com/track/click?u=88dbdcbf84bbc2e&id=b436d0da47&e=86f0296884
一旦完成了这种烧钱的工作,就该安装Unity了。注意在打开Unity前要把DK2连接好并开启。 在继续之前,打开Oculus Configuration Utility应用,并检查Demo Scene可以正常运行。注意在运行Demo Scene之前看可能需要在Oculus Configuration Utility中设置一个新用户。
创建第一个VR项目
接下来我们将使用Unity创建一个简单的VR项目demo,其效果是在VR头盔中观察一个立方体。如果你想研究更多VR示例,不妨下载我们在上一篇教程中提到的VR示例项目(Asset Store:https://www.assetstore.unity3d.com/en/#!/content/51519)。
打开Unity,创建一个新的空项目。
说明一下,我当前用的Unity版本是5.3.1f1,可能你看到这篇教程的时候又已经升级换代了。
在Unity的菜单中选择Fiel- Build Settings,并选中PC,Mac& Linux Standalone。
在场景中创建一个新的立方体,从菜单中选择Game Object & 3D Object -Cube ,通过Translate工具把立方体放到默认的Main Camera 前面,类似下面。
保存界面(File- Save Scene,或是使用快捷键)。
在菜单中选择Edit- Project Settings & Player,在&Other Settings&部分勾选&Virtual Reality Supported&
点击Unity界面上的Play按钮进入Play模式。
如果之前的设置没有问题,现在你应该可以通过DK2看到这个场景,四处看看,Unity中的摄像机将自动根据DK2的位置和旋转变化反应。
出错了怎么办?
如果你没有在DK2中看到期望的场景,那么检查以下的事项:
1、确保你在打开Unity项目前就已经把DK2接好并且开启了;
2、打开Oculus自带的Oculus Configuration Utility,看看Demo Scene是不是可以正常运作;
3、更新你的显卡驱动到最新版本;
4、确保你在电脑上装了最新的Oculus Runtime 0.8,或更高版本;
当然,如果还是有问题,可以到论坛里面参与讨论。(Virtual Reality:http://forum.unity3d.com/forums/virtual-reality.80/)
关于VR开发的一些有用信息:
虽然VR应用开发和标准Unity应用开发很相似,不过还是有些区别需要注意的。
1、编辑器中显示的帧速(Frame rate)
当你通过编辑器查看项目时,注意体验上可能有些延迟,因为电脑需要将同样的内容渲染两次。所以在实际测试项目的时候,最好创建一个可执行版本,在测试设备上实际体验。
2、摄像机的移动
注意,我们不能在Unity中直接移动VR摄像机。如果你希望调整摄像机的位置和旋转,需要确保将它设置为其它游戏物体GameObject的子物体,然后通过所依附的物体进行移动。
关于这一点,可以查看VR Samples项目中的Flyer和Maze场景。
3、相机节点
左眼和右眼的摄像机并不是由Unity创建的。如果你在开发中需要获取这些节点的位置,则必须使用InputTracking类。
如果你想要获取场景中眼睛的不同位置(比如测试时),请使用下面的示例脚本,并将其attach到摄像机上。
using UnityEngine;
using UnityEngine.VR;
public class UpdateEyeAnchors : MonoBehaviour
GameObject[] eyes = new GameObject[2];
string[] eyeAnchorNames ={ &LeftEyeAnchor&, &RightEyeAnchor& };void Update()
for (int i = 0; i & 2; ++i)
// If the eye anchor is no longer a child of us, don&t use it
if (eyes[i] != null && eyes[i]。transform.parent != transform)
eyes[i] = null;
// If we don&t have an eye anchor, try to find one or create one
if (eyes[i] == null)
Transform t = transform.Find(eyeAnchorNames[i]);
eyes[i] = t.gameObject;
if (eyes[i] == null)
eyes[i] = new GameObject(eyeAnchorNames[i]);
eyes[i]。transform.parent = gameObject.transform;
// Update the eye transform
eyes[i]。transform.localPosition = InputTracking.GetLocalPosition((VRNode)i);
eyes[i]。transform.localRotation = InputTracking.GetLocalRotation((VRNode)i);
4、VR中的图像效果(Image Effect)
在VR项目中使用众多图像效果是很奢侈的事情。考虑到你需要两次渲染同一个场景(每只眼睛一次),因此很多当前经常使用的图像效果对VR应用来说会很浪费,会严重影响游戏的运行帧速。
因为VR将用户的眼睛置入一个虚拟的空间,因此部分图像效果对VR来说没有任何意义。举例来说,深度视角、模糊效应和镜头光晕效果对VR来说没有任何意义,因为在现实世界中我们是看不到这些效果的。不过如果以后VR头戴设备可以支持眼动跟踪,那么深度视角可能会有意义。
不过有些效果还是可以考虑使用的:比如抗锯齿是有用的(特别是考虑到某些头戴设备的低分辨率),色彩分级也很有用(关于这一点可以查看这个链接:Color Grading with Unity and the Asset Store:http://blogs.unity3d.com//color-grading-with-unity-and-the-asset-store/),对有些游戏来说Bloom会有用。不过在使用任何效果之前,最好先在游戏中实际测试下有没有用。
Unity自身提供了很多图像效果(Assets-Import Package-Effects),此外Asset Store里面也提供了很多效果,比如Colorful,Chromatica,Amplify Color,还有更多。
5、Render Scale
根据VR互动应用场景的复杂度和所运行的硬件环境,你可能需要更改render scale设置。通过此项设置可以调整镜头校正前texel:pixel的比率,这样可以牺牲游戏性能来换取画面的清晰度。
这项设置应该通过代码进行,可以参考这里:
http://unity3d.com/cn/VRSettings.renderScale
通过使用以下代码可以改变render scale的设置:
using UnityEngine;
using System.Collections;
using UnityEngine.VR;
namespace VRStandardAssets.Examples
public class ExampleRenderScale : MonoBehaviour
[SerializeField] private float m_RenderScale = 1f;
//The render scale。 Higher numbers = better quality, but trades performance
void Start ()
VRSettings.renderScale = m_RenderScale;
关于这项设置,可以参考我们的VR Samples,具体示例是Scenes/Examples/RenderScale场景。此外在MainMenu场景中也有该项设置的应用。
更改render scale的效果示例如下:
Unity的默认render scale是1.0,效果如下:
如果将render scale设置成1.5,可以看到显示效果更锐利:
接下来把renderscale设置成0.5,可以看到像素化很严重:
根据游戏场景的不同,可以考虑降低render scale来提升游戏运行性能,或者通过增加render scale的数值让画面效果更锐利,但会以牺牲游戏运行性能作为代价。
好了,看到这里,你应该知道如何在Unity项目中整合VR,如何设置游戏中摄像机的移动,以及和非VR游戏相比应该如何使用图像效果。
from:游戏陀螺
有好的文章希望站长之家帮助分享推广,猛戳这里
本网页浏览已超过3分钟,点击关闭或灰色背景,即可回到网页5331人阅读
最近在做一个关于vr游戏的项目,作为一个刚刚毕业并且刚刚进入这一行业的新手,有太多太多的东西需要学了。经过这个三个月的时间,在整个团队的合作下,算是基本完成了游戏吧,平台是三星的gear vr,现有在三星官方商店上架,其实游戏现在还并不很完善,很多bug可能还没修复,用户体验也没有做好,但是由于种种原因还是上架了,好评率不高。不过这次也让我学到了挺多的东西的,在这里就稍微记录一下,作为一个新手的经验,也希望以后还能对照着去做以后的游戏。
这次要讲的是关于性能优化这一块,因为之前准备在oculus上上架,但是oculus上架有个硬性要求就是在note4
note5 s6 s7等手机上的运行准率必须接近60,而我们的游戏一开始并没有,因此就做这一块的记录。做vr的都知道,其实vr并不同于普通游戏,我觉得最最不同的一点就是vr的渲染是普通游戏的两倍,因为有两个镜片,因此在性能优化上必须下很大的功夫,很遗憾我们只花了不到一个月的时间做这一方面,所以其实效果不是特别好,只能算基本满足能玩的要求,但对于眩晕这个问题还是没有得到特别好的缓解。
这里必须说到unity自带的一个工具位置位于Windows-&profiler,这个工具主要可以看到当你的游戏在运行的时候,什么物品或者哪个脚本占用了特别大的时间,导致你的游戏变得很慢,由于我做的是渲染方面的优化,所以主要也就是看看CPU
,GPU和Render三个选项里面的内容,然后根据反馈结果去做事情。
我个人觉得,优化的最主要的目的应该就是减少Draw Call的调用量,overdraw指的就当我们把一个图形的所有信息包括位置,法线,颜色等传递给电脑,然后调用一系列API,并把它们放置到gpu可以访问的指定位置,之后调用了_glDraw命令,一个命令就是一次Draw
call,例如,一个场景里有水有树,我们渲染水的时候使用的是一个material以及一个shader,但渲染树的时候就需要一个完全不同的material和shader,那么就需要CPU重新准备顶点数据、重新设置shader,而这种工作实际是非常耗时的。因为,减少Draw
Call 就成了重中之重的步骤。下面是我们游戏做的一些事情。
1,在搭建模型方面,一开始为了求逼真,因此在建模上都力求完美(然而我们组没有专业的,都是程序猿转行建模),所以做的并不怎么好看但是面数特别多,而面数多就会导致渲染次数变多,这样很耗性能,因此在制作的中期我们就意识到这个缺点,所以就开始大幅度的改模型,基本每个模型都会砍一般的面,但是在手机内的效果看起来也并不是特别差,然而会有一些地方可能看起来并不是特别逼真,因此就用了法线贴图去更进一步优化表面。再到后期,由于场景内物品多了,虽然单个模型的面数少了,但仍然不能减低draw
call 的调用数,因此我们又做了一次模型修改,这一次,就是合并材质球,基本上,我们把每个场景里面所有静态的物品都合并了,这件事其实unity好像有有自带的合并贴图的工具,但我们没用到,还是让建模人员把材质球合并,并且把场景内的外壳也合并了,经过这个方式,我们的draw
call调用量又再次减半了。
2,在场景的优化上,我们主要运用了烘焙技术,在unity,虽然实时光照可以带来特别好的体验效果,但是,跟电脑端的不一样,手机端由于cpu并不是十分强大,因此实时光太多会导致渲染次数大大增加,最终会反映在画面抖动十分厉害,并且卡顿眩晕感很强,因此,在我们的游戏中,只有一个实时光照,其他的光作为烘焙光照,在这里就必须说到一个光照探针(lightprobe),这个东西的作用就是用于静态烘焙中,对非静态物体产生一个模拟光照。而这个光照并不是动态的,而是静态的,从游戏运行时就渲染,在游戏过程中并不会重复渲染,这样做的好处就是只有在游戏开始时就只做一次然后就没有再次对那些被标记过的物品进行渲染,这一部分并不是我负责的所以只了解下,大致的做法就是在适当的位置添加光照探针,然后把每个静态的物品的static打钩(这里必须注定到的是如果场景有用到自动寻路或者是其他的东西则需要把对应的选项钩去掉),然后选择windows-&lighting里面有个scene里面的build就可以,这里需要注意的有两点,一点是在windows-&lighting中默认的话有两个东西是勾选的
一个是precomputed realtime gi和baked gi,这里我们需要把第一个的钩去掉因为这个是关于实时光的,第二个就是有的时候可能在渲染完成后的场景中物品表面会有乱乱的,这是因为UV的原因(具体的也不太清楚),这时需要找到物品的模型在他的Generate
Lightmap UV勾选就可以了。此外就是pixel light的数量,我们的游戏里面是1,这个的设置方式是在edit里面的project
setting 里面的quality里,这里面有很多东西都可以操作,包括防锯齿的一些,还有阴影效果的,还有其他一些。
3,在代码方面,尽量少在update用gameobject.find这个函数,好像这个函数是遍历式的寻找物品,这样会降低性能,我们采用的方法是在定义的时候定义一个公有的gameobject或者可见的私有gameobject,然后在面板中把对应物品拉到相应位置,这个方法好像也并不是最好,听一个大神说最好的方式应该是在一开的时候就定义了并且find好,之后就不在做查询的操作,这样的代码也不会特别乱。然后就是少用update函数,至于为什么我也不是特别清楚,我们花在代码上的时间并不是特别多。
4,使用遮挡剔除技术,这个技术也是unity自带的十分强大的一款技术,这一技术主要是讲我们的场景分成许多个小块,然后将摄像机看得到的地方的物品显示出来,看不到的就不显示,这个地方其实也不是特别难操作,也是要选择static里面的Occludee
static,然后在点开Windows-&OcclusionCulling里面设置bake的大小,然后点击bake就可以了,这里有两篇介绍遮挡剔除的文章可以参考:
https://docs.unity3d.com/Manual/OcclusionCulling.html
其实,还有一门技术就是LOD技术,但是由于我们的游戏场景并不是特别大,所以就没有用到这一技术,这一技术的做法是需要在建立模型的时候建两个模型,一个面数多,较为逼真的,一个面数少,较为粗糙的,在场景中,当摄像机里物品远的时候就使用面数少的模型,近的时候就使用面数多的模型,这也可以优化游戏的性能,但是如果场景太小也没有什么作用,因此就没用了。
其他的一些小的优化:
1,在场景中,尽量不要用到mesh collider,因为这个很影响性能;
2,由于手机加载场景很慢,因此在游戏设计中的第一个场景最好选用比较简单的,让玩家可以一开始就进入一个可视的场景而不是一直黑屏等待您的主场景;
,由于在手机端,摄像机的移动会造成较大的眩晕感,因此,最好就是摄像机移动的慢点,并且摄像机只朝着一个方向线性运动不要加速运动并且移动的时间不要太长(这是在一篇文章上看到的,我们的游戏并没有用到);
4,unity自带的Mecanim动画系统也要尽量少用,最好一个镜头里不要同时出现多个带有animator的物品,这个亲测也会影响手机端的体验。
然后想说一点就是,另一个性能优化的方向就是关于shader的,然后这个太难。。。我们现在还不会,所以做出的效果也不是特别好,这里我要推荐另一款同款的游戏叫绝命缉凶,英文名叫dead secret,这款游戏真的做的特别好,这里有他们游戏的一些关于性能方面是如何处理的,分享给大家学习一下。
http://robotinvader.com/blog/
最后在推荐一个网站是作为初学者(也就是我这种菜鸟),不知道某个函数是干嘛用的时查询的网站,初学的多学些函数感觉也没有什么坏处。
http://wiki.ceeger.com/ceeger.php
希望我这篇文章能在这里抛砖引玉,也希望大神们能帮我指出我的错误和不足,或者是给我点建议,因为其实到现在为止,虽然游戏基本完成了,某些场景的帧率也能基本保持在60,但还是需要花很大功夫在这一方面。大家帮忙指点指点。
访问:5319次
排名:千里之外14被浏览2,760分享邀请回答11 条评论分享收藏感谢收起您正在使用IE低版浏览器,为了您的雷锋网账号安全和更好的产品体验,强烈建议使用更快更安全的浏览器
发私信给柏蓉
导语:如何让玩家感受到进入这个游戏里的感觉,就是我们常说的“沉浸感”。而在我看来,沉浸感的关键在于不停地探索各种形式的交互。
同步到新浪微博
本专题其他文章
相信未来是VR和AI的结合。
当月热门文章
为了您的账户安全,请
您的邮箱还未验证,完成可获20积分哟!
您的账号已经绑定,现在您可以以方便用邮箱登录
请填写申请人资料

我要回帖

 

随机推荐