用 swift 写游戏和用 cocos2d 之类的引擎有什么区别?

2015-10-01 10:42:24 +08:00
 anubiskong
我想做一款类似 2048 或者像素鸟那样的小游戏
cocos2d-x 和 unity 都是不错的跨平台游戏引擎
但是我试用过之后发现, 如果是小游戏的话, 用这两种引擎得不偿失, 各种坑.
那如果我用原生 swift 写游戏会遇到哪些困难呢?会比用现成的引擎麻烦很多吗?
12188 次点击
所在节点    游戏开发
26 条回复
yxzblue
2015-10-01 10:43:58 +08:00
各种坑?
WildCat
2015-10-01 10:45:06 +08:00
最大缺点是你写的游戏只能在 iOS/OS X 运行,抛弃了 Android 。 如果不是为了尝试玩玩的话,建议还是用跨平台框架
anubiskong
2015-10-01 10:51:23 +08:00
@yxzblue 比如 cocos2d-x 连画条斜线都是各种锯齿, 还没有抗锯齿的方法, 还有各种其他兼容性问题, 各种小 bug, unity 我学不下去, 各种拖拽连线感觉思路跳的太厉害
soyking
2015-10-01 12:42:07 +08:00
用 libgdx :)
miniwoodman
2015-10-01 14:09:29 +08:00
现在有一些英文电子书教写小游戏都是你说的那种类型, Unity 如果写小游戏还是会更容易些, 你可能还是不习惯,推荐《 Unity 游戏设计与实现 南梦宫一线程序员的开发实例》有电子版的¥ 39.9
http://www.ituring.com.cn/book/1298

你可以下载其中的资料 《 Unity 游戏设计与实现-随书下载资料.zip 》 ( 285Mb ),试玩一下里面的几个小游戏看看,都是书中的实例,很有日本人的游戏风格, 这本书我觉得在 Unity 教材里面算是最好的,现在骗钱的废品书也是不少的,特别是一些培训机构出的书,本身就不是行业的从业者,还出来误人子弟,随书实例都惨不忍睹。。。
anubiskong
2015-10-01 15:04:36 +08:00
@miniwoodman 感谢分享. 你对 cocos2d-x 有经验吗?
miniwoodman
2015-10-01 15:42:58 +08:00
@anubiskong 我对 cocos2d-x 还没有经验, 看项目需要,今后可能需要学习。
WildCat
2015-10-01 15:46:31 +08:00
@anubiskong 4 月份参加了 Unite Beijing 2015 ,之后一直没时间写游戏试试,主要是太忙。
如果有时间,我还是首选 Unity ,其次 Unreal ,之后才会考虑 cocos2dx 。
为何首选 Unity :
1. 自己对 C# 的熟悉程度远大于 C++
2. Unity 用户群大,著名的《炉石传说》都用它
3. 推广做的不错,书籍相对多一些
4. 偶像 @onevcat 也是 Unity 开发者
onevcat
2015-10-01 16:49:28 +08:00
@WildCat 你忽略了 Unity Pro License 很贵的这个现实- -...
WildCat
2015-10-01 17:46:45 +08:00
@onevcat 然而用 Personal License 我还没做出来过东西 =。=
记得有人说过(貌似是你?),对于 Personal License , Unity 的启动界面过后再来几秒自己的启动界面就好了。。
lostrit
2015-10-01 18:22:14 +08:00
已经用 swift 做游戏将近半年时间。
建议你首先考虑游戏是否跨平台,如果你真心确定就做 iOS 和 OS X 平台的游戏再继续看,否则直接选别的引擎去吧。

然后说 swift 做游戏的事。据我所知用 swift 做游戏基本只有只有如下选择:

1. Cocos2d-objc : https://github.com/cocos2d/cocos2d-objc ,之前叫 cocos2d-iPhone , swift 发布的时候改名过 cocos2d-swift , cocos2d-x 的灵感来源。现在由于前途未卜又改名成 cocos2d-objc 了...引擎由 Objective-C 实现,与 swift 的结合使用亲测没有大问题。有自己的图形编辑界面 SpriteBuilder ,前身是 CocosBuilder 。
优点:如果你使用过 CocosBuilder 和 cocos2d-x 的话,应该还是比较好上手的。功能还算强大。
缺点:前途未卜。之前一段时间在 Apportable 的帮助下进行了安卓的支持,后来 Apportable 撤出了,这个引擎可以说已经没有什么竞争力了(当然 SpriteBuilder 这个编辑器我个人还是很喜欢的),它的 forum 上也激烈讨论了这个引擎何去何从的问题。现在的状况就是很多底层使用的 API 已经比较过时了,然后寥寥数人还在焦头烂额的勉强维护着。所以制作过程中遇到引擎 bug 可能得自己修复。
还有就是在 swift 中使用 objc 框架时代码补全明显比纯 swift 慢很多,真的是很多,直接影响到了写代码的节奏,不知道是我没调教好的原因还是什么。
文档么,没有非常完善但基础的部分也够用了,毕竟是开源的啥东西弄不明白自己看源码好了。

2. 苹果自己的 SpriteKit 、 SceneKit ,这个不介绍了, WWDC 说的挺全乎的。做 2D 游戏的话就用 SpriteKit , 3D 游戏就用 SceneKit 。这两个框架之间还可以相互使用,就是说你可以 SpriteKit 中加一个 node 显示 SceneKit 的东西,也可在 SceneKit 中使用 SpriteKit 的东西制作 UI 。
优点:正品有保障。没有 cocos2d-objc 的代码补全延时。文档完整度没的说。
缺点:不开源。有些东西文档没说清楚的只能自己去试。
编辑器, Xcode 6 加入场景编辑, Xcode 7 加入了动画编辑,基本的拖拖拽拽没啥问题,但是你要想做点真正能用的东西,用起来那叫一个别扭。
作为游戏框架感觉还不够完善,比如最基本的按钮啊,视差效果啊, TiledMap 啊,这些都需要你自己去实现。

以上两个是仅我所知的 swift 下的游戏引擎。要我说,没有无坑的引擎,至少我到现在没有遇到过,但同样,也基本没有不能解决的坑。实在都不满意的话自己去做引擎好了, swift 的话你可以使用 Metal ( iOS8+, OS X 10.11+)或者 OpenGL ES 3 ( iOS7+)。就是只怕到时候会遇到更多的坑。我也曾经有一段时间陷入想找到一个完美舒服的工具去做游戏的困境中,后来我才发现,没有工具是完美的,但这都不影响你把你自己的游戏做的完美。硬着头皮把游戏做完的时候,你就不会再在意工具给你的那点别扭了。
anubiskong
2015-10-01 18:34:22 +08:00
@lostrit 感谢你如此全面的回答. 你做的什么游戏能告诉我名字吗?
lostrit
2015-10-01 19:21:16 +08:00
@anubiskong 也是小体量的项目,目前还没做完..
anubiskong
2015-10-01 19:23:02 +08:00
@lostrit 我也在做一个小游戏, 进度 70%, 预计这个月上线 IOS, cocos2d-js 做的
lostrit
2015-10-01 19:24:36 +08:00
@anubiskong 很好哇 独立开发者么?
solar
2015-10-01 19:54:50 +08:00
没引擎要怎么弄?卤煮是要自己搞个出来么?保重啊。
anubiskong
2015-10-01 19:56:11 +08:00
@solar 小游戏而已
anubiskong
2015-10-01 20:04:57 +08:00
@lostrit catcv@live.cn 给我发个联系方式吧, 没事可以聊聊.
jukka
2015-10-01 21:49:38 +08:00
@lostrit 没有工具是完美的,但这都不影响你把你自己的游戏做的完美 +1024

每每遇到困难,就只需要这样鼓励一样自己。“你都从 cocos2d-x 2.0 撑到 3.3 了,还有什么困难克服不了的。”
jsfaint
2015-10-01 22:06:09 +08:00
朋友他们公司 cocos2d-x 做的游戏都开始躺着赚钱了……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/224984

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX