cocos2d-xよりUnityを使うべき13の理由

無題
Pocket

ここ最近アルバイトでcocos2d-xを使いつつ、趣味でUnityを使って開発していました。

その過程でcocos2d-xとUnityの様々な違いを実感してきましたが、

Unityの方が生産性が高いと感じたため、その理由を書き出してみます。

 

◆ Unityのメリット

1.サポートが手厚い

Unityは営利目的で運営しているのに対し、cocos2d-xは非営利目的であるため、Unityの方が人員が多く、サポート速度が早めです。

また、Unityの方が歴史が長い(Unityが2005年~、cocos2d-xが2010年~)ため、設計が洗練されています。

 

2.メモリリークしない

 cocos2d-xのメモリ管理は参照カウント式を採用しているため、CC_SAFE_RELEASEを書き忘れるだけで簡単にメモリリークしてしまいます。

しかし、Unityはガベージコレクタ付きの言語であるC#を採用しているため、基本的にはメモリリークが起きません。

 

3.階層構造の表現

cocos2d-xでは親ノードが子ノードの配列を持ちます。

無題

 

対して、Unityでは子ノードのTransformが親ノードのTransformに対する参照を持ちます。

親は常に一人なので、子が複数の親から参照されてしまうエラーは起こりえません。

親がnullだった場合はroot直下に属している扱いになるため、AddChildせずとも、インスタンスを生成した時点で実体を持ちます。

あくまで子から親に対する参照のため、子ノードが削除されても、親ノードに対して一切の影響を与えません。

無題

 

4.全てのオブジェクトがシリアライズ可能

無題

Unityでは、多くの機能がシリアライゼーションシステムの上で構築されています。

全てのGameObjectはシリアライズ可能であり、また、シリアライズ可能な値は全て実行中に変更、アセットとして保存できます。

そのため、ゲームを遊びながら敵の出現率を変えたり、階層構造を持ったGameObjectを保存し、あたかもそれがクラスであるかのようにインスタンスを複製したり、

ゲームデータのインスタンスをそのままシリアライズするだけで、セーブデータの保存・読み込みをすることも可能です。

 

5.機能拡張が行いやすい

cocosはNodeを継承して動作を定義します。

無題

 

対してUnityはGameObjectに複数のコンポーネント、Behaviour(振る舞い)をアタッチすることで動作を表現します。

Behaviour単位で処理を分割して記述できるため、個々のBehaviourの抽象度が高くなり、機能拡張も容易に行うことができます。

また、Unityの強固なシリアライゼーションシステムのおかげで、GameObjectの状態を保存/複製し、再利用することも可能です。

無題2

6.アセットが豊富

無題

 Unityではアセット専用のマーケットが用意されているため、

無料のものから、有料のハイクオリティな物まで、様々なアセットをダウンロードして使用できます。

 

7.ビルドせずに動作が確認できる

無題

cocosは長いビルドを待たない限り動作が確認できませんが、Unityは再生ボタンを押すだけでゲームを遊ぶことができます。

常にスクリプトファイルの更新を監視しているため、ゲームを実行している途中にスクリプトを書き換えるといった芸当も可能です。

UnityRemoteを使えば、ビルドせずに実機で遊ぶことすらできます。

また、シーン単位でアプリケーションが分割されているため、タイトル画面を飛ばして、ゲーム画面のみをデバッグすることもできます。

 

8.グラフィックスが綺麗

無題

 cocos2d-xは2Dに特化していますが、Unityは物理ベースレンダリングのほか、様々なエフェクトを標準搭載しています。

もちろん、Unityでも2Dゲームを作成できます。

 

9.GUIベース

無題

オブジェクトの位置、角度、スケールをマウスで設定可能です。

また、シリアライズ可能なパラメータであれば、全てエディター上で指定可能です。

 

10.ビルドとエディタ拡張の切り分けが楽

 無題

階層を問わず、Editorフォルダの中に入っているリソースは全てビルドに含まれません。

そのため、プロジェクトを分けずとも、ビルドとエディタ拡張の切り分けが可能です。

例えば、StageSelectフォルダの中に、全てのステージのスナップショットを撮影するエディタ拡張を追加することができます。

 

11.スケールアップしやすい

 iOS/Android向けに作ったものを、ほとんど内部構造を弄らずに、PS4/XBox One/VRに対応できます。

また、2Dのオブジェクトも3D空間に配置されているため、2Dゲームを3Dゲームにスケールアップするといったことも可能です。

 

12.衝突判定が容易

無題

動かしたい物体にRigidBodyを入れるだけで、瞬時に物理シミュレーションを適用できます。

レイヤーマスクを使い、特定のオブジェクトとだけ衝突を行う、といった事も手軽に設定できます。

 

13.最適化しやすい

無題

GPGPU、マルチスレッド、インスタンシングなどがカスタマイズしやすい形でサポートされているため、深いレベルでの最適化を手軽に行うことが出来ます。

また、ボトルネックを可視化できるプロファイラーも完備されています。

 

その他にも様々な機能

・メカニムによるボーン構造によらないキャラクタアニメーション制御

・LOD対応、オープンフィールドゲームも可能

・ナビゲーションメッシュ、パス探索、群衆シミュレーションによるAI制御

・プロユースに迫るオーディオミキサー

・AnimationCurveを用いたグラフィカルな関数曲線のデザイン

 

◆ cocos2d-xのメリット

何処まででも拡張できる

オープンソースであるため、フルスクラッチで拡張できます。

GLSLを直接叩けばUnityを超えるようなクオリティのゲームも開発可能です。

但し、それ相応のコストは必要です。

 

処理が早く、総容量が軽くなる

2Dに特化していて3D向けのライブラリが無い分、作成されたアプリケーションのサイズは小さくなります。

また、3D用のプロセスなどを起動しておく必要もないため、動作が早いです。

 

ネイティブコードに近い

UnityでC++によるネイティブコードを使う際には、一度dllにラッピングして、C#からdllimportする必要があります。

cocos2d-xでは直接C++を叩けるため、CPUに対するアセンブラレベルでの最適化が行いやすいです。

 

導入コストが無料

cocos2d-xはオープンソースであるため、無料で使いはじめることができます。

Unityのような高価なライセンス料も必要ありません。

Pocket

2 Responses to“cocos2d-xよりUnityを使うべき13の理由”

  1. tm
    2016年8月3日 at 10:17 AM #

    この記事がどの立場の人間に向けて書かれたものか分かりませんが

    ゲームプログラマーに対してであるなら、UnityよりCocosだし
    スマートフォン向けゲーム制作に関してもCoccosの方が優れています
    Unityでスマホ用ゲームを作ると容量食いまくるので

    しかしながら、コンシューマゲームやインディーゲーム開発者向けであるなら
    Unityの方が優れているといえるでしょう

    ただ、コンシューマゲームの開発会社であれば
    Unityのようなゲームエンジンは自社で持っていると思いますが。

  2. abcdefg
    2016年10月28日 at 3:55 PM #

    >tm

    生産性の話と前置きがありますよ。

    先に書いてあるように、深いレベルで
    負荷を確認できます。
    要するにどこの処理が重いのかなーって
    試行錯誤するデバッグの時間が短縮できますよ
    という話。
    それだけで恐ろしくコスト削減にはなっていると思いますがね・・・。

    これ以上あーだこーだ言うと、言語がどうのこうの
    いってくる輩もいるので、ここでは割愛。
    天上人が作った言語について下界民が
    どっちがエライだのクソだの話してもしゃあない。

    どんなにゴリゴリ書こうとも、出来上がるゲームが
    評価されるのはコードの美しさよりも、
    プレイヤーの評価だということに、開発者も気づくべきかも
    しれないと警鐘を鳴らされているわけです。
    unityの台頭によってね。

    あと、
    他の会社のゲームと似たような挙動、処理にならないよう
    差をつけるために、自社エンジンを作るわけですわな。
    それは開発コストに直結する部分では無いので、
    ここでの発言はふさわしくなかったですね。

    私もUnityは良いと思いますよ。
    時代の流れは早いものですから、
    年を取っても柔軟な思考でやっていきたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

(Required)

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com