阅读更多

1顶
0踩

移动开发

原创新闻 快速构建Android应用原型实践

2016-03-15 11:18 by 正式记者 黑客不黑 评论(0) 有5208人浏览
导读: 本文作者Juhani Lehtimäki,现任Fat Robot联合创始人兼CTO,在过去三年里一直负责游戏《Lands of Ruin》的原型制作,由此撰写了自己在构建Android原型方面的实践经验。

以下为译文:

我最近更文较少,原因有两个:

Android最近优化了很多,没有太多可抱怨的地方。各家公司都开始了解:理解Android设计并进行正确的设计有多重要。最多就是说说新G+应用?
这个是主要原因:之前我一直在忙一个项目,努力将长时间的兴趣变成真正的产品。我和朋友怀抱一腔热情,开发了一款名叫“Lands of Ruin”的新型混合模式的模型游戏。这是一款Android的微缩模型游戏。
在过去三年多以来,我一直在负责构建这款游戏的电子部分(制作Android应用原型),并发现其实在Android平台上,只需使用本地原生代码,就能快速建立起原型。

缘起
在详细解释我们的工作内容和工作方式之前,先说一下我们正在做的事情。

Lands of Ruin包括桌上模型游戏以及同名的平板电脑应用。这样的应用前所未有,尽管混合型的游戏也有人尝试过,但我们的游戏跟之前那些有本质上的不同。简单来讲,我们想要在物理实体游戏与电子世界间建立平滑的交互。换成是你,要如何做呢?我们没有能够借鉴的样本,也没有可以照搬的想法,只能从头开始,从无到有地创建这样的交互。

第一步:纸
所有伟大的项目都是从一根笔和一张纸开始的。在快速原型构建上,纸和笔就是无价之宝。无需写下一行代码,就能了解需求,最棒的是,这部分的工作可以通过协作完成。智慧的头脑乘以2>所有其余的部分加起来!

我们最早的纸上原型甚至没打算画出平板UI,而是通过纸笔,找出需要追踪的地方和需要自动化的部分,这时讨论UI还为时过早。首先,在讨论“怎么做”前,我们必须先解决“做什么”的问题。

很遗憾早期的图纸都找不到了,不然还能跟大家分享一下,它们大多都是画在纸上的备忘列表。

常规迭代
在项目最开始,理解速度很快,迭代也非常频繁。我们必须为这个作为业余爱好的项目建立一个工作日常。我们的解决方案是在每周抽出一个晚上进行测试,最终决定的测试日是周四晚上,三年来一直如此。每个周四我们用目前的原型玩一局游戏,然后讨论改进想法和下一步的工作。然后为下个周四设立目标,再分开各做各的事。在未来一周内,我们会执行各自的任务计划,同时进行头脑风暴类的对话(一般在酒吧里),来解决遇到的问题。这种办法非常有效!

周四游戏夜还在继续并非偶然。不过如今的游戏夜,一般会有访客到我们办公室来,一边玩游戏一边喝上一两杯,虽然我们对互动的改进仍在进行。我们将在会话时发现的问题记录下来,希望在下个周四前修复掉。

第二步:功能性的“内容”原型,或者验证概念
在最初的纸面阶段过去后,我动手编写了第一个Lands of Ruin应用。这时我们在UI和功能的表现方式上花的心思很少,第一个原型还是用来理解应用需要涉及的内容,

在构建某个全新的东西时,有一个值得思考回答的问题:
引用
“为什么以前没人做过这个?”

对于这个问题,一般大概有三个答案:
  • 概念太蠢不值一做;
  • 没人想到过;
  • 之前缺乏支持的科技。

如果回答是2,那么你有可能是在骗自己。地球上的人那么多,很多聪明人的智慧远超你我。

要想回答这个问题,我们决定:要对概念进行验证。就是抱着这个目的,我们开始编写代码,得出的成果如下:



此时的结果,无论在UI还是体验上都还差得远,不过这两者也并非我们设计这个原型的目的。这个原型让我们能够第一次真正的体验这款游戏。这个应用已经定义了有限的规则及功能,因此我们可以通过推敲,得出完整产品的规则和功能。

这个原型还有一个重大的意义,就是能让其他人试玩了。当然,最初的体验者想要顺利玩下去,需要我们提供很多协助,不过这些体验是非常珍贵的。我们能够了解到这种概念的优势,并确定继续往下做。

我花了大概两周的时间,在晚上编写代码。虽然UI几乎没有,不过核心已经出来了。游戏角色有了,动作可以执行,玩家还能用平板通过WiFi与其他人对话。

第三步——快速建立原型
一旦对想做的东西有了足够的了解,就该思考如何构建了。这时,是时候开始构思真正的UI了。我们做了差不多有15个测试版来累积经验,关于交互还有很多不明白的部分,特别棘手的就是电子与现实世界之间的连接,在我们的设计中,应用需要大致了解在战场上模型角色所处的位置。

我们需要更多信息,用概念验证原型无法测试最复杂的那些设计理念。是时候再多花些时间在应用上啦。

最开始我们坐在一起,在纸上画出想要的东西。在纸笔快速迭代阶段过去之后,我们开始利用Omnigraffle画些更具体的内容。



此时想要用纸原型玩游戏不再可行,我们用Omnigraffle线框图进行讨论,然后决定这个概念值得一试。

成果如下:



此时离直观或美观还相距甚远,不过已经包含了游戏所需的一切功能。游戏蓝图已经有了,并且运作良好,这是第一次可以按照我们预想的方式来玩游戏了,此时我们在这个项目上已经花了6个月的时间。

问题
现在,随着原型的保真度更高,我们开始了解存在的问题。尽管距离最终的解决方案还差很远,不过理解问题所在的第一步已经有了。

这时候事实已经非常明显,操纵角色并不容易,也不好玩……如果某款游戏的互动无法令人开心的话,就不能算好游戏。

我们开始进行设计迭代,并非视觉上的,而是功能上的。我们想要在小小的7寸屏上找出足够的空间,让用户很容易便能访问所有的组件。我们增加了折叠式抽屉(sliding drawer)控件,以查看更多细节;又增加了view pager控件,以快速切换角色。

下面是其中一个迭代:






下一次迭代:



再下一次:






我们不断移动物体、修调其大小并进行重排,每次都会感觉距离目标更近一些。游戏测试者越来越多,每版的反馈也越来越好。

碎片功能(fragments)非常强大
我想要指出一件事,与你听说的可能有所不同,Android的fragments在设计原型方面非常强大。

我们的游戏UI到了现在还全都采用的本地代码。作为Android开发者,这是我最了解的方式,也是我能最快得出结果的环境。截屏中可见UI的各个部分都是独立的碎片,在上面的截屏中能看到5-7个碎片,每个碎片都了解各自需要展示的内容,并订阅着中心游戏状态(gamestate)的变更。碎片之间不会直接对话,所有通讯都通过事件总线的方式来去耦。

这一架构允许我们进行快速迭代。无论该碎片位于哪里,或者其他碎片是否可见,碎片中当前游戏状态下角色应当如何表现都是有规则的。

这种去耦的事件总线架构让我可以将某部分UI完全从一个原型改成另一个,而无需担心影响其他部分,也不需要对UI进行整体调整,而游戏修改后的版本仍是可玩的。

第四步——设计
最终我们进行了足够的测试,收集了充足的数据,因此可以进行下一步了。目前的原型太过简单丑陋,很难在公开场合展示。刚好我们有个机会,参加当地的制作者盛事Make Munich,将游戏公之于众。

我们需要这个机会。我们决定在Make Munich上发布我们的游戏,因此先将这款应用在Google Play商店上架,进行封闭测试,希望能找到更多团队之外的人试玩,从而找到视觉设计人员。

Rick是LoR团队的设计师,他接受了这个挑战,成为了我们的视觉设计师。结果,我们获得了这个UI:






有了这个UI,我们就能骄傲地去参加Make Munich大会,并发布游戏啦。那时候是2014年4月。

第五步——现实给了重重一击
在Make Munich盛会之后,我们将从观众和其他试玩者那里收到的回应做以评估。大体就是这款游戏不够好,一些规则机制太过复杂,使得交互非常困难。在这款应用的很多用例中,都因UI太过笨重而导致玩家的精力浪费在平板部分,难以集中在桌面和对手上。

我们的设计准则之一就是,这款游戏必须感觉像是模型游戏,玩家应当专注于模型、地形和桌面上,因此这种状态显然是失败的。

引用
我们没能达成设计目标。下一步怎么做呢?

好吧,只能重新开始!很明显,游戏的概念还是不错的,但我们的做法有问题。必须做些什么。

尽管我们在产品的生产设计与开发上花费了很多时间,不过现有的应用版本必须废弃掉。它跟我们的目标不符。

第六步——尝试全新的东西
设计方面的最大问题在于,角色很难控制。

我们灌了几罐啤酒,开始就能做些什么进行头脑风暴,结果有了一个想法:弹出drawer,于是我们决定一试。

最终完全修改后的游戏UI如下:









尽管此时,在这个状态下游戏还不能玩,不过这个概念看起来很有希望,似乎能够真正解决我们现有的问题,很值得我们多花些时间看看。

结果奏效了,很接近得出结果。一两周之后,游戏也可以试玩了,我们感觉事情最终开始往想要的方向发展了。

第八步——优化
我们不能发布将完全是原型的东西发布出去,因此针对卡片理念进行几次快速迭代之后,我们决定在视觉上做些合适的调整。Rick被迫又做了一次asset生产模式。

初版如下:









最终,应用开始接近我们想要的方向了。在测试中出现了巨大的区别。在游戏时,平板终于成了次要的部分, 成了桌游的延伸。这就是我们一开始的目标。

并不是说这款应用就完美无瑕了,不过在开发了三年之后,我们终于达成初衷了。目前实现的方式值得再雕琢一下。

在下面的迭代中,我们修改了卡片的方向,让它更适应我们使用的方式,能够在恰当的时候为玩家提供更多信息。

下面是我们得到的结果:






第九步——准备发布
目前这款应用已经包括了所有的核心功能,具备基本可玩性了。对于如何在核心之上构建更高级的功能,我们也有很好的理解。不过,应用的视觉效果还无法令人满意。之前的视觉设计都是由Rick来做的,不过他现在手边有一大堆其他任务,需要将更紧急的众筹和大会demo弄出来。

我们又找了个外援,雇了我女朋友的姐妹Natalia Kovalchuk来优化游戏设计,让它合乎标准,能够在大会和众筹中表现良好。

下面是这次设计迭代的结果:









第十步——众筹
现在到了众筹的时候,从有初始概念到如今,三年来以来我们一直在尝试让这款游戏进入公众的视野。我们目前正在进行众筹,希望能为这款桌面模型游戏的实体部分筹集足够的资金(观看视频,需自备梯子)。

英文来源:Android as a Prototyping Platform - a Case Study
作者: Juhani Lehtimäki(@lehtimaeki),Fat Robot联合创始人兼CTO
翻译: 孙薇
  • 大小: 20 KB
  • 大小: 37.2 KB
  • 大小: 149.2 KB
  • 大小: 161.7 KB
  • 大小: 128.6 KB
  • 大小: 169.1 KB
  • 大小: 181.8 KB
  • 大小: 151.9 KB
  • 大小: 206.6 KB
  • 大小: 234.1 KB
  • 大小: 226.1 KB
  • 大小: 148.2 KB
  • 大小: 205.6 KB
  • 大小: 193 KB
  • 大小: 194.5 KB
  • 大小: 187.3 KB
  • 大小: 246.4 KB
  • 大小: 327.9 KB
  • 大小: 31.7 KB
  • 大小: 34 KB
  • 大小: 95.1 KB
1
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 设计,构建线框图和对Android应用进行原型制作:第2部分

    在第一部分这两个部分组成的系列,我向您展示如何利用最初的想法一个Android应用程序,并将其发展成一个详细的计划,一直到映射出各个屏幕,会让你完成的应用程序。 以旅行应用程序为例,该应用程序将帮助用户与...

  • Android设计模式应用举例

    设计模式是在软件工程中广泛使用的解决特定问题的经过实践验证的最佳实践方法。下面是一些主流的设计模式:创建型模式:创建型模式涉及处理对象创建机制,旨在帮助在创建对象时提供更好的灵活性和复用性。这些模式...

  • android 动态裁剪图片,Android开发实践:自己动手编写图片剪裁应用(3)

    前面两篇文章分别介绍了我编写的开源项目ImageCropper库,以及如何调用系统的图片剪裁模块,本文则继续分析一下开发Android图片剪裁应用中需要用到的Bitmap操作。在Android系统中,对图片的操作主要是通过Bitmap类和...

  • 学习Android应用开发基础课学习心得

    他们需要了解Android应用程序生命周期、应用程序界面设计、数据存储、多线程编程等方面的知识,以便能够创建高质量的Android应用程序。Android应用程序可以发布到Google Play商店或其他应用商店,供全球用户下载安装...

  • Android AR开发实践之一:AR介绍

    三、AR的应用场景 四、AR技术面临的主要问题 五、AR平台简介 一、什么是AR AR(Augmented Reality增强现实的简称),也有对应VR虚拟实境一词的翻译称为实拟虚境或扩张现实,是指透过摄影机影像的位置及角度精算并...

  • Linux 内核监控在 Android 攻防中的应用

    本文即为对这类方案的一些探索和实践。 背景 为了实现对安卓 APP 的全面监控,需要知道目标应用访问/打开了哪些文件,执行了哪些操作,并且可以修改控制这些操作的返回结果。一个直观的想法是通过 libc 作为统一收口...

  • python 桌面应用 gui_GUI 桌面应用 - Python 最佳实践指南

    CamelotCamelot受 Django 管理界面的启发,在 Python 、 SQLAlchemy 和 Qt 的基础上提供了各种组件来构建应用。CocoaNoteCocoa 框架仅用于 OS X ,如果要编写跨平台的应用就不要考虑了!GTkPyGTK 提供了对 GTK+ 工具...

  • Android应用程序中使用 Gemini Pro AI开发——2年工作经验如何淘汰10年工作经验的Android开发?

    谷歌为 Android 开发者引入了一种在设备上,利用最小模型Gemini Nano的方法。此功能可通过 AICore 在部分设备上使用,这是一项处理模型管理、运行时、安全功能等的系统服务,可简化开发人员的工作。

  • 微信 Android 模块化架构重构实践

    到了微信架构的v2.x时代,随着业务的快速发展,消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显。由于代码、内存、apk大小都在增长,对系统资源的占用越来越多,导致微信进程容易被系统回收。因此...

  • Gradle理论与实践三:Gradle构建脚本基础

    文章目录Gradle构建脚本基础1、创建一个task2、创建Task的几种方式3、Task内部执行顺序4、Task任务依赖5、自定义属性 Gradle构建脚本基础 Project:根据业务抽取出来的一个个独立的模块 Task:一个操作,...

  • Android应用程序开发以及背后的设计思想深度剖析

    初步过了一下,很多地方写得还是比较深入的,先转载,后面再仔细看看。...我们先会简单介绍一下Android里的应用程序编程,然后以这些应用程 序在运行环境上的需求来分析出,为什么我们的Android系统需要今天这样的设

  • pAdTy_5 构建可穿戴设备的应用程序

    2015.12.23 - 2016.01.13 ...这些节描述如何构建在手持应用程序中会自动同步到可穿戴设备上的通知(Notifications),同时描述如何构建运行在可穿戴设备上的应用程序。注:关于用在笔记中会使用到的APIs的信

  • 微信Android模块化架构重构实践

    图1-架构演进到了微信架构的v2.x时代,随着业务的快速发展,消息通知不及时和Android 2.3版本之前webview内存泄露问题开始突显。由于代码、内存、apk大小都在增长,对系统资源的占用越来越多,导致微信进程容易被...

  • 如何深入学习Android系统

    Android进阶指北》是一本Android进阶图书,结合《Android进阶之光》和《Android进阶解密》两本书介绍的知识,一同建立起Android应用开发进阶知识体系。全书共分13章,主要从3个方面来组织内容:(1)Android应用开发...

  • 深入解析构建 Kotlin 项目实践

    编者按:今年的 Google I/O 大会上,Google 宣布 Kotlin 成为 Android 开发的官方语言,一时之间,究竟使用 Java 还是 Kotlin 开发,也成为众多开发者热议的话题。近日,Android 大神 Jake Wharton 发推文称已入职 ...

  • Android开发中的设计模式实践理解(一)

    理解android开发中的设计模式实践

  • 【java毕业设计】智慧社区教育服务门户.zip

    有java环境就可以运行起来 ,zip里包含源码+论文+PPT, 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7及以上 数据库工具:Navicat11及以上 开发软件:eclipse/idea Maven包:Maven3.3及以上

  • 基于selenium的携程机票爬虫资料齐全+详细文档+高分项目+源码.zip

    【资源说明】 基于selenium的携程机票爬虫资料齐全+详细文档+高分项目+源码.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!

  • 【java毕业设计】智慧社区宠物管理系统(源代码+论文+PPT模板).zip

    zip里包含源码+论文+PPT,有java环境就可以运行起来 ,功能说明: 文档开篇阐述了随着计算机技术、通信技术和网络技术的快速发展,智慧社区门户网站的建设成为了可能,并被视为21世纪信息产业的主要发展方向之一 强调了网络信息管理技术、数字化处理技术和数字式信息资源建设在国际竞争中的重要性。 指出了智慧社区门户网站系统的编程语言为Java,数据库为MYSQL,并实现了新闻资讯、社区共享、在线影院等功能。 系统设计与功能: 文档详细描述了系统的后台管理功能,包括系统管理模块、新闻资讯管理模块、公告管理模块、社区影院管理模块、会员上传下载管理模块以及留言管理模块。 系统管理模块:允许管理员重新设置密码,记录登录日志,确保系统安全。 新闻资讯管理模块:实现新闻资讯的添加、删除、修改,确保主页新闻部分始终显示最新的文章。 公告管理模块:类似于新闻资讯管理,但专注于主页公告的后台管理。 社区影院管理模块:管理所有视频的添加、删除、修改,包括影片名、导演、主演、片长等信息。 会员上传下载管理模块:审核与删除会员上传的文件。 留言管理模块:回复与删除所有留言,确保系统内的留言得到及时处理。

Global site tag (gtag.js) - Google Analytics