使用FLEX3开发大型多人在线游戏
大型多人在线游戏(MMO)技术已经涉足到各种软件形式中了.当我们还在思考MMO时,多人游戏已经使很多玩家能够实时连接进行合作与竞争。(见图表1). 魔兽世界在通过DVD-ROM订阅的MMO游戏行业中处在黄金标准的位置,但是,通过Abobe-flash平台,我们可以利用魔兽的一小部分时间和预算来发展一个自由来玩的通过浏览器的类似于WAKFU和Smallworld的MMO游戏。
在这篇文章中,我旨在比你想象的少的时间内告诉你制作一个完整的(并且简单的)大型在线游戏的经验。同样,我会给你一些示例代码以使你能掌握这种高水平的思想。这些例子仅限于FLEX3的浏览器版,但是其中好多的信息都是与其他技术的应用程序开发者相关的。包括Adobe Flash CS4以及Flex 3 AIR桌面应用程序。
我希望这些能给大型在线游戏的入门者做一个介绍,同时,也让高手们获得一些知识。
什么是MMO?
在超过十年的时间里,大型多人在线技术已经成为了桌面PC游戏发展中的主流。 在最近几年中,我们发现它在浏览器端也很流行。一个MMO应用程序是一种这样的软件,它能实时连接很多人,同时,一个人的操作动作会马上影响到其他的人。就像在聊天窒里,当你打出一则消息时,接受者会马上看到这则消息一样。当你攻击一个敌人的时候,这个敌人会被打,或者挡住攻击并且反攻。在MMO最普通的形式中,一个MMO应用程序是基于团队,同时看重个人体验与人机交互的应用程序。MMO有好多种:角色扮演游戏 (MMORPGs), 实时战略游戏(MMORTS), 第一人称射击游戏 (MMOFPS), 基于浏览器的大型在线游戏 (BBMMOGs)以及其他更多。
MMORPG是非常流行的,或者仿真游戏。一个仿真实世界的游戏是通过互联网接口联接很多人制作出仿真世界的游戏。仿真游戏通常具有六个特点:
随着计算机硬件性能与技术的快速发展,MMO游戏已从桌面程序发展到网络程序。这篇文章的重点在后者。
MMO游戏是商业性的
MMO游戏非常流行。随着越来越多的游戏玩家通过宽带来上网,越来越来的因特网用户开始尝试MMO游戏,使用人数正快速的增加。吸引人的WEB2。0以及RIA特性使这些游戏在游戏玩家中快速的流行起来。用户在空闲时间中都沉浸在这些游戏中,哪里有用户,哪里就有商机。但是传统的商业游戏沉浸于在购买时加入一系列的费用。MMO游戏则是要交付不断增加的用于发展与维护的费用,并且由于在线玩的原因会带来其他的商业机会。游戏开发者与发行者将通过多种方式从成功的MMO游戏中获利。发行者通常会选择以下几条:
Surely, as the audience for MMO gaming expands, advertisers will become increasingly creative with how they monetize the games in this industry.
策划制作一个MMO游戏
在规划的互动项目时,重要的是要有令人信服的创造性以及使用匹配的适当技术实现您的想法以及满足您的目标受众。在下面的章节中,我将提供整体的MMO制作的意见以及可用技术的讨论。
图 2. RIP 游戏LOGO.
举个例子,让我们假设我们的目标市场是8-10岁大的男孩与女孩,次目标市场是具有童心的成年人。我制作一个叫做RIP的简单的,完整的FLEX游戏以供我们来讨论一下。它根本不是一个完整的工程,但它的用处是为了让我们交流一下MMO游戏策划与开发的思想。
角色与故事
除了挑战与美丽的画面来吸引用户,增加角色的难度是保持MMO游戏长期有人玩的一个关键。人物和故事是留住你的用户群的两个关键因素。
这里有一些提示关于设计MMO游戏时要考虑的:
对于RIP协议,我使用一个友好的鬼主题(见图3 ) 。当我创建的,我无法找到一个友好的以鬼为主题的MMO游戏。所以这是独一无二的。鬼魂可以有许多人的特性以及也可能产生一些超能力。这就使角色的特性可以增长。当我想到一个鬼的世界,我想几件事情:新的鬼会定时出现,一个梦幻般的世界上任何事都是可能的,天堂与地狱的主题中角色可以死一遍又一遍。这些想法应该促进一个长期,丰富的故事情节。
Figure 3.角色样子.
随着人物和故事情节的确定,您可以让作家和艺术家开始调查所需要的技术。
客户端与服务器端技术
MMO游戏技术,主要有两个方面要考虑:客户端和服务器端。您已完成的项目结合了这两种技术。客户端技术(即Adobe Flash Player,AIR,等等)将做一切工作量大的事情-它负责前台表现以及鼠标和键盘的输入。服务器端的技术负责在每个客户端之间进行通信。
从大处到细节,技术上有许多问题都要考虑。例如,什么类型的计算机不能使用您的产品? Mac或PC或两者都可以?它是桌面应用程序还是运行在Web浏览器?它将是一个三维的或二维的?它要运行在怎样的软件平台上?
If you are interested in creating casual online multi-player games without the headache of hosting your own servers, consider checking out the Adobe Flash Collaboration Service. 对于这项工作,并与经济的考虑,我们使用的Adobe Flash平台开发并使用2D技术将此游戏部署在网络浏览器。我们使用了Adobe FlexBuilder作为我们的开发环境。我们结合客户端和服务器的技术,在客户端使用Flash Player和在服务器端使用ElectroServer 4。与我们的客户端选择的Flash Player ,我选择使用了一个现成的服务器技术,其中包括一个ActionScript 3特定的辅助性文件,因为这将有助于加快发展的速度。除了ElectroServer 4 ,一些重要的服务器端的选择,支持ActionScript 3还包括Adobe Flash Media Interactive Server 3.5和SmartFoxServer 1.6。如果你有兴趣创造休闲多玩家游戏并不用为托管自己的服务器头痛时,可以考虑Adobe Flash Collaboration Service。
我选择ElectroServer 4 ,主要是因为它是稳定,易于开发,免费(最多20个用户) 。这意味着你可以开始一个新项目或测试而不用付费。此外, ElectroServer 4具有可扩展性,帮助文档丰富,并得到广泛支持。
您可能还问我为什么选择二维而不是三维。虽然最新的Flash Player 10中有一些令人兴奋的3D能力,这是仅限于移动二维物体在三维空间或使用软件提供的解决方案(其中提供比硬件提供的解决方案还慢的动画) ,如Papervision3D 。我很期待Flash Player中3D的未来 ,但是据我的经验, Flash平台目前不是强大的3D需求的最好的选择。
开发
现在,我已决定好了友好鬼主题故事和人物,Flash Player作为客户端,并且ElectroServer 4作为服务器端,我准备开始开Flex Builder中进行开发。对于用户界面,我们将界面分块,以满足特定用户的需求(见图4 ) 。每个地区获取用户输入,并作出对应反应:
Figure 4.粗略布局的组成部分。
创建组件
我们将按照图4来创造Flex组件。对于每一个组成部分,我们必须考虑到用户的需要,来决定UI元素,以满足这些需要,并充分利用Flex中的MXML来轻松地创建布局。在Flex开发过程中,这是最基本的,所以让我们来看看一个简单的例子。
如同任何短信应用,聊天输入在应用程序的布局的底部(见图5 ) ,用户可以输入文字信息,并将其提交到聊天记录中以供其他用户看到。在参与者之间这是主要的通信方式。
Figure 5.聊天输入部分
TextInput与Button组件放在一个Panel组件中, ID属性是用来给主程序中相关功能控件进行编号,当用户点击chatSend_button实例,在chat_textinput实例中的任何文字,将传递给其他玩家。在下一节中,我们将看到这个信息是如何传递给服务器。
Figure 6.聊天输入口的MXML.
客户端-服务器端 代码
我们继续建立我们的组成部分放下一些客户端与服务器之间的通讯。开发多人游戏与开发单机游戏的根本差别在,当用户交互而产生的任何东西都不应该在屏幕上进行修改。所有的游戏客户端(游戏运行的某个特定的玩家) ,包括提供了输入口的玩家,应当等待回信当服务器说“玩家1已经发出了一个聊天信息” ,例如,当玩家1的客户端发送请求到服务器,服务器发送响应给每一位客户。只有到那时,屏幕才作出更新。当然,玩家1的客户端必须随时准备处理回应,并且当客户端发送请求时,其可以随时随刻的更新。玩家1使用Client (A)发出一个聊天信息请求和处理响应(见图7 ) 。发出的信息包含足够的信息以供所有客户作出适当的反应。在这种情况作出的反应很简单地放入到聊天记录中以供所有用户可见。
Figure 7.客户端-服务器端-客户端信息流
在这个游戏中,有5个类型的请求/响应配对(见图8 ) 。所有与服务器端的交互是通过一个叫作称为ElectroServer的ActionScript 3对象来实现的。当程序加载连接服务器与加入到房间中时,该组合被显示。所有文字聊天和所有玩家的操作动作(如位置的变化,进攻,防守,等等)用这种方式进行发送。
当PublicMessageRequest仅发送文字,它通常是作为一个聊天信息。但不仅仅是文字是可能的。一个消息也可以发送一个EsObject对象。这是一个通用的ActionScript 3对象。开发包装EsObject的有用特性-例如,玩家在游戏中移动的新的X和Y的位置。更复杂的游戏功能较重使用EsObjects并且封装更多的数据。创造复杂的游戏而不通过EsObjects传送太多的数据是一种艺术。发送较小的信息将有助于游戏反应速度。最后配对显示如何断开客户端从服务器室当用户结束他或她的游戏。
Figure 8. RIP的请求/响应对.
技能, 皮肤以及样式
因为Adobe的Creative Suite 4产品之间的合作,整合写好的控件到Flex项目是很简单。这是使用FLEX一个主要好处。如果仔细规划高效率的工作流程,开发人员和设计人员,可以对项目以最少的冲突。
对于RIP,我开始铺设应用程序的MXML而平面设计师编写CSS来定义颜色和字体。我继续编写角色的移动和交互而艺术设计师用Flash制作背景和角色。我们三人几乎没有中断工作,因为RIP参考可见的元素进行开发。
在Flex Builder中主要有两种类型的视觉效果:造型和外观。在程序中,造型决定基本色泽和文本显示属性。出色的(但还远远没有完成)的CSS兼容性的Flex允许一个CSS文本文件来定义样式属性。艺术团队编辑和保存每个样式的变化。一个例子是panels的背景颜色梯度和各种字体的处理(见图9 ) 。
应用程序中包括皮肤制定与动画的设计。在RIP中,应用程序中嵌入一个包含资源的SWF文件。界面小组利用Adobe Flash CS4专业版重新发布此SWF以更新每个皮肤。每一次的Flex项目是重新编译,发布的游戏以程序上与创造性上作出修改。一个皮肤制作的例子就是RIP LOGO或鬼魂的动画角色设计(见图9 ) 。
Figure 9.完成游戏的风格和完整的皮肤。
现在我们有了一个坚实的,抛光建立的游戏,我们都愿意尝试一下。虽然尚未针对许多用户优化,游戏应处理几十个屏幕。加入有趣的是容易的。单击连接并且一个独特的彩色鬼魂显示在屏幕上。输入文字信息进行交流,然后点击游戏中的任何地方,来控件你的游戏角色。更大的游戏可以扩大到包括化身属性,如经验和速度,以完成任务,库存物品收集,和更多的世界来探索。
下一步
除了发展自己的游戏,有两个重要的辅助因素:在线整合您的应用程序并规划项目的维护工作。
整合
你的开发周期即将走到尽头时,您需要在线整合您的应用程序。在开发过程中,你可以在您的桌面上运行的一个ElectroServer实例,并直接与出版的SWF文件交互。只需打开两个或两个以上的游戏SWF文件在您的桌面上,以测试多个用户。这个工作流程可以快速发展。
一旦你已经准备好您的应用程序的在线测试,请执行下列步骤:
请记住,对大多数商业应用,你还需要某种玩家匹配系统-通常称为lobby, 这样,用户就可以找到朋友,并开始游戏。您可以建立一个lobby到您的游戏或使用外部的。您可以使用一个精心设计的外部lobby作为入口成多个MMO游戏,所以当你部署多人游戏你不需要重新发明车轮。
维护
除了典型的应用系统维修,包括错误修正和功能要求, MMO游戏需要更多的行动,不断推出服务后。重要的是要考虑推出网络游戏项目作为一个完整的游戏所需要的。许多商业模式的网络游戏应用受益于前面提到的长期用户。
用户全神贯注维持数月或数年,需要坚实的社会管理和定期的内容更新。大部分用户将享受来自与其他玩家互动。新玩家加入后引起的社会动态与戏剧性发展将捕获用户的注意力。这是网络游戏类型的游戏开发商一个最大的优势。然而,有很大的竞争来自其他的MMO游戏,以及用户与用户共享,可享受其他许多游戏。为了使您的游戏令人兴奋并保持新鲜,并确保您的用户继续参与,建立一个维持战略去产生更多的角色,游戏关卡,和情节随着时间的推移。由于开发商往往不充分认识维护要求,因此没有和预算范围内保持均衡,保养不善是导致MMO游戏死亡的最大原因。
结尾
MMO游戏结合最好的Web 2.0和RIA方法为用户提供经验。它们可以成为令人兴奋的项目开发和有利可图的事业的游戏出版商。
建立成功的MMO游戏需要认真规划,包括开发角色和故事应该是独一无二的,并允许发展,建设一个有吸引力的视觉设计,并选择适当的客户端和服务器的技术力量去实现构想。
开发包括用户界面设计,客户端服务器通信,游戏逻辑,艺术和皮肤。我们相信的Flex Builder是一个理想的客户端的技术的选择,因为它灵活的开发环境。再加上Adobe公司的Creative Suite 4 ,Flex Builder将使你从一开始就顺利地构建您的团队协作。
如果您计划真正特别的东西,制定严密,并保持您的项目启动后运行很久,你就会使用Flex 3创造一个成功的MMO游戏。
致谢
我特别感谢作出贡献的艺术家。Warren Lee创造了风格和游戏艺术和Bill Coons的BillCoons.com制作了皮肤与界面图形设计。