`
icrwen
  • 浏览: 262278 次
  • 性别: Icon_minigender_2
  • 来自: 济南
社区版块
存档分类
最新评论

环境配置

阅读更多
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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics