用 swift 写游戏和用 cocos2d 之类的引擎有什么区别? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
anubiskong
V2EX    游戏开发

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

  •  
  •   anubiskong 2015-10-01 0:42:24 +08:00 12596 次点击
    这是一个创建于 3665 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我想做一款类似 2048 或者像素鸟那样的小游戏
    cocos2d-x 和 unity 都是不错的跨平台游戏引擎
    但是我试用过之后发现, 如果是小游戏的话, 用这两种引擎得不偿失, 各种坑.
    那如果我用原生 swift 写游戏会遇到哪些困难呢?会比用现成的引擎麻烦很多吗?
    26 条回复    2015-10-03 09:57:07 +08:00
    yxzblue
        1
    yxzblue  
       2015-10-01 10:43:58 +08:00
    各种坑?
    WildCat
        2
    WildCat  
       2015-10-01 10:45:06 +08:00 via iPhone
    最大缺点是你写的游戏只能在 iOS/OS X 运行,抛弃了 Android 。 如果不是为了尝试玩玩的话,建议还是用跨平台框架
    anubiskong
        3
    anubiskong  
    OP
       2015-10-01 10:51:23 +08:00
    @yxzblue 比如 cocos2d-x 连画条斜线都是各种锯齿, 还没有抗锯齿的方法, 还有各种其他兼容性问题, 各种小 bug, unity 我学不下去, 各种拖拽连线感觉思路跳的太厉害
    soyking
        4
    soyking  
       2015-10-01 12:42:07 +08:00
    用 libgdx :)
    miniwoodman
        5
    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
        6
    anubiskong  
    OP
       2015-10-01 15:04:36 +08:00
    @miniwoodman 感谢分享. 你对 cocos2d-x 有经验吗?
        7
    miniwoodman  
       2015-10-01 15:42:58 +08:00
    @anubiskong 我对 cocos2d-x 还没有经验, 看项目需要,今后可能需要学习。
    miniwoodman
    WildCat
        8
    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
        9
    onevcat  
       2015-10-01 16:49:28 +08:00
    @WildCat 你忽略了 Unity Pro License 很贵的这个现实- -...
    WildCat
        10
    WildCat  
       2015-10-01 17:46:45 +08:00
    @onevcat 然而用 Personal License 我还没做出来过东西 =。=
    记得有人说过(貌似是你?),对于 Personal License , Unity 的启动界面过后再来几秒自己的启动界面就好了。。
    lostrit
        11
    lostrit  
       2015-10-01 18:22:14 +08:00   4
    已经用 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
        12
    anubiskong  
    OP
       2015-10-01 18:34:22 +08:00
    @lostrit 感谢你如此全面的回答. 你做的什么游戏能告诉我名字吗?
    lostrit
        13
    lostrit  
       2015-10-01 19:21:16 +08:00
    @anubiskong 也是小体量的项目,目前还没做完..
    anubiskong
        14
    anubiskong  
    OP
       2015-10-01 19:23:02 +08:00
    @lostrit 我也在做一个小游戏, 进度 70%, 预计这个月上线 IOS, cocos2d-js 做的
    lostrit
        15
    lostrit  
       2015-10-01 19:24:36 +08:00
    @anubiskong 很好哇 独立开发者么?
    solar
        16
    solar  
       2015-10-01 19:54:50 +08:00
    没引擎要怎么弄?卤煮是要自己搞个出来么?保重啊。
    anubiskong
        17
    anubiskong  
    OP
       2015-10-01 19:56:11 +08:00
    @solar 小游戏而已
    anubiskong
        18
    anubiskong  
    OP
       2015-10-01 20:04:57 +08:00
    @lostrit [email protected] 给我发个联系方式吧, 没事可以聊聊.
    jukka
        19
    jukka  
       2015-10-01 21:49:38 +08:00
    @lostrit 没有工具是完美的,但这都不影响你把你自己的游戏做的完美 +1024

    每每遇到困难,就只需要这样鼓励一样自己。“你都从 cocos2d-x 2.0 撑到 3.3 了,还有什么困难克服不了的。”
    jsfaint
        20
    jsfaint  
       2015-10-01 22:06:09 +08:00 via Android
    朋友他们公司 cocos2d-x 做的游戏都开始躺着赚钱了……
    anubiskong
        21
    anubiskong  
    OP
       2015-10-01 22:08:17 +08:00
    @jsfaint 这个羡慕不来, 个人怎么能和公司比
    secondwtq
        22
    secondwtq  
       2015-10-01 22:32:20 +08:00
    “如果是小游戏的话”

    在我的印象里, cocos 就是做“小游戏”的。

    Unity 在移动端貌似也是做“小游戏”的。
    anubiskong
        23
    anubiskong  
    OP
       2015-10-02 10:22:23 +08:00
    @lostrit 发了吗? 好像还没收到
    samael
        24
    samael  
       2015-10-02 15:08:32 +08:00 via Smartisan T1
    @lostrit 我就是来捧个场,赶紧的发包
    jsfaint
        25
    jsfaint  
       2015-10-02 22:14:05 +08:00 via Android
    @anubiskong 创业公司,程序也就两三个……
    zhonghua
        26
    zhonghua  
       2015-10-03 09:57:07 +08:00 via Android
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     981 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 22:30 PVG 06:30 LAX 15:30 JFK 18:30
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86