原文:
zh.annas-archive.org/md5/3F4ADC3F92B633551D2F5B3D47CE968D译者:飞龙
第十二章:从这里往哪里走
真诚地祝贺你。
通过达到这一点,你已经做到了许多有抱负的开发者从未做到的事情,这是一项了不起的成就。作为 VR 创作者,你可以培养的最有价值的资产就是你的坚持和愿意付出努力的态度。通过完成这本书,你已经展示了对事业的奉献和渴望,这将使你与众不同。请花一点时间认识到自己身上的这种品质。
你可能已经注意到,我们在写这本书时的重点与许多其他教程不同。有很多材料可以告诉你应该按哪些按钮,但是这里有一点-知道这些东西并不能让你成为一个好的开发者。你通过学习如何思考你试图解决的挑战以及如何使用你手头的工具来解决它们而变得擅长。为此,我们多次偏离讨论为什么某件事情的工作方式或者它还可以如何使用。在继续自我教育的过程中继续思考这个问题。花时间学习“为什么”将使你走得更远,而不仅仅是学习“什么”。后者可能会随着下一个软件更新而改变,并且通常不适用于其他任何事情。我们做事情的根本原因往往不会改变。训练自己认识到这一点,要知道一件事,你必须能够描述为什么它是这样的。在本书的过程中,我们试图让你习惯思考这些“为什么”的问题,并为你提供一些工具,让你自己更好地区分这些问题。
我们希望你在阅读本书时能够获得很多对你开发 VR 有用的东西,但是,老实说,如果你只能从中得到这两个认识,那也是值得的:
-
成功来自于坚持和愿意付出努力
-
关注“为什么”而不是“什么”
在本书的过程中,我们还试图展示另一个重要的真理:开发是迭代的。我们一起做的许多例子都涉及解决问题并在发现新问题或更好的解决方法时改变我们的解决方案。我们试图通过这样做来重现开发者解决问题时的真实思维方式。这是一个逐步进行的过程。通过专注于下一步,做好完成下一步所需的工作,并在不清楚下一步应该是什么时不放弃或沮丧,你可以创造几乎任何你想象的东西。
你会发现自己不断地问自己为什么会得到你所看到的结果,或者为什么你需要解决的问题可能会发生。成为一名有效的开发者不是记住很多东西的问题,而是建立有效的思考方式,以便你能够找到解决问题的方法。
牢记这一点。你正在踏上一个新的领域,为一个规则和词汇几乎完全未知的媒介进行开发,我们都在一起学习什么是有效的,以及我们如何帮助 VR 成为我们感知的艺术形式。你将面临一些没有已知答案的挑战,因为它们还没有被解决。也许你将成为第一个发现它们的人。
最后的话
当我们写这篇文章时,VR 正处于十字路口。
在 Oculus Rift 和 HTC Vive 发布后的几年里,VR 引起了一阵热潮和兴趣,然后随着时间的推移,这种兴趣逐渐平稳下来。许多人拿出他们的 VR 头盔参加派对或演示,然后再把它们收起来-为什么呢?
好吧,这是因为几个原因。
首先是技术问题,我们需要对自己诚实,这是第一代技术。使这些头戴式显示器工作的实际情况令人惊讶,但它们有局限性。这项技术的第一代对于主流消费者来说过于昂贵和难以设置。长时间佩戴头戴式显示器不舒适,镜片和屏幕的限制使用户意识到他们使用的技术。视野狭窄,镜片稍微错位就会模糊图像,低分辨率的屏幕会显示像素边界(可怕的“屏幕门”效应)。硬件开发人员知道这一点,但他们也知道,克服新兴技术的成长痛苦的唯一方法就是逐步解决问题。
展望几年后,你会看到这些问题迅速消失。屏幕分辨率只会不断提高,同时屏幕变得更轻,需要更少的功率。光学波导很可能取代我们现在使用的笨重的菲涅尔透镜,大大减轻头戴式显示器的重量,并扩大其视野。外部传感器很快将成为过去,因此设置 VR 头戴式显示器不再需要占用三个 USB 端口或在墙上安装基站。越来越好的独立头戴式显示器和可以无线与基础 PC 通信的 PC 头戴式显示器很快将成为常态。这些都是可以解决的问题,合理地期望它们很快不再是重要问题。
然后是模拟器晕动病的问题。在 VR 淘金热的早期,开发人员对此通常非常天真,或者变得偏执。通常,后者是对前者的回应。我们都拿到了我们的原始 DK1 和 DK2,并立即开始制定与平面屏幕上相同的运动方案,结果让我们感到不适。然后我们把摆锤摆向了另一个方向,到处传送。两个极端都不是必然的。我们正在了解更多关于如何移动玩家视角的方法,并鼓励您也进行实验。有解决方案可以奏效。另一个现实是,人们会适应模拟器,就像他们适应在海上船上一样。在 20 世纪 90 年代初,第一人称射击游戏也会引起晕动病。现在不再发生这种情况,部分原因是渲染技术改进了,但也部分原因是玩家习惯了。VR 也正在发生类似的效应。要意识到模拟器晕动病,并设计软件来减轻其影响,但不要过于恐惧:探索。找出其他可能奏效的方法。早期电影制片人必须弄清楚他们如何摆脱摄像机移动的限制,以及哪些剪辑会奏效。这是同样的情况。我们将通过实验来解决这个挑战。前沿不是受规则束缚的地方。我们还不了解它们。
尤其是最后一个挑战是你的机会。我们真的不知道我们可以用这项技术做什么。任何告诉你我们已经解决了这个问题的人都没有发挥他们的想象力。我们才刚刚开始。
在 Rift 和 Vive 首次发布后的淘金热潮中,大多数开发人员将这个媒介视为他们已经了解的媒介的升级版。电影人将其视为 3D 电影设备,游戏人将其视为沉浸式游戏设备。两者都没有完全正确。
这种媒介的语言大部分还未被发现,这使得这个领域成为一个令人兴奋的游戏场所。我们曾多次建议您质疑那些试图告诉您在虚拟现实中不能做什么的人,而在这里,我们希望更进一步。故意打破那些界限。尝试那些您知道不会奏效的事情,因为百分之一的机会,它们可能会奏效。在探索虚拟现实中,将积极的思考和想象力融入到您的工作中。让这种媒介向您展示它的工作原理。我们坚信,虚拟现实或其某种变体将成为 21 世纪的决定性媒介。如果您真的仔细思考,很难有其他令人信服的观点。沉浸感和存在感的好处太明显了。但我们需要弄清楚这些东西是如何真正工作的。我们了解一些基础知识,但远未掌握全部。早期观看卢米埃尔兄弟的电影中火车进站的观众很难想象电影最终会发展成什么样子。接受这种情况也同样适用于这里。我们只是刚刚开始了解我们可以用这种媒介做什么,也只是刚刚开始弄清楚我们如何做到这一点。这个探索中最令人兴奋的部分还在前方。请看下面的图片:

《拉西奥塔车站的火车进站》(L’Arrivée d’un Train en Gare de la Ciotat),奥古斯特和路易斯·卢米埃尔兄弟的一帧画面
在这本书中,我们真的尽力为您提供一个基础,让您开始这个冒险。我们希望为您提供关于虚拟现实作为一种媒介的基础知识,但我们也希望以一种能够激励您进行开发和思考虚幻引擎的方式来帮助您进行探索。我们真诚地希望我们能对此有所帮助。虚拟现实对我们来说很重要,显然对您也是如此,否则您就不会读完这本书。让我们创造一些艺术吧。
衷心感谢您与我们一同踏上这个旅程。
第十三章:有用的思维技巧
在本书中,我们一直在讨论开发思维的方式,并且曾经一两次提到,区分有效的开发者和业余开发者的因素不是他们知道什么,而是他们如何思考。
有效思考是一种技能,就像其他技能一样,它可以通过实践来提高。正如我们在上一章中所看到的,通过分解问题并找到一个起点,你可以简化一个复杂的问题。现在让我们花点时间来探索一些更多的技巧,这些技巧可以帮助你。
橡皮鸭调试
你可能以前听过这个短语:“橡皮鸭调试”。它已经存在很长时间了,是你可以执行的最有效的解决问题的技巧之一。这里的想法很简单。找一个愿意倾听的人,如果周围没有人,桌子上的一个橡皮鸭也可以(因此得名)。大声地、用简单的语言描述你要解决的问题。这迫使你组织关于问题的思考。如果你发现自己无法用清晰简单的语言描述问题,那么你还没有理解它。你还没有准备好尝试回答这个问题,因为你还不清楚你需要问什么问题。尝试并探索它,直到你真正能用简单的语言表达出来。通常,仅仅这个过程就会给你提供一个清晰的解决方案,如果不行,你现在有更好的机会找到解决方案,因为你现在知道你在问什么问题。大声说出来或写下来。当你让它在脑海中翻滚时,很容易保持模糊和忽略细节。强迫自己把话放在一起。你会惊讶于这种技术的强大和有效。
只说事实
当你意识到软件出现问题时,写下你所看到的发生的事情。不是你认为你看到的事情,只是你看到的事情。在调试中,很容易对为什么会发生某事做出结论,然后在真正确定你实际遇到的问题之前,就开始试图解决这个问题。退一步,只看你能具体观察到的事情。
像这样思考:“当火炬生成时,它出现在错误的位置”,而不是“生成例程将物体放在错误的位置”。你还不知道那个。你只知道一个火炬不在你期望的位置。做一个实验。生成一个不同的物体。它是否出现在正确的位置?好的,那么也许你的模型有一个奇怪的偏移量。另一个物体也不在正确的位置?好的,那么,是生成例程的问题。或者可能是你的关卡中的某个碰撞导致物体无法生成在你想要的位置,并将它们推到最近可用的位置。尝试移动生成点,看看是否会改变事情。
看到我们在这里做什么了吗?我们正在将基本的科学方法应用于我们正在解决的问题。我们看到了什么?我们能想到可能引起这个问题的原因吗?我们如何测试它以确定我们是否正确?我们的测试给我们带来了什么新信息?我们是否已经知道足够的信息来解决问题了?
很容易就会得出结论并浪费很多时间来调试错误的问题。花时间退一步将有助于避免这种情况,并避免盲目尝试。通过这种方式,你将解决问题。
用积极的方式描述你的解决方案
我们在第十章《在 VR 中创建多人体验》中稍微谈到了“模仿神秘仪式的编程”,并让你承诺不要这样做。为了进一步阐述这个想法,让我们看一下一个我们希望你永远不要说出口的短语:“它能用——别碰它!”
这不是我们描述一个健壮系统的方式。如果你感到诱惑说这样的话,恭喜你!你已经完成了“让它工作;让它正确;让它快速”的过程的第一步,这意味着你还没有完成。你所创建的是你最终解决方案的一个成功示例,但现在是时候开始“让它正确”的阶段了。当你能够用积极的方式回答关于你的解决方案的三个问题时,你已经满足了这个开发阶段的要求:
-
它需要解决 X 问题
-
我知道它解决了 X 问题,因为……
-
我知道这是安全的,因为……
记住这三个陈述。不要跳过它们。你应该能够用清晰简单的语言描述你想要做的事情。(你的橡皮鸭也是一个好的倾听者。)你应该能够解释为什么你刚刚做的事情能够解决你想要做的事情,并且你应该能够用积极的方式来做到这一点:*我们需要确保玩家在暂停菜单出现时不能开火。这通过输入处理程序在调用开火函数之前检查暂停状态来解决。*最后,你应该能够解释为什么这样做是安全的:我知道这是安全的,因为我们确保在暂停状态开始时清除任何现有的输入,并且输入处理程序知道只允许取消暂停命令通过。
自律地做到这一点,并使用清晰、积极的术语。如果你含糊其辞,那就是在逃避你需要解决的问题。养成这样的习惯:描述你想要做的事情,为什么你知道你的解决方案能够做到这一点,以及为什么你知道这样做是安全的。这样做可以在软件中出现之前阻止很多错误。
在编写代码时,计划如何维护和调试你的代码
技术债务是一种隐形的东西。这个术语描述了修复代码中留下的混乱所带来的下游成本,通常是由于匆忙开发而导致的。它是一个项目杀手。
比如说,你需要为演示准备一些东西,但时间不够,所以你采用了一个临时解决方案。然后,你把它留在那里,并在其上构建了一堆额外的系统。现在,你想要将你的游戏上线,但你所做的事情在客户端上显示不正确,你恐惧地意识到你必须重写那些在演示中使用的临时解决方案上构建的所有系统,更糟糕的是,你意识到这将需要数周的工作。
或者,假设你在匆忙构建蓝图时,它能够工作,但看起来像排水管中的一团头发。你继续解决下一个问题。六个月后,你准备向出版商演示游戏,但系统中一直出现奇怪的错误。自从你写下它以来,你就没有再看过它,现在你被迫花费整天整夜来解决你制造的混乱,以便找出错误发生的位置。
在这两种情况下,如果你在事情还新鲜在脑海中的时候花时间整理你的工作,你将节省很多时间和痛苦。如果你绝对必须进行临时解决,将其标记为临时解决,并且如果你知道真正的解决方案应该是什么,就在临时解决方案旁边写入注释。然后在构建其他东西之前修复它。如果你已经运行了一个蓝图或一段代码,那么在你的“让它工作”阶段的一切都还新鲜在脑海中时,直接进入“让它正确”的阶段。
记住这个真理:“代码的绝大部分生命周期都是用来维护和调试的”。把这个铭记在心。调试代码比第一次编写代码要困难得多,所以尽可能给自己创造优势。如果你在第一次编写解决方案时匆忙行事,那么你并没有节省时间。你只是在它的生命周期的一小部分上节省了时间,却给自己带来了长时间的大麻烦。在编写代码时要为其进行调试做好计划。你会为此感到高兴的。
倾向于简单的解决方案
不幸的是,你会遇到那些写复杂、难以理解的代码或蓝图的开发者,他们错误地试图用这种方式给其他人留下智商有多高的印象。他们暗自幻想着其他人会看着他们难以阅读的代码,然后想,“哇!他们一定很聪明!我一个字都看不懂。”拜托,请不要成为这样的开发者。
那些你真正想要得到尊重的经验丰富的开发者不会对一个混乱的蓝图或晦涩难懂的代码印象深刻。他们会想知道为什么你把它留在这样的混乱中,并认为这是因为你不知道更好的方法。业余者写出难以阅读的代码,而专业人士知道他们将来一年都要维护这些代码,而且他们不想让这项工作变得更加困难。
如果你的“做对”草稿比你的“让它工作”草稿更简单、更清晰,那么你就知道你做得很好了。
在你创造之前先查一下
我们在《第十章》中提到了这一点,即在 VR 中创建多人体验,并希望在这里重申:新开发者常犯的一个核心错误是在解决问题之前没有进行研究,结果他们不得不重写已经存在的代码。
做好功课。当你试图解决一个问题时,在你开始动手之前,看看是否有其他人解决过类似的问题并留下了足迹。引擎中是否已经有一个可以完成这个任务或大部分任务的工具?模板或示例项目中是否有示例展示如何解决这个问题?是否有人在某个地方写了一个教程?有时候,答案可能是否定的,但更常见的情况是,你会找到一些直接指向解决方案或让你更接近解决方案的东西。
我们曾经看到一个小团队的工程师们在一个已经通过一个自由许可插件的单个函数解决的问题上浪费了几周的开发预算。这是没有用于改进游戏的时间,你不需要陷入这个陷阱。研究是你开发过程的一部分,应该在你开始输入或拖动节点之前进行。
这就引出了我们下一个讨论主题:当你需要找到信息时,你可以去哪里寻找?
第十四章:研究和进一步阅读
在开发软件时,浏览器和搜索引擎是你最好的朋友之一。如果你掌握了有效搜索的技巧,并记下了一些有用的搜索起点,你的学习速度将会大大加快。软件开发变化非常快,而实时虚拟现实等尖端软件开发变化更快。你花在学习如何有效搜索信息的时间将会永远为你服务。
让我们谈谈一些开始的地方。
虚幻引擎资源
当然,关于虚幻引擎的信息,最重要的地方之一就是源头。每当你需要新的信息时,www.unrealengine.com 应该是你首先查看的地方之一。你可以通过浏览器访问,或者在 Epic Games 启动器中找到信息。
以下是一些必备的虚幻引擎链接:
-
虚幻引擎 4 文档:
docs.unrealengine.com/en-us/- 无论何时你在使用新东西,都要先阅读相关页面。 -
虚幻引擎论坛:
forums.unrealengine.com/- 这里有很多有用的信息,以及一个庞大的论坛用户群体愿意帮助其他人解决问题。加入进来并做出有建设性的贡献。有了周围的社区,你作为开发者会更快成长。 -
UE4 AnswerHub:
answers.unrealengine.com/index.html- 当你面临一个具体问题时,在这里搜索答案。如果找不到,就提问。关键词是“具体”。如果你问“我如何使用虚幻引擎?”这个问题明显表明你没有做好功课,所以你会被忽视。好问题会得到好答案。也要愿意回报。如果你看到一个你知道答案的问题,就加入进来帮助解答。 -
虚幻学院:
academy.unrealengine.com/- 这是一系列专注于特定主题的教程,无论是在引擎内部还是在专业世界中。它们通常采用一系列视频课程的形式,质量始终很高。这是拓宽和提升你技能的最佳地方之一。 -
虚幻引擎 YouTube 频道:
www.youtube.com/channel/UCBobmJyzsJ6Ll7UbfhI4iwQ- 这是许多新开发者忽视的另一个资源,但你不应该忽视;它很重要。事实是:虚幻引擎非常庞大,有数百名工程师在开发,还有成千上万的社区成员,它不断发展壮大。因此,引擎中有大量非常有用的东西,但由于它们太新或太专业,还没有在任何地方记录下来。找到这些东西的秘诀就是虚幻引擎频道上的“实时培训”视频。这些视频几乎总是由编写相关系统的工程师或非常了解该系统的培训师提供的,它们是非常有用的信息源。如果你真的想学会如何使用这个引擎,这是你应该去的地方。 -
用户群组:
www.unrealengine.com/en-US/user-groups- 参与你所在地区的真实人群社区。找到聚会和活动,然后去参加。这是我们看到新开发者经常忽视的最大秘密 - 他们不把自己放在世界上。无论你是在寻找合作者,寻找工作,还是寻找雇佣某人,通过走出去并参与社区活动,你为自己做了一项重要的服务。
对于更一般的编程问题,最好的资源之一是Stack Overflow(stackoverflow.com/)。它不是以 Unreal 为中心,但如果你在寻找关于 C++开发的信息,这里是你能找到一些最有经验的开发者的地方。不过要注意,Stack 社区对低质量问题非常不耐烦。尊重每个人的时间,在自己尽力寻找答案之后再提问。描述你尝试做什么,你做了什么,以及你面临的挑战。这样做,你将得到一些在网上最可靠的专家建议。
虚拟现实资源
获取关于虚拟现实的好信息是很困难的。每个人都还在摸索这种媒介,你读到的几乎所有东西都是合法信息和无根据的观点和传说的结合。这不是谁的错 - 这种媒介对我们来说太新了,我们无法完全理解。
我们在本书开始时建议您对虚拟现实的任何被接受的智慧提出质疑,并且我们想在这里重申一下。请记住,最早的存世运动影片是在 1888 年制作的,直到 1925 年,谢尔盖·爱森斯坦才真正找到了电影剪辑的语言。花了 37 年时间才弄清楚这个流派最基本的方面。《公民凯恩》在此之后 16 年才出现。当有人告诉你在虚拟现实中你不能做什么时,请记住这一点。我们对这种媒介的限制一无所知。投入其中并尽情玩耍。你正在开拓一个新领域。不要害怕尝试你认为可能行不通的奇怪事物。这就是发现的方式。
关于偶尔会在您的信息源中出现的博客作者们宣称虚拟现实“已死”的问题,我们简单说一下:这不是新的沟通方式在社会中传播的方式。移动电话成为普通消费设备花了近 30 年的时间,个人电脑则更长。这次也不例外。在撰写本文时,我们仍然处于第一代消费者虚拟现实头盔阶段,配备了笨重的镜片和线缆,视野狭窄,需要外部传感器。(在撰写本段时,Oculus 宣布推出首款具有内置跟踪的台式机头盔。)我们在硬件开发的早期阶段,仍然面临许多技术挑战,但任何真正关注的人都能看出这些挑战将被克服。我们无法知道当您阅读本文时,我们是否会进入另一个“虚拟现实已死”的阶段,或者另一个虚拟现实热潮,或者希望处于中间状态,但请从现实的角度考虑这个问题。当 XR 头盔像眼镜一样舒适,不需要线缆,电池可以持续一整天,并且能提供沉浸式视野时,我们都会使用它们。这种媒介不会消失。从你热爱它的角度来工作。
除了这些建议,这里还有一些我们推荐您查看的资源。
-
Oculus VR 设计资源:
developer.oculus.com/design/- Oculus 的《虚拟现实最佳实践》文档,虽然在撰写本文时有点过时,但仍然是关于设计虚拟现实时需要考虑的最好的综合指南之一,《开发者视角》系列应该被视为任何设计虚拟现实的人的必读资料。 -
Road to VR:
www.roadtovr.com/- 这是最长时间运营和编辑最专业的虚拟现实新闻来源之一。他们对这种媒介非常认真,也知道他们在谈论什么。请务必定期阅读。 -
Upload VR:
uploadvr.com/——这是另一个真正好的 VR 信息来源,也是获取 VR 硬件和软件行业状况信息的好地方。
以下是一些值得寻找和倾听的人:
-
贾伦·兰尼尔是一位计算机科学家、作家和作曲家,他是 20 世纪 80 年代 VR 发展的关键先驱。他是我们称之为"虚拟现实"的原因。很难找到地球上有人比他更多地思考和使用这种媒介的。
-
Michael Abrash是 Oculus 的首席科学家,一直是其未来发展的坚定声音。在 YouTube 或其他地方寻找他的演讲。
-
John Carmack,《毁灭战士》和《雷神之锤》的共同创作者,现在在 Oculus 工作,是推动 VR 发展的首席工程师之一。如果你想了解当前技术的现状和即将到来的发展方向,你可以相信他是一个非常坦率和深入了解的信息来源。
-
马歇尔·麦克卢汉是 20 世纪最有影响力的思想家之一,关于媒体和传播方式如何塑造我们的社会。无论你以前是否听说过他的名字,你都已经在他的思想海洋中游泳了。“媒介即信息”——这就是他的观点。“全球村庄”——也是麦克卢汉的观点。他的主要作品《理解媒体》有时很难阅读,但它确实改变了我们对电子媒体在世界中的角色的看法。我们在这里提到他,是因为在 VR 领域工作就是在一个沟通技术的前沿工作,通过其沉浸和存在感的力量,它有可能比以往任何事物更深刻地影响我们。麦克卢汉对 VR 可能会产生的影响会感到着迷,但也可能感到恐惧。为什么不思考一下这可能意味着什么呢?
有很多其他的资源我们可以引用,但实际上,要写一份关于 VR 这个新兴且变化快速的主题的详尽资源清单几乎是不可能的,而且这也可能是徒劳的,因为在这个领域,五个月前的信息已经被认为是过时的。把这些资源当作起点,但要明白它们远远不完整。让你自己的探索带你去任何地方。
2657

被折叠的 条评论
为什么被折叠?



