`
edisonleeym
  • 浏览: 17311 次
  • 性别: Icon_minigender_1
  • 来自: 湖南长沙
社区版块
存档分类
最新评论

iphone开发新的体会

阅读更多
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播。同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该翻译稿之人无任何关系。谢谢合作!

原文链接地址:http://www.raywenderlich.com/1018/5-things-i-learned-making-my-first-iphone-game

教程截图:




    过去几周来,我在“闭关”,集中精力完成了我的第一款iphone游戏---但是,我现在又来写博客了。为什么?因为那个游戏上架啦!:)

    大家可能会问,那是一款什么类型的游戏。它的名字叫做 Math Ninja ,是一款教育类游戏,专门教小孩子学习数学用的。可以帮助小孩子学习简单的加法,减法,乘法和除法,而且学习过程变得非常有趣。这个游戏用到的技术包括,从《如何使用cocos2d来制作一个简单的iphone游戏教程》开始的一系列游戏教程中所提及的技术,美工则是我的老婆完成。

    不管怎么说,在制作游戏的过程中,我学到了很多东西。我觉得这些东西,大家可能也会有兴趣。所以,接下来,我会谈谈我从第一个游戏中所获得的经验。


1. 重新架构游戏完全ok
    我刚开始编写MathNinja的时候,那代码实在是太烂了。说实话,不是一般的烂。因为我也是一个cocos2d新手,所以,也犯了一堆错误。而且,我是一边设计一边开始编码的,结果导致代码的组织结构非常混乱,而且各种“补丁”程序遍布其中。

    因此,在项目快要完成的时候,我在思考一个问题:我是保持现在的代码风格呢,还是完全重新构架程序,因为我知道更好地组织游戏代码的方式。但是,其实我也可以完全没有必要这样做,因为,对于终端用户而言,他们并不关心你的代码风格,代码风格丑或美,对于用户来说是完全透明的。

    关于“重写程序”这个话题,网上有大量的讨论。Joel on Software(译者:此人写了3本书,现在有翻译版,大家可以去网上搜索看看。我全部看过一遍了,非常好。Joel被誉为程序员部落酋长,发表了很多独到的见解)把“以一种更好的方式重写软件”看作是最坏的决策,任何一家公司都不应该如此做。关于详细信息请点击此处。

    我曾经也就这个话题参与到了争论之中,但是,最后我还是决定要重新架构--主要是为了获得一种“自我满足”和学习的目的。整个重写的过程几乎花了制作时间的一半还要多,所以,这个工作是非常耗时的。它不是简单的重构,而是对整个项目动大手术。因此,你可能会问,这么做值得吗?

   答案是,毫无疑问值得!我认为有以下原因:

•通常,当你有一个很稳固的游戏架构之后,往上面添加新功能是非常容易的。
•在重写过程中,我重新构架了关卡设计这块,我把所有的关卡都用配置文件管理起来,这样我可以更方便地进行游戏设计。(原因看下一条)
•在重写过程中,在保存和加载游戏数据的时候,我考虑了更多的情况,结果是,重写之后,整个游戏的加载和保存数据变得非常简单了。
•在重写过程中,我考虑了更多游戏性能的问题,结果是,重写之后,fps和用户响应都提高了。
•而且,可能最重要的是,对于最后的重构结果,我本人更加满意,更加自信了。而不是重构之前的一种“罪恶感”了。(译者:我觉得这一点非常值得我们学习。想想看,自己每天面对自己写的又臭又长的代码,你有罪恶感吗?你会花时间和精力去重构吗?你能忍受代码的坏味道吗?)
  我认为,重写这个过程中,我不仅更好地学习了所使用的代码库(指代cocos2d),而且学会了一种构建软件的方式。刚开始,你可能会犯各种错误,但是,如果你坚持重构下去。每次一点点,最后,你会发现代码结构越来越好,而且这个过程非常有趣。

   但是,保持重构的步调其它是非常难的,多久重构一次,如何保证“连续重构”,这些都要靠自己工作中慢慢体会。但是,我在重构的过程中,不仅改善了代码质量,而且也学习了新的游戏框架(指代cocos2d)。因此,重写对于我来说,是在“原型”(之前那个代码结构很烂的版本)的基础之上,还获得了额外的开发速度提升。(译者:可是有些人,特别是老板,可能不会赞成。如果你在开发项目的过程中,你跟老板说,请给我3天时间,我要重构。哈哈,这是不可能的。一则重构需要时间,3天?你搞得定吗?而且重构极容易引入bug。虽然现在的程序不是很好看,但是,至少能够工作。如果被你重构了一翻,结果不ok了。想必你老板肯定要生气。有人说,重构+完备的测试就可以解决了。但是,有谁真正在用测试驱动开发吗?我很质疑,我并不是质疑这项技术的好处,而是质疑,到底有多少人能做到。整个测试驱动开发的流程如何进行。希望看到这里的达人们,如果有TDD相关的经验,麻烦指点我一下,万分感谢!)

   在将来,我觉得可以使用其他更好的原型开发工具,比如coco2d的python版本或者Flash,等原型ok之后,再考虑一下代码组织和结构,然后再用cocos2d-iphone来实现之。这样比单纯用cocos2d-iphone来开发应该要好很多。因为,你在原型阶段就可以确定一款游戏的玩法可行不,如果不可行,直接否决掉。然后再开始新的创意,免得在一个错误的道路上劳民伤财。


2. 把游戏设计弄得越简单越好
  我第一次写MathNinja的时候,游戏设计完全是硬编码进去的。想要改变一个怪物的血量,我得把Monster类的好几个构造函数改一遍。想改变某个关卡出现一个特定的怪物,我也得改好多代码。还有武器、故事情节等等,都是直接在代码里面写死的,改动起来非常麻烦。

    改一改这些设置其实并不是很难的事,但是,每次你改一个地方,你都需要在那些头文件,实现文件里面切换来切换去。而且,如果你的程式中有魔法数字的话,你还得保证每一处都修改的一至,否则情况更糟。这么麻烦的事,最后只有一个结果,那就是,你自己也懒得改游戏玩法了。(译者:为什么?因为它实在是太麻烦了!程序员不喜欢干这种活!)

   这是一件非常糟糕的事。为了可以很方便地修改游戏设计,我把一些与游戏设计相关的元素,比如怪物状态,怪物出现的时机等,都编码到一个可编辑的文本文件里面。

   因此,在重写的过程中,我把大部分的怪物定义、关卡数据配置以及故事情节配置,都写到一个可以修改的xml文件中去了。然后我写了一个WPF编辑器来编辑这些xml文件,不过,后来我才发现,其实手工直接去改这些xml文件比其它任何可视化的xml编辑器都容易些,而且更有趣一些。

   在完成所有这些之后,整个游戏设计的工作就变得非常简单了。下面是具体原因:

•因为更改游戏设计更加方便了,所以,我可以随心所欲地修改游戏参数,使游戏变得更加平衡,游戏性更好,更有趣。
•测试变得更加容易了。我可以非常简单的创建出新的关卡,只需要改一改xml文件就可以了。比如创建一个新的xml文件就可以创建一个新的关卡。
•程序逻辑和游戏设计之间有很清楚的划分。这样可以使我的头脑中的设计思路更加清晰,这种感觉真的很不错!
3. 然而,游戏设计仍然很难
    另外一件事情,我学习到的就是,无论你把调整游戏设计的方式弄得多么简单,游戏设计仍然非常难。对于没有游戏设计经验的人来说,想要构思出一个非常好的游戏设计非常非常难,而且很消耗时间。

    我都记不清楚了,我把那些效果、伤害,武器的升级路径改变了多少次了。而且选择不同的武器,玩不同的关卡,这个过程测试了成百上千次。

  刚开始,我有点灰心了,虽然我成天花费大把的时候在游戏设计上面。但是,对于一个程序员的我来说,花那么多时间在游戏设计上面,简直像是在玩游戏,因为,我需要编码,而不是娱乐。

    但是,我马上就意识到了,把游戏设计弄好可能是游戏开发中最重要的一部分了。毕竟,那才是唯一能够使游戏变得有趣的方式。所以,花时间去调整和改善游戏设计是值得的。

   我发现,在游戏设计这条路上,我还有好多好多需要学习。我想有经验的游戏设计人员,他们肯定使用更多的数学知识和更多的excel表单来辅助进行设计,计算平均的DPS,计算每一帧能够造成的最大伤害值等等。再比如,计算出每个武器的攻击力,升一级之后的攻击力,升N级之后的伤害值等等。

    作为一个初学者,我所能想到的唯一的方式,就是不断地迭代、迭代,再迭代,直到好玩的游戏效果出来。没错,这样也能奏效(至少我希望是如此)--只是这个过程更耗时间而已。

4. 没错,你需要测试人员!
    在游戏的最后,我的妻子和我都非常满意这个结果,但是,在这时,你可以说“我们不需要测试者,我们的游戏很酷,直接可以拿去上架了”。这样做行吗?

   肯定不行!

   幸运的是,有很多朋友帮助我们进行了测试的工作。因为每个人玩游戏的年龄和水平都不一样,因此,对于关卡的难易度的体会也不一样。他们还找出了游戏当中的许多bug,非常多的bug。如果不是他们在测试阶段发现这些bug的话,暴露给最终用户会让我非常尴尬的。

  不仅仅如此,他们还给了我很多好的idea。

  总之,学到了很多东西---记住,不管你认为你的游戏或者应用有多么的好,都去找一些人来测试一下。你会有收获的!:)

5. 游戏最后10%是最困难的
    在我完成这个游戏之前,我记得有一个朋友跟我说过一句话,“游戏的最后10%是最难的”。

    他真是太神了!

   我发现,要估算完成一个像MathNinja这样的游戏所需的时间,这个工作实在是太难了。对于某一个应用程序,我非常有自信,可以估算出这个应用要花多长时间可以完成。但是,对于游戏,这个估算时间的工作真是太难了。

   我认为,这里面的最主要的原因就是,游戏永远没有真正意义上的完成。因为,你总是可以往游戏里面添加更多的新功能,总是可以把某一个效果做得更好,更酷。而且,你总是可以添加更多的新关卡。

   因此,你怎么能知道你需要多长时间来完成一款游戏呢?于对我来说,这是一个开放性的问题。说实话,我完全不知道,只是不断地修改游戏,直到我满意为止。即使还有一大堆功能我可以添加进去,但是,如果我满意了,我也就停止了。

   但是,其实,什么时候你找算把你做的游戏提交到apple store上面,这也是一个非艰难的决定。有许多次,我自己心想“差不多可以了”,但是,一两周后,我又添加了新的功能,还是没能如愿上架。

   更不要说在项目进行的过程中了,我越是想“项目差不多”要完成了,我就越是发现还有更多的工作。这个过程真的很烦人,我都是在精神上强制自己一定要坚持下去,把剩下的工作做好,这样才敢出门。

   因此,制作一个游戏,你需要耗费非常多的精力---而且,你必须做好准备,不管你做了多少艰辛的工作,到最后,你总是发现你还是需要更多的时间和工作才能完成。:)

你从制作你的第一款游戏中学习到了什么呢?
    制作我的第一个iphone游戏是我的编程生涯中最有趣的经历之一。当最后游戏完成的时候,我非常高兴,而且从中学习到了非常多的东西。

   各位看官,你们完成第一个游戏制作的时候,是什么感觉呢?都学到了哪些东西呢?我非常渴望跟大家交流,希望大家分享一些自己的心得,谢谢!:)


要论坛交流,请点击传送门!


著作权声明:本文由http://www.cnblogs.com/andyque翻译,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢!

0
1
分享到:
评论

相关推荐

    Iphone开发系列源码——Iphone主题源码

    Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码——Iphone主题源码Iphone开发系列源码...

    iPhone开发基础教程电子书

    这里推荐两本书《objective-c基础教程》和《iphone开发基础教程》,这两本都是圣经级的巨作,我相信每一个iphone开发人员应该都不会错过这两本书的。  等你xcode和objective-c摸熟之后,或者说,上面提到的那两...

    iPhone开发实战.pdf

    根据提供的文件信息,本文将对“iPhone开发实战”这一主题进行深入探讨,涵盖iPhone应用开发的基础概念、开发环境搭建、关键技术点以及实际案例分析等方面。 ### 一、iPhone开发概述 #### 1.1 iPhone应用开发简介 ...

    Iphone开发系列源码——iPhone版Wordpress源代码

    Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码——iPhone版Wordpress源代码Iphone开发系列源码...

    iPhone开发环境搭建

    【iPhone开发环境搭建】 搭建iPhone开发环境是iOS应用开发的第一步,主要涉及到在特定的操作系统环境下安装必要的开发工具。由于iPhone应用只能在苹果公司的Mac OS X系统上开发,因此,你需要准备一个运行Mac OS X...

    Iphone开发系列源码——Image图片缩放随着手指

    Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image图片缩放随着手指Iphone开发系列源码——Image...

    iPhone开发基础教程

    《iPhone开发基础教程》内容完整丰富,具有较强的通用性,编程领域中各层次读者都能通过《iPhone开发基础教程》快速学习iPhone开发,提高相关技能。iPhone 是一种全新的移动平台,苹果公司为它推出了强大的软件开发...

    轻松学iPhone开发

    《轻松学iPhone开发》这本书是为想要进入iOS应用开发领域的初学者精心编写的。它旨在以轻松易懂的方式,引导读者逐步了解并掌握iPhone应用程序的开发技能。书中的内容主要分为三部分,每一部分都围绕着不同的学习...

    IPhone开发

    iphone开发秘籍,移动手机开发,参照软件开发应用

    iphone开发实战

    本书全面探讨了iPhone平台的两种编程方式——Web开发和SDK编程。全在Web开发方面,分别介绍了三个iPhone Web库,即WebKit、iUI和Canvas,并讨论了Web开发环境Dashcode,最后阐述Web应用程序的调试。在SDK开发方面,...

    最新 iPhone 应用程序开发全教程.pdf

    ### 最新iPhone应用程序开发全教程知识点总结 #### 一、教程基本信息 - **书名**:《最新 iPhone 应用程序开发全教程》 - **英文名称**:Beginning iPhone 3 Development Exploring the iPhone SDK - **作者**:...

    iPhone开发入门到精通视频教程

    资源名称:iPhone开发入门到精通视频教程资源目录:【】iOS开发源码系列---工具【】iOS开发源码系列---应用【】iOS开发源码系列---游戏【】iOS开发源码系列---类库与框架【】iOS开发真机测试与发布【】iOS开发视频...

    深入浅出iPhone开发

    《深入浅出iPhone开发》是一本专为iPhone应用程序开发初学者编写的指南,旨在通过实际应用案例,系统地介绍iOS开发的各项技术。本书的核心目标是让读者能够从零基础逐步掌握开发iPhone应用所需的知识和技能。 在iOS...

    iphone开发视频教程

    资源名称:iphone开发视频教程资源目录:【】iphone开发视频教程第1集 Mac.OS.X,Cocoa,Touch,Objective-C【】iphone开发视频教程第2集 各种基础的类,功能,对象和实例的介绍【】iphone开发视频教程第3集 如何创建你...

    深入浅出iPhone开发(清晰版,内含中英2个版本的书)

    知名的Head First系列丛书之一,风格与其他Head First系列一脉相承,一定能让读者轻松学会iPhone开发,《深入浅出iPhone开发》是针对iPhone开发的初学者设计的,以几个应用实例的开发为例,循序渐进地对iPhone开发的...

    iPhone开发基础教程-PDF版

    《iPhone开发基础教程-PDF版》是一份专为初学者设计的全面指南,旨在帮助读者掌握iOS应用开发的基础知识和技能。本教程涵盖了从安装开发环境到创建第一个应用的全过程,深入浅出地讲解了iPhone应用程序开发的核心...

    [iphone.开发书籍 高清PDF]iphone3开发基础教程.part3

    [iphone.开发书籍 高清PDF]iphone3开发基础教程.part3

    iPhone 开发实战 pdf + 书籍源码 (全)

    对于有一定经验的开发者,书中的源码可以作为参考,帮助解决日常开发中遇到的问题,或者提供新的编程思路。 总之,《iPhone开发实战》是一本全面且实用的iOS开发指南,无论你是初入此领域的新人,还是寻求提升的...

Global site tag (gtag.js) - Google Analytics