『壹』 怎样才能发明游戏(手机软件)
那不叫发明,那叫编写
『贰』 基于android系统的手机游戏的开发
如果你有兴趣为Android平台开发游戏,有很多你需要了解的东西。如果你有过游戏开发经验,那么转移到移动平台上来将不是特别困难。你主要只需学习其架构以及API就行了。如果你是一名游戏开发新手,我总结了一张列表,上面有你必需知道的东西,供你起步用。这些知识适用于很多类型的游戏,包括动作类、策略类、模拟类和益智类。 Android是一个基于Java的环境。这对初学者来说是个好消息,因为相对于C++,Java被广泛认为是一门更容易上手的语言,它是移动开发的规范。Google也做了一件出色的工作,它将API文档化并提供示例代码供使用。其中有个叫做API Demos的示例几乎展示了所有API的功能。如果你熟悉Java并且用过Eclipse,要让你的第一个应用跑起来那是相当简单。如果你以前从没写过代码,在你前进路上还要学习很多,但别气馁。
获取SDK
新手上路的第一步便是获取Android SDK(软件开发工具包)。SDK里有一个核心类库,一个模拟器,一些工具和示例代码。我强烈建议使用Eclipse和Android Eclipse插件。如果你玩Android的话,Eclipse IDE对Java开发者来说很好用。如果这是你第一次开发Java项目,你可能会需要下载全套JDK,它里面包括签名和部署你的应用程序的一些工具。
学习应用程序架构
别急着一头扎进开发的海洋里,理解Android应用程序架构是很重要的。如果你不学一下,你设计出来的游戏在线下将很难调试。你将需要理解Applications、Activities、Intents以及它们怎样相互联系。Google提供了很多有用的架构信息。真正重要的是要理解为什么你的游戏需要多于一个的Activity,以及什么才是设计一个有良好用户体验的游戏。要理解这些,首先要了解什么是Activity生命周期。
学习Activity生命周期
Activity生命周期由Android操作系统来管理。你的activity创建、恢复、暂停、销毁都受操作系统的支配。正确处理这些事件是很重要的,这样应用程序才能表现良好,做用户认为正确的事。在你设计你的游戏之前了解所有这些是如何工作的是件好事,因为以后你可以为自己节省调试时间和昂贵的重新设计时间。对大多数应用来说,默认的设置将工作正常,但对于游戏,你可能需要考虑将SingleInstance标志打开。当设置为默认时,Android在它认为合适时会创建activity的新实例。对于游戏来说,你可能只需要一个游戏activity的实例。这对于你要怎样管理事务的状态有些影响,但对于我来说,这解决了一些资源管理的问题,应予以考虑。
主循环
根据你写的游戏的类型,你可能需要也可能不需要一个主循环。如果你的游戏不依赖于时间或者它仅仅对用户所做的加以回应,并且不做任何视觉上的改变,永远等待着用户的输入,那么你就不需要主循环。如果你写的是动作类游戏或者带有动画、定时器或任何自动操作的游戏,你应该认真考虑下使用主循环。
游戏的主循环以一个特定的顺序通常尽可能多的在每秒钟内“滴答”提醒子系统运行。你的主循环需要在它自己的线程里运行,原因是Android有一个主用户界面线程,如果你不运行自己的线程,用户界面线程将会被你的游戏所阻塞,这会导致Android操作系统无法正常的更新任务。执行的顺序通常如下:状态,输入,人工智能,物理,动画,声音,录像。
更新状态意思是管理状态转换,例如游戏的结束、人物的选择或下一个级别。很多时候你需要在某个状态上等上几秒钟,而状态管理应该处理这种延迟,并且在时间过了之后设置成下一个状态。
输入是指用户按下的任何键、对于滚动条的移动或者用户的触摸。在处理物理之前处理这些是很重要的,因为很多时候输入会影响到物理层,因而首先处理输入将会使游戏的反应更加良好。在Android里,输入事件从主用户界面线程而来,因此你必须写代码将输入放入缓冲区,这样你的主循环可以在需要的时刻就从缓冲区里取到它。这并非难事。首先为下一个用户输入定义一个域,然后将onKeyPressed或onTouchEvent函数设为接到一个用户动作就放到那个域里,有这两步就够了。如果对于给定游戏的状态,这是一个合法的输入操作,那么所有输入需要在那一刻做的更新操作都已经定下来了,剩下来就让物理去关心怎样响应输入吧。
人工智能所做的类似于用户在决定下一个要“按”哪个按钮。学习怎样写人工智能程序超出了这篇文章的范围,但大体的意思是人工智能会按照用户的意图来按按钮。这些也有待物理去处理和响应吧。
物理可能是也可能不是真正的物理。对于动作类游戏来说,关键点是要考虑到上一次更新的时间、正在更新的当前时间、用户输入以及人工智能,并且决定它们朝着什么方向发展和是否会发生冲突。对于一个你可视化地抓取一些部件并滑动它们的游戏来说,物理就是这个游戏中滑动部件或者使之放入合适的位置的部分。对于一个小游戏来说,物理即使这个游戏中决定答案是错还是对的部分。你可能将其命名为其他东西,但每个游戏都有一个作为游戏引擎的红肉部分(译者注:可能是主体部分的意思),在这篇文章里,我把这部分称为物理。
动画并非像在游戏里放入会动的gif图片那样简单。你需要使得游戏能在恰当的时间画出每一帧。这并没有听起来那么困难。保留一些像isDancing、danceFrame和lastDanceFrameTime那样的状态域,那样动画更新便能决定是否可以切换到下一帧去了。动画更新真正做的事就那么多。真正来显示动画的变化是由录像更新来处理的。
声音更新要处理触发声音、停止声音、音量变化以及音调变化。正常情况下当写游戏的时候,声音更新会产生一些传往声音缓冲区的字节流,但是Android能够管理自己的声音,因而你的选择将是使用SoundPool或者MediaPlayer。它们都需要小心处理以免出错,但你要知道,因为一些底层实现细节,小型、低比特率的声音文件将带来最佳的性能和稳定性。
录像更新要考虑游戏的状态、角色的位置、分数、状态等等,并将一切画到屏幕上。如果使用主循环,你可能需要使用SurfaceView,并做一个“推”绘制。对于其他视图,视图本身能够调用绘制操作,主循环不必处理。SurfaceView每秒产生的帧数最多,最适合于一些有动画或屏幕上有运动部件的游戏。录像更新所要做的工作是获取游戏的状态,并及时地为这个状态绘制图像。其他的自动化操作最好由不同的更新任务来处理。
代码看起来是什么样的?这儿有个例子。
1: public void run() {
2: while (isRunning) {
3: while (isPaused && isRunning) {
4: sleep(100);
5: }
6: update();
7: }
8: }
9:
10: private void update() {
11: updateState();
12: updateInput();
13: updateAI();
14: updatePhysics();
15: updateAnimations();
16: updateSound();
17: updateVideo();
18: }
3D还是2D?
在开始写游戏之前,你要决定是做3D的还是2D的。2D游戏有一个低得多的学习曲线,一般更容易获得良好的性能。3D游戏需要更深入的数学技能,并且如果你不在意的话会有性能问题产生。如果你打算画比方框和圆圈更复杂的图形,还需要会使用3D Studio和Maya那样的建模工具。Android支持OpenGL用来3D编程,并且在OpenGL方面有很多很好的教程可供学习。
建立简单、高质量的方法
上手时,要确保你整个游戏不要就用一个庞大而冗长的方法。如果你遵循我上面描述的主循环模式,这将相当简单。每个你写的方法应当完成一个非常特定的任务,并且它就应该无差错地那样做。举例来说,如果你需要洗一副纸牌,你应该写一个“shuffleCards”的方法,并且该方法就应该只做这一件事。
这是一个适用于任何软件开发的编码实践,但对于游戏开发来说这尤为重要。在一个有状态的、实时的系统里,调试将变得非常困难。使你的方法尽量的小,一般的经验法则是每个方法有且仅有一个目的(译者注:完成且仅完成一个功能)。如果你要为一个场景用编程方式画一个背景,你可能需要一个叫做“drawBackground”的方法。诸如此类的任务能够很快完成,因而你可以按照搭积木的方法来开发你的游戏,而你能够继续添加你要的功能,并且不会使得这一切难以理解。
最重要的是效率!
性能是任何游戏的主要问题。我们的目标是使得游戏的反应越快越好,看起来越流畅越好。某些方法如Canvas.drawLine比较慢。并且要将屏幕大小的位图画到主画布上,每一帧都是代价昂贵的。如何权衡对于达到最佳性能很有必要。确保管理好你的资源,使用技巧来以最少量的CPU资源完成你的任务。如果性能不好的话,即使是最好的游戏玩起来也没劲。人们一般对于游戏卡或者响应慢几乎难以容忍。
提示和技巧
看一下SDK中的示例LunarLander。它使用SurfaceView,这对于一个每秒需要处理最多帧的游戏来说是合适的。如果你要做3D,示例中有GLView可以处理3D显示的很多初始化工作。对LightRacer来说,我不得不优化把所有东西都画出来这种方法,否则帧率将会大大地降低。我只在视图初始化的时候把背景画进一个位图里一次。路径放在它们自己的位图里,随着车手的前进而更新。这两个位图在每一帧里都被画进主画布中去,车手画在顶端,到最后会有一个爆炸。这种技术使得游戏运行在一个可以玩的程度。
如果适用的话,使得你的位图的大小精确等于你打算画到屏幕上的大小,这也是个好的实践。这么做了以后就需要缩放,可以节省CPU资源。
在游戏中始终一致的位图配置(如RGBA8888)。这将会通过减少不同格式之间转换的时间来节省图形库的CPU时间。
如果你决定开发3D游戏但没有3D方面的知识,你需要挑选一两本3D游戏编程方面的书并学习线性代数。你最少要理解点积、叉积、向量、单元向量、法线、矩阵和变换。这方面我遇到的最好的书是叫《3D游戏编程和计算机图形学数学》。
声音文件要小而且低比特率。需要加载的越少,加载速度越快,游戏所需内存越少。
声音使用OGG文件,图片使用PNG文件。
确保释放所有媒体播放器,当Activity销毁时空出所有的资源。这能保证垃圾收集器清除了所有东西,也能保证在两次游戏开始之间没有内存泄露。
加入Android谷歌小组,寻求社区支持。这里有人可以在开发过程中给你帮助。
最重要的是,花时间测试再测试,确保每一小部分都如你所愿地工作。改善游戏是整个开发中最耗时最困难的部分。如果你匆匆将其推向市场,你很可能会使用户们失望,你会感到你的努力都白费了。你不可能使所有人都喜欢你写的东西,但你至少要尽量发布你最高质量的作品。
Google在这里有帮助你上手的绝佳的文档。
电驴上也有很多不错的书籍和视频教程~希望对你有帮助
『叁』 是谁发明了手机游戏
是以马氪思主义为准的人创造的。
『肆』 手机游戏,和手机是谁发明的
科学家,三星公司,LG,。。。。。。
『伍』 手机上的游戏是怎么制作出来的
手机游戏制作就是从游戏创意到成为商业产品的全过程。除了前期的市场专调研外,整属个游戏制作流程大致分为策划,美术资源制作,程序开发等几个阶段:
一、游戏策划就像编剧和导演一样,要规定游戏的世界构成,规定种族、气候,安排什么地方需要出现怪兽让玩家觉得刺激好玩,需要设计各种各样的武器和装备吸引玩家等等。专业点讲就是要设计游戏的背景故事,世界观,大陆布局,规则玩法,剧情对白,游戏任务,各种数值等等;
『陆』 手机游戏一般用什么开发的
手机游戏开发的平台是JME,重点是MIDlet,CANVAS,RecordStore。如果是独立开发手游,那么还要掌握一些基本的软件,如PhotoShop,Mappy,和简单的声效处理。
『柒』 手机游戏开发有前途没
2003年三月份,我刚开始接触了手机游戏的开发。开发手机上的游戏程序,最初仅仅只是出于兴趣爱好,利用业余时间自己陆陆续续的也写了一些Code,得到了一些经验,本来是想敝帚自珍的,但是朋友的鼓励,使我决定把自己的一点点心得体会写出来,藉以告慰我在学习中所阵亡的千千万万脑细胞,也为和我一样在黑暗的艰难摸索人们中提供一些微不足道的帮助吧 J。由于我本人对于手机应用程序的开发也是初学,如果在文章中出现什么问题,还望各位读者海涵。
很多人都在网上问我,开发手机应用程序是不是一定要买一个真正的手机平台,我的看法是刚开始学习的时候不一定要买手机,先在网上多看多问,把平台的开发环境配置好,在模拟器上先单兵操练,不过我建议如果你真的需要把你的作品产品化的时候,最好配备一个真实的手机平台用来测试,因为在模拟器的运行环境中用很多的运行效果和真实的设备环境还是有很大的出入,在模拟器平台上运行得很好的程序未必在真实的设备上就OK,更何况你也一定跟我一样很期盼能够随时随地地拿出手机Show一把自己的程序J。
如何选择开发的工具也是许多人在准备学习前奔走相问的,不过这个也实在不好回答,在当前主流的手机开发平台上基本上是战国时代,诸侯们纷纷你方歌罢我登场,各有各的好处,各有各的弊端,仅我所知道的,当前智能手机的操作系统主要为微软的SmartPhone(这是基于WinCE平台的),Symbian(这是为诺基亚,索爱,西门子等各大手机厂商所支持的)还有Brew(这是高通公司的)等,下面我就单从程序人员的角度聊一聊如何选择这几种开发平台。
如果你是一个优秀的Windows程序设计人员,而且对于MS情有独钟,OK,你可以试一试基于WinCE平台的SmartPhone的开发,快到微软的网站上下载他free的eMbedded Visual C 4.0和SmartPhone的模拟器,安装好以后,你就可以在熟悉的Visual C 的环境下工作了,甚至喜欢C#的同志们可以选用Visual Studio .Net 2003 并且在这个环境下开始你的工作,一切都是那么的熟悉。至于缺点么,恩,就是启动和运行模拟器太慢了,调试一个程序你还是需要付出一些耐心的,呵呵。(下图就是EVC的运行环境)
(怎么样,开发的环境是不是很类似我们熟悉的VC 呀 J)
如果你和我一样手机都是Nokia 60系列的,那就可以考虑学习Symbian了,Symbian是一家由各主要无线通信技术公司持股的软件公司,它提供一个智能化的手机平台SymbianOS,主要有诺基亚,西门子,索爱等,他是微软在智能手机平台的最大竞争者。Symn同时支持C 开发和Java开发。不过学习Symbian上面C 的开发也是需要一个艰难痛苦的历程,你可以先在Nokia的开发人员站点上下载Nokia 相关与Symn的开发工具nS60_sdk系列,安装后可以集成到VC6的环境中,在安装的时候也是有几项需要特别注意的(安装的问题,在论坛上询问的也特别多),首先,你要保证你的操作系统是Windows2000 SP2 或者以上的配置;第二,你需要在你的VC6上安装SP3以上的补丁,(呵呵,我装的是SP5大概有几百兆吧J)第三,安装nS60_sdk的时候要考虑装在C盘上,这个么在网上说法不一,不过如果你和我一样刚刚安装的时候有过失败的纪录,那么病急乱投医,也会把它安装在C盘的;第四,也是最重要的一定要保证你的 nS60_sdk的统一盘符上也安装了Perl和JDK1.3,因为nS60_sdk1.2并没有带着两个东东,所以我安装的是nS60_sdk1.0最后,一定要注意特别保证你生成应用程序的路径盘符要和nS60_sdk1.0一样,(在我这里当然也就是C盘了)也要保证系统的环境变量Path中存在这几个工具的路径。当这些都配置好了,你就可以拷贝AvkonAppWiz.awx 和 AvkonAppWiz.hlp 文件到 Visual C template (c:\Program Files\Microsoft Visual Studio\Common\MsDev98\Template)目录下,然后启动你的VC6,按照向导选择Nokia 60 SDK,然后一步一步地走下去,点击确定就可以生成你的应用程序框架了,夷,不好,怎么看到了
"c:\Symbian\6.1\Series60\epoc32\build\test\group\test\wins\test.dsw
The specified project could not be inserted into the current workspace."这个错误,千万别紧张,很多人都碰到过,回头再看看有什么地方设置的不对,特别要注意环境路径的配置呀。好了接下去就可以正式进入学习开发了,Nokia 60 SDK自带的帮助和实例也许会对你有很好的帮助的。据说国外有高手可以把这个SDK安装配置在VS.NET上开发,呵呵,真是厉害,至少我还没有成功过。以上为Nokia60系列的开发步骤,如果你需要开发索爱的P800(这也是我梦寐以求的一款好机子J ),可以下载他的工具UIQ来开发。
(下图为Symbian的具体开发环境)
Brew是我一个好朋友的开发利器,它是高通公司推出的无线二进制运行开发操作环境,也必须要在高通的特定的硬件平台上运行。在朋友的帮助下,我在高通的网站下载了他的BREW_SDK_20zn ,他的开发环境也是基于VC6的(呵呵,微软一定很后悔为什么把开发工具做的那么通用,搞得对手们纷纷拿来就用),在进入向导生成代码框架时你会发现Brew突然需要你填入一个ClassID,这是为了保证在机器中的注册信息唯一,如果你做的是测试程序的话,你可以利用Brew SDK自带的工具MIF编辑器来生成相应的ClassID,并运行在模拟器上。但是如果你需要运行在实际的平台设备上,你就必须要注册到高通的网站上,成为他的开发者,当然还要每年都向他缴纳一定的会费(是$),然后才可以从他的站点上得到实际的ClassID,并且在硬件环境上测试,否则你就只能通过MIF编辑器生成本地ClassID在模拟器上跑着玩了,真是生财有道呀:-)。Brew的开发模式基本上与Symn很类似,都是在VC的开发环境中编译代码,生成一个完整动态库,然后通过运行模拟器的可执行程序加载动态库,就可以调试你做好应用程序逻辑了,如果调试通过,就可以通过相关的工具再编译成底层硬件设备可执行的二进制代码,譬如ARM等,通过打包下载就可以运行在你的手机上。OK,至于他们两个的不同之处么,唔... Brew是纯粹的C语言开发的,它通过一套独特的机制模拟了类似于COM的体系框架;而Symbian呢,则是完全的c ,他自身在内部实现了一整套的类库体系(非常类似于MFC)来开发实际在Symn上跑的应用程序。他们的类库为了各自适应自己的平台所提供的功能,还是有相当的不同。
(以下Brew的测试开发环境)
其实,Symn和Brew作为嵌入式系统开发的体系结构,都是依托于C 思想建立的,在他们的应用程序框架中能看到许多C 思想的影响烙印。譬如,我在学习Brew的时候脑海中一直都有一个COM的原型(他的很多组件的加载和运行都是非常像的),而在学习Symbian的对象内存管理机制的时候,也看出了它在对于利用C 的内部机制力图实现一个类似于Java一样能对内存自动管理、分配、清除的模型,用来保证它的内存管理绝对安全。
如果你和我一样都是从菜鸟学起的话,建议你可以尝试一下Java开发。手机上的Java平台是Java 2平台的移动版(Java 2 Platform, Mobile Edition,J2ME™)。它专门为诸如蜂窝电话、传呼机和个人记事本等小型移动设备设计。J2ME实现由以下部分组成:
一个核心的Java语言实现,包括一个专门为小型设备定制的虚拟机(virtual machine,VM)以及一套支持在该设备上进行系统级编程的最精简的工具包和类。这被称为一个配置。
另有一套能为应用开发伙伴提供实用应用程序接口(API)的高级工具包(例如:用户界面组件、高级声音播放功能等)。这被称为一个描述。
我们通常支持Java的手机实现采用有限连接设备配置(the Connected Limited Device Configuration ,CLDC)和移动信息设备描述(Mobile Information Device Profile MIDP)
我们平时也称呼我们手机上开发的Java程序叫做Midlet(因为是采用MIDP开发出来的么J,他也是我们系统运行的一个最主要的类)或者更亲切的称呼他Kjava.
至于他的好处么,en, 当然是SUN说的"一次编译,到处运行"优势了。也就是说你不用再针对特定的设备编程,而只需要在PC的模拟器中测试编译一次,就可以运行在任何支持MIDP的手机平台上了。但优势也是劣势,如果想要运行在通用的平台上,就要有一些安全方面的考虑。Java放弃了很多东西,其中自然就包括了很多涉及硬件底层的功能。譬如电话、电话簿操作、短信功能以及一些其他的功能。所以很多人也在笑话"Kjava像个玩具,只能做游戏"。为了弥补这个缺憾,各个厂商先后推出了自己OEM的API包来支持很多底层功能,当然其中调用了许多Java Native方法,这在一定程度上破坏了Java随处运行的特性了,可谓"熊掌鱼翅不可兼得也"。Sun自己也在做出努力,推出MIDP2.0,补充了一些API,这也正是我们所期盼的。当然,J2ME最为突出的优点就是他的简单,只要稍微有些Java语言基础的人都可以很快地掌握它。只需配置好环境,就可以生成应用。这也大大的降低了手机开发的门槛。试问,还有什么比看到自己的程序运行在手机上更能带给我们激情的呢?呵呵。
我的手机开发也正是从J2ME开始的,下面就让我具体的介绍一下J2ME开发手机游戏的步骤吧。
首先,就是配置J2ME的开发环境,先从Sun的网站中可以下载到j2sdk(简称JDK),1.3或1.4的版本都可以,还有j2me_wireless_toolkit1.4(简称WTK)。先按要求装好JDK,然后再按照规定一步一步的安装WTK,在安装的过程中他会自动配置JDK的路径和开发的环境。现在在Sun的网站上同时提供了WTK1.4和WTK2.0这两个版本,WTK2.0多提供了几个很有用的开发包(主要是加密,游戏和媒体控制),但是可惜的是现在支持WTK2.0的手机还是很少,所以我安装的还是WTK1.4。L
(WTK,J2ME的标准开发编译环境)
在安装好这些开发环境这后,你就可以进入菜单直接启动KtoolBar了,这是一个对所产生的Midlet编译、运行、打包的集成环境,可以利用它来进行新建项目、打开项目、选择目标模拟器编译、运行并打包等操作。这是一个可视化的环境。进入安装后的目录,你就可以看到以下几个主要的文件夹:
appdb:这个文件夹主要是用来存放系统所需要的图片和一些数据库文件的。
apps: 这是系统的工程目录,也是最重要的,里面存放的都是具体的应用程序。其中包括了系统自带的和你创建的应用程序的原文件(*.java)、编译后的文件(*.class)、打好的压缩包、相关的配置文件(*.jar,*.jad)以及各种资源等。
bin: 这是系统工作目录,里面是系统的各种工具,是WTK系统运行的核心。
docs: 里面放置了详细的说明文件,用户手册以及API,是学习和开发人员的必读之物。
lib: 放置CLDC/MIDP开发包的地方。
wtklib: 存放了一些WTK需要用到的资源,其中最重要的是devices目录,主要用来存放模拟器配置。在这里,你可以配置你的目标设备的模拟器。
下面让我们打开apps目录,进入一个工程目录内,来看看几个有用处的文件夹:
bin : 程序打包后,压缩包(*.jar)和配置简表(*.jad) 的存放路径。
Classes : 编译后,类文件(*.class)的存放路径。
Res : 程序的资源文件,主要是图片(*.png)。
Src : 程序源代码所存放的地方(*.java)
了解了这些,我们就可以创建我们自己的应用程序了,首先,在KtoolBar中,创建一个新的项目,我们需要填写项目的名称和Midlet名程(真是一个奇怪的东西,Sun在制定Java规范的时候总是喜欢将程序片起名为let,譬如Applet、Servelet,还有Spoilet等,其实看到这些,有编写java经验的老手都会明白Midlet的结构了,基本上和Applet没有多大的区别J)在接下去的Setting页面中选择默认设置就可以了,然后你会发现在apps的目录下多了一个应用程序的目录,现在就可以在其src目录下创建你的应用程序 java源文件了。
(填写创建一个工程必要的工程名称和主类Midlet的名称)
MIDP的程序结构和Applet非常相似,他的主文件名称叫做Midlet,是从javax.microedition.midlet 包下派生出来的,是MIDP的主要扩展包之一,其中定义了整个体系的结构。javax.microedition.lci是一个封装了各种界面控件的包,提供了MIDP在用户接口方面的各种支持。javax.microedition.rms主要提供了数据库的接口而javax.microedition.io则是提供网络支持的重要途径。这是MIDP所区别于Java的三个主要的扩充包。还有java.io(提供输入输出流的支持),java.lang(提供语言环境的支持),java.util(提供一些重要的工具支持)这些都是从Java中继承下来的核心开发包。具体的程序编写过程还请参考WTK自带的帮助和API应用手册。
在scr目录下的应用程序编辑好以后,在WTK选择编译,就可以编译你的应用程序了,编译的步骤和结果会显示在下面的信息框中,如果编译顺利通过的话,就可以点击运行按钮来启动模拟器进而运行你的应用程序了。OK,一切都是那么的简单。
模拟器是通过devices列表框来选择的。wtklib\devices目录下有几种系统自带的模拟器,我们可以通过选择模拟器来配置我们程序实际需要的运行环境。
在一切都顺利完成之后,就可以将应用程序打包了,打包的时候可以先配置简档文件,在应用程序中点击Setting就可以配置了,具体的配置方法请参考用户指南,生成的JAD文件实际上是一份文本的注册文件,在应用程序被网络无线用户下载的时候起到了一个说明文件的作用,在一切配置好以后,点击project\packag\Create Package的菜单项就可以编译打包了。生成的压缩包(*.jar)和配置文件(*.jad)被放置在apps\应用程序名称\bin目录下。把压缩包上传到实际的设备中就可以实机操作了。
综上所述,WTK仅仅提供了一个可视化的工程管理、编译、运行和打包的工具,却没有提供编辑源代码的环境,这样你就有很大的自由度去选择源码编辑器了。我使用的编辑工具是UEdit,它提供给我一个非常简单的编辑和管理源代码的工作环境,并拥有强大的编辑功能,给我的学习开发带来了很多方便。当然你也可以选用IBM的Eclipse(这也是一个非常好的编辑源代码的免费工具,而且是开源的,我个人也非常的喜欢),或者Sun的SunOne for Mobile 以及Broland的Jbuilder 一切都可以根据自己的爱好去选择。J
(我的开发编译环境 J 比较简陋,大家不要笑呦)
有些人问起了关于"混淆"的问题。由于JAVA程序是半解释的,他的目标文件是字节码,也就是*.class的形式,导致了他很容易被反编译(我见过很多反编译的工具,做的都相当的漂亮)。混淆就是打乱程序中所有的变量名称和函数名称,让其他人进行反编译后无法看懂你的源文件,这是一个不可逆的过程,由于修改了变量函数的名称(简单的说就是把你一个很长的名字缩小到一个字母而已,反正机器又不用去记J),在编译的时候混淆也能够起到一些压缩的作用。哦,混淆是需要特定工具包来实现的。retroguard可以用在WTK1.4上面,用法非常简单,只需要把解压后的retroguard.jar文件放到WTK\bin目录下就可以了,在打包的时候仅需要选择下面一项打成混淆包就可以了。但是还有一些小问题,这个混淆包似乎不能混淆一些扩充的包(比如Nokia的扩充API包,这个在下文中会讲到的),这时你就可以考虑使用另一个工具proguard(这个工具WTK1.4并不提供支持)了,这个工具的使用还是比较麻烦的,我在一篇文章中看到,它必须要有一个配置文件,还需要制定特定的目录,然后才能在命令行中启动,呵呵,其实还有一种简单的方法,那就是可以把他集成到WTK2.0中去,WTK2.0提供了对他的支持,安装的方法和retroguard一模一样。他就可以完成对一些特殊的扩充包进行混淆了。
最后,我在聊一下如何加入第三方提供的包和模拟器,就以Nokia为例,Nokia的官方技术网站中提供了很多的针对与不同设备手机的开发包(主要包括Nokia 60设备,Nokia 40设备,Nokia 7210,Nokia 3300等)。要下载这些包,你必须先成为诺基亚网站的正式用户,然后可以得到用户名和密码.在安装这些开发包之前,必须先安装一个叫做nds_jme的工具包,它主要是提供了不同的Nokia设备SDK之间的管理和一些特殊的工具,例如音频代码工具和模拟器的管理工具。采用第三方工具的好处就在于它提供了一些依赖于特定硬件的扩充包,可以让我们开发很多底层所提供的功能。
(Nokia开发包安装的过程)
现在我就以Nokia 60为例来具体的介绍一下第三方的扩充开发包。Series 60 MIDP SDK for Symbian OS是Nokia 提供给他的基于60平台(以Symbian为基础平台,主要的设备是Nokia3560 和Nokia7560)的Java开发工具包,现在主要的版本是1.2版。它所提供的API主要分为以下几个部分:1)MIDP 1.0 API 这是由Sun所定义的标准的J2ME的开发包;2)Mobile Media API 这一部分提供了移动媒体的API接口开发,他主要提供了一个多媒体管理播放的接口协议使得MIDlet能更有效地使用各种媒体类型。这些MIDlets能够播放几种类型的音频和视频文件,还可以使用照相机来抓取图像;3)Bluetooth API 提供了一个无线传输协议-Bluetooth的编程接口,利用它可以对逻辑链路层L2CAP和服务搜索,通过它与远程设备交换数据;4)Wireless Messaging API 提供了一个接收和发送无线短信息的编程接口;5)Nokia UI API 这是Nokia各种设备包括40,3300等设备所通用的,它主要提供了两个Java开发包,com.nokia.mid.sound和com.nokia.mid.ui主要提供了对声音和用户界面接口(其中包括了背景灯光,全屏等接口)的编程。其中1)为标准的J2ME的API 2)3)4)为60系统提供的开发资源包 5)是Nokia设备通用的开发包,提供了一套在Nokia通用的开发接口。利用这些当然可以开发出功能强大,用途广泛的应用程序,但是这也恰恰是以牺牲程序的通用性为代价的。所以我建议在J2ME游戏的开发中,最关键的是控制好它的版本,要充分的考虑通用性和特殊的平台,我先用标准的API设计游戏的内部逻辑和基本的界面,在版本保存后,再进行下一步的特殊平台API的扩充,针对于不同的平台生成不同的系统版本,这样就可以逐渐设计开发出适应于不同手机平台的J2ME游戏来。
(这是60模拟器运行的样子)
在安装nds_jme的工具包后,就可以安装nS60_jme_sdk的60系统的开发包了,安装的路径可以选择在WTK\wtklib\devices下,这样就可以和你的WTK系统整合起来了。启动WTK的KtoolBar后,你可以从devices下拉框中看到60系统的设备,这时就可以启动60设备来调试你的应用程序了。有一点比较关键,就是你每次必须要先把MIDP应用程序打成压缩包后再点击运行来启动模拟器进行应用程序的调试。
好了,到此为止,您应该已经基本了解到手机开发平台的选择方法和J2ME的基本配置过程。我们下一部分将介绍如何逐步由策划、设计到开发你的第一个手机游戏的全过程了。
『捌』 第一个手机游戏谁发明的
阿列克谢•帕基特诺夫的俄罗斯方块算是第一个手机游戏
『玖』 是谁发明了手机游戏,这个发明手机游戏的人是不是应该被枪毙多少祖国的花朵都毁在了手机游戏里
不知道,但是如果按抄照你的袭思路追根溯源的话那你应该问是谁发明了第一个游戏?这个我比较好回答:1962年美国麻省理工学院的学生编写的。
如果把游戏作为毁掉一个学生的理由未免太生硬了些,因为一个不想学习的人如果不玩手机游戏,也会寻求其他的办法来玩。一个热衷于学习的人,即使玩手机游戏成绩也不会下降。而且现在游戏作为第九艺术已经成为了很多人生活的一部分
『拾』 手机游戏开发都用到什么技术
很多是用java语言。
现在手机游戏主要是基于Android与ios系统 这两方面也需要学习