ゲームを作るならCocos2dxかUnityか2017

先日、初めてUnityで製作したゲームアプリを公開しました。

初めてのUnityは楽しかったです。

ダウンロードはこちら

Cocos2dx → Unityに乗り換えてみて

今回、慣れ親しんだCocos2dを捨ててUnityに乗り換えました。

以下に、Cocos2dxとUnityで作ってみて感じた違いを書きます。

一応ダイエット食品のCMみたいなことを宣言しておきますが、あくまで個人の感想です。

環境構築

プログラミング初心者がつまづきがちな環境構築については、圧倒的にUnityが楽です。

っていうかCocos2dxの環境構築、超面倒くさい。

プログラミング自体が完全に初めてという場合、(Macなら)XcodeとAndroidStudioを両方導入した上でCocos2dxを導入しないといけない上に、またAndroid Studioのために細々したものをダウンロードしてやらないといけないので環境構築だけで気力を使い果たします。

もしWindowsでやる場合は、Androidの実機を動かすためにドライバーを導入しないといけない等の作業も・・・。

Unityはダウンロードしたら画面の指示どおりにインストールして、最後にアカウント作ってログインするだけなので超簡単。簡単すぎて脳が腐りそうです。

っというわけで、環境構築の簡単さはUnityの勝ち!

とっつきやすさ

Cocos2dxは基本的にコードをガリガリ書いてゲームを作ります。コードを書き慣れている人やプログラミングに憧れている人にはぴったりですね。

これに対してUnityでは、GUIで画面やキャラの動きを作りながら、必要に応じてコードを書いていきます。ちょっとした調整もGUIで出来るので直感的で簡単です。ただ、GUIというのは慣れるまでは何がどうなってて、どこをどう触ればいいのかさっぱり分からないものです。ちょっと操作をミスると教本と画面が違ってあれれ〜?という状態になることも。

というわけで、とっつきやすさはどちらが良いとは一概に言えませんが・・・

でもやっぱりUnityの勝ち?

ちなみにCocos2dxでも、何かしらの外部ツールを導入すれば画面設計をGUIで行えます。完全にオープンソースなので、世界中の人が色々なツールを公開していて、それもCocos2dxの強みらしいです。公式ツールのCocos Studioはある日突然消滅したけどね!

機能

Unityはマジで機能が多彩です。多彩すぎてマジでちょっと使いきれませんが、とにかくゲーム作りに必要な機能はなんでも揃っています。

SpritePackerとかAnimatorとかAudioMixerとか、Cocos2dxだと外部ツールとかサービスを探したりお金を払ってソフトを買わないとといけないような機能が標準で使えるので本当に便利です。

なので単純に機能という意味ではUnityの圧勝な感じです。

テストのしやすさ

Unityは標準のEditorがあり得ないほどよくできてて、コードを書きながらサクサクとシミュレータで動かすことが出来ます。コードの動作がすぐに反映されるのでとても楽ちん。

Cocos2dxでは、MacのiPhoneシミュレータとか実機でテストすることになると思います。これはUnity Editorに比べるとちょっと遅いですが、実機でテストをする分には割と高速です。Unityだと、Editor(パソコン)上でテストするのは早いのですが、実機に書き出そうとすると遅いのです。

これは開発のやり方によると思うので、引き分けですね。

マルチプラットフォーム対応の差

正直言ってCocos2dxのマルチプラットフォーム対応はクソ大変です。

っていうか慣れないうちはAndroidでビルドするのに普通に1日かかりました。NDKは一つ前のバージョンを使えとか、javaのAntはこのバージョンじゃないとダメとか、公式ではダウンロードできないから自力で探してこいとかそんなんばっかり。

オマケにビルドできたと思ったら、今度は設定ファイルに1行書かなかったせいで古い機種で動作しないとか・・・

最近ではそうでもないのかもしれないですが、少なくとも1、2年前はそうでした。

少なくともUnityでは、そういう問題には遭遇しませんでした。Android Studioとか起動することすらなく、EditorからポチポチするだけでいきなりAndroidで動作した時はチビリました。

というわけでこれもUnityの勝ちです。

コードの書きやすさ

これは開発環境に依存するので一概には言えないのですが・・・

少なくともUnity標準のIDEであるMonoDevelopは決して悪くないのですが、Xcodeに比べると数段劣ります。

っていうかXcodeに慣れてると辛いです。

補完は弱いし、同じスクリプトを分割して表示できないし、メソッドをcmd押しながらクリックして飛ぶとかできないし・・・。

なのでXcodeで開発するという前提だとCocos2dxの勝ちです。

WindowsではUnityでもCocos2dxでも開発したことないのでなんとも言えません。

製作の効率

UnityはGUIからマウスでカチカチやって作れるのがとても便利ですが、その分コードとGUIの間を行ったり来たりすることになります。

このコードとGUIの間の連携が多少面倒で、問題が起きると行ったり来たりするハメになります。

Cocos2dxは全部コードなので行ったり来たりはありませんが、コードを書き慣れていないとやっぱり大変です。

まぁ、大抵の場合はGUIで見ながら作った方が簡単なんじゃないでしょうか・・・コード書いた方が早いという人もいるとは思いますが。

というわけでUnityの勝ちです。

でもコードをバリバリ書くのも得難い楽しみですよね。

クラウド連携

クラウド連携なんて自分でコード書いてなんとかしろよ!というところなのですが、いちいちAndroidとiOSそれぞれでコードを書き分けるのは無理です。っていうかゲーム本体と関係ないところで頑張りたくない・・・。

私が調べた範囲では、mBaaSでUnityを公式サポートしているサービスはいくつかありますが、Cocos2dxではありません。

そのうち出て来るのかもしれませんが・・・いや、今さら出ないかな・・・?

っというわけでそういうサービスを使う気があるならUnity、自前のサーバで安上がりにするためにコードバリバリ書くぜ!という人はCocos2dxの方がやりやすいのではないでしょうか。

マネタイズの簡単さ

アプリ内課金

Cocos2dxはSDKBOXというツールを使うと、びっくりするぐらいアプリ内課金を簡単に実装できます。アプリ内課金については色々と試してきましたが、複数のプラットフォームに対応しつつ導入が簡単という意味ではSDKBOXほど優れたものはありません(まぁ、ちょっとインストール時にエラーが出たりするけど・・・)。

Unityでも簡単な仕組みがAssetStoreとかにあるのかもしれませんが、ザッと調べた限りでは見つかりませんでした。あとでまた探したいと思います。

広告

最近はAdmobしか使ってないので他のことはよく分かりませんが、Admobの導入は簡単で、UnityもCocos2sxもそれほど差はありません。

UnityはGUIから広告をオンにできる動画広告のUnity adsというのが標準で使えるので、Admobなんか使わねーしという初心者の方はこれを使うのもアリかもしれません。私は動画広告とかウザいと思う派なので使ったことはありませんが超簡単に利用できるらしいです。今度ためしてみようかしら。

先行きの不安感

これがCocos2dxからUnityに乗り換えたメインの理由なのですが、Cocos2dxは今後の先行きがいまいち不透明です。

公式ツールだったはずのCocosStudioはいきなりサイトから姿を消し、代わりにCocos Creatorというツールが出現しました。

このツールは今のところ(2017/02/12)ぜんぜんCocosStudioの代わりになってない上になる気もなさそうで、これまでにCocosStudioで作ってきたゲームはいきなりハシゴを外されて大困惑です。

こういうことをされると超絶不安になって使い続ける気を失ってしまいますね。

Unityは一定の条件を満たしている間は無料とはいえ基本的に有料のツールなので、いきなりこういうハシゴ外しは(たぶん)起きないと思います。起きないといいなぁ。

楽しさ

ゲームを作る楽しさはどちらも同じです。

Cocos2dxの方がコードをガリガリ書く楽しさがあって、Unityは見た目から出来ていくのでパズルでも組んでいるような楽しさがあります。

まぁ、最終的には結局コードはガリガリ書くんですけどね!

結論

これから個人でゲーム作りを始める方なら、

プログラミングやゲーム作りの初心者の人 → Unity
プログラミング経験者でコードをバリバリ書きたい人 → Cocos2dx

という感じでいいのではないでしょうか。っていうか時間があるなら、試しにどっちも使ってみるといいかもしれません。

じぃーまでした。