sodibgJ2ME毕业论文

更新时间:2023-03-08 10:04:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

-+

懒惰是很奇怪的东西,它使你以为那是安逸,是休息,是福气;但实际上它所给你的是无聊,是倦怠,是消沉;它剥夺你对前途的希望,割断你和别人之间的友情,使你心胸日渐狭窄,对人生也越来越怀疑。

—罗兰

摘 要

JAVA已经从一种平台无关的编程语言演变成一种与厂商及平台无关的健壮的服务器端技术,促使IT业界深入发掘以Web为核心的应用程序的巨大潜力。J2ME 的出现使这一变化达到了一种新的高度。J2ME,简称Java2平台袖珍版( Java 2 Platform ,Micro Edition (J2ME) ),是SUN公司在J2SE和J2EE之后,致力于消费产品和嵌入式设备的最佳解决方案。作为JAVA的三个版本之一,J2ME在无线编程技术中正发挥着它独特的作用。J2ME为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案。它也使设备制造商、服务提供商及应用开发人员为他们的用户发布新的软件应用成为可能。

本篇论文共分为七个部分:包括绪论、J2ME技术概览、游戏设计的需求分析、“Pocket Boxing”手机游戏开发制作、手机游戏开发存在的困难、J2ME手机游戏前景展望和结论。其中第四部分“Pocket Boxing手机游戏开发制作”是本篇论文的重点。整篇论文都是围绕着这一部分来展开论述的,在这一部分里详细介绍一款手机游戏“Pocket Boxing”的开发全过程和开发过程中存在的疑难问题。其中包括:游戏事件、游戏API等以及对事件的处理,另外在游戏描绘处理部分也将作为重点进行介绍。

通过对J2ME的详细介绍我们可以从中了解到其自身的作用,近年来,随着JAVA手机的诞生,其无可替代的灵活性与轻便性致使JAVA手机游戏成为游戏市场的又一亮点,它的前景无可限量,必将在我们以后的生活中发挥着重要的作用。

关键字:J2ME, MIDP, 游戏编程, 事件, 描绘处理

Abstract

Java is already changed from a platform-independent programming language to a mission-critical technological with manufacture platform independent, and java encourage IT circle to deeply tap the huge potential of application with the care of Web. The emergences of J2ME push it to a new high level. J2ME( Java 2 Platform, Micro Edition (J2ME) ) called “Java 2 platform” for short —a pocket-edition is a prefect solution plan of consume products and embedded equipment, after J2SE&J2EE in SUN company. J2ME is making a special effect at the wireless program technology. J2ME provide a complete set of solution plan, it’s also make it become possible that issue the new software application by the manufacture of equipment, service supplier and the people of develop application.

This article has seven portions: include the introduction, the general situation of J2ME technology, the demand of the game design analyzes, the significance and development of Pocket Boxing, the difficult, the prospect of mobile phone games exploitation and the Conclusion. The forth part — “the production of Pocket Boxing mobile phone games” is the focus of this article. This entire article is around this focus, and this part detail introduces the exploitation process of a mobile phone game and the issues. This part introduces: the case, API of games, deal with the accident and the other focus to introduce is the manage of games description.

Through the detail introduce of J2ME, the function of java is obvious. Of late years, follow the emerge of java mobile phone its unimpeded identity and portability make java mobile phone games become a new focal point of game market. J2ME have unlimited brighten and make an important role in the future

life.

Keywords: J2ME, MIDP, Game programming, Deal with description, Case

目 录

摘 要 ........................................................ I Abstract ................................................... III 第1章 绪 论 ................................................ 1 第2章 J2ME技术概览 ........................................... 2

2.1 J2ME的概念 .................................................. 2 2.2 J2ME简介 .................................................... 2

2.2.1 J2ME架构 ............................................... 3 2.2.2 JVM ( 虚拟机 ) ......................................... 3 2.2.3 MIDP( 移动信息设备简表 ) ............................. 4 2.3 手机游戏的发展 ............................................... 5

2.3.1 目前国内的发展情况 ..................................... 5 2.3.2 目前国际的发展情况 ..................................... 6

第3章 游戏设计的需求分析 ...................................... 9

3.1 MIDP中的游戏API ............................................. 9 3.2 游戏类构成 ................................................... 9

3.2.1 Boxer类的实现 ......................................... 10 3.2.2 GameCanvas类的功能及特点 .............................. 10 3.2.3 Sprite类的功能及特点 .................................. 11 3.3游戏角色的处理 .............................................. 11 3.4 游戏中的事件处理 ............................................ 12

3.4.1 key Pressed方法 ....................................... 12 3.4.2 key Released方法 ...................................... 13

第4章 “Pocket Boxing”手机游戏开发制作 ....................... 14

4.1 游戏编程 .................................................... 14 4.2 格斗类手机游戏实例 .......................................... 14

4.2.1 “Pocket Boxing”游戏背景介绍及开发环境 ............... 14 4.2.2 MIDlet的构成 .......................................... 15 4.2.3 MIDlet的生命周期 ...................................... 16 4.2.4 MIDlet的画面显示基础 .................................. 16 4.2.5 游戏项目的创建 ........................................ 18 4.2.6 命令种类及命令处理 .................................... 19 4.2.7 游戏中的描绘处理 ...................................... 21 4.2.8 游戏状态的类变量 ...................................... 23 4.2.9 按键事件的处理 ........................................ 24 4.2.10 设计存在的难点 ....................................... 25

第5章 手机游戏开发过程中的困难 ............................... 26

5.1 手机游戏开发存在的困难 ...................................... 26

5.1.1 移动开发存在的问题 .................................... 27 5.1.2 操作环境不兼容性问题 .................................. 27 5.1.3 显示速度方面的问题 .................................... 28 5.1.4 不同的屏幕尺寸问题 .................................... 28 5.1.5 输入问题 .............................................. 29 5.2 解决方案 .................................................... 29 第6章 J2ME手机游戏前景展望................................... 31

6.1 J2ME手机游戏的优势 ......................................... 31 6.2 J2ME手机游戏的开发意义 ..................................... 32 第7章 结 论 ............................................... 35 致 谢 ....................................................... 36 参考文献 ..................................................... 37

英文资料翻译 ................................................. 38

第1章 绪 论

手机是人们日常生活中所用的非常频繁的通信工具,虽然现在其费用比有线电话高,但是其随时随地的沟通优势,使人们摆脱了线路的束缚。目前中国的一些大城市几乎人手一部或几部手机,正是由于手机的高普及率,使得无线移动商务才得以迅速普及和发展。

JAVA技术已经从一种最初用来编写与硬件无关的嵌入式系统的编程语言变成了一种与厂商无关、与硬件无关的健壮的服务器端技术,它使整个企业界可以全面发掘以Web为核心的应用程序的巨大潜力。随着JAVA技术的不断更新提高,J2ME技术的出现,使得手机游戏越来越成为我们关注的焦点。J2ME技术目前最流行的就是在制作手机游戏方面,JAVA手机的出现使得这一技术更有它的用武之地,发挥着他灵活、轻便、快捷的作用。

下面在本篇文章中就将详细的介绍J2ME这一技术在手机游戏制作方面的具体过程以及其重要的作用。

第2章 J2ME技术概览

2.1 J2ME的概念

J2ME的全称是Java2 Micro Edition (J2ME)——Java2技术微型版,与J2SE、J2EE一样都是有美国SUN微系统公司提出的JAVA技术规范。

2.2 J2ME简介

J2ME是为了能够开发运行在小型设备、独立设备、互联移动设备、嵌入式设备上的JAVA应用程序而被提出的。J2ME是建立在一个由概要描述、配置、JAVA虚拟机和操作系统等部分组成的标准架构之上的,这些内容共同组成了完整的J2ME实时运行环境。它的技术核心是由一个JAVA虚拟机( JVM )及一套适合运行在上述设备环境上的API接口构成。

J2ME在1999年的JavaOne开发人员大会上初次亮相,它的目标是面向智能无线设备和小型计算设备的开发人员,这些开发人员需要在他们的产品中整合跨平台的能力。

无线设备和小型计算设备的消费者期望这些设备能够有较高的性能。他们希望小型计算设备有快速的响应时间,与同种设备相兼容,拥有功能完备的应用程序。消费者希望桌面计算机和笔记本电脑上的软件和功能同样能够运行在移动电话和个人数字助理上。

为了满足他们的需求,开发人员必须重新考虑他们设计计算机系统的方式。开发人员需要利用商业计算机上现有的前端和后端软件的计算能力,并将这些能力传递到微型、移动和无线的计算设备上。J2ME能够以最小的修改来实现这种传递,如果应用程序的设计是可伸缩的,应用程序就可以适应小型计算设备上有限的资源。

J2ME为在小型电子设备上创建性能卓越的网络应用提供了一套完整的解决方案,能很好的解决软件跨平台的兼容性和安全性的问题。[5] 2.2.1 J2ME架构

J2ME架构的模块化设计使应用程序可以灵活适应小型计算设备的限制。J2ME架构没有替代小型计算设备的操作系统。相反,J2ME架构由位于原生操作系统之上的多层软件组成,这些软件共同称为“连接有限设备配置”(Connected Limited Device Configuration, CLDC)。安装在操作系统之上的CLDC形成了小型计算设备的运行时环境。

J2ME架构由3个软件层组成:第一层是包括在内的配置层,这个层次直接与原生操作系统进行交互。配置层还处理profile和JVM之间的交互。第二层是profile层,由小型计算设备的应用程序编程接口(API)的最小集合组成。第三层是Mobile Information Device Profile( MIDP )层。MIDP层由用户网络连接、永久存储和用户界面的java API组成。它还能够访问CLDC库和MIDP库。 2.2.2 JVM ( 虚拟机 )

JVM是专门为微型电子设备与资源受限设备如:手机、寻呼机、移动互联网设备、家用微电子设备等设计的一种轻便、紧凑的JAVA虚拟机。

JVM可以为微型电子设备提供一个完整的JAVA运行环境,除了一些微型设备所必需的适当的功能有所不同外,它是由JAVA虚拟机规范定义的真实的JAVA虚拟机。它是专门为那些受资源限制,只有几百K字节内存的微型设备设计的。

JVM起初是由SUN微系统实验室为一个名叫“Spotless”的项目创建的。它的目标是为资源受限制的Palm(是目前较为流行的掌上电脑操作系统)可连接的电子设备,实现一个java虚拟机。

基于上述原因,JVM具有以下几个特点: (1)小,仅具有40KB至80KB的静态内存。

(2)轻便、精巧。 (3)模块化并可定制。

(4)尽可能完全紧凑的完成设计目的。 2.2.3 MIDP( 移动信息设备简表 )

MIDP是专门为互联受限设备配置设计的,它为移动设备提供了一套API集合,MIDP包含用户界面类、持久存储功能与网络功能。它同时也包括一个供用户下载新应用到终端设备的标准运行环境。运行在MIDP下的小应用程序叫做MIDlet移动设备小应用程序,它与Applet类似。MIDP要求平台设备提供一个机制用来存储简单的数据记录,通过正常的平台事件,比如重新启动和电池更新维护系统的完整性。

MIDP是以SUN、Motorola、Nokia为中心的MIDPEG组织(Mobile Information Profile Expert Group)所制订出来使用在CLDC上的Profile,是以能使用在移动电话、双向对讲机、可无线通信的PDA(个人数字助理)上面为前提设计出来的。另外,像日本国内的NTT DoCoMo、J-PHONE、KDDI等电信商与移动电话制造商也都曾参与了MIDPEG。

MIDP是在CLDC 的功能上附加提供适合目标设备用的GUI与事件处理功能。这样一来,就可以当成MIDP应用程序(MIDlet)来运行了。

MIDP由于是由多个企业所共同策划出来的开放标准,因此主要的移动电话制造商也会制造出大量的对应机种。也就是说,以MIDP为基准所制作出来的应用程序,也将可以在流通于市面上的移动电话上执行。

另外,MIDP不仅限于移动电话,也已经被移植到PDA Palm OS上,而以MIDP for Palm OS的名字来称呼(与KJava是不同的)。在不使用各电信商的扩展API的时候,制作给移动电话用的MIDlet也将可以使用在Palm OS上面。由于未来MIDP也将会搭载到不同设备之上,也由于其兼容性高,只要写过一次程序,就可以在其他移动电话或是移动电话以外的设备上执行;而这也就是它最大的好处。

2.3 手机游戏的发展

手机是现在人们生活中必不可少的通讯工具之一,有着其重要的作用,现在的人们越来越认识到它的重要性。作为手机中的一部分——手机游戏,也发挥着它特有作用。可以说,手机游戏发展到今天已经越来越为人们所熟知,也越来越受到人们的喜爱。但是应该看到,国内手机游戏的发展还是刚刚起步,与欧美日韩等先进国家还有着一定的差距,但是这种差距正在一步一步的缩小。 2.3.1 目前国内的发展情况

随着技术对游戏经验的促进,游戏市场持续增长。商业IT革命为我们节省了时间和金钱,从而提高了我们的工作水平,我们因此花费更多的时间和金钱在游戏上,来改善生活的整体质量。甚至在当今困难的经济时代,游戏仍保持快速增长,它仍然是盈利行业的组成部分。Java开发者应该注意到这里蕴藏着的巨大的商机。

在全球数字娱乐的快速发展浪潮中,中国的游戏产业正以其惊人的井喷式发展速度前进,牢牢吸引住了世界目光。当然,目前中国游戏产业一片大好的形势可以说是电脑网络游戏一枝独秀的成绩。据信息产业部 2004 年 10 月统计出的主要业务量数据表,到本年 10 月止,中国移动电话用户合计32503.4 万户,比上年末新增 5508.1 万户。明年或者后年 3G 手机牌照发放下来以后,手机游戏的硬件设备更是日趋完善。2004 年里,又有很多手机游戏中小型开发企业成立,很多新的手机游戏涌入内容市场。似乎在这红红火火形势下“手机游戏马上会火起来”这一想法已经点燃了很多人心里的希望之火。

手机游戏市场的确有很大的市场发展空间,前景看好,但是在中国游戏市场中马上占据主流地位是不大可能的,那应该还需要至少一年的“磨合期”。 中国大众还不大熟悉手机游戏这一新鲜事物,在消费心理和习惯上需要引导和培养,尤其是在电脑网络游戏大行中国的时期。这也是一个消费对象需要被确定的问题。

什么样的人会为手机游戏而消费呢?而这直接关系到这一新兴产业的存活。只有有了消费需求,才能带动整个手机游戏产业链的循环。 在发展不见明朗的萌芽期,手机游戏营运方式、费用结算方式也是需要一段摸索时间的。内容提供商、电信运营商、手机终端生产商之间利益的协调还需要实践地调整。而这都是目前中国手机游戏界内无法做到的事情。手机游戏肯定会有大发展,但是,目前不适合非理智地冒进。[9]

2.3.2 目前国际的发展情况

在国际上日本、韩国在这方面处于领先地位。日本在手机游戏领域占据了绝对的领导地位。1999年,包括北美在内的很多国家和地区对手机游戏还一无所知,日本就已拥有超过30万的手机游戏用户,占全球手机游戏用户的70%以上。2001年初,当短信游戏在全球逐步发展之时,日本NTT DoCoMo已经推出了近500款i-mode游戏。2004年4月,日本计算机娱乐协会(CESA)发表的统计报告显示,2003年日本国内利用手机上网玩游戏的用户数达897万人。日本在手机游戏领域走在世界前列的主要的原因是:

其一,日本拥有庞大的移动数据业务用户群。经过近年来的不断发展,到2004年6月底,日本移动用户数已经达到8270万,其中7000万以上的用户使用移动数据业务。NTT DoCoMo的i-mode业务是世界公认的经营最成功的移动数据业务。而手机游戏作为其中的一项业务,拥有广泛的用户群。

其二,日本是传统的电子游戏大国。世界传统游戏市场的巨头索尼、世嘉和任天堂都在日本,他们手中掌握了丰富的视频游戏和PC游戏资源,都可以转化为手机游戏产品。2004年,NTT DoCoMo推出了新一代FOMA手机,具有更强大的“i-appli”( Java )游戏功能。新一代FOMA手机,把软件存储区域和数据保存区域(高速缓存)的总容量提高到现有230k的2倍以上,从性能上看已经超过了任天堂GBA掌机。这说明,随着日本手机功能的升级和无线宽带网络数据承载能力的提高,手机游戏已经对高端的游戏厂商产生了强大的吸引力,手机游戏已不

再是简单游戏的代名词。到2007年,日本的手机游戏市场规模将会增长到近6亿美元。

近年来,韩国网络游戏一直保持着高速增长的势头,这为手机游戏的发展奠定了良好的用户基础。与此同时,韩国的移动通信用户基础非常雄厚。2004年,在韩国总共4500万人口中,移动通信用户数已经超过了3500万。

韩国政府一直在努力推动包括网络游戏和手机游戏在内的数字内容产业的发展,相应的优惠政策和充足的资金投入催生了大批的手机游戏开发商,有力推动了手机游戏内容的开发进程。与此同时,诸如NC Soft、Webzen、Nexon等韩国领先的网络游戏开发商也积极跻身移动游戏领域,而主要的移动门户运营商NHN和DAUM积极致力于移动在线交互式游戏的开发,从而促进了手机游戏内容的繁荣。

虽然韩国的手机游戏产业发达,但其国内市场是有限的。为此,随着市场竞争的加剧,韩国企业致力于推动手机游戏产品的出口。目前,韩国手机游戏产品主要向美国、日本和欧洲出口,出口的市场份额分别为:美国56%、日本19.9%、欧洲12.6%、其他国家11.5%。

欧洲很早就推出了手机游戏业务,但在2003年以前,欧洲手机游戏市场还主要停留在SMS和WAP游戏时代。与日韩相比,欧洲的手机游戏市场相对滞后。

随着移动数据业务的不断发展和市场压力的不断加大,欧洲移动运营商已认识到改善手机游戏市场环境的必要性和紧迫性。在终端问题上,欧洲的运营商开始直接引入日韩的高端手机,打破了传统欧洲手机市场为欧洲手机厂商垄断的局面;在经营模式上,他们也采取了开放的数据业务经营模式。比如Vodafone公司就推出了Vodafone Live,通过合作分成的模式鼓励手机游戏开发商的积极参与。也有公司直接引入日本imode的运作模式和游戏内容。这些举措大大推动了欧洲手机游戏业务的发展。到2003年年底,欧洲手机游戏市场的环境已基本成熟,Java手机在欧洲已经十分普及,还出现了像N-Gage这样的专用手机游戏终端。据预测,2008年欧洲手机游戏市场达到30亿欧元,占移动娱乐内容收入的19%。

美国手机游戏市场起步虽晚,但是发展却十分迅速。从2002年秋天开始,美

国大多数移动网络速度得到了提升,更加适于手机游戏业务的发展。如今,美国移动运营商每月都在推出新的游戏,手机厂商也在不断推出新的支持手机游戏的产品。从游戏提供的数量看,美国移动运营商已经大大超过了欧洲运营商。2003年,手机游戏已经成为美国众多移动数据下载应用的第一应用。IDC数据显示,2003年美国手机游戏用户渗透率为7.9%;预测到2008年,美国手机游戏渗透率将达到34.7%,达到6520万户的规模。Yankee Group的分析师表示,美国手机游戏业务的迅速发展,使得手机平台有望成为继电脑、控制杆、掌机游戏、互联网之后的第五大游戏平台。

从当今国内外形势看,我国在手机游戏制作方面还刚刚处于起步阶段,还不像日韩和欧美国家处于一个高速发展阶段。我们只是刚刚引进这一技术,但是随着时代的发展,我们应该看到手机游戏制作在中国的市场以及在中国发展的潜力。我们要相信在不久的将来,国内手机游戏市场一定回迎来一个春天的![8]

第3章 游戏设计的需求分析

3.1 MIDP中的游戏API

MIDP是专门为互联受限设备配置设计的,它为移动设备提供了一套API集合,MIDP包含用户界面类、持久存储功能与网络功能。早在MIDP1.0版本时,是没有单独的游戏API的,在MIDP2.0后增加了一个新的专门的游戏软件包Javax.microedition.lcdui.game,顾名思义,此包中定义了游戏开发的各种类型。这个软件包是一个专门为在移动信息设备上开发游戏应用而设计的,所以又叫作游戏API。[10]它里面的成员类有以下几个:GameCanvas、Layer、LayerManager、Sprite、TiledLayer。GameCanvas是提供基本的游戏界面;Layer是一个用来表示游戏中的可视元素的抽象类;LayerManager管理一系列的Layer;Sprite是一个基本的可视元素,它本身包含了许多操作,比如将一个图片切分成若干画面帧(Row Frame),再对这些画面帧编排出一个动画序列(Frame Sequence);TiledLayer是一个可以被许多图片填充的类似于表格的可视元素。[10]本论文在设计游戏过程中涉及到其中的GameCanvas类和Sprite类。[7]

3.2 游戏类构成

在游戏中,主要的一些类构成有Pocket Boxing、Boxer、Enemy、GameCanvas。其中Pocket Boxing类继承了MIDlet类,用来进行MIDlet的Live Cycle控制;Boxer存储了玩家的拳击手的信息,进行拳击手的描绘;Enemy存储电脑控制的拳击手的信息,进行拳击手的描绘,它继承了Boxer类;GameCanvas继承了Canvas类,进行画面的描绘与操作。各类都是用与类名称相同的文件名来存储的。[3]各类间的关系如图3.1。

3.2.1 Boxer类的实现

Boxer类是用来存储玩家拳击手状态的信息,再以次为根据进行描绘。Boxer类由于与用来表现对手的Enemy类大致上是相同的,所以要以继承了Enemy类为

DefaultPackage MIDlet Canvas 《Interface》 Runnable 《Interface》 CommandListener

图3.1游戏类图 Fig 3.1. Game diagram Boxer Enemy PocketBoxing GameCanvas 前提来实现。

在Boxer类的Constructor当中,会进行拳击手图像的获取。这里要准备拳击手的身体、上段防御的手腕、下段防御的手腕、上段拳击的手腕、下段拳击的手腕等五种图像。通过身体图像四种类图像的配合,就可以描绘出生动拳击手动态。 3.2.2 GameCanvas类的功能及特点

GameCanvas类是Javax.microedition.lcdui软件包中的Cavas类的一个子类,它可以为游戏提供基本的显示功能;GameCanvas类是提供了游戏的中心属性,如游戏键当前状态的能力、双缓存绘图等;GameCanvas类是一个专门的为每一个GameCanvas实例填充初始化纯白像素的缓存器;通过调用Graphics对象可以改变缓存器中的内容。[4]

3.2.3 Sprite类的功能及特点

Sprite类是一个能显示几个绘图帧(frame)中的其中一帧的基本动态层;这些帧大小相同并且由一个单独的图片(image)对象提供;Sprite类可以使许多帧连续的运动,可以使一个定制的序列以任何方式被放置;另外还可以提供转化于检测方法。下面是Sprite代码样例:[1]

import javax.microedition.lcdui.game.*; import javax.microedition.lcdui.*;

public class Text Layer extends Sprite {

Image _image; String _string; TextLayer (Image i) { super( i );}

public void draw(Graphics g ) throws NullPointerException {

Graphics.LEFT ) ; }

3.3游戏角色的处理

这里的游戏角色——拳击手的初始化是以将拳击手设为后退,并将生命值设为默认值为主要目的。

拳击手在挥出拳之后,将会在等待一段时间后恢复原本的防御状态。为了要进行这个等待处理,使用到了Tick计数。当现在的状态为上下拳击时,就会开始Tick计数,当数到4以上的状态时就会回到原来的防御位置。这样一来就可以表现出拳击手出拳头后再回到原来防御状态的样子。

不过,在后退时挥出拳击的情况中,这里不能马上回到后退状态。要在挥出拳击后回到后退状态时,就得通过玩家自己的操作来进行了。

3.4 游戏中的事件处理

事件可以分为:低层事件( low-level event )与高层事件( high-level event )。低层事件一般用来处理设备事件,如:按键事件、探针事件。高层事件用来处理应用中的相关事件,如:命令事件、组件状态变化事件。由于开发手机游戏时我们主要用到的是Key事件的处理方法,因为移动设备的键盘是传递用户意图的最主要的输入设备,Key事件属于低层事件。那么低层事件中用下面的两种方法来处理应用的Key事件。[2] 3.4.1 key Pressed方法

方法key Pressed是用来处理键被按下的事件,这个方法没有与其对应的显示的听众对象( Listener ),这些听众对象有系统根据实际对象缺省提供,例如后面提到的Canvas对象就是默认的key事件听众对象,它缺省地实现了Key Listener接口。简单的一个样例代码:

… ….

public void keyPressed (int keyCode) { if (keyCode > 0) {

//输出当前被按下键的键码

System. out.println(“keyPressed ” +( (char) keyCode ) ); } else { …

}

}

当按下手机的操作键盘上的按键时,就会触发这key事件,系统并会自动调用keyPressed()方法,并且系统将捕获到的键码传递给该方法,在上面的那段代码中方法判断了所按的按键值是否大于0,如果大于0输出所按的手机键盘上的实际值,否则执行其他的操作任务。[4] 3.4.2 key Released方法

可以说方法key Released()与上面提到的keyPressed()方法是对应的。它是用来处理手机操作键盘上的按键被释放的事件,这个方法也同样没有与之对应的显示的听众,这些听众也是由系统根据实际对象提供的。下面是一个样例代码: … …

public void keyReleased(int keyCode) { if (keyCode >0 ) { / /输出当前被释放键的键码

System.out.println(“keyReleased ” +( (char) keyCode) );

} else { … } } … …

当释放手机操作键盘上被按下的按键时,则会触发这个key事件,系统并会自动交由keyReleased()方法来处理该事件,同样的上面的这段代码中,该方法判断了所按的按键值是否大于0,如果大于0则输出所释放的手机键盘上的被按下的按键的实际键值,否则执行其他的操作任务。[4]

上面说的是在开发手机游戏过程中遇到的两种低层事件的方法keyPressed方法和keyReleased方法,下面就具体介绍“Pocket Boxing”手机游戏的开发过程。

第4章 “Pocket Boxing”手机游戏开发制作

4.1 游戏编程

众所周知,J2ME现在最流行的就是制作手机游戏,况且现在无线游戏编程现在又是一个很热门的话题,不但因为它具有极强的趣味性,更重要的是它给我们带来了无限的商机。随着JAVA手机的诞生,手机游戏编程的灵活性与轻便性使得JAVA手机游戏成为游戏市场的又一亮点。

4.2 格斗类手机游戏实例

手机游戏有很多种类,其中格斗类游戏凭借着它的趣味性和娱乐性深受人们的青睐。如何制作一款优秀的格斗类游戏,就成为手机游戏开发人员一个最关键的问题了。

4.2.1 “Pocket Boxing”游戏背景介绍及开发环境

这里将通过一款拳击游戏来介绍格斗类手机游戏中的攻击与防御等重要因素、以及如何控制对手角色。

这款游戏名字叫“Pocket Boxing”。在这款游戏中,玩家所控制的拳击手将出现在屏幕的左侧,电脑所控制的拳击手则出现在屏幕的右侧。拳击手可以进行上下两种的攻击方式,以及上下阻挡防守与后退防守的防卫。当攻击命中对手时,就可以是对手角色的生命点数减少,不过不是任何的攻击方法都可以使对手的生命点数减少的。当玩家在进行上方和下方的攻击的时候,对手进行相对应防卫的时候,在对手防守状态中是不能使对手的生命点数减少的,还有一种情况就是在对手后退一步避开你的攻击的时候也同样不会减少生命点数的。

当对手的生命点数用尽的时候,玩家就获得了这一局比赛的胜利,就可以进

入下一个回合。在进入下一个回合后,电脑控制的对手的生命值会恢复,同时拳击手的攻击力会加强,也就是难度会加大。相对的玩家控制的拳击手在前一回合所剩下的生命点数,也可以附加到下一回合的生命点数上去。

游戏中一共有五个回合,在全部的回合中取得胜利的话就是冠军了。在中途如果被打败,就算是游戏结束了。游戏流程如图4.1:

这款手机游戏是一个简单的MIDP应用程序,在这里进行开发有它需要的开发环境。MIDPlet的开发环境需要有java2 SDK1.3版以上(这里使用的是JDK1.4版)与MIDP的类库、以及后述的运行前验证工具三种。在J2MEWTK中除了包括MIDP的类库、运行前验证工具之外,还会把编译与包装(JAR文件化)、JAD文件的创建、模拟器的启动等在开发MIDP需要用到的操作加以集成。当完成了JDK1.4以及J2MEWTK的安装以后,就可以开始对游戏项目进行创建了。 4.2.2 MIDlet的构成

开发环境准备好了之后,就应该进行MIDlet的开发了。

遵循MIDP规范的基本MIDPlet是组合了JAR文件与JAD文件来运行的。JAR文件是将Class文件或者是图像等集成在一起的文件,而JAD文件则用来指定JAR文件内启动MIDlet类名称或JAR文件的大小、版本等属性。移动电话的JAM(Java Application Manager)一开始就是将这个文件读进来后才启动MIDlet的。

JAR文件虽然基本上与J2SE是相同的,不过其中所放置的列表文件内容是不一样的。列表文件中编写了许多的文件打包信息。一般来说可以在JAR文件内放置多个MIDlet,通过在JAD文件中编写MIDlet个数相等的内容,JAM就能依次判断MIDlet的数目。

MIDlet文件的构成:

(1)JAR(Java ARchive)文件:集成了Class File与图像、声音等内容的数据文件,虽然与J2SE的文件相同,但是列表的文件内容不同。

(2)JAD(Java Application Descriptor)文件:指定启动的MIDlet类名称或是数

据文件大小、版本等信息。

(3)KDDI的地方,使用组合了JAR文件与JAD文件的KDDI专用的KJK(KDDIJavaeXtension)。 4.2.3 MIDlet的生命周期

MIDlet的生命周期,与Applet或DoJa是不一样的东西.若想要在Applet与DoJa之间作相互的移植时,对这个生命周期的流程有越深入地了解,在进行移植的时候就会越轻松。

MIDlet是以下列的生命周期来运行的:

(1)当终端发出了MIDlet的运行命令时,若编写于JAD文件MIDlet有多个的时候,就让其进行选择后启动MIDlet。

(2)MIDlet的Constructor被调用。

(3)MIDlet#startAPP()方法被调用,启动MIDlet。

(4)在终端有来电的时候MIDlet#startAPP()方法就会被调用,并让MIDlet暂停。

(5)当通话结束等的时候,就再次调用MIDlet#starAPP()方法,MIDlet就会再次启动。

(6)调用MIDlet#destoryAPP(boolean)方法,以将MIDlet结束。 如图4.2 :

4.2.4 MIDlet的画面显示基础

MIDlet类本身由于并没有提供直接操作画面显示的功能,因此在MIDlet类的子类也没有直接操作画面显示的功能。因此,要使用管理画面显示功能的Display类。这个Display类可以让javax.microedition.lcdui.Displayable 类的子类显示在画面 上。

1 开始 2 显示标题界面 按下结束按钮? Yes No 按下自动按钮? Y es 1 结束 显示暂停界面 显示关卡启动界面 按下重新启 Yes 动按钮? 显示关卡游戏界面 Y es 按下停止按钮? 2 No 按下暂停按钮? No

No 过关 显示游戏 Yes Yes No 结束界面 玩家的胜利? 2 显示关卡全关卡过关? No Yes 结束界面 显示关卡结束界面 2 图4.1 游戏的流程图 Fig 4.1. The flow chart of games

new() DestoryApp() Paused

PauseApp()

Paused DestroyApp() 图4.2 MIDlet的生命周期 Fig 4.2 .The life cycle of MIDlets

StartApp() Destroyed

Displayable类的子类大致来说可以分为两种,分别用来进行线与图形、图像的低级描绘类,与用来显示警告与文本的输入、选择列表等UI组件类。前者是指javax.microedition.lcdui.Canvaslei类,用来进行低级描绘。后者是指其中的javax.microedition.lcdui.Screen类与其子类(Alert、Form、List、TextBox类等)。

Displayable类与子类之间的关系如图4.3 4.2.5 游戏项目的创建

在J2MEWTK当中,是以项目这个单位来管理MIDletSuite,因此在进行程序编写前必须先要创建项目。首先要将项目取名为SimpleMIDlet。在Windows“开始”菜单启动J2MEWTK的KToolbar,启动之后,单击“New project”按钮。然后在“New project”对话框的“project Name”与“MIDlet Class Name”的文本框输入项目的名称“Pocket Boxing”,并单击“Create project”按钮。这样就完成了对游戏项目的创建。

Alert Canvas Object Displayable Screen Form List TextBox 图4.3 Displayable类与子类类图 Fig 4.3. Displayable and a Son diagram

接着就要对程序进行编译了,说到编写程序代码首先要提到支持J2ME的开发工具。我用到的开发工具是Borland公司推出的开发工具——JBuilder9企业版。其功能非常强大,不仅可以集成化的编码、调试,还可以进行应用发布,网络调试以及版本控制等等,是一个非常不错的开发工具。 4.2.6 命令种类及命令处理

这个游戏中要定义的命令,一共有使用在标题画面的Start、Exit命令与使用在游戏中的Pause、Resume、Quit命令共计五种。 下面是这五种命令变量的程序代码: /**Start命令变量*/

Private Command startCmd=new Command (“Start”, command. SCREEN, 5); /**Exit命令变量*/

Private Command exitCmd=new Command (“Exit”, command. SCREEN, 1);

如图4.5 图4.5游戏开始界面

Fig4.5.Game beginning interface

/**Pause命令变量*/

Private Command pauseCmd=new Command (“Pause”, command. SCREEN, 5); /**Resume命令变量*/

Private Command resumeCmd=new Command (“Resume”, command. SCREEN, 5); /**Quit命令变量*/

Private Command quitCmd=new Command (“Quit”, command. SCREEN, 1); 如图4.6:

图4.6游戏暂停画面

Fig4.6.Game pause appearance

4.2.7 游戏中的描绘处理

进行描绘的doDraw( Graphics g )方法,将会在Game Canvas类进行描绘时被调用出来。描绘位置会在Game Canvas类中先使用Set Draw X( int x )和Set Draw Y(int y)方法来预先指定。在决定画面位置的时候,由于拳击手图像只有上半身,因此必须将图像的下半部分设置在画面的最下方。因此,就要准备能返回图像高度的get Height()方法。另外,在被击倒的时候由于是以拳击手倒在地下为前提,因此将什么都不描绘。

描绘处理的程序代码如下:

/**存储了描绘开始的X坐标的变量*/ Protected int draw X ; /**存储了描绘开始的Y坐标的变量*/ Protected int draw Y ;

/**

* 设置用来进行描绘的X坐标的方法 * @ Param x 进行描绘的X坐标 */

Void set draw X ( int x ) { this. drawX=x ; }

/**

* 设置用来进行描绘的Y坐标的方法 * @ Param y 进行描绘的Y坐标 */

Void set draw Y( int y ) { this. drawY=y ; }

/**

* 返回图像高度的方法

* @ return int 进行描绘的图像高度 */

int get Height() {

//返回身体图像的高度 return images[0]. Get Height() ; }

以上是对Boxer进行的描绘,在Enemy类继承了在功能方面几乎相同的Boxer类,并承续其功能改写了get Imagepaths()方法与doDraw( Graphics g )方法,更改为进行了图像的获取以及与玩家位置相反的方向描绘。在Constructor当中,就会

调用出Boxer类的Constructor,并进行图像的读取。 4.2.8 游戏状态的类变量

在游戏中,在Game Canvas类中定义表现游戏状态的类变量。要实现的变量将包括:标题、回合开始、回合中、回合结束、全部回合结束等变量。 程序代码:

/** 代表标题显示状态的常量 */ Private static final short TITLE =0 ;

/** 代表回合开始显示状态的常量 */ 如图4.7

图4.7回合开始画面

Fig4.7.Bout beginning appearance

Private static final short ROUND_START =1 ;

/** 代表比赛中显示状态的常量 */ 如图4.8

图4.8比赛中画面

Fig4.8.The game is inside the appearance

Private static final short FIGHTING =2 ;

/** 代表回合结束显示状态的常量 */如图4.9

图4.9回合结束画面

Fig4.9.At an end appearance in bout

Private static final short ROUND_END =9 ;

/** 代表回合过关状态的常量 */如图4.10

图4.10回合过关画面 Fig4.10. Bouts pass the appearance

Private static final short ALL_ROUND_CLEAR =10 ;

另外,除了上述提到的五种状态变量,还涉及到了代表存储现在状态的变量(game state)与暂停状态的标识(ispaused)。代码如下: /** 存储现在显示状态的变量 */

Private short gamestate ; /** 代表暂停状态的标志 */

Private Boolean ispaused ; 4.2.9 按键事件的处理

在进行按键处理的key Pressed方法中,当不是在回合中的时候或是在回合中但暂停中的时候,由于没有必要所以不进行处理。除此之外,在拳击中也不进行任何的处理,这是因为如果在拳击当中若能做出其他动作的话会非常奇怪。当都不符合以上条件时,就要根据所按下的数字按键来更改使用者的状态。在这款游戏中按键是这样分配的:“1”后退、“4”后退、“2”上方防御、“5”下方防御、“3”上方攻击、“6”下方攻击。当为上方攻击和下方攻击时,就要调用出doLifepointCheck4 Enemy( )方法来根据对手的状态减少生命点数,然后根据生命点数的剩余量来结束回合。 4.2.10 设计存在的难点

在这款游戏的设计全过程中,还是存在着一些难点的。首先在开发环境的准备过程中,J2MEWTK中所附带的模拟器除了灰阶的以外还有许多种类,虽然可以在模拟器启动后进行选择,但是要使用彩色画面的模拟器的话,则要在每次启动J2MEWTK后都得进行一次选择,所以说相当不方便。因此,就有必要将默认的模拟器变成彩色移动电话的模拟器,这样一来在启动J2MEWTK之后就不用再去选择使用彩色的模拟器了。

其次,在设置默认模拟器的DefaultColarPhone的时候,其画面大小为纵向100像素、横向96像素。不过,实际上一些移动电话的终端画面都在纵向130像素、横向120像素以上,因此这个设置并不符合现实状况,所以还必须修改属性文件。

最后,在编写程序代码之后,要进行验证处理,另外还要将Class文件与数据文件打包(JAR文件)在一起。要以KToolbar来进行打包时,只要从KToolbar的“project”菜单选择KToolbar的打包处理就会帮助一起进行编译以及运行前的验证处理了。

以上就是对“Pocket Boxing”游戏在整个制作过程中的介绍和对过程中存在的一些难点的分析。

第5章 手机游戏开发过程中的困难

5.1 手机游戏开发存在的困难

当电脑游戏被称为第九艺术,也许我们可以因此期待手机游戏会得到一个冠冕堂皇的称号——因为手机游戏已经渐渐成为游戏业继网络游戏之后,又一座富饶的“金矿”,成为游戏市场中一颗冉冉升起的新星。

但是现在,用“简陋”一词来形容现今的手机游戏并不为过,因为玩家大多无法对那个手掌里的小屏幕集中太多的注意力,特别是手机游戏的分辨率还很低,很容易让人想到十几年前的红白机游戏时代。这是以时尚标榜自己的年轻人无法接受的。而且现在很多手机用户对于手机游戏的认识还停留在经典的“贪吃蛇”,所以那些所谓的手机游戏实在让人提不起什么兴趣来。

在游戏开发的初期阶段,并没有传统游戏的开发者参与。移动游戏时代是从WAP游戏开始的,主要是文字,并配有少量的图形。美国的移动运营商很快地注意并分析了这些问题,他们从日本I-mode的巨大成功中获取了经验。I-mode到去年年底已经有3000万用户下载娱乐游戏,这占公司年收入的很大一部分。移动运营商推出了下一代移动电话,能够支持因特网功能。与老式的黑白文字手机相比,这些手机更加快并且功能更加强大,它们带有彩色的屏幕和因特网浏览功能,使用比大部分个人电脑拨号上网速度更快的连接速度。

虽然新手机还不是最理想的游戏平台,但它已经是个良好的开端。处理器、内存和色彩深度提供了游戏开发所需的因素。开发者正努力把其它游戏平台上的质量标准运用到这个平台上。当然了,一些问题仍然存在,然而这些问题终将被解决,就像PC平台游戏开发者使用不断改进的DirectX一样。

当然在手机游戏投放市场和开发以及具体的制作过程方面还是存在的诸多的问题的。

5.1.1 移动开发存在的问题

开发移动游戏与传统游戏的开发有很多不同,想开发有吸引力的移动游戏尤其困难。这比开发控制台游戏或PC游戏更困难,因为众多的设备具有不同的存贮器、声音和显示性能。除此之外,你还必须合理利用J2ME这样的开发环境。 开发移动游戏需要一套与普通游戏不同的方法和思路。移动游戏的预算很小而且时间安排很短。这个平台有许多种硬件和软件的组合,并且在硬件厂商之间没有多少共同点。

第一、花费更多的时间用来设计。开发者都有想用最简捷经济的方式做事的倾向。然而,为了创作一个世界第一流水平的游戏,你就必须使用世界第一流水平的开发过程。关键步骤是设计思路、试制、生产和产品质量检测。然而,因为设备和移动运营商的多样性,开发者不得不花费更多的时间用于前期的计划。这就存在这一种风险,那就是一个设计可以用于一种设备,但是可能就不能用在另一种设备。

第二、像在PC中一样,为硬件的\最小公分母(\ lowest common denominator )开发,这意味着你的代码不能对硬件和操作系统以及程序设计语言之间的交互抱过高幻想。

第三、类似于硬件中的问题,开发两个API之间的基本功能。比较软件开发环境和围绕它们的不足进行针对性设计。开发者必须花费更多的时间了解这两个平台,但是最后的效果是很值得的。 5.1.2 操作环境不兼容性问题

本论文讲述的移动开发环境是J2ME,J2ME是获得美国大部分移动运营商支持的移动应用开发平台。J2ME是一个解释语言,运行在有虚拟机的任何操作系统上,通常运行速度很慢,而且在优化代码上有许多的困难。

在过渡期间,为这个环境开发游戏成为一种挑战。例如,BREW 1.0支持掩盖

的位图传送( Masked-Blit ),而J2ME MIDP 1.4不支持。而且,一些J2ME手机不支持声音。所以你的代码不应该使用掩盖的位图传送支持或者声音支持。比如说,如果你创建自定义位图字体,你可能认为你需要掩盖的位图传送。然而,你可以使用提前修正背景色来创建字体位图。这两个平台可以在载入一个文件的时候改变调色板,允许动态的调整字体背景色,但是文本必须出现在固定的背景上。 5.1.3 显示速度方面的问题

在移动游戏开发过程中,最大的问题是缺乏对显示速度的重视。虽然移动运营商已经选择了强大的处理器和彩色的显示屏,但是他们忽略了对于游戏来说至关重要的一个方面。

手机使用许多绘制程序,一些支持双缓冲技术,而另一些不支持。在某些情况下,可以更容易的直接绘制到屏幕上。直接绘制到屏幕有时比双缓冲更快。然而,使用低刷新速率在屏幕上绘制大的图像可能会引起闪烁。造成这一问题的原因在于,画面在显示的同时,程序又在改变它,于是画面闪烁。 5.1.4 不同的屏幕尺寸问题

图形是游戏的一个关键的方面,描画速度是一个重要的程序函数。不同于控制台游戏和PC游戏,移动设备没有标准的屏幕尺寸或者长宽比,这就导致了很多兼容性问题。开发者可以通过编写非常灵活的背景和前景描画程序来解决这个问题。关键是创建一个允许快速扩展或者缩小游戏视窗的架构,并且不使图像变形或者生成让人看上去觉得别扭的屏幕比例。

当然,你有很多方法来处理这个问题,最坏的情况就是你可以为每种手机的显示屏重新设计图形。或者,你还可以动态地调节你的游戏背景和其它图形。

5.1.5 输入问题

输入要么成就要么毁掉一个游戏体验。游戏一般都需要快速响应的反馈。不然的话,你的游戏就会感觉有点迟钝。在过去,移动电话不需要能够快速响应的按键,因为拨电话号码没有那种需要。现在,这就有了一些问题,如果你的按键响应速度很慢,你的游戏反馈就会很慢,而且不幸的是没有解决办法来提高它的速度。而且,大部分的手机不支持同时按下多键,而这又是格斗类游戏所必须的。因此是否能够解决好这方面的问题就显得尤为重要了。

5.2 解决方案

基于上述所提到的种种困难,在手机开发过程中就要有针对性的提出解决方案。在操作系统不兼容性的问题上我们可以在别的开发环境中使用面向对象的语言,这样就很能支持J2ME,因为它是一种面向对象的语言。在J2ME和其他开发环境中,任何使用JAVA写的代码都可以使用C++编写,并且可以更快更好。把所有的设备输出代码( 声音、显示、输入 )从游戏程序逻辑中分离出来。结构化游戏程序逻辑以便能够在J2ME和其他环境之间移植。

在显示速度的方面,使用不同的绘制函数和不同尺寸的位图来一些构造绘制程序。这提供给手机快速绘屏以及最优化的方法。使用位图传送和使用固有的绘制程序如矩形填充函数来大致提高手机绘制速度。测试双缓冲和直接描画到屏幕上以及确定一个高效的图形通道。对于解决屏幕闪烁这一问题就是使用双缓冲技术,在内存中开辟一片区域作为后台画面,程序对它更新、修改,完成后再显示它。这样被显示出来的图像永远是已经完全画好的图像,程序修改的将不是正在被显示的图像。这些都是解决这一问题的有效方法。

在处理不同屏幕尺寸的问题上,使用像DrawRectangle和DrawCircle这样的固有描画函数创建尽可能多的可伸缩的图形。设计游戏,让位图图形可以伸展或者缩小15%-20%,而不会影响玩游戏。在可卷轴的游戏中,根据需要扩大或者缩

小可玩的区域。这样以来这个问题便迎刃而解了。

最后在解决输入问题上,可以使用基于动量的控制来最小化缓慢的相应速度。设计解决同时按下多键的事件,提高帧速度,以便提高响应速度。

这样以来,只要在这些关键过程中解决好这些问题就不难做出一款高质量的手机游戏了。

第6章 J2ME手机游戏前景展望

6.1 J2ME手机游戏的优势

在手机游戏制作完成之后,其最大的优势就在于:让品质决定一切。很多人提到手机游戏都认为它前景诱人,并且通常都会有这样的想法:中国的手机用户接近2亿,如果这个市场上有10%的用户使用高端产品和服务,如果他们每人每月下载一个游戏,每个游戏收费5元,那么一年的手机市场就能轻松超过12亿元。确实,手机游戏拥有如此广泛的用户群,的确让其具有强势优势,并且一个更重要的优势在于,手机游戏将大大带动女性对于游戏的积极性,让女性朋友更容易接触游戏,更容易体会游戏带来的乐趣。

但是手机游戏的发展却并不十分明朗,大多数厂商用户仍在观望。其间WAP游戏本应掀起手机游戏的热潮,但却被技术问题限制了发展,因为大多数手机游戏玩家都只是“孤军奋战”,很难找到一起玩的人。在当前网络游戏和互动游戏大行其道的情况下,手机游戏如果还局限于一部手机肯定无法有什么大的作为,只有大力推行互动式的手机游戏才能让其真正成熟起来。所以等到3G手机时代,在更加先进的技术支持下,互动游戏得以很轻松的实现,届时真正的手机游戏时代也许就会来临。[8]

全球移动游戏业2002年的收益已经达到4.364亿美元,预计2008年将上升至93.4亿美元。手机游戏市场越来越被看好,成为游戏业新的增长点。目前的手机游戏都是就地取材于电脑游戏,一些比较受玩家欢迎的游戏直接移植到手机上面,节约了不少成本和周转时间。世嘉、育碧这样的大型游戏厂商已相继成立手机游戏开发部门,而诺基亚、摩托罗拉等手机厂商也大力投资手机游戏及其运行平台的开发。特别是手机游戏的开发相对于电脑游戏来说,具有开发预算少、开发周期短等特点,并且针对屏幕小、键盘等不适宜游戏使用的情况,目前游戏厂商都

推出了针对手机游戏的专门机型,由此我们可以看出手机的产业链已经渐渐形成,整个行业也渐渐成熟起来。

但是手机游戏要进入黄金时期,却必然要先费一番周折。首先就是彩屏手机的普及问题,让所有的手机用户都具有先进的技术平台支持就需要长时间的等待。而且真正意义上先进的游戏手机还没有出现,同时还受到来自GBA等专业游戏机的“排挤”。另一个重要的考验是移动通信网络的稳定性和综合服务能力。手机游戏如果形成玩家互动形式的在线游戏,那么在运行时就会占用过多的通信网络资源,必然使得现有的网络不堪重负。然而,如果从行业发展的角度看,手机游戏的未来一定是在线游戏。[8]

从上面所讲到的手机游戏具有的优势,我想手机游戏必将在以后的通信舞台上有它的用武之地的,因为随着人们生活水平的提高,手机将会逐渐成为人们生活中不可缺少的物品之一。J2ME的前景会非常广泛,并且不会只局限于游戏,还将在移动应用软件等各方面发挥重要的作用,随着科技的发展,J2ME的应用限制也将大大的得到扩展。

6.2 J2ME手机游戏的开发意义

我们对于电脑游戏已经熟知,所以如果以这个标准来衡量手机游戏,那么手机

在某种程度上可以看作是小型的计算机,它的处理能力与台式电脑的标准处理能力相比虽然很有限,但是已经能够运行一些小型的游戏。

现在全世界手机用户很多,甚至已经超过电脑的普及率,并且手机更新换代的速度绝不比电脑差多少。所以手机游戏已经具有了它成长的基础,这个基础要比当年的电脑游戏稳固得多。

最早的手机游戏只能看作是一种增值服务,并不具备形成一种产业的规模。这也是一般手机用户对于手机游戏的印象,所以很多人在买手机时,并不是很看重手机的游戏功能。例如:诺基亚手机的贪吃蛇就是在手机出厂前固化在芯片中,而且用户不能再自己安装新的游戏,所以手机游戏被看成某款手机的特殊功能也

就不足为奇了。[8]

虽然手机用户很多,但是目前大多数用户还在使用单色手机,这也成为手机游戏推广的最大难题。也就是说,等用户开始真正认识手机游戏的魅力,还需要很长一段时间。但是市场是不会等待的,我们现在经常看到各种手机短信游戏的广告,那就是当前比较流行的手机游戏形式――这种短信游戏是以一部手机向另一部手机发送简短的文字信息形式进行,通常的玩法是发送一条信息到某个号码,这个号码对应游戏供应商的服务器,接收这条消息,执行一些操作然后返回一条带有结果的消息到游戏者的手机中。由于它依靠用户输入文字,因此本质上它是一个命令环境,需要大量的时间来操作和等待,并且花费不菲,有些像早期的文字网络游戏。但这种游戏最多只是一种过渡而已,不是我们真正值得讨论的游戏形式。

短信之后的手机游戏会是什么样?其实手机游戏肯定会走上电脑游戏的发展之路,而且以现在游戏开发基础和用户平台的更新速度,估计手机游戏的发展速度将会是电脑游戏的几倍以上。如今的彩信和已成熟运营2年多的GPRS,即将到来的3G时代给手机游戏带来更大的发展空间,而且手机游戏的开发也将应用于各种新技术之上,让用户更容易拥有手机游戏带来的乐趣。

无线应用协议( WAP )手机已经成为目前手机市场的主流,基于WAP的游戏本质上是一个静态浏览载体,非常像一个简化的Web,是为移动电话小型特征和低带宽而专门优化的。要玩WAP游戏的话,要进入游戏供应商的URL( 通常通过移 动运营商门户网站的一个链接 ),下载并浏览一个或多个页面,选择一个菜单或者输入文字,提交数据到服务器,然后浏览更多的页面。WAP( 1.x )版本使用独特的标记语言WML,允许用户下载多个页面,即卡片组。新版本的WAP( 2.x )使用XHTML的一个子集,一次传递一个页面并且允许更好地控制显示格式。两种版本的WAP都提供一个比SMS更友好的界面,而且更加便宜,只要根据使用时间付费,而不是根据信息数付费。但是它是一个静态的浏览载体,手机本身几乎不需要做任何处理过程,并且所有游戏必须通过网络,所有的操作都是在远程服务器

本文来源:https://www.bwwdw.com/article/smc3.html

Top