怎样通过业余练手项目学习与实践

在业余时间通过练手项目保持学习,这对于很多新手来说可能不太容易。我(英文原文作者)的工作要求我从刚开始自学VR开发的时候起就必须认真对待这件事 – 作为微软的一名技术布道者(technical evangelist),我需要在形形色色的小项目上花费大量的时间去思考、实践和总结,进而向更多的人传播VR和AR的开发基础知识。在本文中,我将和各位分享一些相关的经验心得,希望能帮助大家更有效的通过业余练手项目来提升自己。

建议各位首先通过这六个问题评估一下怎样的学习方式及实践项目更加适合自己,然后我们一起来看看如何将练手项目的价值发挥到最大。

以小为始

通过小项目起步,一次学习一点新东西,让自己逐渐适应新的领域,并随着知识的积累而向这些起步项目当中不断增加新的功能点。

我自己曾经在项目规模这个问题上走过弯路,譬如在刚刚开始学习web开发的时候就一心想要做一些Facebook那种级别的东西,真正开始实践时才发现,若不将这样的目标一再压缩或拆解,自己根本没可能上手。

多年之后,我的首个VR练手项目则简单实际了很多 – 无非是使用Unity制作了一个小app,整个场景里面只有一个球体,当你点击时,球体的颜色会发生变化(译注:和我们之前的“Unity与Cardboard app基础实践”类似吧,甚至更加简单一些)。接下来,我做了一个很基础的迷宫游戏,然后是一个非常简单的WebVR站点。有些时候,我甚至只是制作一些有意思的环境场景而已,其中不包含任何互动元素,目的就是让自己能够更加熟练的使用Unity编辑器的各种功能。

明确目标

要有的放矢的进行实践,在每个项目开始之前想清楚自己打算从中学到哪些东西,让学习过程更加可控、可管理。当然,“学习”这件事本身就是对于未知领域的探索历程,期间目标很有可能发生变化和调整,这完全没问题。

如今,我在每个项目开始之前都能将目标尽可能的梳理清晰,不过回头看看,在自学VR开发的初期阶段,我的很多练手项目还是缺乏一些最基本的方向性。说起来,这倒不完全是坏事,特别是在刚刚起步的时候,每次花些时间做些什么总会让你学到一些新东西,点终究会连接成线。随着对各种设备、开发工具和技能的深入了解,我才逐渐掌握了一些制定目标的策略。

我习惯于将练手项目按照目标进行分类,然后选择不同的实现方式 – 如果我需要了解一款新的设备平台及相应的SKD,那么我会选择在Unity当中进行学习和实践,因为这是我最熟悉的编辑器,无需花费额外的时间和精力进行学习。而如果我要了解一款新的编辑器,那么我会以Cardboard或Oculus Rift DK 2为目标平台进行实践,因为这些是我最为熟悉的设备。

很多时候,我的项目目标就是练习使用某种技术来完成一个特定的目标,譬如:

  • 使用Unity制作可互动的Cardboard app
  • 在Unreal引擎中实现Leap Motion手势交互
  • 在Unity中创造一个空间环境,学习粒子系统、材质及光影的基础知识
  • 使WebVR站点在DK 2中运行起来
  • 通过A-Frame呈现360°照片

成长进化

让初期的小项目随着自己的知识积累与技能提升保持成长和进化。

我手头的很多项目,在发展到一定程度之后,相比于最初计划当中的样子已经有了很大的不同。我曾在一次黑客松(hackathon)活动中制作了一款简单的Tron主题射击游戏,然而随着我持续的尝试新想法并进行调整,它逐渐变成了某种高科技机器人风格的外太空游戏,玩法也有了很大的不同。

有些时候,项目的实际规模会比你所预估的小很多,这就意味着你可以花更多时间去学习和尝试一些计划外的东西。例如我在第一次尝试A-Frame的时候,原本的计划只是在网页中实现360°照片的嵌入,然而实际做起来却发现这个目标太过简单,于是继续深入学习,这一点那一点的增加着内容和功能,最终完成了很多计划外的实践练习。

保持记录

我个人始终相信每一名开发者都应该开设自己的博客,一方面可以分享知识,另一方面更是可以帮助自己记录所学、所想、所做。我在自己的KittenVR项目当中,始终会确保将学习和实践过程中的每一个关键环节都记录下来。最终,这些记录成为了重要的参考文档,每当在其他项目中遇到相似的问题,我都可以很快的找到解决方案。

进行文字记录的过程本身也是一种复习,你可以通过这种方式将自己制定的目标、查阅的资料、编写的代码、实现的产出和发现的问题等等梳理整合到一处,形成一个完整的学习案例。

同步代码

我很喜欢用GitHub来追踪项目进程,我的多数文件也都放在了上面。你可以在GitHub上清晰的了解自己的开发动态,当然最基本的文件存储和备份功能更是值得信赖。

3 2 收藏 评论

相关文章

可能感兴趣的话题



直接登录
跳到底部
返回顶部