当ios游戏开发像做份沙拉那么简单 – 腾讯cdc
写在所有之前:这个工具更适合没有编码基础又喜欢折腾的设计师们,并不一定适合开发同事。
当你有一个好的游戏创意却因没有代码基础而搁浅时,是不是很期待一款这样的软件,让ios游戏开发变得像做份沙拉那么简单?现在gamesaladinc.就为我们提供了这样一个便利的开发工具gamesalad。
简单介绍一下gamesalad:这是一款可视化编程的游戏引擎,使用者无需编码就能为iphone, ipad, mac和web来设计,发布和分销原创游戏,简单易上手,很适合交互和视觉。开发完成的游戏可以通过云端上传到gs的服务器,发布到的app store。同类的游戏引擎还有corona和unity, 但相比之下gamesalad是最简单的一款,而unity则是最强大的一款。到目前为止,已有16万游戏开发员利用gamesalad在itunes应用店里开发了16000款游戏,其中有30多款游戏在apple应用店游戏前100名中榜上有名。
着手使用这个工具开发ios游戏前,开发者一定要想好整个流程和游戏框架,虽然也许制作过程只是简单的拖拽行为,但创作中的制图、音效、关卡设计、故事情节都需要时间去完成。所以我们需要了解一下gamesalad的结构,如下所示:
gamesalad故事板的形式去设计游戏,用场景内来承载不同的事件和物理环境。整个引擎以事件驱动行为,在效率方面表现相当不俗,即使屏幕内有大量的sprite(2d元件)也能保持fps,不会出现卡帧。
使用gamesalad来制作游戏就像玩2d拼图,能很快的把元件们组成故事
在物理引擎方面,gamesalad提供了一些基础的物理参数:重力、摩擦力、加速度、密度、角速度等。这些参数已经可以搭起一个简单的物理环境。
物理环境决定了游戏里的苹果会不会落在牛顿头上
用这些物理属性,我们可以做一个愤怒的小鸟里最简单的关卡:
1、我们创建一个球的行为者,为他赋予初速度、加速度和方向,这样球就会自己动起来啦。
2、为球增加与不同物体的碰撞检测,如碰到木板时水平速度大于多少时是有效碰撞,之后我们会判定该木板的状态为已击破,播放一个撞击的动画,同时生成破碎的木板并赋予他们一些物理数据。(这里与实际使用box2d或者其他物理环境时原理不同,控制上较生硬)
gamesalad有着明显的局限性。在推广方面,用户需花费一番功夫才能学会学会发行和推广他们的游戏。而且通过云端上传源代码到服务器也让很多人持观望态度,这也是为什么gamesalad不像unity或cocos2d那样经常有大作出现。在技术方面,gamesalad则有以下重要的技术门槛:
1、开发的同时也限制了引擎,其中最重要的就是继承的管理。actor和attribute的分离导致整个引擎只有两种变量,全局变量和actor变量tag。全局变量会同时控制某actor的父类与子类,而actor变量只能控制自身。
如上图,papa这个父类可以通过控制tag来控制自己的行为,子类a和b也能通过控制tag来控制自己的行为,但不能有一个外部的全局控制器control来区分控制他们,即一旦对attribute这种全局变量做出修改,papa\a\b的行为都会改变。这个设计导致了无法进行跨类控制,父类也无法控制子类,在游戏设计上导致了很多限制。
2、另一个局限性在于碰撞盒。由于物理引擎的不开源,无法自定义碰撞盒,导致曲面碰撞检测无法控制。gamesalad里的默认碰撞盒只有矩形和圆形两种,我们虽然可以通过微积分的方式去制作曲面的碰撞检测,但这样就导致工作量和灵活性大大降低,而且无法对物品运行的方向做好控制。
比如tiny wings里的弧形山脉,如果使用gamesalad去做就必须要用很多窄矩形叠加去模拟弧线(如下图),但这样也会拖低系统的效率。
利用窄矩形的碰撞盒去模拟弧线是一件很费力的事情
综上,gamesalad更适合开发射击类、横版闯关类、迷宫类和一些简单的休闲类游戏。那么在热门游戏里,哪些可以使用gamesalad开发呢?
此外,gamesalad是率先支持使用html5发布游戏的游戏创作平台之一,这就可以使用户更简便地将游戏分享到那些不支持flash游戏的平台中去。因此这款支持html5的游戏制作工具有着特殊的意义。
最近发布的pro版增加了更多新的支持,如对game center排行榜的开放式接口。
不论如何,gamesalad对想要磨练游戏设计能力的人来说,是一个低成本的试验平台。希望这一篇简单的推广文能让更多人了解并尝试使用这个工具——gamesalad可以让你从枯燥的游戏制作过程中解脱出来,发挥你的积极性和技能来创造出他人可能会欣赏的东西。
gamesalad官网:http://gamesalad.com/