GameDesign 板


LINE

图文版:http://goo.gl/dyQNt Unity 是最近相当受欢迎的游戏引擎,具备了易於非技术人员使用的编辑器、 以及完整的跨平台支援。Corona SDK 则是专注於手机平台上的 2D 游戏引擎, 由於架构简单学习容易,也是手机平台上的热门开发工具。 仅管这两套引擎的规模不同,不适合拿来比较,但若是以「开发手机平台的 2D 游戏」作为前提,我倒是可以从个人经验中做出一些分析。Unity 本身是 3D 引擎,我会以 Unity 加上 ex2D 这套功能强大的 2D plugin 来进行比较。 * * * * * * 基本功能 Unity + ex2D Corona SDK Sprite ○ ○ Sprite Animation ○ ○ Texture Atlas ○ ○ Bitmap Font ○ △ Unicode Font × ○ 2D Primitives × ○ Physics ○ ○ Layer ○ ○ Clipping ○ ○ 9-Patch ○ △ Unity+ex2D 与 Corona 都提供了基本的 2D 游戏元素:sprite、texture atlas 与连续图动画等,但其它方面的功能则略有出入,以下针对不同的地方做说明。 Bitmap Font Bitmap font 意指把字型画到 texture 上,在游戏中若要显示文字,可直接用 texture mapping 的方式显示出来。最流行的工具就是 BMfont,只要指定好字 型,这个小工具可以帮你产生 texture。 ex2D 支援 bitmap font,可以直接读取 BMfont 产生的结果。Corona 并没有 直接支援 bitmap font,但因为它支援 texture atlas,只要自己写一支读取 BMfont 输出档的 Lua script,就能在游戏中显示 bitmap font。而这件事当然 有人做过了,在 Corona 的论坛上可以找到别人写好的 bitmap font 模组。 (只是有些 bug 要自己修正) Unicode Font 若想使用 bitmap font 显示中文或日文字型,理论上是没问题的,然而这类文 字的字集太大,往往没办法全部画在一张 texture 内。尽管 BMfont 可以处理 unicode font,甚至也能把字型打散画到多张 texture 上,ex2D 却不支援这 种包含多张 texture 的 bitmap font。因此目前 ex2D 无法显示任意的 unicode 文字。 Corona 则具备了呼叫作业系统画出字型的能力。由於 iOS 与 Android 都内建了 unicode 字型,使用作业系统内的字型档不但可以正确显示文字,而且所需要的 记忆体资源也远少於 bitmap font。而且如果对作业系统内建的字型不满意,你 也可以使用自己的 ttf 字型档来画字。 Unity 4.0 将会改进 3.5 的缺点,提供显示 unicode font 的功能。 2D Primitives Corona 除了画出 sprite 以外,也额外提供了一些常见的 2D 向量图形元件, 包含圆形、长方形、圆角长方形、直线等。当你想快速画出一些简单的图形时 相当有用,而且需要的资源相当少。 ex2D 不提供这样的功能。 Clipping ex2D 可以针对一群物件设定显示范围,超过范围的部份不会被画出来。若要实 作可卷动的视窗元件,这个功能相当有用。 [感谢 linjack 补充] Corona 则是使用 bitmap mask 的方式进行 clipping,你可以使用一张灰阶图 片当作显示物件的遮罩。这个遮罩不但可以限制绘图范围,也能够控制触控事件 的范围。 9-Patch 9-Patch 主要用在画出带有边框的元件。这些元件具有不同的大小,在缩放时 只有中间的部份会缩放,边框则需维持原本的宽度。一般来说我们只需要给一 张如左边的图片,并且指定好边框与角落的宽度,支援 9-patch 的系统就可以 画出不同大小的边框。 ex2D 支援 9-patch,只是它把这功能称之为 SpriteBorder;Corona 则没有直 接支援 9-patch。但同样地,你可以把 9-patch 视为 texture atlas,然後自 己写 script 去缩放它,自己实作这个功能花不了太多时间。 记忆体最佳化 由於手机上的记忆体资源相当宝贵,两套 engine 都提供了一些方法来节省记 忆体,但两边的解决方案都说不上良好。 Unity 支援手机上各种常见的压缩格式:PVR、ETC、DXT、ATC 等等,压缩後的 图片占用记忆体量会大幅缩小。然而 Unity 缺少了以下的功能: 1. 自动针对不同的 GPU 载入不同格式的压缩材质。在 iOS 上因为 GPU 全 部都是 PowerVR,所以都用 PVR 格式是 OK 的,但在 Android 上因为使 用的 GPU 各不相同,但一张 texture 却只能选择一种压缩格式,这实在 非常麻烦,良好的 engine 应该帮开发者解决这个问题。 2. 自动针对不同解析度的萤幕载入不同大小的图片。不要说是 Android,在 iOS 上萤幕解析度也是大不相同--从 480x320 到 2048x1536,若要同 时支援 New iPAD 与 iPhone 3GS 将会非常麻烦,尤其 3GS 的记忆体只 有 256MB。 3. 使用递色法(dithering)缩减图片容量。带有透明度(alpha channel) 的图片若使用 PVR 进行压缩,结果往往不甚理想。另一个解决之道是把 图片转成 RGBA4444 的格式,然後藉由递色法让图片品质不致於大幅降低。 虽然 RGBA4444 占用的容量比 PVR 要大,但递色法产生的结果有时比较 能让人眼接受。 Corona 支援上述的第 2 点,也就是针对不同的萤幕解析度去载入不同大小的 图片。但是 Corona 不支援材质压缩,也不支援 RGBA4444 的图片格式。 游戏编辑器 Unity 提供了功能强大的游戏编辑器,即使是没有程式背景的美术人员也可以 操作编辑游戏中的物件,这对於设计关卡或编排 GUI 来说相当方便。 Corona 只提供了模拟器让程式设计师预览游戏过程,但官方网站已宣布他们即 将推出 GUI 编辑器。 我个人对於整合式的游戏编辑器抱持比较保留的态度。诚然 Unity 的编辑器超 级强大,而且还可以定义自己的 asset、设计自己的 asset 编辑器。但另一方 面也导致光看程式码无法理解游戏架构的现象。若想要在 Unity 中写出易读易 维护的程式,可需要下一番功夫。 其它功能 Corona 提供了许多手机游戏的常见功能,包括社群网路整合(Facebook、 GameCenter、OpenFeint)、行动广告、In-app Purchase 等等。 Unity 仅内建 GameCenter,其它功能需要透过 plug-in 的方式来扩充。 价格 Unity (Pro) Corona SDK iOS 400 (3000) 199/year Android 400 (3000) 199/year ex2D 25 – Prime31 50~200 – 全部 875~1025 (4575~4725) 349/year Unity 分为普通版与专业版,普通版可以免费使用,但若要制作手机游戏就 必须额外加价,iOS 与 Android 平台各为 400 美金。Unity 专业版本身则 是 1500 美金,但也不包含手机平台,若要再加入手机平台的专业版功能, 则一个平台要再加 1500 美金。 Unity 专业版所提供的额外功能大多以 3D 游戏为主,因此普通版加上 ex2D 即可满足 2D 游戏的需求。但若还要购买其它手机游戏的常见功能:Facebook 整合、in-app purchase、行动广告等 plug-in,大约需要 50~200 美金左右。 相较之下,Corona 的价格显得相当平易近人。它使用年费制,两大平台都是 199 美金,若两边一起买还可以享有 349 美金的优惠,而且不需再购买 Facebook 等外挂套件。 当然,若使用时间超过三年,Corona 的价格就会超过 Unity 普通版。不过三 年对手机游戏来说可是相当漫长的时间。 缺点 Unity+ex2D 与 Corona 都有一些很严重的缺点,若你有意要使用它们,请先仔 细评估这些缺点对你造成的影响。 Texture Atlas 错乱 (ex2D) 若你有使用 texture atlas,就很容易遇到这个问题。ex2D 中每个 sprite 并 不是以档名去记录它们所使用的图片,而是以数字记录它在 texture atlas 中 的编号。如果你先编辑好场景,之後又去修改 texture atlas 改变了编号,那 麽往往会导致场景中的 sprite 错乱。 这问题可说是相当致命,因为 texture atlas 不太可能一开始做好就不动了, 通常每隔一段时间都会有新的图片加进去,旧的图片也可能会因应企划需求而 改变大小,每次更改都需要以人力确认所有场景与 prefab 中的 sprite 保持 正确的内容,浪费相当多的时间。 ex2D 的作者目前正试图在架构上改善这个问题,但尚未有预定的解决时间。 无法扩充 (Corona) Corona 并没有 plugin 的机制,无法针对它不支援的功能进行扩充。尽管它的 功能对手机游戏来说是足够的,但企划如果不会异想天开,他就不叫企划了。 对於需要额外扩充功能的开发者,Corona 提供了 enterprise license,但价格 需要直接与他们洽谈,我不认为这价格会适合个人开发者或小型团队。 不支援 APK Expansion File Google Play 有 50MB 的上架限制,APK 档案必需小於 50MB。对於大容量的游 戏,Google 提供了 expansion file 的方式,除了 APK 以外开发者可以另外 上传两个 expansion file,这两个档案将在玩家下载游戏时一并下载。 Unity 和 Corona 在 build 时都没有「产生 expansion file」这个功能。Unity 可以使用 asset bundle 把部份资源分离出主程式,但是与 expansion file 整 合的过程相当复杂;Corona 则是完全无解。 结语 尽管 Unity+ex2D 与 Corona 都有一些缺点,但不可否认的是它们都很适合快速 开发小型游戏。Corona 的优点是程式架构单纯,而且较便宜,内建功能相当完 整,很适合刚踏入手机游戏的开发者。另一方面,若你非常需要图形化的游戏编 辑器,或是你需要一些 Corona 未提供的功能,那麽 Unity 是你的选择。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.39.238.241
1F:推 franknine:感谢分享 07/23 07:38
2F:推 Hevak:对不同GPU那个我还以为是打包者应该要考虑的问题耶? 07/23 08:22
3F:→ Hevak:不过无论如何感谢清楚整理分享 07/23 08:22
Unity 可以在 build 的时候选择不同的材质压缩格式 然後配合 Google Play 的 multiple APK 机制 让玩家在下载时只会载到符合自己硬体的 APK 但这实在不是好方法 因为这些使用不同压缩格式的 APK 必需使用不同的 version code 徒然增加维护成本 而且你也没办法拿去别的商城上架 (ex. Hami、S市集等) 连 Google 都建议你直接把不同的压缩材质包进同一个 APK 中做出通用版本 如果要做出所谓通用版本,目前 Unity 比较可行的方法是使用 asset bundle 针对不同的压缩格式产生 asset bundle 後 把 asset bundle 包进 APK 里面 不过这还是会有一些问题就是了 比如说 asset bundle 内的档名不能重覆 (即使不同资料夹) Unity 其实是个会让人愈用愈生气的东西 XDD
4F:推 fasthall:之前有400元移动开发license免费申请XD 07/23 08:48
5F:推 osanaosana:推 07/23 09:31
6F:推 Hevak:哦哦,懂了,谢谢详细解说XD 07/23 10:38
7F:推 holymars:推推推推推推推推推推推!!!! 07/23 15:41
※ 编辑: littleshan 来自: 220.135.3.139 (07/24 10:20)
8F:推 wangm4a1:推 07/25 01:04







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP