注:本文的主要面向的读者是Flash 设计人员、 没有接触过Flash Platform的人群以及评估 Flash Platform游戏开发的商务决策者。 本文还包括一些对希望进入Flash游戏开发的、有经验的ActionScript开发人员的有用信息。 然而,关于游戏特定的ActionScript 编程技巧,我推荐参阅Gary Rosenzweig的书籍 ActionScript 3.0 游戏编程大学(ActionScript 3.0 Game Programming University)。
Flash游戏—利用或为Adobe Flash platform创建的游戏—已经遍及世界。 你可以在各种游戏长廊网站发现它们,例如Newgrounds.com、AddictingGames.com,等等。 共有数十种游戏种类可供选择,其中包括动作、冒险、博彩、猜谜和角色扮演等等。 这些游戏可以互动并且支持多种浏览器和多种平台。用户能够在个人电脑以及移动设备上运行这些游戏。 它们能够作为独立的目标运行,它们可以为更大网站添加卓越功能,并且它们能够被嵌入到最流行的社交网络中,例如Facebook。 目前,仍然有很多人并不知晓,通过使用Adobe AIR 技术,Flash游戏能够通过Apple应用程序商店(App Store)安装到iOS设备上。 像Alien Hominid和 Line Rider 等顶级游戏已经风靡世界,以致它们已经从Flash Platform被移植到Nintendo Wii和Microsoft Xbox 360等控制台设备。在线休闲游戏正在迅速流行并且Adobe Flash Platform可以提供创建和安装这些精彩内容的工具。
我设计和开发在线游戏已经超过十年时间。 我已经在大量的领域与成千上万的并发用户进行合作。 在我的开始阶段,我使用了许多实用的开发平台,其中包括功能强大但难以使用的C++ 平台。 随着时间的推移,Flash Platform 工具变得更易于使用而Adobe Flash Player 也在不断演化。 现在,Flash Platform 已经成为创建在线2D游戏的事实环境。 随着 Adobe Creative Suite 5.5的最新发布,Flash 社区正在将引人入胜的内容移植到 手机、平板电脑和因特网电视中。 此外,随着Stage3D(以前被称为Molehill APIs)的即将发布,Flash Platform可能也将成为创建在线3D游戏的首选。
在本文中,我将给出在线游戏潜在功能的概述,展示Flash Platform的能力并且探讨端到端游戏开发的挑战和解决方案。
在过去的几十年中,游戏行业已经稳步发展,并且它将拥有一个更加光辉的未来。 但面对如此之多的游戏技术,你可能想知道Flash Platform 是否是正确的选择。
游戏是正规的行业
在线游戏在20世纪90年代开始流行。 随着计算机变得更为功能强大以及因特网接入速度不断增加,该行业已经获得显著的增长(参见图1)。
在线游戏市场研究公司DFC Intelligence 预测2011年的休闲游戏市场的增长速度将会更快:
- 预测2011年全球在线游戏收入为100-120亿美元
- 其中70% 的收入将来自基于 PC的游戏(与视频游戏终端设备相比)
- 而30% 的收入将来自休闲游戏(与所谓的Hard-core游戏相比)
大约30-50亿美元的2011年收入的目标是在线计算机游戏,例如使用Flash Platform创建的项目。 去年美国人花费的视频游戏服务费超过30亿美元。 市场研究公司Pike & Fischer提供的一份新的报告估计到2015年美国人每年花费的游戏费用达到50亿美元。
根据Gartner研究公司的报告,全球从最终用户获取的移动游戏收入从2009年开始每年以19%的速度增长,在 2010年已经超过56亿美元。Juniper Research 预测到2015年全球移动游戏收入将超过110亿美元,因为在游戏过程中的购买收入已经超过以每次下载付费方式的收入。
此外,移动游戏发展趋势也引领人们返回到1980年代Atari游戏的简单而诱人的游戏方式。 这样使得由个体和小型团队创建的较低成本的游戏能够在商务上获得成功。
计算机和移动游戏开发的商业潜在机会是巨大的并且以令人难以置信的速度增长。
Flash Player 的历史
Flash Player遍及世界,但它不是唯一的游戏。 从历史角度来看,当需要高性能的游戏时,必须利用功能强大的技术创建在线游戏,其中包括C++、Java和 Shockwave 3D—以及Torque和 Unity。
在目标为其它插件的游戏开发人员必须期望他们的用户能够耐心地下载必需的播放器的时候,Flash Platform开发人员却能够指望他们的用户已经拥有Flash 播放器。 Adobe Flash Player 是世界上最流行的软件,它在成熟市场的因特网桌面系统中的普及率达到99%并且适用于大量移动设备。 目前,有超过三百万的开发人员和设计人员使用Flash技术来创建、发布和销售跨世界领先的web和移动平台的富因特网应用程序(RIAs,rich Internet applications)和内容。 利用Adobe Creative Suite,开发人员还能够期望在一种环境中实现工艺图、声音和代码的顺利集成。
Flash Player 10 拥有前所未有的各种功能,而Flash Platform 开发环境、Flash Builder 和Flash Professional也是如此。 随着每个新版本的推出,它们变得更为有用和更易于使用。 自21世纪初以来,该软件的多功能性已经促成其在互动广告公司(interactive agencies)中的快速应用。 美工人员可以使用 Flash Professional为游戏菜单和背景工艺图提供图解。 动画绘制人员能够模仿周期行走、爆炸以及任何其它需要的动作。 开发人员也能够使用 Flash Builder或 Flash Professional 编写整个项目的代码,并且能够从同事那里方便地集成本机组件(native asset)。 当然,Photoshop、Illustrator和其它专用工具也能够实现许多角色功能,而且由于它们均是 Adobe Creative Suite的组成部分,组件集成也是非常简单的操作。
曾经只是一个单一玩家体验的游戏场所,现在Flash技术可以用于创建拥有成千上万用户的生机勃勃的市场。 从Flash Player 6开始,Flash 已经支持至服务器永久连接所需的套接字连接方式。 这种类型的连接允许几个对几个(few-on-few)的多玩家游戏。 Flash Player的最新版本已经具有支持大量多玩家游戏所需的能力:目前在客户端侧已经不存在瓶颈。 Flash Player 10引入了端到端通信功能,这也为多玩家游戏的实现提供可能性。
业界领先者观点
Flash Platform已经从大量的游戏业界领先者那里获得认可。
Michael Gold是多玩家游戏工作室Electrotank的CEO,他表示,“由于Flash Player的普及性和性能,现在Flash 已经是基于浏览器游戏的事实标准。”
PushButton Labs 是一个已经从使用 C++转换为使用Flash 技术进行游戏开发的团队。 PushButton的创始成员来自GarageGames,他们是 Torque 游戏引擎的开发者。 根据 Ben Garney(开源 PushButton引擎的首席开发师)所述,“Flash 能够提供良好的游戏体验,并且你很有可能在一夜之间发布一个面向10亿用户的游戏。 而且它只会越变越好。”
Omar Gonzalez是Almer/Blank的软件架构师,他附和道:“Flash Platform使得游戏变得更为简单,因为它具有清晰独立的逻辑和易于更新的音频/视频组件。 它不同于任何其它游戏开发工具套件。”
本节将讨论Flash Platform 的基本组成部分以及视频游戏理论的基本知识。
工具和运行时
在创建一个 Flash 游戏之前,你需要了解用于创建它的可用选项。 特别地,你必须清楚地了解你的每个项目所需的正确的IDE、运行时和服务器(如果需要)。 入门的最简单方法是使用 Flash Builder或 Flash Professional开发一个单一玩家的游戏(即不需要实时多玩家服务器的游戏),它能够以SWF文件格式发布并且可以在你的web浏览器中利用Flash Player (运行时) 运行。
随着开发团队的不断成熟,他们能够继续使用Adobe Flash Professional 进行组件创建,并且能够使用经过优化的 Adobe Flash Builder等团队友好的工具来支持你跨桌面和各种设备发布内容。
如需获得更多信息,参见了解创建游戏的Adobe Flash Platform技术(Understanding Adobe Flash Platform technologies for building games)和Flash 游戏开发工具、运行时和服务器(Flash game development tools, runtimes, and servers)。
关键组件
创建你的第一个游戏相对来说比较简单。 你只需安装 Flash Builder或 Flash Professional即可创建精彩的游戏。 下面是一个基本游戏所需的一些关键组件:
- 输入(Input):输入涉及到用户控制游戏的方式。 休闲游戏通常通过鼠标、键盘箭头或两者组合进行控制。 在移动设备上,触摸手势是最常用的input方法,而Flash Platform 具有稳健的触摸支持功能。
- 精灵(Sprites): 它们是屏幕中的可视元素,例如一个宇宙飞船的MovieClip或一个飞行游戏的双翼飞机。 注意尽管
flash.display.Sprite
的确是一个Flash类,但这里的 sprite 是指 sprite的通用视频游戏概念。 - 声音(Sounds):逼真的声音可以强调重要的游戏事件(例如当一个宇宙飞船移动时) 以便增强游戏的玩家体验。
- 碰撞检测(Collision detection): 这是能够检测到任意两个sprite在屏幕上碰撞动作的代码,这对大多数面向动作的游戏是非常关键的。
- 游戏主循环(Game loop):这是游戏开发人员有时使用的术语,用于描述控制游戏体验的编程逻辑。 ActionScript是在Flash游戏中用于执行游戏主循环的编程语言。 在ActionScript 3.0中,共有两种以特定时间间隔调用函数的方法。 第一种方法是使用互动对象(InteractiveObject)下发的
Event.ENTER_FRAME
事件。 第二种方法是使用一个定时器。ENTER_FRAME
事件方法更为常用,它最好用于极为频繁更新的情景,例如动画、其它渲染更新以及 人工智能(artificial intelligence (AI))例行程序等。 定时器的行为方式与ENTER_FRAME
事件相似,但它无需与帧速率进行绑定也能够下发事件。 定时器最好用于时长为数秒或更长的时间周期。 与其它编程语言一样,ActionScript 也能够提供其它大量技巧以实现游戏主循环,例如for和 while 循环。 如果你希望开发Flash 游戏,则你必须学习 ActionScript。 参见下面的步骤2: 开发 章节了解更多关于如何开始学习ActionScript的信息。
游戏开发工作流程
个体开发人员和小型开发团队在开发新游戏时将使用相同的基本步骤:
- 集思广益。返回到相应的绘画板。 为你的游戏产生一个构想。
- 开发。 你的大部分时间将花费在此步骤。 利用ActionScript 3.0将你的可视和音频组件进行组合。
- 测试和优化。查看你的角度。 测试你的游戏以确保它不存在软件故障并且很有趣。 通过优化改善游戏性能。
- 发布和收益。 设法将你的游戏发布到玩家的手中,并且获得一些收益。
- 使用分析。 研究用户的反馈结果以及游戏玩法、游戏时长等度量信息。 改进游戏的弱点。
- 更新。不断地重复步骤1、2、3和5以便完善你的游戏并且为游戏玩家提供更佳的体验。
下面的章节将更深入地讨论上述每个话题。
一款完成的视频游戏–在呈现方面进行了完善并且玩起来令人兴奋–比它表面上看起来要更为复杂。 较为聪明的设计人员和开发人员在你与游戏之间隐匿细节并且展现一条清晰路径。 一款成功的游戏是一个伟大的创意和卓越技巧之间紧密结合的结果,或换句话说,它是设计人员的创造力和开发人员扎实的技术技巧之间紧密结合的结果。 但这些伟大创意来自哪里? 你如何开始构思这些创意?
每个团队可能以不同的方式构思新的创意,但基本过程应该如下所列:
- 提出一个游戏创意
- 创建一个故事板和相应的游戏world
- 在一个游戏设计文档中定义你的游戏
构思创意
有时候我坐下来设计一个游戏并且开始动脑筋构思全新的创意,但大部分时间我的大脑中已经拥有了许多飘动的创意。
我的游戏创意可以来自任何地方:高投入的控制终端游戏、简单的移动游戏、实时游戏、以及体育、电影、漫画、书籍、朋友聊天、美梦和恶梦等等。 由于我身处游戏设计的行业,故我会随时随地快速记下各种创意。 我建议随身携带一个日记本或笔记本电脑,以便在新的游戏创意在大脑闪现时能够捕捉它们。
如果你能够和我一样,你也能够拥有很多游戏创意。 这样,相应的过程变成缩小创意列表并且选中应该吸引人的创意。
我发现成功游戏的最实用创意是某些新的理念和某些借用的理念混合产生的创意。 也许你可以为一个世界设想一个新的外观并且创建一个新的角色,但使用像Space Invaders、Frogger或 Pac-Man等传统游戏的游戏机制。 我发现游戏玩家对可控意外(controlled surprise)反响良好–部分新奇而又部分熟悉并且感觉舒适。
你如何知道游戏将是有趣的? 很难知道。但相应的直觉来自经验。 尽管如此,这也不是一种完美的技巧。 如果你刚刚接触游戏设计过程,则你应该从一些与你已经知道是很好玩的游戏相似的游戏入手。 然后,当你准备将它变得更为个性化并且为游戏玩家提供新鲜的玩法时,你可以改变相应的创意。
创建一个故事板
在故事板过程期间,你可以开始为角色、游戏屏幕、游戏组合等绘制草图。Game 组合 是规则的核心组合,这些规则能够对使得游戏变为独特的元素进行定义。 游戏能够支持大量合作游戏机制(例如旋转、键盘输入、风险和回报(risk and reward)、受限玩家生命值(limited player health)等等)。
在这一阶段,相应的思路是不要制作精美的工艺图(参见图2),而仅仅直观地表达你的理念即可。 这对孕育新的创意以及改进现有创意是有帮助的。 在这一阶段,你的创意将会不断演化和成长。 此时对你游戏的替换、选项、多种解决方案和各个方面进行定夺均是可允许的。 此外,故事板还对团队通信具有非常重要的意义。 在共享创意的这一阶段,每个人都应该参与其中,而不仅仅是美工人员。
当创建故事板时,你必须考虑到你的玩家用户的要求。 有时你的用户定义你的游戏,而有时你的游戏定义你的用户。 对我来说,两者兼而有之。 如果我感觉对我的游戏创意的各个方面进行折中能够使得游戏更加引人入胜或便于玩耍,我对此的态度是开放的。 重要的是不要尝试让所有的玩家都高兴,但同样重要的是你的游戏应该广受欢迎。 因此,应该仔细考虑游戏的绘图和玩法的每个方面。
在你的游戏理念定型时,将相应的细节添加到游戏world中。 给出玩家的挑战描述。 给出相应的回报描述。 你的游戏包含角色吗? 相应的情节或故事是什么? 角色执行任务的动机是什么? 玩家是从上面或侧面观看动作吗? 游戏存在重力吗? 角色会受伤和死亡吗? 如果会,受伤和死亡的方式是什么? 游戏世界是否真实并不重要,但它应该具有因果关系:它应该具有一个你的用户能够理解的清晰一致的原因和结果。 用户在玩游戏和了解游戏世界的过程中能够快速地建立一个概念上的词汇表。 他们将开始建立假设。 并且利用这些假设创建引人入胜的体验。
编写设计文档
设计文档就像一部电影剧本。 这是这一过程中的关键点,从此点开始,你必须对新的创意给出限制条件并且决定游戏的最终方案。 这也是作出一些可能(更好或更坏地)影响游戏的艰难决定的最佳时期。
- 你的目标用户是谁? 他们期望使用亮色背景或暗色和情绪化的背景? 他们是具有耐心、喜欢高难玩法的有经验玩家?或是喜欢简单玩法的休闲玩家?
- 你的目标设备是什么? 是大型浏览器窗口或小型手机屏幕? 不要仅仅在这些设备上复制体验。
- 考虑每个游戏的独一无二的特征并且定制游戏的体验。
- 应该包含何种口语? 游戏的翻译如何组织? 哪些徽标、图案、菜单和其它文本将受到影响? 如果游戏的本地化语言超过一种,你将采用什么方法来处理它们? 在游戏已经开发完毕之后来处理这些问题将是非常困难的,因此必须在设计阶段考虑如何处理这些问题。
在团队开发环境中,设计文档尤其重要。 因为它能够清晰地列出所有关于游戏可视组件、游戏机制和菜单的最终决定,它能够帮助确保所有成员在制作游戏的过程中使用相同的指南。 游戏团队在设计文档完成之后不允许对其进行更改,而另一些团队在开发期间的一些关键点欢迎对其进行更改。
在规划和开发过程期间,对你的核心理念进行核查非常重要。 它有趣吗? 它吸引目标用户吗? 它适用于目标设备或其它设备吗? 确保一定征求别人对你创意的反馈,特别是你的目标用户成员。
开发成功Flash游戏的注意事项
无论你创建游戏的方式和目的是什么,你很可能希望你的游戏玩起来有趣并且很多玩家愿意玩你的游戏。 因此,一个主要注意事项是确保游戏能够方便地拿起即玩(pick up and play) 用户应该能够不需要进行冗长复杂的设置即可立即进入玩游戏的状态。 考虑提供一个互动游戏指南,而不是提供告诉用户如何玩游戏的整个屏幕文字。
根据Ira Willey(流行游戏门户AddictingGames.com的创建者)的看法,如果你通过遵循下列指南提供逼真的游戏内容和卓越的性能,则你将会吸引那些更愿意重复玩你的游戏的玩家。
- 选择一个具有非常吸引力并且易于记住的名称。
- 确保它是原创的名称。 让你的游戏与其它游戏不同以便它能够令人难忘。
- 包含社交功能以支持多玩家游戏和远端互动。
- 在太容易和太挫败之间找到一个平衡点以便游戏具有挑战性。
- 包含悦耳的声音和良好的效果;一定包含静音和音量控制按钮。
- 优化游戏以便降低游戏的文件大小从而使得它们易于下载。
- 如果你的游戏包含注册功能,则提供一个宾客玩家(play as a guest)选项。
- 考虑支持用户创建和共享游戏级别以增加你的游戏的玩家人群。
关于各种绝妙的技巧和建议的更多信息,请参阅 Ryan Wolniak的eBook 让你的Flash游戏获得资助(Getting Your Flash Game Sponsored)。
在制作期间,一个有条不紊和可重复的过程将是非常有益的。 通常,在设计阶段,你不知道游戏的所有细节。 在代码编写完成之前,你可能不知道工艺图的最终尺寸。 你可能知道屏幕上出现10个敌人会显得人数太多,因此,你将使用8个敌人。但在你对游戏试玩几次之前,你不知道游戏设置的困难。 此外,你可能最终了解你使用的某个声音效果非常令人厌恶,从而需要更改。 在你的开发过程中,保持灵活性并且不断地调整游戏理念,这样你才可能创建最佳游戏。
下面是利用Flash技术开发游戏的基本步骤:
- 开始编写一个完整的游戏设计文档。包含游戏屏幕布局和玩法规则,并且不能忘记使游戏有趣。
- 分解游戏引擎。将游戏按照许多小的部分进行规划以便游戏更易于管理。
- 建立小型独立演示项目。分别对较难以处理的部分进行验证,例如输入控件、物理现象和三角函数等。
- 创建和集成组件。 利用Flash Professional或其它 Creative Suite产品可以创建工艺图,并且通过在线能够以很少费用或免费下载声音代码。
- 构建菜单。游戏通常能够支持许多游戏自身之外的屏幕,例如引导(introduction)屏幕、指令(instruction)屏幕和游戏结束(Game Over)屏幕。
- 试玩游戏。在开发过程中测试你的游戏以确保它有趣并且具有挑战性。
游戏开发过程的一个关键部分是实际的代码编写。 正如我前面提到的那样,ActionScript是用于对你的Flash游戏进行编码的语言。 作为一种编程语言,ActionScript 一直处于进化过程中,现在已经是它的第三个版本。 要想成为一个Flash游戏的开发人员,你必须学习ActionScript 3.0(而不是ActionScript v1或v2)。 不同开发人员的学习方式不同,因此,你需要找到最适合你的学习策略。 下面是一些入门学习的推荐资料。
- 用于Adobe Flash Professional CS5教室的ActionScript 3.0(ActionScript 3.0 for Adobe Flash Professional CS5 Classroom in a Book)。 这是一本对ActionScript 3.0简介的书籍。 另外,请查看视频系列ActionScript 1:1 with Doug Winnie。
- ActionScript 3.0基础。该书对ActionScript 3.0编程语言给出深入的讲解。
- ActionScript 详解手册(ActionScript Cookbook)。 该书包含利用ActionScript编写的一些最常用编程任务的代码范例和解决方案。
一旦你熟悉ActionScript语言,你将会希望学习如何将你的知识应用于Flash游戏开发,并且希望查看下列诸多的Flash游戏开发书籍。 其中一些书籍给出ActionScript语言的概述。 而另一些书籍假定你已经了解ActionScrip语言,因此直接讨论相应的代码。
- Flash游戏开发实例:如何遵循最佳实践方法及保持你的健全心智(Real-World Flash Game Development: How to Follow Best Practices AND Keep Your Sanity)
- ActionScript 3.0 游戏编程大学(ActionScript 3.0 Game Programming University)
- Flash游戏设计基础(Foundation Game Design with Flash)
- Flash 游戏开发范例(Flash Game Development by Example)
最后,我强烈建议执行继续教育策略。 你应该跟踪Flash开发博客,参与ActionScript论坛和Flash 游戏开发详细手册(Flash game development cookbook),订阅和访问ActionScript特定的web网站,例如Kirupa.com和ActionScript.org,以及查阅 Flash Platform Game Developer Center 和ActionScript Technology Center上发布的新进程。
在你使用ActionScript开发若干游戏之后,你可能希望探索如何使用Flash游戏引擎,这些引擎能够帮助你完成一些通用的编程任务并且为你的游戏代码提供一个框架。 你可以通过 Flash Platform Game Developer Center的游戏引擎页面了解Flash游戏引擎的更多信息。
团队动态和组织
目前哪些人在创建游戏呢? 为了帮助回答这一问题,Mochi Media,一个提供工具帮助游戏开发人员从他们自己游戏获取收益的公司,最近完成了一份详尽的Flash游戏市场调查。 相应的调查结果提供了一个关于谁正在开发游戏以及他们如何开发游戏的有趣观点。
下面是一些主要的调查结论:
- 新的人才正在涌入Flash游戏开发市场。 几乎三分之二的响应较快的开发人员已经在过去两年开始开发游戏。
- 开发人员基本上是独立的,其中只有8%工作于工作室或其它游戏开发公司。 其中大部分开发人员独自开发他们的游戏(60%),另外还有一些重要但数量较少的开发人员工作于独立的团队(29%)。
- 大约35%的开发人员全职开发游戏。
- 所有受访者的20%声称每月能够获得超过$1,000的收益。 只有5%的受访者声称每月能够获得超过$5,000的收益。
- 游戏开发周期较短—大约50%参与调查的开发人员创建游戏的周期是一到三个月。
- 大多数受访者只使用Flash Platform开发游戏。
非常有趣的是70%的Flash游戏开发人员将创建游戏作为一个爱好或第二职业:这不是他们的主要收入手段。 尽管调查结果显示60%的Flash游戏开发人员独立工作,但我强烈推荐你为你的游戏寻找帮助。 很少有人能够在设计、开发和赚钱的商业领域均取得巨大成功。
为游戏公司开发游戏
Flash游戏业界的许多开发人员均基于合同或作为全职雇员的方式工作。 这些人员包括游戏创意的创建者、绘制和使得游戏组件具有动画效果的美工人员、声音设计者、当然还包括Flash和Flex游戏开发人员,他们能够利用自己的编程技术将上述部分全部组合在一起。 此外,还需要由商业拓展的专业人员执行的工作以便推销你的游戏产品。
受雇的工作是养家糊口的一种稳定方式,并且回报丰厚而又有趣。 但为了保持更具创新的控制以及产生更多可能的收益,我认为值得冒险去自己创建和销售游戏。
创造性的制作过程
当谈到Flash游戏工艺图制作时,TangledDreams.com 的Autumn Rain Turkel有许多话要说。 根据他多年的经验,他为美工人员提供两个重要技巧:
- 应该从开始阶段介入项目。 美工人员的抽象创新能力在游戏理念的集思广益阶段非常有用,并且能够利用开发人员的通用分析方法保持良好的平衡。
- 在你的开发过程中必须记住目标平台的局限性。
开发人员将会感谢像Autumn等美工人员的耐心和团队协作精神。 开发人员也必须设法以保持原始组件的质量以及维持整个项目的图像的方式进行组件集成。
创新和技术工作流程的集成
Flash Platform和Adobe Creative Suite的灵活性允许许多工作流程能够将工艺图集成到你的项目中。 Flash Professional 可以接受许多流行的图像、动画、声音和视频格式。 此外,Flash Professional 还能够导入Photoshop和Illustrator文件。
尽管没有要求,但美工人员在Flash Professional中直接工作的效率将会更高。 即使稍后相应的开发是在 Flash Builder中完成的,但开发人员能够导入美工人员在 Flash Professional中创建的SWF文件。 这样,你可以在制作期间方便地往返于工艺图组件之间,并且可以在运行时轻而易举地缩放或旋转这些组件。
在工艺图完成之后,可以使用两种主要策略将其加载到你的游戏中。 首先,这些组件能够被嵌入到相应的Flash库中。 这是最简单的工作流程,但它增加SWF文件的大小,因而你的用户需要更长的初始下载时间。 另一种选择是,这些组件能够在运行时、在级别之间或在需要更多组件时进行加载。 最佳解决方案将取决于你的项目、组件的数量以及目标设备。
关于更多信息,参见我的博客贴文,其标题为 在Flash/Flex工作流程中使用Embed & AssetManager(Using Embed & AssetManager for Flash/Flex Workflow)。
使用Flash Builder和Flash Professional进行游戏开发
在我的文章在Adobe Flash Platform上进行游戏开发简介(An introduction to developing games on the Adobe Flash Platform)中,我描述了如何将游戏理论应用于实际游戏。 为了帮助大家更好地理解该文章,我创建了一款名称为Flyer的简单游戏。 该游戏的玩法类似于1980年代的电子游戏Frogger。 用户的宇宙飞船从屏幕的底部启动。 4个箭头键能够移动flyer。 游戏的目标是到达屏幕的顶部即可获胜。 在达到屏幕的顶部之前与敌人(双翼飞机或小型软式气艇)相撞,将导致失败。
在整个制作过程中,特别是在项目完成时,必须对你的游戏进行测试以便改善和优化游戏。
测试
依据你项目的大小以及你团队的人数多少,测试可以采取许多不同形式。 如果你是一个个体开发人员,也许测试过程仅仅是你和若干朋友对游戏进行试玩。 当你对自己的作品进行核查时,很难做到客观公正。 努力通过开放的视野和开放的心态,这样你才能看到新的问题和新的解决方案。 用户测试常常能够发现一些你不能预见或考虑到的问题。
较大的游戏开放团队通常拥有专门的游戏测试的质量保证(quality assurance (QA) )团队。 该团队将试玩游戏并且建立一个变更和建议列表。 如果你具有相应的测试预算,另一个选择是雇佣一个能够提供Flash游戏测试服务的公司。
无论开发团队的规模如何,一个良好的测试过程必须回答下列基本问题:
- 游戏好玩吗?
- 游戏是否存在已知软件故障?
- 游戏在所有目标平台(浏览器、桌面、移动等设备)上的表现是否满足要求?
如果你对所有这些问题的答复为“是”,那么非常棒,你的任务已经完成。 该游戏可以进行部署。 然而,通常你需要返工来更改工艺图、编程、渲染和游戏机制以便对游戏进行改进。
对于web游戏来说,可以在各种计算机和web浏览器上进行游戏测试。 必须确保游戏能够在所有情形下正常运行。 即使游戏能够在你的个人电脑上顺利运行,你也需要记住你的用户使用的计算机和设备类型。
对于手机和平板电脑来说,测试将更为复杂困难。 设备之间的差异(例如屏幕大小、屏幕密度和输入方案)和现有设备的巨大数量均使得过程复杂化。 Flash Builder和 Flash Professional 发行了一款调试版本的 Flash Player,它能够在你开发和测试游戏时提供附加信息(例如,输出跟踪和重绘区域)。 Flash Professional 还发行了 Device Central软件,它是一个仿真器包,能够直接在你的计算机上对各种流行的移动设备进行仿真。 尽管这是非常有用的工具,但如果可能,你还是应该在物理设备上进行相应测试。
能够帮助你实现这一任务的公司是 DeviceAnywhere。 他们具有数千部物理设备,你可以使用它们进行遥控测试。 此外,他们还提供测试服务为你处理一些或全部的QA过程。
通过Flash Builder 4.5,你可以将你的设备连接到计算机上,Flash Builder通过USB能够在计算机上运行并且在开发游戏的同时在设备上进行游戏测试。 如需看到游戏是如何运行的,请观看 Ed Rowe的视频,它的标题是利用Flash Builder 4.5进行移动应用程序开发指南(Guided Tour of Mobile Application Development with Flash Builder 4.5)。
优化
开发人员Ted Patrick 很早以前即开始使用Flash。 他了解Flash Player的内部构件。 在他的博客中,Ted解释到他将Flash Player 看作为一个跑道(参见图3)。 该跑道有两个截然不同的部分组成,一个用于执行ActionScript语言(带有一个用于事件处理的子部分),而另一个用于将内容渲染到屏幕上。 在运行过程中,Flash Player 以在SWF文件中指定的预设速度围绕该跑道循环,速度定位是每秒帧数(frames per second (FPS) )。 在整个过程中,不管Flash Player是否被要求改变速度,它将试图保持设定的速度。指定的FPS是跑道的最大速度;处理速度决不能高于该限制速度,但可以低于它。
非常关键的一点是没有内置方法能够延缓代码执行并且也没有内置方法能够延缓渲染执行。 Flash Player 是无损的播放器。 它将处理在一个给定帧循环中要求处理的所有任务,即使他花费的时间要长于当前帧率设置规定的两帧之间的时间。 因此,简单来说,为了避免出现问题,不要让Flash Player执行它力所能及之外的任务。
你如何知道是否存在问题? 在繁重的代码执行或繁重的渲染执行期间,当Flash Player试图处理其指令时,Flash Player帧率将会暂时下降(或甚至冻结)。 此时,游戏的动画可能变得明显的断断续续,并且游戏通常会变得行动迟缓和反应迟钝。 优化是针对自身的一种技术,但上述情形是需要进行优化的基本迹象。
即使在问题出现之前,最好应该思考可能出现的瓶颈。 如果你具有任何计算密集的代码(物理现象、AI和数据解析)或繁重的渲染任务(3D、像素级的操作和数十个移动sprite),则你可以为这些领域的优化配置更多的时间和精力。
下面是一些优化代码执行的技巧:
- 建立标杆。 验证两种或更多用于解决一个给定问题的方法并且比较每种方法的性能。 找出最有效的解决方案以便最大限度地降低CPU使用率和改善性能。
- 保留内存。.对可能的最小对象进行例示以便完成相应的任务。 移除事件侦听器并且删除没有使用的对象。
- 改进AS3性能。 使用
if
,break
,continue
和其它构造器以避免执行不必要的代码。 通过本节后面的链接,你可以更深入地探究该话题。 - 下面是一些优化渲染的技巧:
- 显示列表。 Flash Player的显示列表是一个包含屏幕上所有的DisplayObject实例的本机树形结构。 所有可见对象都将被渲染,因此删除不需要改善性能的对象。 关于显示列表的更多信息,请参见利用ActionScript 3进行显示列表编程(Display list programming in ActionScript 3)。
- CacheAsBitmap。 每帧的每个DisplayObject 将被重新渲染,这将导致一些冗余计算。 在某些情形下,将 DisplayObject.cacheAsBitmap 属性设置为true 将能够保存和重用这些计算结果,从而能够改善相应的性能。
- CacheAsBitmapMatrix。仅适用于某些设备,它的性能甚至优于CacheAsBitmap。
- 位块图像传输(Blitting)。 Blitting是使用Flash Player显示列表的另一种可选方法。 该过程可以将你的对象手工绘制到一个图像中并且只将该图像添加到屏幕上。 在某些情形下,这将能够显著改善性能。 关于blitting技术的更多信息,请参见在移动游戏中渲染动画模型(Rendering animated models in mobile games)。
- Stage3D。Stage3D是一个低层、支持GPU加速功能的3D API的集合,它支持通过 Adobe Flash Platform 运行时跨屏幕的高级3D体验。 关于Stage3D的更多信息, 请参见 使用Stage3D(Using Stage3D)。
- M2D.这是一个在Stage3D之上建立的2D sprite库,它是Flash的新的GPU硬件加速API。 关于M2D的更多信息,请参见M2D:Molehill的2D库(M2D: A 2D Library for Molehill)。.
- StageVideoStageVideo支持渲染视频的硬件加速功能。 关于StageVideo的更多信息,请参见使用 StageVideo类(Using the StageVideo class)。
关于该话题的更多信息,参见Thibault Imbert在Flash Platform Game Developer Center上发表的文章AdobeFlash Platform的性能优化(Optimizing Performance for the Adobe Flash Platform) 和 性能和优化(Performance and Optimization)。
休闲游戏的收入模型之间的差异较大。 在线游戏通常是免费的,但它们常常在将横幅广告放于显著位置的页面上运行。 网站拥有者通过将用户流量驱赶到第三方网站获取收益。 其它游戏也是免费的,但它们将产品商标组合到游戏之中。 这些广告游戏(advergame)本质上是一个大型广告,并且使用与产品植入(product placement)广告类似的技巧。 电影网站和玩具网站通常将广告游戏作为促销策略的一个组成部分。 作为一个相关的范例,请观看关于Green Hornet游戏的视频,它的开发目的是对该电影进行宣传。
休闲游戏制作者挣钱的另一种方法是使用freemium商业模式。 在这一模式中,用户能够免费玩游戏的试用版本,但必须付费获取相应的完整高级版本游戏。 其它收入方法包括订阅方式(subscription)和微交易方式(microtransaction)。
你游戏的发行和收益策略最好在集思广益阶段进行定义。 发行策略将影响你的游戏,因为屏幕大小和输入式样将依据目标设备而变化。 依据你选择的收益策略,你的游戏的内容(或至少你的菜单)也将会受到影响。 你可能还需要实现广告集成、至赞助者的链接或按钮及虚拟条目销售等功能。
发行
发行可以定义你将你的游戏传送到玩家手中的策略。 大型项目往往具有精心策划的营销活动以便将游戏带到新用户的手中。
基于web的用户能够在浏览器玩中游戏或从任何适宜的网站下载独立的游戏。 该市场与移动平台的应用程序相比相对开放。
在许多移动平台中,用户必须进入设备应用程序市场的围墙花园(walled garden)。 在这里,设备制造商或移动运营商公司控制该市场,而用户能够在该市场中购买和下载应用程序。
根据 移动游戏报告(Mobile Games report)的作者Daniel Ashdown的观点, “你的游戏的可发现性就是一个鸡和蛋的问题:高下载量能够使得游戏引人注目,但获得高下载量主要取决于游戏是否已经引人注目。 因此,只有少数游戏获得很高下载量,而大多数游戏只能获得很少的下载量。”
将你的游戏推向市场的策略在很大程度上随着设备而变化,但通常的思路是让你的游戏给别人的第一印象就成为最好的印象–流行游戏保持流行状态。 而其它游戏将会立即从潜在的游戏玩家眼前消失。
成功发行你的游戏存在许多挑战。 但幸运的是,有很多公司能够帮助你。 关于相关的更多信息,参见在Flash Platform Game Developer Center的 发行、测量和获得收益 (Distribute, measure, and monetize)页面上列出的公司名单。 你的发行策略应该包含一个精心定义的目标用户群,他们很可能使用多种设备。 Flash Platform 能够提供大量的开发选项以便触及到你的目标用户。
通过Flash Player的Flash Platform部署选项:
- Web浏览器(PC、Mac、Linux、移动)
- Mobile浏览器(Android、BlackBerry)
注: 在本文发表时,Apple iOS Safari web 浏览器仍然不支持Flash Player的任何版本。 为了在iOS设备上安装你的游戏,你可以使用Adobe AIR将游戏作为一个独立的应用程序进行打包即可。
- 通过Adobe AIR技术的Flash Platform部署选项
- 桌面(PC、Mac、Linux)
- Android(手机和平板电脑)
- Apple iOS (手机和平板电脑)
- BlackBerry Tablet OS(平板电脑)
- 因特网电视和其它家用电器
根据你游戏的需求和架构,你可以为所有平台发布一次,或进行一些平台特定的更改。 关于相关的更多信息,参见Christian Cantrell的文章 一款应用程序和五个屏幕(包括iPad)(One Application, Five Screens (Including iPad)) 和Jonathan Campos的文章 为多种设备设计应用程序的架构(Architecting your application for multiple devices)。.
促销
一些创造收益的策略(例如为你的游戏设置许可)包含发行策略。 但如果你选择一种不包含发行策略的模型,那么你如何将完成的产品发行到玩家的手中。
一些较大型社交游戏公司( 例如 Zynga, EA, 和Playdom))是众所周知的自我促销和病毒式营销的机构。 在Flash游戏体验的内外环境中,人们鼓励用户向社会大众推广游戏活动和技艺并且邀请朋友加入游戏。Heyzap是一个Flash游戏领域的刚起步的新公司,它能够帮助游戏开发商发行游戏。 但你也能够进行自己的游戏营销。
你可以通过创建网站和通过使用社交网络(例如Twitter和 Facebook)来营销你的项目以便产生流量。像GamerSafe, Heyzap, 和 Mochi Media 等公司也能够帮助你建立和维持与你的游戏相关的社区。 每个公司均能够提供具有大量绝妙功能的API和服务,其中包括通用保存的游戏、胜利评价系统(trophy system)、高分系统(high score)、微交易方式(microtransaction)、病毒式营销、安全系统,等等。 关于如何将社交网络集成到你的游戏中的更多信息,参见页面 参见页面发行、测量和获得收益 (Distribute, measure, and monetize).
将你游戏的视频添加到 YouTube 或 Vimeo也是值得推荐的方法。 这可以帮助游戏通过口头传播产生其自己的动量。
Newgrounds.com 是一个游戏门户网站,它是一个特别为发布Flash游戏和收集玩家评论建立的网站。 通过在集成广告之前发布你的游戏,你能够获得有价值的反馈,其中包括玩家评分、评论、非正式的故障报告和性能统计等信息。 即使你只在短时间内在该网站上提交一个游戏,你也能够汇集到许多需要调整和改进的事项。 应该考虑在向许可证颁发者介绍游戏产品之前解决相应的反馈问题,因为一个更为完善的游戏能够卖出更高的价格并且产生更多游戏玩法。
收益
为了从完成的游戏项目中获得收益,共有两种主要策略:提供免费的游戏或提供付费的高级游戏。
下面是几种从免费游戏中获得收益的方法:
- 广告。在围绕游戏的HTML页面中或在游戏自身中间放置横幅广告。 基于广告展示的次数(收视次数)或产生的流量次数(点击数)计算的广告收益通常将支付给游戏开发人员。
- 赞助。在你的游戏中为付费的赞助公司放置广告、链接、徽标和营销消息。
- 许可。 在你的游戏中为付费的赞助公司放置(通常更为精巧的)广告、链接、徽标和营销消息并且限制游戏只能在一个单一的网站中运行。 例如, 像Kongregate.com等大型游戏门户网站允许将你的游戏作为他们的专享内容。
此外,还有几种通过将高级Flash游戏直接卖给视频游戏社区的赚钱方法。
- 直销。 将整个游戏以预付成本(one upfront cost)卖出。
- Freemium。 免费提供一个试用或非完整游戏体验版本,然后让用户交付一个固定费用升级获得相应的完整游戏版本。
- 微交易(Microtransaction)。 鼓励用户将真实货币转换为虚拟游戏钱币以便开启角色(character)、能力(ability)、级别(level)或其它内容。 Microtransaction和freemium 游戏有时候能够同时使用。
- 订阅(Subscription)。 如果玩家定期付费(通常按月计算),则他们能够连续玩游戏。
关于相关的更多信息,参见我的文章如何利用在线游戏赚钱(How to Make Money with Online Games)和在Flash Platform Game Developer Center中的发行、测量和获得收益(Distribute, measure, and monetize)页面。
当你的项目找到用户时,你将可以开始接收有价值的反馈。 许多游戏门户网站允许游戏玩家对你的游戏进行评论和评分。 你应该仔细分析这些信息,因为其中有些信息可以帮助你改进你的游戏。
监测什么人可以看到、玩耍及重复玩耍你的游戏是一个良好的开端。 另一方面,分析这些结果将帮助你在较短的时间内创建更受欢迎的内容。 有些门户网站可以为你保留统计数据,但最好你自己能够收集这些统计数据。 有许多公司能够帮助你完成这一任务。 Mochi Media 可以提供一个 ActionScript 3 API,它除了提供许多其它服务之外,还提供分析服务。PlayTomic可以监测标准游戏事件(例如,游戏开始、游戏结束、完成级别等等)以及你能够定义的自定义游戏内事件。 当你需要解决游戏的问题时,游戏的自定义分析测量报告特别有帮助作用。 例如,如果你了解到大部分用户不能在你的游戏的第10级过关,则你可以更改游戏以便它玩起来简单一些。
无论你选择哪一种发行方式,必须确保你能够对更新你的内容拥有控制权。 与能够提供你的游戏的许多移动市场一样,所有主要的游戏门户网站均允许进行更新。
不管是处理软件故障、根据分析改进游戏性能、或添加级别和角色等新内容、以及在游戏初始发布之后进行更新,所有这些都是为了确保游戏能够具有尽可能长的生命周期。 基于订阅的收益策略通常依赖于能够保持用户兴奋的情节内容(episodic content)。
框架和其它三方库 Flash Platform能够提供一个基础,你可以基于它开发和渲染各种复杂的游戏。 Flash 社区资源丰富,它为 Flash Platform提供了极大的内容补充。 你可以在线找到许多免费和价格低廉的工具、ActionScript 3.0库以及能够帮助你开发项目的其它资源。
- 设计模式。设计模式本质上不是代码库。 它们更像菜谱(通用解决方案),你可以利用它烹调(编程)你自己的菜肴(代码)。
- 框架。框架提供一个骨架,你可以在其之上添加你代码的食物。 在许多情形下,按照框架编程将能够获得一个更加可读、可维护和可扩展的项目(特别是针对新的开发人员)。
- 粒子(Particle)粒子系统能够模仿火焰、爆炸、烟雾、灰尘等现象。
- 3D。利用三方库的帮助,你可以创建软件渲染和硬件渲染的3D游戏。
- 物理学(Physics)。关于在你的游戏开发中包含物理学知识的重要性的详细信息, 参见我的文章 利用Adobe Flash Professional开发基于物理学知识的游戏(Developing physics-based games with Adobe Flash Professional).
- 实时多玩家。 实时多玩家游戏支持两个或更多玩家在独立的计算机或设备上一起合作或竞争玩游戏。 在创建实时多玩家游戏时,通常使用Socket 服务器、Electrotank等服务、LiveCycle Data Service、Flash Media Server或其它服务器侧技术。
关于相关的更多信息,参见 Flash Platform Game Developer Center的游戏引擎、3D和 Stage 3D(Gaming engines, 3D, and Stage 3D)页面。
利用Flash Platform进行互动开发应该从 web 浏览器的目标设定入手。 尽管大部分内容仍然可以利用浏览器显示,但Flash Platform 能够处理更多内容。 利用Adobe AIR,开发人员能够为桌面设计独立的应用程序,它们能够在本地计算机上读取和写入并且能够全屏运行内容。 在2009年,Adobe与主要移动运营商和设备制造商一起已经将Flash Player 10和Adobe AIR 技术应用于许多devices,从而开启了移动电话、移动平板电脑和因特网电视等设备的Flash Platform的潜在市场。
现在利用Flash Professional和 Flash Builder,开发人员能够使用ActionScript 3.0在他们的项目中为许多设备设计游戏。 然而,多设备的设计和开发将遇到一些新的挑战。
影响范围和生产率
传统上来说,对于每种设备或平台,开发团队均需要重起炉灶,例如从新的代码、新的API、甚至新的编程语言开始。 寻找能够允许代码从一个单一的代码基发布到许多设备的平台便利工具一直是开发人员的梦想。 利用Creative Suite 5.5和 Flash Builder 4.5,Flash Platform使得游戏开发人员离这一梦想更近一步。
助力开发人员更方便地制作跨设备的内容也为设备制造商和运营商带来益处。 Open Screen Project是一个业界创新项目,它由 Adobe统领并且获得业界其它领先者的支持,所有这些领先者均共享一个清晰的愿景:让用户在任何设备上、在任何地点均能够无缝享受丰富的因特网体验。
正如我在前面提及的那样,Flash Platform 开发人员能够将希望寄托于他们的用户,这些用户已经占据成熟市场的99% 的因特网桌面系统和各种不同的设备市场。 尽管iOS 设备目前不能使用Flash Player运行内容,但你仍然可以使用Flash开发你的游戏并且利用 Adobe AIR 技术将它们部署到iOS设备上。 关于如何进行这一操作的更多详细信息,参见Flash Professional CS5.5 – 将内容发布到 iOS设备(Flash Professional CS5.5 - Publishing content to iOS devices)和利用AIR for Mobile 2.6为iOS开发应用程序(Developing for iOS with AIR for Mobile 2.6)。
为多屏幕尺寸设计应用程序
当你创建目标为多屏幕尺寸的应用程序时,你遇到的障碍看起来令人畏惧。 简单缩放内容以适应整个可用区域很可能不能满足你游戏的需求。 文本必须可读,即使在很小的设备上也应该如此。 此外,按钮的尺寸必须合理以便能够使用手指而不是鼠标进行激活。 甚至在一个单一设备中,用户也能够选择以横向(宽)或纵向(高)模式显示。 是否及如何支持该功能则是另一种决定。 关于相关的更多信息,参见Allen Ellison的精彩文章Flash 缩放指南:让Flash 适用于移动设备(Flash sizing Zen: Making Flash fit on mobile devices)。
为移动设备设计应用程序
Flash Platform 工具可以将你的项目从一个平台重新部署到另一个平台。 然而,简单地移植项目的效果是不理想的。 为了创建最引人入胜的体验,最好的方法是单独地处理每个目标平台,其中包括每个设备的输入方案和其它功能等。 至少,你应该计划针对各种目标设备和现状因素(手机、平板电脑和计算机显示器具有不同的现状因素)对你的游戏进行测试。
输入方法
输入方法已经演化。 尽管适合在计算机浏览器和桌面运行的内容仅仅关注键盘和鼠标输入,但其它设备在这方面差异很大。 早期的移动设备具有较小的键盘,因此它要求新的输入解决方案。 在2007年,iPhone 引导人们进入触摸屏输入的时代–使用你的手指作为输入设备。 移动平板电脑设备也充满挑战和机遇。 有些设备支持专用的Back按钮和音量控制,而有些设备不支持这些功能。 尽管在许多流行设备中的输入模式之间存在某些共性,但我建议考虑每种设备使用相应的最佳输入解决方案并且根据需要定制你的游戏。 目前Flash Platform在浏览器的Flash Player 10.1或更高版本中支持多点触控和手势功能,支持为 iPhone 或iPod touch发布的SWF内容,以及 AIR 2 或更高版本的内容。 关于该话题的更多信息,参见 Christian Cantrell的文章 Flash Platform的多点触控和手势支持功能(Multitouch and gesture support on the Flash Platform)和Mike Jones针对 触控设备的虚拟控制器(Virtual Controllers for Touch-based Devices)的系列文章。
其它功能
除了创新的输入模式之外,许多设备具有其它能够用于游戏的功能。 下面是一些主要功能以及每个功能的一些注意事项。
- 加速计。一些设备使用加速计自动检测它们的旋转角度。 你可以将它用作输入设备。 关于如何在你的Flash 游戏中充分利用加速计的更多信息,参看此视频。
- 应用程序多任务功能。 在最小化和最大化时,你的游戏的行为方式是什么? 如果它是一个移动游戏,它能够在手机来话时自动暂停吗?
- 随意连接性。 用户通常不总是连接到因特网。 你的游戏要求持续的连接吗? 它具有离线模式和在线模式吗?
- GPS/地理位置定位。 具有地理位置定位功能的设备知道自己位于地球的位置。 你可以利用这一功能改变游戏体验、开启内容或邀请相互距离很近的玩家加入游戏。
- 图片、视频和音乐库。 你可以使用库为角色定制导入媒体、利用玩家的喜爱声道增加你的游戏声道以及进行其它操作。
- 麦克风。可以使用声音作为一个输入。关于如何在你的游戏中访问设备的麦克风的信息,参看此视频。
- 持续机制。许多移动用户在很短的时间段玩游戏,他们只能在闲暇时才能启动游戏。 如果你的游戏能够保存自己的进程,这将会帮助用户快速跳回到原先的游戏动作。
- 睡眠模式。 当处于非使用状态时,一些设备进入睡眠状态。 你的游戏的反应方式是什么? 如果用户变得心烦意乱并且关闭设备,游戏能够暂停吗?或继续消耗电池能量?
- 照相机(前置或后置)。你可以使用相机让用户将自己的面容或其它图像添加到你的游戏中。 关于如何在你的游戏中添加相机输入功能,参看此视频。
- 视频录制。 使用视频作为输入设备,例如Sony的EyeToy 或Microsoft的 Kinect。
- 视频输出。一些设备能够连接监视器或HDTV显示器。
其它注意事项
依据你选择的目标设备,你可能需要特别许可以便使得用户可以使用你的游戏。 通常,你必须在线申请开发人员(个体或公司)的身份,然后获得一个安全证书,该证书可以保证提交的内容来自你自己。 在某些情形下,你可能需要付费。 这是每个设备的一次性设置。 并不是你创建的每个游戏均有此要求。 最后,这将为购买的玩家创建一个更为可信的环境,因此他们将喜欢你的游戏。 这一过程可能花些时间,因此最好在你的开发过程中尽早申请。
移动游戏优化
由于移动设备与功能强大的计算机相比具有较小的处理能力,因此对目标为移动设备的项目进行优化特别重要。 为了最大程度提升游戏的性能,你需要在目标设备上进行标准测试并且对相应代码和渲染程序进行优化。 关于相关的更多信息,参见步骤3:测试和优化。
此外,参见Mobile and Devices Developer Center的为移动浏览器优化Flash内容 (Optimize Flash content for mobile browsers)和适用于电视的Flash Platform(Flash Platform for TV)。
本节中的术语安全性是指保护你的知识产权以及防止有人针对你的游戏的欺诈行为。 当创建游戏时,安全性是一个热点话题,它涉及你的编译代码的安全以及在用户体验过程中你的代码的安全。
编译代码安全性
Flash 游戏通常被编译为 SWF 格式,因此与查看和复制 HTML页面的源代码相比,获取它相对困难。 然而,有一些反编译器能够获取你的代码。 与大多数客户端侧技术相同,Flash易于受到逆向工程(reverse engineering)和黑客的攻击。 通过查看你的源代码,恶意玩家能够找到在你的游戏中进行敲诈的方法。 基于你的商业模型,这可能不是一个值得关注的问题。 但对于具有社交社区、高分跟踪或虚拟货币的许多较大型公司来说,安全性是非常重要的。 将游戏数据保存在服务器侧是一个首选的解决方案,因为在那里能够获得更好的保护措施。 此外,也有能够帮助你锁定SWF文件的工具。 由Amayeta等公司创建的这种工具能够限制但不能完全阻止黑客行为。 组合技术能够使得客户端内容更为安全。 Roguish的负责人Elliot Mebane表示:“我们已经发行了包裹于 C++ 壳中的SWF游戏,它们的表现与我们利用 C++本机开发的游戏相同,并且具有版权管理等安全优势。”
运行时安全性
恶意玩家能够使用sniffers 和其它工具监测来往你的游戏的网络流量。 这使得他们能够利用他们自己的访问来哄骗合法的访问,从而为伪造高分提交、过早解锁内容等操作打开了大门,一种防范的方法是加密所有传输的数据。
此外,利用Cheat Engine 和Quick Memory Editor 等工具进行RAM黑客行为也非常流行。 用户能够在他们的Flash游戏玩耍体验过程中使用这类工具。 这类工具能够分析计算机的RAM并且找到他们的当前得分、生命数量或其它重要信息。 为了实现这样的操作,用户必须知道当前的值是多少(如果得分在屏幕上显示,则很容易知道此值)并且该值必须随时间变化。 然后,用户能够人工改变他们的得分,而无需在游戏中实际挣分。 为了使得这一操作难以实现,你必须对在屏幕上显示的任何变量的值进行加密,否则用户能够轻而易举地知道这些值。
虽然该文章涉及了很大的范围,但仍然还有许多问题需要进一步讨论。 按照本节上面给出的许多链接参考进一步钻研是一种继续学习的好方法。
Adobe Developer Connection的Flash Platform Game Technology Center 是所有技术水平的web游戏开发人员寻找文章、教程和其它有趣内容的好地方。 如果你刚刚入门,则它是学习和获得灵感的好去处。 即使你是一个有经验的开发人员,你也能够找到可以帮助你开发更引人入胜的游戏的新资源—并且你能够利用这一机会撰写一篇文章,然后将其回投到社区中。
实践经验不可替代。 启动你的第一个游戏可能是令人畏惧的,但重要的是你已经入门。 选择一个小型项目,就像上面讨论过的Flyer游戏,并且在创建你的第一个Flash Platform游戏过程中寻找乐趣。
我将引用Say Design CEO John Say的一段话来结束本文:“自从Flash在1990年代后期第一次 引入ActionScript,它已经慢慢地变得成熟,从横幅广告演化到更多、更多技术领域。 现在,十年之后,我确信Flash将会显著改变在线和跨平台游戏的景观,因为它在性能和功能方面均在继续提升。”
利用Adobe Flash技术创建的游戏的确随处可见,并且休闲游戏行业的前景看起来一片光明。 Flash Professional和Flash Player 10 是目前为止最好的软件版本,它们能够实现在开发人员愿望列表中给出的大部分(但不是全部)需求。 通过了解这些休闲互动游戏背后的基本理论以及如何应用它,你可以看到入门是如何的简单。 因此,赶紧行动起来吧。
我希望藉此机会感谢所有为本文提供有价值观点和专业知识的社区领导者,而且特别感谢所有游戏设计人员和开发人员,他们每天都能够使我感到快乐并且获得灵感。