http://snowman.blog.51cto.com/307956/136908
http://www.cnblogs.com/Jamesliang/archive/2009/12/20/1628150.html
http://www.android123.com.cn/android_kit.html
http://www.droidnova.com/playing-with-graphics-in-android-part-vii,220.html
android专栏地址
http://www.iteye.com/topic/1052037
android类似例子
http://www.droidnova.com/playing-with-graphics-in-android-part-vi,209.html
http://www.droidnova.com/playing-with-graphics-in-android-part-i,147.html
android sdk文档
http://www.chinaup.org/docs/intro/tutorial.html
http://android.toolib.net/
http://android.yyable.com/sdk/android-3.0.html
入门视频
http://www.iteye.com/topic/941863
[url][/url]http://www.andengine.org/forums/tutorials/andengine-core-terminology-t316.html
http://code.google.com/p/andengine/source/browse/src/org/anddev/andengine
高手博客
http://www.moandroid.com/?cat=29
http://www.hiapk.com/bbs/thread-13311-1-1.html
http://www.hiapk.com/bbs/index.php
http://www.cnblogs.com/feisky/archive/2010/01/16/1649081.html
http://blog.csdn.net/xiaominghimi/archive/2010/12/21/6089594.aspx[url][/url]
http://www.cnmsdn.com/html/201004/1271830622ID4086.html
[url]http://blog.touchlibs.com/archives/83 [/url]
http://blog.csdn.net/iamlazybone/archive/2010/11/01/5978945.aspx
http://www.starandroid.com/
http://www.android-study.com/
游戏开发引擎
http://www.189works.com/article-11429-1.html
http://www.bangchui.org/read.php?tid=4296&fpage=9
http://www.bangchui.org/read.php?tid=9289
---andengine
http://codeand.me/archives/279
http://www.andengine.org/forums/tutorials/mimminito-s-tutorial-list-t417.html
http://blog.csdn.net/cping1982/archive/2011/03/06/6227775.aspx
http://www.andengine.org/
http://wiki.andengine.org/AndEnginePhysicsBox2DExtension
http://www.andengine.org/forums/development/sprite-rotation-t280.html
andengine源代码
http://code.google.com/p/andengine/source/browse/#hg%2Fsrc%2Forg%2Fanddev%2Fandengine%253Fstate%253Dclosed
http://hi.baidu.com/mingmingsuper/blog/item/12e9a844e679c933cefca371.html
Box2d
http://www.docin.com/p-74534367.html
http://www.doc88.com/p-18930976233.html
http://wenku.baidu.com/view/afe0fab069dc5022aaea001f.html
http://blog.csdn.net/vickylh/archive/2010/04/30/5545212.aspx
http://code.google.com/p/andenginephysicsbox2dextension/source/browse/src/org/anddev/andengine/extension/physics/box2d/PhysicsFactory.java?r=c6df2f1fe9a6edef692cdb988c852d7913ff4ac6
购买书籍
http://www.china-pub.com/196305
android概念知识
1.activety组件
http://hi.baidu.com/123330524/blog/item/43778b968ed29a6255fb96fc.html
导入android应用开发揭密的源码问题解决
android低版本工程(如1.5)放到高版本环境中(如2.2)可能会上述错误,解决方法如下:
1。 如果不修改android sdk版本,则使用project clean 命令作用于某工程即可。 (该处理方式只是在高版本中兼容了低版本工程,未真正意义上的升级)
2。 如果修改android sdk版本,则需要以下几个步骤:
1) 修改SDK
选择工程,build path --> configure build path ---> library 删除引用的低版本SDK,
然后add External JARs,选择高版本SDK,OK,保存
2) 修改classpath文件
该文件可能存在该项: <classpathentry kind="lib" path ="你所指定的高版本的地址"
把她修改成<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK" />
3) 修改AndroidManifest.xml
在AndroidManifest.xml文件中,application标签后添加<uses-sdk android:minSdkVersion="3"></uses-sdk>
4) 修改default.properties(很重要)
该文件最后一行(前面没用#的)target=android-3 该成target=android-8,保存。
再看看你的工程和新建的android 2.2的工程结构就一样了。
如果最后还是不行,那你就创建一个新工程,那个应该没有错。你照着新工程,把classpath 修改一下,应该就是把lib那行去掉。然后再修改default.properties,把target这行改成最高版本的。最后重启eclipse,工程应该还有错,然后你再用Project --> Clean --> Clean projects selected below ,清一下你的那个错误工程,然后就没事了。
activity是窗口应用,intent是用来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述
碰撞检测
一概
http://www.ppzhu.net/2010/07/21/%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E7%A2%B0%E6%92%9E%E6%A3%80%E6%B5%8B/
根据你写的游戏的类型,你可能需要也可能不需要一个主循环。如果你的游戏不依赖于时间或者它仅仅对用户所做的加以回应,并且不做任何视觉上的改变,永远等待着用户的输入,那么你就不需要主循环。如果你写的是动作类游戏或者带有动画、定时器或任何自动操作的游戏,你应该认真考虑下使用主循环。
游戏的主循环以一个特定的顺序通常尽可能多的在每秒钟内“滴答”提醒子系统运行。你的主循环需要在它自己的线程里运行,原因是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谷歌小组,寻求社区支持。这里有人可以在开发过程中给你帮助。
最重要的是,花时间测试再测试,确保每一小部分都如你所愿地工作。改善游戏是整个开发中最耗时最困难的部分。如果你匆匆将其推向市场,你很可能会使用户们失望,你会感到你的努力都白费了。你不可能使所有人都喜欢你写的东西,但你至少要尽量发布你最高质量的作品。
3-7
http://dev.10086.cn/cmdn/bbs/viewthread.php?tid=13719&page=1&extra
http://www.koonsolo.com/news/dewitters-gameloop/
3-30
http://wiki.andengine.org/AndEnginePhysicsBox2DExtension
http://www.andengine.org/forums/tutorials/andengine-core-terminology-t316.html
- 大小: 214.6 KB
分享到:
相关推荐
大数据环境配置过程文档大数据环境配置过程文档大数据环境配置过程文档大数据环境配置过程文档
Delphi 10 Android 开发环境配置 Delphi 10 Android 开发环境配置是指在 Delphi 10 环境下进行 Android 应用程序开发所需要的配置步骤。以下是 Delphi 10 Android 开发环境配置的详细介绍: 一、配置环境变量 在 ...
Spring Boot工具类静态属性注入及多环境配置详解 Spring Boot工具类静态属性注入是指使用Spring Boot框架时,如何将配置信息注入到工具类的静态变量中,以便在程序中使用这些配置信息。这种方式可以方便地在不同的...
最后,`GDAL_CSharp环境配置.docx`文档可能包含更详细的配置指南和注意事项,建议仔细阅读以获取完整的信息。在开发过程中,如果遇到其他问题,GDAL的官方文档和社区论坛都是宝贵的资源。 总的来说,配置GDAL C#...
网狐棋牌荣耀版开发环境配置 本文主要介绍网狐棋牌荣耀版开发环境配置的详细步骤和要求,旨在帮助开发者快速搭建开发环境以进行游戏开发。 开发环境配置 网狐棋牌荣耀版开发环境配置主要分为两个部分:Windows 和...
### JVM与JAVA环境配置详解 在进行JAVA应用开发时,正确配置JVM(Java虚拟机)及JAVA开发环境是至关重要的第一步。本文将基于提供的文件信息,深入解析JVM及JAVA开发环境配置的关键步骤和注意事项。 #### 1. JAVA_...
标题"PB12.5运行环境配置dll"涉及到的是在不安装完整PB开发环境的计算机上运行PB12.5编译的程序所需的重要步骤。描述中提到,当程序被移植到没有安装PB的电脑上时,可能由于缺少依赖的动态链接库(DLL)文件而导致...
Java 环境配置及验证方法 Java 是一种广泛应用的编程语言,用于开发跨平台的应用程序。为确保 Java 开发环境的正确配置,需要进行相应的设置和验证。本文将详细介绍 Java 环境配置的步骤和验证方法。 一、下载和...
Java一键环境配置工具是一款专为简化Java开发环境搭建过程而设计的应用程序,它极大地节省了开发者的时间和精力,避免了手动配置环境变量等繁琐步骤。这个工具通常包含了JDK(Java Development Kit)的安装和配置,...
Qt5.9.8 环境配置与 VS2015 配置 Qt Qt5.9.8 是一个功能强大的跨平台应用程序开发框架,它提供了丰富的功能和工具来帮助开发者快速构建高质量的应用程序。本文将详细介绍如何配置 Qt5.9.8 环境和在 VS2015 中配置 ...
Eclipse开发环境配置涉及到Java开发环境、Web服务器以及Eclipse开发工具及其相关插件的安装和配置。下面详细介绍这些方面的知识点。 ### Java环境配置 1. **安装JDK**:开发环境使用Java 7进行开发,需要下载并...
Flex开发环境配置手册 Flex开发环境配置手册 Flex开发环境配置手册
GeoServer3D 开发环境配置知识点 一、GeoServer3D 开发环境配置概述 GeoServer 是一个基于 Java 语言的开源地理空间数据服务器,提供了强大的地理空间数据管理和服务功能。为了进行 GeoServer 的二次开发,需要...
Android 开发环境配置图文教程 本资源为 Android 开发环境配置图文教程,旨在帮助 App 开发初学者快速配置 Android 开发环境。配置过程分为三个步骤:下载所需软件、安装软件和配置 Eclipse。 一、下载所需软件 ...
《Longan Linux SDK开发环境配置手册》是针对珠海全志科技股份有限公司T113芯片的一份详细指南,旨在帮助开发者建立有效的Linux开发环境,以便进行高效的应用程序开发和系统定制。本文将深入解析手册中的关键内容,...
Spring Boot提供了灵活的多环境配置方式来解决这个问题。 首先,Spring Boot默认使用`application.properties`或`application.yml`作为主配置文件,这两个文件位于项目的`src/main/resources`目录下。在这个文件中...
Python 安装及环境配置 Python 是一种流行的高级编程语言,它广泛应用于数据分析、人工智能、Web 开发等领域。为了使用 Python,需要首先安装 Python 和配置环境。在本文中,我们将详细介绍 Python 的安装和环境...
windows下的lex和yacc开发环境配置
Visual Studio 开发 Android 环境配置 Visual Studio 是一个功能强大且功能齐备的集成开发环境(IDE),它支持多种编程语言,包括 C#、VB.NET、F# 等。 近些年来,随着移动设备的快速发展,Android 和 iOS 等移动...