100天学会VR游戏开发

来源:互联网 发布:微信html5游戏源码 编辑:程序博客网 时间:2024/06/15 00:40
最近看了一篇关于VR的文章,没事干就在翻译,希望对其他人有所帮助。
第一次翻译,不足的地方还请包含和纠正。
原文链接:https://medium.com/@skynite/100-days-of-vr-game-dev-c471afeb240e#.on84bgpk1
在这里感谢作者的辛苦成果。

100天学会VR游戏开发(第1-21天)

几个月前,我还是一个从来没有编过程的小白。为了能更好的理解VR开发工具,我花了2周时间自学了C#和Unity。令我感到惊讶的是居然能在这么短的时间内学到如此多的东西。这几个月来我一直在告诉人们,如果你想做游戏,你只需要花上3个月专门的时间就可以达到专业的水平,多亏了像Unity这样的工具和很多在线的学习资源。

到现在为止,我一直避免太投入,因为我想专注于设计和写作。但是之后我意识到,能够直接的设计原型是非常宝贵的。更何况,目前这行的开发者太少了,我可以作为一名自由职业者做自己的VR游戏来自力更生。

所以,我决定采取我自己的建议,并证明我不是一个十足的笨蛋。在接下来的100天我将专注于自学C#,用Unity开发游戏。我的计划是记录下我用到的每个资源,好让其他有想法的开发者在脑海中有个蓝图(我发现,在线学习的一个最大的困难就是不知道自己要搜索什么和怎么去搜索)。我会在这里发布日常的更新和一些评论,好让那些对此感兴趣的能跟随。同时,我学习的大部分都是制作游戏,所以如果任何人有兴趣想要合作,可以通过vrinsider@gmail.com.联系我。

我从第一天开始的开发知识是2周时间学习C#和Unity编译器(9个月前的事)。正因为如此,如果你是一个编程初学者,你会发现先学完*Microsoft Academy C# course*(https://www.microsoftvirtualacademy.com/en-us/training-courses/c-fundamentals-for-absolute-beginners-8295)非常有用的。这本书是我从第一天开始学的,向初学者介绍了编程和Unity(我现在用它来回顾知识)。

第21天

1.旋转同步(Rotation Syncing)UNET教程:https://www.youtube.com/watch?v=PVUT6SR70wg

2.Xbox Controller安装:

https://www.youtube.com/watch?v=J8HaAyLzPh4, 

http://wiki.unity3d.com/index.php?title=Xbox360Controller

——看了这个视频的头2分钟,停在了Xbox控制器屏幕映射。然后用了一个测试项目来看看我是否能将一个立方体的动作指令转换到Xbox控制器上(先左,然后在右边停止)。很容易的,只需要为”右边停止”创建自定义的输入。之后,我试图在多人游戏场景中获得第二个玩家对象,但是没做出来,所以继续看更多的教程。大家经常抱怨Unity处理控制器输入的方式,但在我看来,如果你正确的设置了参数,那么就非常简单了(至少对于只支持Windows程序是这样)。我正在浏览论坛里有例子的帖子,试图找到多人游戏中第二个玩家对象的问题:

http://stackoverflow.com/questions/31666024/unity-unet-calling-command-outside-of-player-object

3.优化:https://www.youtube.com/watch?v=61KVmlwGDJY

4.看了前面10分钟(如果需要,以后会再来学习滞后仿真(lag simulation)):https://www.youtube.com/watch?v=CdbzZSHPN4E

5.UNET碰撞检测的唯一标志(Unique Identities):https://www.youtube.com/watch?v=eKkE7ki0XbA

6.UNET里的射击:https://www.youtube.com/watch?v=_u_0IphF33o

明天我们将开始我们的VR多人战斗游戏(考虑是Super Smash与Couch Knights的组合)。我们仍然需要去学习一些多玩家的知识好使我们的游戏能正常运行,以及学习一些其他的教程,但是我认为,开始做这个项目难度刚刚好,可以推动我们的舒适带,再下周发挥最大限度去学习。我所希望的是,我们所构建的可以作为一个平台,在这上面,VR社区可以做一个开源的多人VR战斗游戏。我会使我着手的这个Unity项目文件可以通过Dropbox,所以,如果你一直在跟着做,你可以试图先自己解决问题然后再对照我的代码来看答案。另外,如果我在某个问题上卡住了,但是其他人有解决方法,请不要犹豫的联系我(vrinsider@gmail.com or @VRInsider)。


第20天

1.https://doc.photonengine.com/en/pun/current/tutorials/tutorial-marco-polo

——看完了一部分这个教材才发现他的东西过时了

2.http://doc.photonengine.com/en/pun/current/getting-started/pun-intro

——直接的文档看上去更有用…但是我放弃了ship而选择了Unity的网络解决方案

3.https://www.youtube.com/watch?v=mXO0Tpk3gOU&feature=iv&src_vid=G57QaKIIQ1U&annotation_id=annotation_3417594549

——我看了头5分钟,但是意识到最好还是按照Unity手册做

4.http://docs.unity3d.com/Manual/UNetManager.html

——阅读了所有的Unity Networking文档,并且做了一些我认为对我们的战斗游戏重要的笔记:https://docs.google.com/document/d/1x8nCKzHWoClavZ-SzqP7oJ4lXumuC-JhwuH3NX_gzR4/edit?usp=sharing

5.https://www.youtube.com/watch?v=NLnzlwCRjgc

——哈,一个最新的UNET教程。

总的来说,网络比我原先预期的要难得多。对于我来说似乎很明显的是,Unity或者Photon工具就是一些简单的拖放,但它也不完全是这样(尽管Unity的系统看上去更像是这样)。真正最大的不足是在网上学习资料。幸运的是,看起来用Unity 系统将一个单玩家游戏转换成多人游戏不是很难,所以,最坏的情况就是我们将停止做一个单人战斗游戏,很大可能性之后会把它做成多人游戏。然而,我仍然认为做多人游戏是很有可能的。


第19天

1.事件系统(Event Systems)教程:

http://unity3d.com/learn/tutorials/modules/intermediate/live-training-archive/events-creating-simple-messaging-system

2.静态类(Static class)教程:

http://unity3d.com/learn/tutorials/modules/intermediate/scripting/statics?playlist=17117

3.事件回顾:

http://unity3d.com/learn/tutorials/modules/intermediate/scripting/events?playlist=17117

4.协程(Coroutines):

http://unity3d.com/learn/tutorials/modules/intermediate/scripting/coroutines?playlist=17117

——我仍然不是完全的理解协程,但我现在不打算继续关注它,我之后将会更进一步的彻底了解它。

5.调用(Invoke):

http://unity3d.com/learn/tutorials/modules/beginner/scripting/invoke?playlist=17117

——好吧,现在我完全理解Invoke了,取消调用(CancelInvoke)没有讲到。

6.Hover Junkers:https://www.youtube.com/watch?v=kYDSqRzOVKE

Reddit 上今天突然冒出来一个被曝光的这个,相当的惊喜啊。如果你现在在看这个,你了解的这个计划是下周7天时间制作一个VR战斗游戏,而且代码会开源。


第18天

开始学一个Photon多人游戏教程,但是代码第一行中的一个函数是过时的(教程是一年前的)。从昨天开始我就有一点轻微的疲倦,所以我准备今天去读《Black Code》,然后看一些我一直想看的media。我已经为后面的时间安排了4个多人游戏教程(我想我明天完成2个,然后再看一下Cooking with Unity 教程)。我的目标是下周一周时间去创建一个VR 多人战斗游戏,是开源的。如果你想继续:

http://forum.unity3d.com/threads/new-photon-unity-networking-tutorial-series.241158/

https://doc.photonengine.com/en/pun/current/tutorials/tutorial-marco-polo

https://www.youtube.com/watch?v=lrk7GJUpKns

http://www.convrge.co/multiplayer-oculus-rift-games-in-unity-tutorial


第17天

Dual Stick Shooter教程(第2-5部分):(第四部分,其他部分在YouTube边栏有链接)

https://www.youtube.com/watch?v=iKKly1pZ6fo&list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN&index=27


第16天

1.随机函数教程:https://www.youtube.com/watch?v=fOOUpQ2_YKc&index=13&list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN

2.https://www.youtube.com/watch?v=IgffM16cTRY&index=17&list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN

——只看了35分钟,可能不值得一看,因为对于Unity5来说有点过时了。主要采取的方法是如何在很多的盒子碰撞器外创建sudo网格碰撞器。

3.单例教程:https://www.youtube.com/watch?v=KHTv8DbY_3w&index=23&list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN

4.Dual Stick Shooter教程(第一部分):https://www.youtube.com/watch?v=iy-81lHEXvo&index=24&list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN

在Cooking With Unity 系列中学习的游戏开发工具和词汇(即有用的功能和互动的类型)是相当好的。我有幸在几个月后遇见了这个作者(他是个酷酷的家伙),现在我在游戏编程的第一线,我很高兴他花了如此多的时间来出版这些教程。


第15天

1.Cooking with Unity矢量和变换

https://www.youtube.com/watch?v=pqwvoo3iiZs&index=6&list=PLlHjNcdoyw6UK30xrTUhjM-usQOOE5jhN

2.http://www.businessinsider.com/google-new-operating-structure-2015-8

——不是编程,但是放这里标注下我对日常的新闻媒体的大量关注(几乎都是r/oculus 和 r/futurology)

过去几天我一直在重新调整我的咖啡因的承受能力,从每天的一杯咖啡变为每天一杯绿茶,并很快就切换到喝不含咖啡因的饮料的状态。这造成了短暂的工作效率下降,但是当我再喝咖啡的时候就会弥补上。我可能会在将来的某个时候写一篇文章,谈论下咖啡因摄入的最优化,但现在,我想我会提及一下。如果你不重新调整咖啡因的承受度,你会发现你会需要越来越多的咖啡因来仅仅使自己达到一个常规状态,最后失去思维效益的好机会。为了避免戒除的痛苦,最好每天戒掉约1-2杯。我发现戒掉一天一杯也不好,如果突然戒除而没有茶的缓解的话通常会导致大约3天的头痛/发热症状。


第14天

1.继续看Prospector Solitaire的教程(“Introduction to Game Design, Prototyping, and Development”

2.继续读Maijiong的“Decoded”(小说)


第13天

1.C#字段的视频:

https://www.youtube.com/watch?v=fMjt6ywaSow

2.列表,枚举,字典基础回顾:

https://www.youtube.com/watch?v=6tEz_JZlhF8, 

https://www.youtube.com/watch?v=6qo9iA2CZ3w

https://www.youtube.com/watch?v=kVODP-sq9OA

3.开始看Prospector Solitaire的教程(“Introduction to Game Design, Prototyping, and Development”)。在层上如何正确的产生小块。

4.回顾get/set:https://www.youtube.com/watch?v=-1eLIDSWiLk


第12天

结束了对一本新书(“Decoded”)的分心,所以呢,今天没有做任何工作。我想我明天就会回到教程上来保证不拖延。有一个准则就是,对于大脑来说,如果长时间在一个问题上工作而没有获得由于解决了问题产生的多巴胺,你可能会失去大量的动力。最好还是继续前进:)


第11天

1.尝试怎么将长(zhang)长(chang)的蛇的身体小块放在一个列表中使它和前面的身体小块一起运动(也就是说,跟着前面的蛇小块运动看起来像传统的蛇)。没完成。我给我的兄弟说了这个问题,他建议我使用两层Dictionaries。

在编程中碰壁是令人沮丧的,然而,幸运的是,有Unity论坛和Stack Overflow这样的工具的存在,能让你得到在线的帮助。我打算明天运用下字典(我要弄清楚字典是如何工作的,这会是一个好的学习经验),如果我弄不明白,我会发帖到Unity问答论坛。不管这个问题是否有人回答,明天反正是我最后一天做3D Snake(目前是这样),因为我想继续看其他更多的教程。


第10天

1.做3D snake的玩家动作

2.做蛇的食物的消失和重现,以及每一次成功吃到食物后要增加的速度

让我感到惊讶的是我发现要让那些动作能正常运行是多么的困难。跟着教材做和自己独立写代码完全是两码事。当我不再去看其他的snake编码论坛帖子,并且真正的思考了一下我想要实现的蛇的动作(即,根据最后按下的键,来决定在六个方向中的一个方向移动)的时候,我能找到一个解决方案。休息了一下吃了一点东西什么的,帮助我突破了一些难关(例如怎么确保你不能直接向后切换方向而自杀)。最后一个障碍,我需要弄清楚怎么将长长的蛇的身体小块放在一个列表中使它和前面的身体小块一起运动(也就是说,跟着前面的蛇小块运动看起来像传统的蛇)。

 如果你一直跟着做,你会注意到我没有贴出一些关于3D Snake如何做的链接,是因为这个项目是为了迫使你自己去做一些东西,而不是仅仅照着别人的代码写。今天我搜索了谷歌,试图想找到我遇到的问题的答案,从 “c# unity snake movement” 到 “how to get vector3 of gameObject”.


第9天

1.通读了Space SHUMP的Boss代码教程(无法让bounds代码工作)

2.开始第一个期中的项目:2天内创建一个游戏。今天我将专注于设计和规划出代码的构建,并开始一部分的实施,而明天我将专注于实现。我制作的游戏原型是3D VR Snake(贪吃蛇).我的目标是创建一个原型,作用是测试一下在VR上运行3D Snake游戏的机制,看看是否有趣。如果这个过程很有趣,我希望最后能在这个游戏中扩展开,把它变成一个完整的VR主题。如果你一直在跟着做,你可以自由创造你自己的游戏,或者也可以做一个3D Snake(只需要选择你能用到目前为止你学到的知识和你能从研究如何做明确的事情来快速获取的知识,可以在两天内完成的事情来做)

3.让Oculus相机在Unity里工作起来(还必须下载SDK和勾选一个复选框http://docs.unity3d.com/Manual/VROverview.html)

4.放一些3D snake 的基本对象到场景中,成功的规划了原型需要完成的编程要求,并且通过一个可调用的函数使一些立方体(蛇的食物)随机的出现在游戏区内。


第8天

1.继续Space SHUMP的学习(只剩下Boss的代码和Scene的装饰了)

——无法让Enemy_1类正常的工作(会卡在屏幕的顶部),所以直接跳过到Boss类,我真的非常不理解Bounds的代码,所以我宁愿继续而不是浪费时间(该类在VR里将会非常没用)。我个人觉得完成这个demo本来可以少一些复杂而更精简一些的,但是我猜这个作者是试图想用某个方法做一些东西好教大家一些新的本领。


第7天

1.继续Space SHUMP的学习

—--创建Bounds类有点枯燥乏味,但是至少它能让我保持在舒适带之外。不知道要编多少码才能完成一些像“检测物体何时离开屏幕或达到屏幕的边缘”这样简单的事,简直要疯。然而代码有较高重用性可以使你把时间花在有用的地方。我想,好的编码的秘诀是:现在用额外的时间来搭好框架,将来会节省你大量的时间。


第6天

1.完成“Introduction to Game Design, Prototyping, and Development”书里的物理弹射游戏辅导

——无法计算出怎么获得在一个回合里弹跳的球的个数,所以放弃了,然后用了20分钟来分析解决问题,之后便跳过这里了,因为我不打算在继续做这个特别的原型。UI似乎有点棘手,总的来说是因为处理混乱的int和string类型。

2.开始做这本书的Space SHUMP原型


第5天

1.开始学习“Introduction to Game Design, Prototyping, and Development”这本书里物理弹射游戏

——哥哥来了,和哥哥闲逛了一下。


第4天

1.学习“Introduction to Game Design, Prototyping, and Development”面向对象的思想。创建了 flock of birds(boid)程序。切记将Unity工具导入到新的项目中,否则Visual Studios 不会打开脚本(花了我大约2分钟来解决)。完成了书的第二部分(跳过了Scrum部分,因为我已经写了这一部分,但是没有制作燃烧图,以后再说)

2.完成了那本书里的Apple Picker(一款游戏)的教程

——在处理新的UI时被难住了(这本书写好后Unity又做了一些变动)。了解了你需要确保你使用了Unity引擎。UI命名空间在你的脚本最上面,如果你想使用新的“Text”命名空间(http://answers.unity3d.com/questions/872864/how-do-you-reference-a-text-on-a-canvas-unity-46-g.html)。而且在HightScore里必须手动把int类型转化成string类型,但是这本书认为我没有这样做。


第3天

1.继续读“Introduction to Game Design, Prototyping, and Development” 这本书的第二部分

——(第24章)学会了如何debug

2.下载关于Unity的Visual Studios 工具,这样我可以用VS代替MonoDevelop来调试(一旦你安装了这些工具,你必须把包导入到项目中,我轻而易举的在网上发现了这个问题,是某个人在Reddit问的)

3.看了Hover Junker的开发博客第0-5部分:https://www.youtube.com/watch?v=A7jNGu8PbWQ

——领会了一个忙于VR项目的小游戏工作室给我了一连串的关于进程的领悟,以及一些关于VIVE优点的VR小建议

4.“Introduction to Game Design, Prototyping, and Development”第25章:学会(复习)如何制作和使用类


第2天

1.继续读“Introduction to Game Design, Prototyping, and Development” 这本书的第二部分

——回顾并了解了列表和数组,还有if,else语句和函数

2.简略的看了http://docs.unity3d.com/Manual/VROverview.html这个网站弄明白怎么将Oculus相机放到场景中,但是还没有尝试


第1天(2015.7.27)

1.下载Unity5.1

2.下载Visual Studios Community(2015)

——比MonoDevelop好很多,编码很流畅

3.谷歌了在Visual Studios里面的Unity文档,学习了我可以将其在偏好设置中改为默认

4.开始阅读“Introduction to Game Design, Prototyping, and Development” 这本书的第二部分

5.发现了一个对我以后有帮助的或者提供资源的网站,https://www.reddit.com/r/unity3d

6.下载了很多免费的Unity的有用的资源来试用(可自定义的女性人物模型,太空资源,原始建筑,岩石,带动画的僵尸)

7.玩了一下阴影和预设,并在场景中使用了一些(还有人物模型)


0 0
原创粉丝点击