Android 手游开发要学习哪些知识

如何从android开发转行游戏开发? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。292被浏览<strong class="NumberBoard-itemValue" title="5,651分享邀请回答766 条评论分享收藏感谢收起12添加评论分享收藏感谢收起为了帮助大家更好的学习 Android,并快速入门特此我们为大家制定了以下学习路线图,希望能够帮助大家。
一、路线图概括:
二、具体需要掌握知识点:
三、具体知识点与目标
Java 基础入门
Java 开发环境搭建
熟练开发环境搭建、使用Eclipse编译运行调试项目
Java基本程序设计结构
熟练Java基本程序的书写、熟练运用数据类型、变量、流程、数组
对象和类(OOP基础)
深刻理解面向对象思想、熟练运用类、对象、方法等Java基本程序单位
熟练Java继承程序设计思想、能够使用继承思想编写Java程序
接口与内部类
熟练Java接口的定义和使用、理解使用Java接口设计系统
异常与调试
理解Java异常的机制、能够捕获常见异常、可以自定义异常
熟练使用三种集合框架List、Map、Set;能够使用集合框架模拟数据库操作
熟练Java多线程的定义和使用,熟练Java的同步机制和通信机制,编写安全的Java多线程程序
熟练Java网络编程客户端和服务器端类、使用Java网络编程接口实现聊天室
Java IO 流
熟练各种Java I/O流的使用、使用IO流拷贝文件、上传、下载
熟练常见的Java GUI控件的使用、熟练Java事件的处理机制、熟练常见事件处理方法
Java 数据库编程(JDBC)
能够使JDBC访问各种数据库、MySQL、Oracle 熟练Java 的CRUD方法、使用Java调用存储过程
Java Web 编程
理解Web编程思想、理解Web编程的请求响应机制,熟练Servlet Web 编程
熟练使用Java基础知识、多线程、网络编程、IO、GUI实现聊天室
Android游戏与应用开发
应用开发部分
Android 基础入门
熟练Android平台搭建、熟练使用Android创建命令工具、编写第一个
Android应用程序
Android 用户界面
熟练Android创建UI组件的应用、能够使用创建UI组件设计实际项目
UI、熟练高级UI的使用,例如,MapView、WebView、Gallery、GridView 等
Android 基本组件
(Activity、Intent、
BroadCastReceiver、
ContentProvider)
深刻理解Android应用程序的设计思想、熟练Android平台的四大组件
Activity、Service、BroadcastReceiver、ContentProvider的使用
能够使用通知、Alarm等实现备忘录等真实项目
Android 数据存储
熟练Android平台的数据存储、熟练使用Sqlite数据库实现CRUD操作 熟练Android文件系统的操作
熟练使用Android 平台的多媒体的使用,播放音频、视频、操作图片
互联网应用
熟练Android平台的网络编程接口、熟练Sock、URL、ApacheClient的各种使用方法
GPS定位应用
熟练Android平台的定位API、能够使用这些API实现定位、跟踪、查找等功能
Android多线程
熟练Android平台的多线程处理方法、熟练使用Android平台的消息处理机制
Android 应用项目
学习版本控制工具、熟练团队开发流程
游戏开发部分
熟练Android平台的图形图像处理API、能够使用这些API绘制图形、动画等
View、SurfaceView
熟练View、SurfaceView、自定义视图
Android 平台下的传感器
能够使用Android 平台API实现感应操作
游戏中的物理和数学
Android 平台的物理特性实现
OpenGL ES初级
熟练OpenGL ES的常见API的使用
OpenGL进阶
能够使用OpenGL ES API实现一些特效
游戏引擎初步
熟练游戏引擎基础框架
游戏引擎音效模块
熟练游戏引擎音效部分实现
游戏引擎实体模块
熟练游戏引擎粒子系统实现
游戏引擎OpenGL 模块
熟练游戏引擎OpenGL ES 3D部分实现
Android 游戏项目
使用游戏引擎编写游戏
四、在此我们为大家推荐:
前期:《疯狂JAVA讲义》
中期: &《疯狂Android》
& & & & & 后期:《Android应用开发详解》
阅读(...) 评论()51CTO旗下网站
从零开始23天完成一款Android游戏开发(六)
Part 6:我想开发一款 Android 游戏有一段时间了,但从来没有一个好的 idea。最近,我一直在玩一款跑酷游戏,发现它实在太有意思了。这款游戏也让我意识到,一款 Android 游戏没有必要非要有什么大的来头和复杂的游戏设置,简单随意就好。
作者:邢 敏来源:importnew| 14:55
本文是这个系列的第六篇文章,记录作者在第15至第17天的情况。
第15天:&Android&后退&按钮、主菜单、固定坐标bug
还记得第11天屏幕坐标和鼠标点击射击不到外星人的问题吗?是的,那都是我的错。幸运的是这让我及时发现了很多下载游戏的Android用户屏幕分辨率并不是800&400。在那之前我是这样直接转换触摸坐标到实际坐标:
float&x&=&Gdx.input.getX()&-&240f;&float&y&=&400&-&Gdx.input.getY();&
这不是正确的做法。简单恰当的办法是通过GDX进行转换&:
Vector3&touchP&touchPos.set(Gdx.input.getX(),&Gdx.input.getY(),&0);&camera.unproject(touchPos);&
在Android上处理&返回&按钮
大多数网上的例子在处理&返回&按钮时都谈到重载KeyDown方法。不幸的是这种办法要求使用Stage,我没有这么做。我知道现在的代码里复制了很多Actor和Stage,但那不重要。在下一个项目里我才会使用Stage。
幸运的是,我找到了解决办法。只要在Game子类的create()函数里添加下面函数:
Gdx.input.setCatchBackKey(true);&
然后在render()方法中检查否已经按下&返回&按钮:
if&(Gdx.input.isKeyPressed(Keys.BACK))&{&&&&&Gdx.app.exit();&}&
由于render()每秒钟会被调用很多次,你可能需要一个boolean标记变量来检测&返回&按钮是否已释放。
if&(backReleased&&&&Gdx.input.isKeyPressed(Keys.BACK))&{&&&&&backReleased&=&false;&&&&&Gdx.app.exit();&}&else&{&&&&&backReleased&=&true;&}&
现在可以进入游戏,进入商店菜单,然后返回主菜单。当然,菜单只显示选项,还没有真正实现功能。
使用9-patch处理动态大小的按钮和容器
译注:9-patch一个对png图片做处理的工具,能够为生成一个&*.9.png&的图片实现部分拉升。
我还学会了如何使用9-patch创建漂亮的按钮。有一次,我意识到不得不像绘制10个大小不同的选项按钮,但样子基本上一模一样只有里面的内容不 同。我甚至参考了Gdx按钮,但最终还是决定自己DIY一个。在我游戏里,按钮有一些特殊需求,在一个文本按钮里要结合了2张图、4个文本以及2种不同字 体。
无论如何,我得画一个包括所有按钮尺寸和其他的东西的46&46&9-patch图片,然后写一些代码定制其他覆盖在图片上面的东西。我在构造函数里通过TextureRegion从大皮肤里提取9-patch。减掉了一个皮肤开关。
通过这种处理使我得以有各种不同的选择来填充主菜单,同时我还加入了滚动字幕给出玩法提示。我真的很喜欢这个概念,但很少有游戏使用它。有的游戏只显在一开始的时候有个提示。也许他们不想让玩家看主菜单时分心吧。
下面是购买强化道具的商店菜单:
关于道具我又有了一些新点子。一种是可以暂时让外星人减速,另一种是在短时间内积分x5。我正在考虑移除之前商店里的&双倍积分&道具。有些玩家真的很能得高分,所以这可能是一个坏主意。
另一方面,在下次装弹前能增加射速的道具可能会大受欢迎,所以我正在加入。
我希望商店能保持只有7个道具,这样就能刚好在一个屏幕内显示。但现在我不肯定所有可能的升级&&拭目以待吧。
第16天:从GDX游戏中录制影片
视频地址:
我曾想过在YouTube上传游戏视频,然后用recordmydesktop程序录制,但结果一团糟。由于libGDX和RMD不同步,我在屏幕 上看到的是一堆零件,诸如被切掉了一半的精灵等等。我搜索了一下发现了几篇有用的文章。基本上都是将每帧做成一个PNG文件然后组成视频。可以想见这么做 会耗费大量的磁盘空间,这对我不是大问题。我发现了一个很有用的帖子:
然而,他们的代码有一些问题。出于某种原因,当我用半透明精灵叠加在背景上时,由此产生的PNG文件在那块区域会出现半透明像素。这样生成的视频会 有很多乱七八糟的东西。我尝试了不同的设置,甚至改变渲染代码,但问题依旧。现在,只要一个简单的处理步骤&&使用ImageMagick(加入黑色背 景)就可以解决这个问题。所以我想,如果无论如何都要做这步处理,我可能还要在ImageMagick中做垂直翻转。所以我关掉了代码中的Y轴翻转,这使 得它更有效率,从而没有必要在每一帧中分配w&*h*4个字节的内存。在800&480的屏幕上,每一帧大约需要1.5MB!
同时,处理帧率(跳帧)的代码没有怎么优化。处理过程跳过了几个文件号,这没什么问题。但同时还给每帧还创建了对应的ScreenShot对象,这完全没有必要。譬如你正在录制30fps的视频而游戏运行速率是60fps,你花了一半的时间在创建完全用不到的对象上。
最后,FPS处理代码似乎没有释放像素图。所以如果你运行了很长的时间,RAM会被吃光。
所以,我从ScreenShot类里提取出了全部的FPS代码,剩下的代码只负责处理连续视频。我还注意到一些变量有初始化但从未使用过。现在ScreenShot类变得更加直观并且易于理解:
public&class&ScreenShot&implements&Runnable&{&&&&&private&static&int&fileCounter&=&0;&&&&&private&Pixmap&&&&&&&&@Override&&&&&public&void&run()&&&&&{&&&&&&&&&saveScreenshot();&&&&&}&&&&&&&public&void&prepare()&&&&&{&&&&&&&&&getScreenshot(0,&0,&Gdx.graphics.getWidth(),&Gdx.graphics.getHeight(),&false);&&&&&}&&&&&&&public&void&saveScreenshot()&&&&&{&&&&&&&&&FileHandle&file&=&new&FileHandle(&/tmp/shot_&+&String.format(&%06d&,&&fileCounter++)&+&&.png&);&&&&&&&&&PixmapIO.writePNG(file,&pixmap);&&&&&&&&&pixmap.dispose();&&&&&}&&&&&&&public&void&getScreenshot(int&x,&int&y,&int&w,&int&h,&boolean&flipY)&&&&&{&&&&&&&&&Gdx.gl.glPixelStorei(GL10.GL_PACK_ALIGNMENT,&1);&&&&&&&&&pixmap&=&new&Pixmap(w,&h,&Pixmap.Format.RGBA8888);&&&&&&&&&Gdx.gl.glReadPixels(x,&y,&w,&h,&GL10.GL_RGBA,&GL10.GL_UNSIGNED_BYTE,&pixmap.getPixels());&&&&&}&}&
好了,全部就这么多。我在渲染循环中的每个渲染结尾加上了:
ScreenShot&worker&=&new&ScreenShot();&worker.prepare();&&&&&&&&&&&&executor.execute(worker);&&&&
考虑到完整性,在Screen的子类添加了executor:
private&ExecutorService&&...&executor&=&Executors.newFixedThreadPool(25);&
现在,在我的酷睿2已经赶不上帧率了。这是好消息,一方面因为游戏速度变慢我能够录下更好的视频,另一方面能更好地记录截图以供稍后导出视频。所以 我添加了一个截图热键。在按住S键时开始录制,当你只是记录了一些有趣的片段,松开S键让PNG&writer赶上进度。当CPU的负荷恢复到正常,意味 着PNG都生成好了,你可以再次开始录制。
这种方式创建的视频很容易编辑。只要删除不需要的PNG文件,用剩下的压制视频即可。而且这种方法也很容易与音乐同步,因为可以随意添加或删除帧。
用截图生成YouTube视频
由于Android屏幕默认分辨率是480&800,而最接近YouTube的分辨率是。因此需要将图像缩放到 432&720&,以保持宽高比。这样两边会多出很多未使用的面积。你可以把你的logo、广告贴上去,甚至可以并排显示两个视频。我决定用另一段视频填 补空白,那是我用一台手持设备拍摄的,所以图像更小只有372&620。
现在,我创建了一个大小包含了logo的静态图像。现在我把它混合进游戏,并垂直翻转。在Linux上,我使用这样的命令:
for i in shot* do echo $i; convert $i -flip -filter Lanczos -resize 372x620 temp1. composite temp1.png back.png -geometry +126+56 $i; done
一旦所有的图像都准备就绪,就可以运行MEncoder来导出视频。YouTube建议720p的视频采用H.264格式和5000以上的比特率&。他们还建议两个B帧(RGB)。这里是执行的命令:
mencoder mf://shot*.png -mf w=1080:h=720:fps=25:type=png -ovc x264 -audiofile music.mp3 -oac copy -o movie.avi -x264encopts bitrate=5000:bframes=2:subq=6:frameref=3:pass=1:nr=2000
这样就生成了一个质量过硬的YouTube游戏视频。在这篇文章的开始,你可以看到我的成果。至于音频,我只是提取了一些游戏的音轨并没有捕捉实际游戏中的音频。
第17天:Android图标、完成道具
我喜欢Android允许(甚至建议)图标不是圆角矩形。这样可以赋予游戏自己的个性风格。起初,我考虑过给这游戏做一个特殊的图标,但我真的非常 非常喜欢这个画着外星人像素图形的盾。我用Inkscape制作,这样就可以输出任意大小的图片(而不像在GIMP下制作的其他一些图形)。献上 Drone&Invaders官方图标:
丰富的道具
下面的视频显示所有收藏的强化道具:
我准备了原子弹,但名字还没有最终确定。也许会叫核弹、钚炸弹、智能炸弹或完全不同的东西。它会摧毁屏幕上的一切。Boss能抵挡一两个,但遇到三个炸弹一样完蛋。在系统内部,每个Boss有20点血而炸弹有8点的伤害。普通攻击就是1点伤害,除非你升级激光。
其次,有3路散弹。射击三次仍然要更换弹夹。这是一个非常强大的道具,有了它,真是人挡杀人佛当杀佛,清理掉一波波的怪物和boss。
第三,自动重装填。正如名字那样,你的激光会自动加载。所以可以自由地射击,射击,再射击。
第四,减速。它只是减缓外星人的移动速度,其他一切速度正常。在前20关这玩意儿相当废柴。但越到后来,你就越觉得它有用。
第五,双倍积分。在道具作用期间,获得的点数翻一倍。我仍然在考虑是否要在达到某个分数的时候给予奖励,但达到高分仍是一件很酷的事情。
翻译:bigosaur &
ImportNew.com
译文链接:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
聚焦头条热点热点头条
24H热文一周话题本月最赞
讲师:153414人学习过
讲师:15524人学习过
讲师:82830人学习过
精选博文论坛热帖下载排行
本书全面、深入地介绍了网络应用技术,主要内容包括:RMS权限管理服务、Exchange邮件服务、LCS即时消息服务、WSUS系统更新服务、Symantec网...
订阅51CTO邮刊10个优质的android安卓游戏开发入门资源 -25学堂
10个优质的android安卓游戏开发入门资源
Android是一个基于Java的开发环境,这是很好的,它是一种与广被接受的Java极为类似,而且也比C++容易的多的开发语言,这将一种移动开发的规范。
第一部分:学习android游戏开发的入门的三个原则
1、学习应用架构
就像迷人的内在美一样,这是理解
android 应用架构的关键,如果你不学习它,你设计出来的游戏将是一种很难修复bug的产品。你需要了解应用程序、活动、Intents以及它们是如何互相联系交互的,Google在这儿提供了良好的信息架构。真正重要的是,你要理解为什么在你设计的游戏中需要不止一个的活动进程以及如何设计一个用户体验良好的游戏。这些都应当配合到应用的生命周期中。
2、学习应用的生命周期
应用的生命周期是由AndroidOS操作系统进行管理的,你的活动进程都将做为系统命令进行创建,正确处理这些事件对一个应用程序来说是极为重要的,因为终端用户不会知道什么是正确的。最好在开始设计你的游戏之前搞明白这些,因为这有助于节省你的调试时间以及避免代价高昂的重新设计。对大多数应用而言,默认设置即可开始工作,但对游戏而言,你可能需要调整单态实例的信号为打开。在默认情况下,Android会新建一个活动实例进程,因为它认为这是比较合适的,而游戏,你可能只希望有一个活动的实例进程,这有一点儿影响,它需要你了解一些系统状态的管理,但对我来说,它解决了资源管理的问题,还是值得的。
是否需要一个主循环是根据你写的游戏类型而决定的,如果你写的游戏没有时间依赖性或者只是响应用户的输入而没有其它的视觉变化,你可能并不需要一个主循环。如果你设计的是一个平面的动作游戏或者动画游戏,计时游戏或者其实类型的自动游戏,你就应该认真考虑使用主循环。
第二部分:10个优质的资源分享
Stencyl是最好的一个直观的游戏开发工具,允许用户构建游戏不需要编写代码。 与最好的拖放界面,它可以让设计师导入代码库。 它支持多个操作系统。
情绪摇滚真正尽到自己的座右铭“简单是开启智慧的钥匙。” 这个重量轻但功能强大的游戏发生器可以帮助开发的游戏运行在Android和iOS。 这是一个免费的开源游戏资源,并允许设计者使用松鼠和Lua。
3、安卓模拟器-全球最好的安卓模拟器
夜神安卓模拟器(夜神模拟器)是目前全球最好的全新一代安卓模拟器,与传统安卓模拟器相比,基于android4.4.2,兼容X86/AMD,在性能、稳定性、兼容性等方面有着巨大优势。优质游戏的提供,软硬件游戏辅助的支持,让娱乐性更强。全球领先的安卓模拟器技术能力,让合作伙伴发展更轻松。
酷站网址:
对于那些寻找一个游戏开发引擎,是快速、不需要大量的代码,GameSalad创造者是一个很好的选择。 利用物理引擎、拖放界面和预装的应用程序行为库创建相对困难的动作,都是这一个屋檐下。 它还允许设计者在各种平台测试游戏。
不断开发代码库和开源API以及一个JavaScript库,三人。 js可能是最好的游戏开发者资源可用。 这个3 d平台允许创建酷游戏画布的帮助下,WebGL和SVG。 它也有一个非常互动社区,帮助设计师以所有可能的方式。
寻找一个软件,将允许您构建您梦想中的游戏以最小的麻烦吗? 尝试游戏编辑器。 这个软件是一个开源引擎,允许游戏创造者改变源代码,给他们更多的自由来创造一些新的东西。
如果你是一个基于Java的游戏开发者,然后jMonkeyEngine 3.0是专门为你。 它使用最新的游戏开发技术来帮助设计师创建的游戏会让他们成为一个非常流行的游戏产业的一部分。 最好的福利之一,设计师可以免费使用产品。
IGNIFUGA游戏引擎允许开发人员创建游戏窗口等多个平台,Android,iOS,Linux和OSX。 基于Python和Cython,开发引擎的特性和辜负它的名字在西班牙语中的意思是防火。
另外3款android游戏开发引擎也是不错的!
(1)、Ronkon
如果不是想帮助作者解决一大堆兼容性问题的话还是不要使用这个引擎,我在上面浪费了1天半,就只是为了把实例程序跑起来。开始还以为是我水平 菜,结果一堆人没跑起来,和我一样都是黑屏。虽然它文档做得好但我还是放弃了,本来Android平台兼容性就是老大难,在来个半吊子的引擎我可没本事搞 定。
(2)、AndEngine
现在用的是这个引擎,虽然没有什么文档,但实例多,论坛活跃,精灵、粒子效果、XML地图、物理系统……游戏需要的基本都有,可以满足我的需要了。
(3)、libGDX
这个引擎很牛,作者的BenchMark测试在Hero上比AndEngine快了好几倍,并且前两个使用的Box2D的Wrapper都是用 这个作者写的改的。Ronkon的图形库也是基于这个的,但美中不足的就是,这个引擎是3D的,并且比较偏底层,需要自己实现不少东西,所以我还是选择先 使用AndEngine,以后有需要再看看libGDX。
当然还有Cocos2D,iPhone上比较流行的引擎,它也有Android版,这个没怎么了解也就不太清楚了。
只尝试你的手在游戏开发的世界? 需要处理新和简单但有效的技巧吗? GameMaker是一个巨大的帮助。 提供免费和付费两个版本,开发引擎允许设计师代码和创建游戏在一个超级快速方法以及原型相同的。 以最小的成本和完整的游戏开发可行的一周内,这是一个必须努力引擎。
10、进制转换工具
Android中所有的资源都有一个对应的资源ID,资源ID的类型为16进制的整数。有些时候特殊的场合处理资源ID,为了调试需要进行进制转换,比如16进制转常用的10进制。不用自己算,使用下面的工具就可以轻松搞定。
0 个人已赞
你可能喜欢
使用社交账户登录Android游戏开发新手从零开始学Android开发需要注意_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Android游戏开发新手从零开始学Android开发需要注意
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信