
学习游戏制作要掌握哪些专业知识
如果你有兴趣为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在这里有帮助你上手的绝佳的文档。
电驴上也有很多不错的书籍和视频教程~希望对你有帮助
能制作游戏的软件
益智课堂与思考力研讨会学习心得体会荣幸地了这次研讨会然培训时间不长,但收获颇大,感想也颇多。
对小学的数学有了新的认识,有了新的出发点,对我以后的教育工作有了很大的启发。
我是一名四年级的数学老师,在忙于传授知识的时候,可能就忽视了孩子们能力的培养。
有了这次的学习,让我停下了脚步,思考我也应该让我的孩子们,也在游戏间学习,获得能力的提高。
小游戏大智慧这个活动,真的值得我们学习。
下面,我就此次学习培训的经历,简要地谈谈我的几点感受。
一、学习培训的经历回顾这次观摩了六节数学课,也聆听了这五位教师的设计思路,以及他们团队对课的解说,同时专家对他们的课进行了点评。
我的回顾:第一节课《七巧板的奥秘》,授课教师王庆伟。
从七巧板的历史引入,古代根据人的多少,对桌子进行拼摆,学生使用的桌子正是七巧板的拼摆,巧妙的从过去转化到现在,同时也告诉我们七巧板对我们的未来也会有影响。
每一个环节王老师都巧妙的选用了一个成语,每个成语都告诉我们了,这一环节要干什么。
从形影不离到如影随形再到形由心生,从简到难、从部分到整体、从布置任务到创造想象,在这个过程中孩子们边动手操作边叙述过程,培养了孩子的观察力、动手操作能力、语音表达能力、思考力。
有一处情景我记忆的特别深,在形影不离这个环节中第四位孩子和其他孩子的拼摆方式,当着个男孩拿出不同板的时候,我在想这个孩子拼错了,可是当他完成这个小猫的图案时,我
快速制作 android app,真的只要几秒钟
您好,我是一名站长,我也会快速制作 android app,这几年用过很多平台制作app,用来用去,还是觉得应用之星比较好。
1.这个网站无需编程和代码,小白用户也能在线开发app;2.完全免费,不要钱;3.模板齐全,一键模式有模板指导,专家模式能满足你的所有需求;4.有数据监控和统计功能,满足后期运营的需要。
就总结了吸引我的几点,楼主可以继续追问我哈~
游戏脚本怎么写或制作
在软件行业已经做了将近半年,芜湖市各大大小小的工业区基本都已经去过,上门拜访过几百个客户,总结出了一些经验。
首先,销售软件最重要的是找到有效信息,也就是有潜力有可能签单的客户,在这一点上,总体来说有,陌生登门拜访,电话行销,和动用朋友等人脉关系介绍。
在这几点寻找客户信息方式上,我选择用的是结合穿插的共同应用,即陌生登门拜访和电话行销并用,主要是陌生登门拜访,因为这样作为销售员可以直观的面对客户,与客户面对面交流,更容易也更准确的了解客户信息,客户的表情,态度,公司内部情况,更准确的反应是否有可能成为我们的客户,但缺点是面太窄,总体来说一天拜访不到20个客户。
这样以来我学会在陌生登门拜访的前提下,在公司不出门的时候就使用电话行销的方式,用电话行销方式就克服了陌生登门拜访客户面太窄的缺点,一般一天可以打50-100个电话就等于拜访了100个客户几乎是先前的5倍左右,但是电话行销它的成功率不是很高,因为是电话与客户交流很难感觉到客户的表情,态度,对他所说的话真实性也不敢保证,在这样的情况下,我尽量避免或者说减少与客户在电话里的沟通时间,以最短的时间最简洁的语言介绍自己,告诉客户本次电话的目的,争取与客户预约,然后尝试与客户面对面交流,增加成交的可能性。
至于朋友介绍人脉,作为销售员我更会积极的去发动身边的朋友,尽量使自己的面更广一点,得到的信息更多一点。
在寻找客户信息方面还有一个方式,就是寻找合作伙伴,比如说与电脑公司,会计事务所合作,即信息共享,在他们得到有客户希望使用软件的前提下,把信息转达给我,我去与客户沟通,只要成交过后给予介绍人一定的报酬,达到互利的结果,并且促进合作者在以后的日子里继续为我们寻找新的有效信息。
其次,无论是软件行业还是别的行业,维护老客户永远是一件有百利而无一害的事情,几乎不需要任何的成本就可以谋取很多的利益,因为老客户你服务的好,如果以后他有新增的需求那么毫无疑问,他的选择绝对是你,同样的,对老客户服务的好,他也会在有意无意中帮助你转介绍别的有需求的人成为你的新客户,而这样的介绍成功率是极其的高。
同样的在这个途中我有一个设想,如果销售员与老客户关系做的足够的好,客户就能帮助到你在与别的陌生客户交流时帮你说话。
我有一个朋友是做装修业务的,他的客户都维护的非常的好,几乎每个月都能从老客户那得到新的业务单子,有一次他在某小区与一为刚拿到钥匙的业主谈起可以帮助他装修的事,这位客户对我的朋友还有我朋友的公司充满了疑惧,因为他不了解我的朋友不了解我朋友的公司,他们谈的非常的好,可是客户就是犹豫不决,不敢下决定与我朋友签单。
我的朋友看出了他的疑惧,这时候他当着这位业主的面,拨通了以前他做过的一个老客户,张女士。
他边拨号边对这位业主说,我现在打的这个电话是我们公司以前装修的一个老客户,张女士,您可以问问她在我们公司装修后的感觉如何,这为业主接过了电话与张女士相互沟通了一会,张女士把她在我朋友公司装修的真实的情况与这位业主作了分享,立即打消了这位业主的顾虑,而在这个时候我朋友并没有就此作罢,接着对这位业主说,我这里有我所有做过的客户的名单和联系方式,我已经征求过他们的同意了,可以在有必要时允许他新客户打电话给他们问及在我朋友公司装修的感觉如果,恰巧在这些客户的名单里,就有一位老客户是这为业主认识的,在与他的朋友沟通过后,这位业主非常高兴而且放心的与我的朋友签了单。
从这个事中给了我很多的启发,我想在我们做软件的行业的时候难道不可以用这样的方式吗
只要足够的为老客户服务好,为什么我们的老客户不愿意帮助我们
按照人性来说,谁都愿意让别人知道当初他的决定是多么的正确
听自己的没有错。
最后,在找到有潜力的客户时候,应该要明确如果与客户交流,如何促进与客户商务洽谈的进度。
在这方面我总结出一下几个步骤: 1, 初次拜访客户的目标是确定客户是否是潜力客户,是否有使用过软件,在近期是否有考虑使用软件,或者不在近期在以后什么时候可以考虑使用软件,并且了解到在购买软件方面谁是使用者,谁是评价者,谁是决策人。
2, 在第二次拜访的时候我们的目标是,直接约见决策人,明确了解需求,大致需要使用软件的哪些模块,时候有个性化需求,并且约定在什么时候方便做个产品演示。
3, 第三次拜访,就是产品演示,解决技术方面的问题,如果软件方面没有任何问题,在使用者,评价者,决策人没有太大异议的情况下可以考虑主动要求签单,当然也许途中并有没那么顺利,中国的国情大多需要做做关系,那么这个时候就要去做关系,可以在做完关系后去要求签单。
4, 第四次拜访在签单过程中,一定要解决好回款问题,因为回不了款你卖再多的产品也得不到任何的效益,这一点不容忽视,一个好的销售员必定他的回款是非常的高的。
在整个客户沟通商务洽谈过程中,最好事前了解到该公司的规模,这样有利于你的报价,可以大概了解到该公司的价钱的承受能力。
同事也最好了解到该公司的生产什么产品基本流程是什么,尽量的详细,这样有助于你的商务洽谈,与客户有更多的共同语言也能找出客户最关心的利益点。
当然竞争对手也是非常重要的,了解你的对手,甚至他们的策略与战术,懂得自己的产品的有点与缺点,尽量了解对手的产品的有点缺点,知己知彼百战不殆,这样一成功率必然会很高
客户的异议: 1, 不需要 回答:您不需要没有关系,我丢一张名片和材料放在这里,我们公司的软件可以帮助财务会计在做帐方面省很多心,可以提高工作效率,让财务节省很多的时候,轻松省力,希望您有空的时候看一下,也许会帮助到您,既然这样,那我就不方便打扰您了,下次有空的时候再来拜访您。
2, 暂时没有这方面的打算 回答:是这样的先生,会计电算化是未来会计工作的主流,它可以帮助财务会计提高工作效率,减少失误,避免因为失误造成的不必要的损失,我把材料和名片放在这里,您有空的时候看一下,我相信一定会给您有所帮助的
3, 公司上层没有指示,我们下面人再想用也没有办法 回答:哦,是这样啊,您看来对企业信息化是非常认同的,确实它不仅可以帮助到我们工作提高工作效率,同样的也能直接过着间接的带来经济效益,不知道这样是否可以,希望您是否可以帮助到我约见贵公司的领导呢
我会尽最大的努力去让领导考虑到企业信息化的必要性,同样的也能够让您使用让财务软件,让您的工作更轻松省心一点,您看好吗
4, 你们的软件没有听过啊 回答:您好,我们的公司在2000年的时候就成立,是新加坡独资的公司,以前都是在国外市场销售,前几年在江浙一代,上海地区销售,今年开始我们开始开拓芜湖本地市场,您没有听过我是可以理解的,其实财务软件是企业内部工作的工具,重要的是在于它的实用性,是否能解决贵公司的需求,这不像是买汽车一样,买宝马和买奥拓,对于外在形象有很大的影响。
5, 最近要更新新的软件了,我们还想用以前的那个品牌的软件 回答:不知道您为什么要更新软件呢
既然他们的产品不能满足您的需求,那么为什么还要用这个产品呢
6, 我们需要跟总公司一块,总公司使用的那种软件,我们也只能用那种软件 回答:那贵公司在人事等其它方面也是跟总公司走的吗
在这些方面我们的软件同样的可以让贵公司在人事方面信息化做的更好。
7, 我现在很忙 回答:那真是不好意思打扰到您了,这样我把名片和材料放在这里,您有空的时候看一下,下次我再来拜访您,不知道您是否方便留个联系方式,这样我可以预约您,在您有空的时候来拜访您,我相信我们的产品一定会给您带来帮助,让您的工作比以前更去轻松。
8, 过段时间再说,我考虑一下 回答:真的很抱歉,也许刚才我有什么地方没有向你说明清楚,不知道您还有什么方面的顾虑和担心,不知道您现在忙不忙
如果忙的话,下次我带我们公司的顾问来拜访您,他会更您更专业的解答,我们真诚能够让我们的软件帮助到您帮助到贵公司。
9,我们这都不怎么用电脑,更不用说用软件了 回答:是这样的,会计电算化,企业信息化是未来企业的大势所趋,毕竟能够给公司带来切实的利益,我相信贵公司在未来的发展必定是需要这样的改变,现在贵公司用不用都没有关系,可以事先了解一下嘛,我想一定会让您感觉到企业信息化对公司的运作和整个工作流程效率有很大的帮助,有质的飞跃,我们也希望在实现自己的经济效益的时候,更能在贵公司的发展做出自己的一点公司,实现与贵公司的互利双赢。
10,我年纪大了不习惯用 回答:不知道您在这公司做了有多少时间了呀
相信您对这公司也有一定的感情,企业信息化是未来的大势所趋,会对公司带来很多的利益,您可以尝试着去感觉一下这样的软件对您工作带来的便利,即使您不太愿意使用,我相信等您退休了,您留下来的这份软件,信息化的理念会对您的继任者,和您的公司带来深远的意义。
11,这个事我不负责 回答:没有关系的,您可以先看看着个材料,毕竟这个软件以后您是使用者,我真诚的希望您可以体会一下它所给您带来的便利,我可以帮您和贵公司负责这方便的人去沟通,争取到让您使用这份软件,让您在工作起来更轻松,提高您的工作效率。
12,负责人不在 回答:真的很抱歉打扰到您了,不知道贵公司负责这方面的人是哪位呢
我希望能够预约他一次,因为我很坚信我们的产品可以帮助到你们,我真诚的希望能够与贵公司合作,互利双赢。
13,不理人,不作任何回复 回答:您好,很抱歉打扰到您了,既然是这样我也就这样将错就错耽搁您几分钟的时间,希望您能够给我这点时间,也许您会感觉到我很烦,因为我相信我们的产品可以帮助到您,所也就留在这里,希望能争取到您的几分钟时间,您可以和我说说在财务方面有没有遇到哪些困难呢,希望我们的软件可以帮助您解决这些问题。



