【译】机器人工厂的建设
我们和Tinybop的首席ios工程师Rob Blackwood、产品设计师Jessie Sattler、ios工程师Cameron Erdogan讨论了他们使用Unity建立机器人工厂的经验。
机器人工厂,一款于2015年在应用商店上线的iPad应用,它是工作室发布的第六款应用软件(现在总共有8款了),它是专门为孩子开发创造力而创造的新系列中第一款应用。作为这个系列中的第一款应用,这是他们第一次用Unity开发的应用,也将是TinyBop为苹果电视提供的第一款应用。
使用Unity让开发设计团队得以更高效快速的工作。首席ios工程师Rob Blackwood和产品设计师Jessie Sattler,他们是如何一起合作让这款应用问世的。初级ios工程师Cameron Erdogan用Unity为tvOS提供机器人工厂的编程。TinyBop的每个应用都能建立一个学习过程,这个过程能够帮助他们在下一款应用中细化和提高程序。
制作开发和设计的工具
Rob说:作为软件工程师,为开发应用遇到的所有问题设计解决方案是我们的责任,我们需要确定应用程序的系统和规则,并通过代码来实现它们。例如,我们在机器人工厂中创建的一个系统将决定机器人移动的方式;在有关植物的应用程序,我们创建系统来表示的落叶林的不同季节。也有很多情况下,我们必须为调整这些系统和规则创建工具。之后这些工具就可以被产品设计师用来给应用程序创建更合适的外观和使用感觉。
Jessie说:作为TinyBop的一名产品设计师,我负责组建应用程序中的视觉元素(使其简化)。我们为每个应用委托了不同的插画师,这将给我们提供一系列的风格和技巧。我的工作就是把所有的作品转化成交互式的运动部件,我用Unity建立场景、动画人物和物体,并确保我们的应用中每个物体在艺术/设计和编程/开发之间平稳运行。
Rob说:当我们开始开发第一款应用是,我们还是一个需要靠纯编程来开发一个开发环境的非常小的团队。我们开发了一个布局和物理模拟的工具,但它不是非常复杂。随着我们团队的成长,我们意识到我们在工程方面有一个瓶颈。因为大多数一切都得进行编程,并且在它可以测试之前必须得手动构建。由于开发的时候没有直接的视觉反馈,这也味着更多的重复的代码,这是一项耗时的任务;也没有类似于云构建Unity之类的自动化构建系统,这意味着工程师不得不花费时间手动安装应用到设备上或者上传到Testflight。
Jessie说:我们以前的编辑缺乏一个为那些不经常用代码工作的人创建的友好的人机交互界面。我非常依赖于工程师们执行简单的任务,这对我来说并不容易。Unity帮助工程师们减少了很多琐碎的任务,同时也让我有时间完善事情丝毫的细节,我们安装应用到设备上之前也看不到我们所做的结果,而我用Unity工作时则可以对工程进行预览。
Rob说:Unity为我们做的最重要的事就是让我们能够更容易的把工程和产品设计区分开。Unity是一个很好的图形驱动环境,这意味着我们在写一行代码前可以做很多的视觉布局,这也使得我们的工程师在开发越来越多的系统时能不断整合和迭代。生产团队可以再他们设计师得到即时的反馈,因为Unity允许你在任何时候启动和停止应用。我们还能使用云构建Unity每20分钟推送一次新版本到ios设备上去。因此,每个人都可以测试并即时给出反馈。
Jessie说:使用Unity让我们与工程师合作不再是一个梦!我们可以指定我们想达到的视觉效果。然后,我们可以合作开发一个对我来说能直接在编辑器中使用的工具和脚本。Unity的视觉特性让我能像个艺术家一样更轻易地控制我需要的东西,从而使得项目朝着我们希望的方向发展。这也促进了反复的过程,我可以和我们的工程师合力反复地寻找满足我们的审美和技术要求的解决方案。
在机器人工厂,基于他们创建的部件使机器人运动是个巨大的挑战。采用纯物理移动机器人会使机器人太难以控制,而且有预先计划的步行周期是枯燥和可预见的。我和工程师们创建了工具来绘制机器人的每一部分运动的路径,添加一组约束,以及对每个部件的重力和旋转限制。我们能够保持足够的基于物理的移动以达到独特的运动,但用户仍有足够的控制以及部分的权限来操控他们的机器人。
适用于不同的应用和原型
Rob说:我们总是优先考虑艺术方面而尽量不过多的拘泥于细节、风格明智。但这从技术的角度来看有时也很困难,这意味着我们创建动作手感和相互作用时的策略经常需要改变。机器人工厂的原型有许多纯色的形状和硬边。我们只能识别很小一部分能被重新利用的元素,然后重新组合用来创建大部分机器人的部件一每个部件至少包含50个小的元素一可以制作成独立的动画。(这很重要因为每个人都知道真实的机器人有1吨的移动部件!)这在我们最新的大多数应用中形成鲜明的对比,我们想把妖怪创造的更有机、更可塑。在这种情况下,我们创建真实的骨骼并制作了类似于皮肤的东西附着在其上使其能自然地弯曲,然后给其着色,当孩子接触到它的时候纹理会动。尽管适应不同的艺术风格有很多挑战,但好处则是我们会更接近艺术家的眼光,这总是非常有趣的。
Jessie说:每个画家都有自己的风格,所以每个应用都有一系列不同的挑战。在产品方面,我们必须决定哪些部分是必须的需要完整保留,哪些部分是可以通过模型编程编译生成出来的。归结起来就是需要平衡三个需求:广泛的内容、高效的开发和漂亮的视觉效果。创建可重复使用的技术并将之从一个应用转移到另一个应用中将是一个巨大的挑战。很多情况下这需要独特的解决方案,我们将框架、骨骼和动画放到一个案例里面,另一个应用肯需要庞大的、高分辨率的图形或者是小的可重复的矢量形状和SVG。使用不同的技术意味着需要更多的制作时间,但因为我们认为应用中艺术和设计的质量非常重要,所以这是过程中很重要的一步。
使用Unity移植到tvOs
Cameron说:我没有改变太多代码让机器人工厂在苹果电视上运行。下载好Unity制作的alpha版本到tvOS上之后,我给我们原来的应用程序库做了个分支。一两天后,我就能把应用程序编译到苹果电视。我不得不删除一些额外的、苹果电视不支持的数据库来使其正常工作,但是大部分工作还是由Unity来完成:我只是把构建的目标从IOS转换到tvOS上去了,所有Unity制作的类目和框架能在IOS上工作,也能在tvOS上工作。
在我把它编译完之后,我不得不改变电视上的控制和用户界面。为了做到这点,我使用了Unity的画布UI系统,这与苹果电视的遥控器配合的出奇好。我做的最后一个重要的是就是我添加了云存储功能,因为苹果电视没有本地存储,为了做到这个我编写了一个原生的ios插件,而这又与Unity轻松集成。
向前看
Jessie说:我们现在是在3D空间里用2D创建应用,这使我们能够创建立体错觉从而帮助我们给我们的应用带来生命。我一直在尝试在我们的应用中使用更多的3D形状,并用Unity5.3新的粒子控制来工作,我很兴奋用3D的魔力来加强2D世界。
Rob说:当我们展望未来,我希望加我们的应用扩展大更多的平台上。Unity尝试只需要一点点的额外工程就能尽可能完美的完成扩展到多个平台的这一步。就像我们转移到tvOS平台的经验一样,我们希望Unity帮我们减轻很多的负担。顺便说一句,我们正在聘请资深的Unity工程师,如果你喜欢Unity并且正在建立先进的模型,可以在http://www.tinybop.com/jobs找到我们。
机器人工厂可以在IOS和苹果电视的应用商店下载:
恭喜TinyBop并欢迎分享你的故事。
翻译自:
原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权