UnityとCocos2d-xを比較 開発環境で割と本気で悩んだ話
UnityとCocos2d-x、どちらで開発する?
マルチプラットフォームな開発環境としてよく話題に上がるUnityとCocos2d-xですが、両方ともガチで使ったことのある人というのはあまりいないと思います。
実のところ私も2014年の夏に「作るのは2Dゲームだし、Cocos2d-xにしよう!」と決めてからはCocos2d-x一辺倒で、Unityを真面目に触ってみたことはありませんでした。
ただ、諸々の事情で次回作からは使い慣れたCocos2d-xから離れUnityで開発を進めることを決めたので、今回はその辺りの話を少ししたいと思います。
またUnityとCocos2d-xを両方使ってみて何となく分かったこともあるので、それもついでに比較してみたいと思います。
なぜCocos2d-xからUnityに移行したのか?
2015年はUnity元年?
今まさにどちらの開発環境にしようか迷っている人や、現在進行形でCocos2d-xを使っている人には興味深いポイントだと思います。
そもそも、私がCocos2d-xの開発環境を作った2014年当時は、UnityとCocos2d-xはどちらも同じぐらいの人気と知名度があったんですよね。
3Dゲームを作るならUnity、2DゲームならCocos2d-x、というような感じで住み分けもできていたように思えます。
なので当時は「うーん、どちらにしようか・・・」と様々なUnityとCocos2d-xとの比較記事を読み漁った記憶があります。
それが2015年の半ば頃から何だか2D/3Dを問わずUnityを使う人が多くなってきて、2015年末頃には世間はすでにUnity一色とも言える状況だったんです。
つまり、2015年はUnityが流行になったんですね。
ただもちろん、それだけでは使い慣れた開発環境を手放す理由にはなりません。
私がCocos2d-xからUnityに心変わりした原因、それは最新のCocos2d-xの開発環境を整えようとした時に起こりました。
GoogleがEclipseへのADTサポートの終了を発表
ご存知の方も多いとは思いますが、これまではAndroidアプリを開発する際にはEclipseという開発環境を用意するのが定番でした。
そしてGoogleもそのためにEclipse向けのADT(Android Developer Tools)を提供していました。
しかし、あろうことかGoogleはAndroidの開発環境をEclipseから自社製品の「Android Studio」に移行させるため、EclipseへのADTのサポートを2015年末に終了すると発表したのですね。
つまり、今後はAndroidの開発にはAndroid Studioを使わなければならなくなった訳です。
これがまず前提です。
話はCocos2d-xの方に変わって、Cocos2d-xでの開発もこれまでは上述のEclipseの開発環境にちょこちょこっと手を加えるだけで行えていました。
最初の環境構築にこそ若干手間がかかりますが、それさえ済めば後は普通のAndroidアプリを開発するように、Eclipse上でコーディングからビルド、リリース用のapk作成まで全てできていたんです。
ほぼほぼオールインワンな統合開発環境だった訳ですね。これは大変便利なものでした。
しかし、2016年以降は上述したようにADTのサポートが見込めないため、Cocos2d-xの環境もAndroid Studio上に組まなければならなくなりました。
ここで事件が起こります。
なんとこの記事を書いている2016年1月時点では、Cocos2d-x用のC++ソースのコーディングをAndroid Studio上では行えないのです。
Android StudioがCocos2d-x用のC++ソースをプロジェクトとして認識してくれないのですね。
なのでC++のコーディングをしようと思ったなら、EclipseかVisual Studioあたりを別途立ち上げる必要があるという訳の分からないことになってしまいました。
さらに、これまではC++ソースを変更した場合もEclipseの実行ボタン1つで全てビルドしてくれていたのですが、Android Studioではそれができません。
なぜなら、C++ソースを同一のプロジェクトとして認識していないからです。
そのためC++ソースを変更したら、その都度ビルドコマンドを叩かなければならなくなりました。
オールインワンな開発環境だったEclipseと比べると、随分と不格好な形になったなあという印象が強いです。
つまり、どういうこと?
話をまとめるとこんな感じです。
- これまではEclipseというそこそこ優れたツールのおかげでほぼオールインワンな統合開発環境を構築できていた。
- けれど、今後はそれが見込めず、しかも物凄い使いづらいストレスの溜まる環境しか構築できそうになかった。
- だからCocos2d-xからUnityに移行しようと思った。
話が長い3行で、ってやつですね(笑)
UnityとCocos2d-x、両方触ってみての比較と感想
という訳で、遅ればせながら2016年の新春に私にもUnity元年がやって来た訳ですが、両方触ってみて初めて分かることもあるものですね。
それを参考までに書いておきたいと思います。
Unityの使用感
プログラミングというよりも、色んな形の積み木を好きなように組み立てて行くような感触があった。
なので、コーディングなんてほとんどしたことが無いプログラミング初心者でも頑張ればアプリが作れちゃうだろうな、と思った。多分ここが2015年にUnityが流行った理由の1つかも。
逆に経験の長いプログラマーにはUnityは異世界のプログラムを組んでいるように思えて、もしかしたら取っ付きにくいかもしれない。
そういう人はUnity向けの設計技法(というか考え方?)を頭の中に新しく作る必要がありそう。
Cocos2d-xの使用感
Cocos Studioのようなグラフィック/アニメーションの支援ツールなどもあるが、基本的にはC++ソースをガリガリ書いていくのが開発の主体となる感じ。
コーディング楽しい!コーディング最高!そんな感じ。
なので、業務での開発のようにきちんと詳細設計まで行える人、1~2万行を脳みその中に詰め込んでコーディングできる人には、とても使いやすい(というか馴染みのある)開発環境かもしれない。
またAndroidアプリをEclipse+Javaで書いていた人なら、多分難なく入り込めると思う。
その他のざっくりとした比較
Unityの最大の特徴は物理エンジンや衝突判定みたいな面倒臭い処理をワンクリックで追加できる点だと思う。
Cocos2d-xでそれをやろうと思ったらやはりソースコードをいじらなきゃいけないけれど、UnityはGUI上でさらりとできる。簡単過ぎて怖いぐらいに。
その他、画像リソースの配置なんかもGUI上で大体できちゃう。これはCocos2d-xでは得られない快感。
ただ、GUIの使い方が分からないと手も足も出ないので、そういう意味では根っからのプログラマーには辛いかも?
対してCocos2d-xで作ったアプリは、Unityと比べてスマホに載せた時にサクサク動く。とても軽い。
またiOS/Androidとの距離が近いのもCocos2d-xの特徴かもしれない。
iOSの場合はObjective-CとC++を混ぜて書くこともできるし、Androidの場合はJNIを経由してJava側のリソースにアクセスすることも可能。
つまり、結構変態的な実装もやろうと思えばやれる辺りがCocos2d-xの魅力。使う機会があるかは別として。
書いていて思った、やっぱりUnityが良いかもしれない
とまあ、ここまでだらだらと書いていて改めて思ったのですが、これから始めるならやはりUnityが良いかもしれないですね。
上手く言えないのですが、何と言うかUnityには未来がありそうな雰囲気がします。
3Dゲームも2Dゲームも作れますし、非プログラマーでも気軽に参入できそうなハードルの低さも正直スゴイなと思います。
個人的には一応業務でプログラミングを行っていた側の人間なのでCocos2d-xの環境はとても居心地が良く、ワクワク感もあったのですが、上で書いたように周りの環境の変化に左右されまくりな現状を見る限り先は無さそうだな・・・と思います。
Cocos2d-xが悪いと言っているのではなく、単純に運が無かったのかな、と。
残念ですが、こうやって淘汰されて行くのもまた技術の進歩には必要なのかもしれませんね。(と無理矢理〆てみる、笑)
補足
念のため断っておきますが、本記事はUnityはおろかCocos2d-xさえ100%使いこなしていない人間の戯れ言です。
記事の内容に嘘偽りはありませんが、調査不足な点や勘違いしている点などがもしかしたらあるかもしれません。
ですので、内容をけして鵜呑みになさらないようご注意ください。よろしくお願い致します。m(_ _)m
最近のコメント