这是一个毫无编程经验的“菜鸟”在成长为iOS游戏开发者后,总结的成长史。短短6个月间,他从Python入门,发展到给Mac开发小游戏,再到自学Objective-C和Cocos2d。除了你可能已经读过无数次的励志元素,文中的书籍、网站推荐以及开发过程中的经验教训总结很值得打算或刚刚进入苹果开发领域的新人一看。
我是菜鸟
几乎刚好是6个月前,我决定开始从事一项新的职业。2010年10月之前,我从未接触过编程。要说有,那也只是在6年级时学过了大概一周的非常基本、基本、基本的编程知识。就这些。我不知会学成什么样。2010年10月9日我在微博上写道:“我究竟想干吗我决定学习编程,我没有任何的基础。唉,兄弟们,我有些担心。”这是一段生涯的开始,我很高兴能走上这条路。我不会回头。
开端
+这个符号是来告诉计算机把2和2相加。做减法用这个符号-,做乘法用星号(*)。
在我学会了一些非常基本的知识后,我随意的做了很多文本形式的小游戏,比如刽子手,jotto,猜数字。我的第一个比较大一点的小玩意叫做“大齿怪”。这个游戏的情景是关于一个大齿怪(就把它想成一个怪物吧),祸害村里。它藏在什么地方,你需要去猜它在哪:
接下来,我转移到了我的第一个半图形游戏:”扫雷“。在此时我才开始真正的理解构造一个灵活的游戏引擎有多么的重要(没错,就像我开发的这个游戏引擎)。这个游戏仍然是文本形式的,但已经有相当的灵活度了,在这个游戏里,我可以指定布景的大小和地雷的数量。这样一来游戏就可以从头再玩,你可以把地雷数量设置很小而很快能看到游戏的结果,这样有趣多了。下面就是这个游戏:
欢迎使用苹果iOS
在学习C和Obj-C时,我遇到的大量的挫折,我没有做出多少游戏。很多次,我真的怀疑是否能渡过难关、找到出路。很多东西当我第一次看到时愁得我挠掉了很多头发:结构体,数组,多维数组,属性,表现层,控制层,协议和代理,内存管理,还有很多。很多东西我目前仍然无法理解领会。但是我坚持继续下去,我对很多人都说:让自己进步的唯一方法就是不断的做游戏。我十分清楚,想成为钢琴家,练习时根本,所以,这也是我需要的(我就持续这样下去)。
欢迎使用Cocos2d
一旦我最终把iPhone应用的基本知识攻克下,我立即开始研究Cocos2d。我很紧张,也很兴奋。现在,我不知道自己是太挑剔还是太笨,我感觉Cocos2d的文档写的不太好。所有的类,方法,属性都列出来了,但却很难让人读懂,它们解释的不太清楚。一个例子:每个”node“(Cocos2d的主要元素)都有一个”(BOOL)isRunning“属性。看起来非常的简单,但它似乎能够表示任何意思。所有的文档对这个属性的解释都是:”标志这个node是否在运行。嗯,ok…不用说,Cocos2d里面有很多东西我都十分的困惑。
我开发的各种暂且算是游戏的游戏
下面的是我的第一个Cocos2d游戏,它是我直接按照Ray的教材开发出来的(我在里面还加上了我的音乐和当一个敌人被消灭时的很傻的音效!):
接着,我仿制了一个Pong。这个游戏还可以多人参与:
接着,当我看到了即将发布的游戏BumpyRoad的令人惊讶的海报后,我受启发,心想是否能够也做一个跟里面的高高低低的路面相似风格的游戏元素。很显然,我的做图水平很有限,你可以比较一下。
BumpyRoad:
我的版本:
这之后,我想在真正的动画上试试身手。以前从没有做过动画,先在Photoshop试试。人物的制作很乏味冗长。即使是画一条很傻很短的线条也很费劲。但我还是完成了,我把他称作“狂欢者”。他能做的就是一遍遍的张开和闭上他的大嘴,每次都随机的发出一些哼哼声。你还可以在屏幕上移动他。背景闪动不同的颜色。当你触碰屏幕时,他只能哼哼和张嘴:
他的作品是如此的优秀,我甚至把它放入了我的下一个游戏里。但起初,我突发奇想,要做一个跳杆子的游戏。起初的出发点只是为了使用一个简单的游戏技术测试一下视差背景的效果,但做下来就做成了这个游戏。最终的游戏有一个小屏幕,有记分功能,有重玩功能,有音乐、音效,各种跳跃高杆,有一个高度指示器,甚至还有一个鸣谢页面!它是我的功能最全的一个游戏。我在游戏里画了一些非常丑陋的精灵,就像你下面看到的:
因为画的太差,我询问MichaelHussinger是否愿意为我做一些简单的修改,他同意了!他在二十分钟内就画出来一个让人惊叹的匹萨伙计。我估计花几个小时也画不出这么好的作品来。他还为游戏中的视差效果画了一个漂亮的山作为背景。下面的就是在他的帮助下游戏的样子,我加上了标题和鸣谢页:
游戏运行中!
在完成这条蛇之后,我打算制作“狂欢大巴2”:“狂欢者”的周末狂欢。我把上一版升级了一些。我在里面加入了一些Trainyard里面的速度条,一个车站,车可以从里面开车,一些声音特效(当他被碰着时会出现很大的汽车相撞的声音,而且会喊出“今天没有活动!”),程序也整理的更整洁了。但没多久,程序又开始变乱,当我要纠正一个问题时,另外一个东西又出现了问题。最大的问题是当我把速度设成最大时,卡车会在路上某个点崩溃。这是因为更新调用的太频繁,程序来不及在下一次调用前更新完。尽管我知道这个问题的原因,如想修复这个问题需要重做大量的东西。我想我需要升级到“狂欢大巴3”:最后的狂欢。
结论
练习给人带来的进步是惊人的。每次当写出一个新程序,我都会遇到大量的无法预知的问题和bug。当遇到挫折时,我一般是将问题移到下一次升级时解决。这让我感觉自己就在走一个while循环: