UnityとCocos Creatorの比較:ゲーム開発環境 3DならUnity 2DはCocos
【結論】迷ったらUnity。
2Dゲームなら、軽量で必要十分なCocos Creatorもおすすめ。
特に、ブラウザゲームの処理の軽さを重視するなら、Cocos Creatorのほうが上。
【はじめに】
両方を実際に使っている筆者が比較してみた。
片方を扱えるなら、もう片方も問題なく扱えるはず。
というより、Cocos Creatorは明らかにUnityを意識してつくられたと思われる。
UnityとCocos Creatorの共通点:長所・短所
エディタ依存
基本的に、公式が用意している専用のIDEを使わないと開発できない。
フルスクラッチ(すべてソースコードを直接書くこと)は難しいということ。
設計がすべてコンポーネントベース
すべてコンポーネントを追加・取得する形でコーディングしていく。
コンポーネントに依存しない書き方・実装の仕方はできない。
普通にクラスのインスタンスをコンストラクタで生成し、そのプロパティをいじっていくというオーソドックスなプログラミングに慣れていると、戸惑う部分も。
欠点は、どうしても周りくどく感じてしまうところ。
何をするにしても、コンポーネントを意識するしかない。
例:Cocos Creatorの場合(スプライトの生成と取得)
let node = new Node(); node.addComponent(cc.Sprite); let sprite = node.getComponent(cc.Sprite);
処理の順番がわかりづらい
特に、初期化時のそれが非常にわかりづらい。
コンポーネントの生成にしても、開発者にわかるのはそれが生成して準備が完了したタイミング(onLoad)であって、インスタンスが生成された=コンストラクタが実行完了したタイミングはわからない。
このコンポーネントベースであることも、エディタ依存の傾向を強めている。
ガベージコレクタ依存
メモリ管理が自分ではできない。
そもそも言語がガベージコレクタの使用を前提とするC#とJavaScriptなので、基本的にどうしようもない。
ネイティブコードを使えない
ストレートには使えない。
高速化には限界があるということ。
ただし、部分的に使用する方法もある(a[href=#native]{くわしくはこちら})。
OSネイティブの機能を呼び出しづらい
やってやれないことはないが、面倒でわかりづらい。
この節のまとめ
上記のとおり、2つの開発環境はよく似ている。
特に2Dに関しては、ほとんど好み次第。
基本(傾向)
Unity
よく「初心者向け」と言われるが、独特の部分も多く、とっつきにくい印象もある。
エディタのUIを使ってビジュアル的に各種設定ができるので、「プログラミングの頻度を減らす」ことはできるが、けっして大幅にわかりやすくなっているわけでも、楽ができるわけでもない。
むしろ、使いこなすまでに覚えなければならないことが多々あり、プログラミングやゲーム開発の初心者にはなかなか厳しい面も。
一般には初心者向けの印象があるが、実際には全体として意外とプログラマ=玄人向けの部分も多い。
「デザイナーでも使える」という意見が散見されるが、プログラミングの基本をわかっていなければ使いこなすことは難しいだろう。
そもそもC#という“お硬い”静的型付け言語を使いこなせなければならず、今のUnityはスクリプト言語に対応していないので、非プログラマにはやや難しい印象だ。
Cocos Creator
APIもシステムもシンプルなので、意外とわかりやすい。
日本語情報が圧倒的に足りていないことが残念。
そこさえクリアできれば、意外と初心者向け。
JavaScriptベースなので、普段Web関連の開発・デザインを手がけている人でも入りやすい。
システム
Unity
「なんでもアセット」という印象。
シンプルな機能でも自分でアセット(外部ライブラリ)を追加していく形。
使わない機能が原因の不具合やアップデートに悩まされずにすむので、無駄のないやり方ともいえるが、面倒といえば面倒。
Cocos Creator
2D向けの基本的な機能は、公式APIに初めから用意されている「オールインワン」タイプ。
だからといって、APIが冗長になっている印象はない(基本的に2Dゲーム向けのライブラリでシンプルなため)。
ライセンス(ソースコード)
Unity
プロプライエタリ(クローズドソース)。
一部C#部分のソースコードが公開されているが、それは単に「公開」されているだけで、オープンソースというわけではけっしてない。
企業向けにソースコードを公開するプランもあるが、公式いわく「非常に高価な選択」とのこと。
Cocos Creator
完全オープンソース(MITライセンス)。
以前のCocos2d-x向けのエディタ「Cocos Studio」はクローズドソースだったが、現在はエディタもオープンソースとなっている。
すべて公開されているので、もしものときに安心。
コミュニティでの開発・議論も活発に行われている。
前身のCocos2dの時代を含めるとすでに10年以上の実績があり、少なくともすぐに消えてなくなるようなことはないだろう。
開発母体・運営母体
Unity
Unity Technologies社。
元々はデンマークの企業だが、現在は米国を拠点にしている。
Cocos Creator
オープンソースだが、Chukong Technologies社が中心となって開発を進めている。
中国企業なので、どうしても著作権など知的財産権がらみのことがやや気になるが、これまでに問題が発生したことは特にない。
料金
Unity
基本有料(サブスクリプション月額4400円~16500円)。
ただし、直近12か月間の収益が10万ドル以下ならば、Personal版を無料で利用できる。
大半の法人はこの基準を軽く超えてしまうので、「基本的には有料」と考えたほうがいい。
ただし、タイトルごとの契約ではなく単なる使用期間の課金なので、もう開発に使わないのにライセンス料を取られつづけるということはない。
なお、Unity Technologies社は2020年1月に、各料金を14~20%一気に値上げした。
市場で支配的な地位にある企業ならではの値上げの仕方だ。
今後も、このようなことが定期的に起こるものと考えられる。
Cocos Creator
エンジンやエディタなど、基本的な部分はオープンソースなので完全無料。
ただし、プレイデータ解析やSound networkなどのSDKは一部有料となっている。
開発・運営元のChukong Technologiesによるサポートも、もちろん有料。
昔と比べて、だんだんと有料の部分が増えてきた気がする。
プログラミング言語
Unity
C#(Monoベース)。
ただし、かならずしも最新のバージョンに対応しているわけではない。
以前はカスタムしたJavaScriptや独自のスクリプト言語「BooScript」にも対応していたが、現在はC#に一本化された。
Cocos Creator
JavaScript・TypeScript両対応。
TypeScriptはそもそもJavaScriptのスーパーセットなので、事実上JavaScriptオンリー。
以前は、CoffeeScriptにも対応していたが、どこかのタイミングで削除された(らしい)。
ネイティブコード対応
Unity
基本的には非対応。
ただし、C#(Mono/.Net)の機能を使って、DLLやSOを呼び出すことができる。
実際にそういったアセットも公開されている(SQLiteなど)。
そのため、処理の負荷が高い部分のみC++でDLL/SOをつくり、それをUnity側で使うという方法もある。
が、Unity自体がネイティブコードに対応しているわけではけっしてないので注意。
特にクロスプラットフォームで開発する場合は、けっこう面倒なことになる。
Unity Technologies社からソースコードを公開するライセンスを取得し、エンジンのネイティブコード部分を直接いじる方法もあるにはあるが、上記のとおり非常に高額になってしまうので現実的ではない。
Cocos Creator
基本機能ではどうしようもない。
つまり、高速化にはかなり限界があるということ。
以前、Cocos2d-xのC++側でCocos Creatorのシーンファイルを読み込むライブラリが公開されたが、残念ながらとっくの昔に開発は止まっている。
エンジンもオープンソースなので、自分でエンジン周りをいじればできないこともない。
自前のクラスをC++で書いてエンジンに組み込んで自分でコンパイルし、Cocos Creator側のJavaScriptから呼び出せるようにV8エンジンに登録する、など。
ただし、Cocos Creatorはけっこう更新が早いので、後々どんな不具合が出るかは未知数。
そうはいってもCocos Creator自体、ベースがCocos2d-xがなので、単独のCocos2d-x C++への移植は他の環境への移行に比べれば、それにかかるコストはまだましなほうだろう。
API
Unity
特別、わかりやすいわけでもわかりづらいわけでもない。
オーソドックスともいえる。
コールバックを指定するイベントドリブン的な仕組みは多くなく、昔ながらのUpdate()ループでいろいろな処理をする形。
典型的なのは、タッチ処理やキーボード入力の検知。
void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved)
{
Vector2 pos = touch.position;
}
}
}
[/c#]
イベントドリブン全盛の現在からすると古くさい感じもするが、ゲーム開発の場合、このほうが開発・保守がしやすい場合もある。
ただ、JavaScriptでブラウザゲームなどを開発してきた人にとっては、やや面倒に感じるかも。
Cocos Creator
JavaScriptのライブラリでよくあるタイプのシンプルな設計。
仕組み自体で戸惑うことはまずないだろう。
前身のCocos2d・Cocos2d-xの時代からそうだが、FlashのActionScript 3.0の影響を受けていると思われる。
HTML・CSSのデザイナーやかつてのFlasherにとっては、APIも比較的理解しやすい。
JavaScriptなので、基本的にすべてイベントドリブン。
わかりやすいが、実はキーやボタンの同時押しのときに同期させづらいという問題も。
(他のキーが押された情報をどこかで保持しておくしかない)
日本語対応
Unity
エンジン、エディタ、ドキュメント、いずれもきちんと日本語化されている。
ただし、エディタはデフォルトでは日本語が用意されていないので、自分でPOファイルと呼ばれる言語ファイルをダウンロードして適用する必要がある。
また、ドキュメントの一部は日本語化されていない。
日本法人があるので、日本語でのサポートも受けられる。
残念ながら、公式フォーラムは英語のみ。
Cocos Creator
すべて英語と中国語が用意されているのみ。
おそらく、Chukong Technologies社の有償サポートも同様だと思われる。
ドキュメント
Unity
基本的に日本語化され、各機能の細かい説明やチュートリアル、動画もある。
ただ、APIリファレンスが使いづらい・読みづらい。
ここは、Unity関連サービスの欠点だと思う。
大半の人は昔からあるdoxygen的なもの期待していると思うが、むしろ通常の文章のページと似たような感じ。
個人的には、各クラスやメソッドにアクセスしづらい印象がある。
Cocos Creator
必要最低限のものしかない。
APIがシンプルなのでそれで十分ともいえるが、物足りなさも。
APIリファレンスはオーソドックスなものなので、誰にとってもわかりやすいはず。
情報量
日本語での情報に関しては、圧倒的に差がある。
Unity
チュートリアルからtipsまで大量に存在。
各社が提供する有償レッスン(スクール)も豊富。
Cocos Creator
はっきり言って、全然足りない。
英語の情報すら乏しい場合もあり、ときには中国語サイトを見るしかないことも。
こればっかりは、すぐにはどうしようもないだろう。
エンジンの対応環境(プラットフォーム)
Unity
PCからスマートフォン、コンソール(ゲーム機)まで、現在ゲームを動かす環境として考えられる大半のプラットフォームには対応している。
ここも、Unityのすごいところ。
Cocos Creator
現在、Windows、Mac、Linuxといったデスクトップマシンと、Android、iOSのスマートフォンに対応。
ゲーム機に対応していないのは残念だが、これで十分な場合も多い。
エディタ
Unity
めちゃくちゃ重いというわけではないが気になるレベル。
動作がまったりしているのを嫌う人も多い。
だが、Unityもエディタ依存なので嫌でも使わざるをえない。
少しでも軽くするためのハック・tipsが数多く公開されているので、気になる人は試してみよう。
Cocos Creator
軽量。
エディタ自体、Node.jsベースでオープンソースのElectron(node-webkitベース)を使っているのでわかりやすく、カスタマイズしやすい。
エンジンの処理速度:軽量か
Unity
エディタと同じく、めちゃくちゃ重いというわけではないが気になるレベル。
軽さ重視のプロジェクトの場合、そこが嫌がられることもある。
特にWeb版(ブラウザゲーム)では顕著で、スマートフォン環境だとさらに厳しい面も。
Cocos Creator
軽量。
Web版もけっこう軽いので、ここはUnityに勝る部分。
Cocos Creatorは初めからWebを意識してつくられたエンジンなので、安定して動作する。
外部アセット・ライブラリ
Unity
非常に豊富。
中にはフレームワークと呼ばれる完成品に近いサンプルゲームのようなアセットもあり、レベルエディタが搭載されていて簡単に基本的な開発を進められる。
Unityでの開発が速いと思われているのは、おそらくこうしたアセットを駆使すればすぐにプロトタイプをつくれるためだろう。
ただ、有料のものが多く、何をするにしても結局カネがかかる。
たとえばTiled Map Editor形式のファイルを読み込むのに使えるアセットの中で、まともに機能するのは有料のものだけ。
(Cocos Creatorは標準で対応している)
法人の場合、気になるような額ではないものが大半だが、個人開発者にとっては敬遠したくなる場合も。
Cocos Creator
人気のエディタTiled Map EditorやSpine、Texture Packerなどの形式に標準で対応している。
今や利用者数1位となったプログラミング言語、JavaScriptのライブラリがそのまま使えることも大きい(Node.jsのものなど)。
ただし、純粋にCocos Creator向けのものは少なく、開発の方針からしても今後も期待できそうにない。
3Dエンジン
Unity
比べるべくもない。
Unityのほうが圧倒的に上。
Cocos Creator
昔に比べればはるかによくなった・機能が豊富になったが、まだまだこれからの印象。
そもそもエンジン自体が安定していない。
開発方針・ロードマップ
Unity
比較的明確。
次々と新機能が追加されている。
ただ、ときどき互換性が失われるアップデートがあるのが気になるか。
Cocos Creator
具体的なロードマップはほとんど示されておらず、いつも行きあたりばったりの印象。
突然の仕様変更もたびたびある(腹立たしいほど)。
ひどいときには、変更箇所がきちんと公開されないことさえある。
(オープンソースだから「自分でgitを見ろ」ということだろうか)
以前からロードマップをちゃんと示してほしいというユーザーからの要望はあるのだが、開発側は対応するつもりはないらしい。
それはともかく、開発そのものは順調なようだ。
が、Unityと比べるとやや進捗が遅い印象も。
Web対応
Unity
エンジン自体が重厚長大なので、基本的に重くなってしまう。
スマートフォンでは厳しく、プレイヤー端末が比較的ハイスペックでないとパソコンでも厳しいことがある。
また、メモリを多く食う。
4GB程度は当たり前、場合によっては6GB以上必要になることもあると覚悟しておこう。
個人的な印象だが、カジュアルゲームでもやや重く、Unity製のブラウザゲームは敬遠されがち。
* ちなみに、Adobe Flash Player的な「Unity Web Player」の開発・提供はすでに終了している。
Cocos Creator
以前から基本的にWebを強く意識しており、JavaScriptベースだけあってよく動き、うまく対応している印象。
比較的軽いのが売り。
採用事例
Unity
2Dでも3Dでも、個人から大手まで枚挙にいとまがない。
ポケモンGOなど。
Cocos Creator
中国製ゲームでは採用実績は多いが、欧米や日本ではそうでもないようだ。
しかもその大半が2Dで、3Dに関してはまだ発展途上ということもあり、ほとんど聞かない。
ただ、大手のスクウェアエニックスが2020年にリリースした2Dゲーム「インペリアルサガ・エクリプス」が、そのライセンス表記からCocos Creatorを利用していることが判明。
出来のいい人気ゲームなので、正直驚きがあった。
これまで、やや中途半端な印象があったCocos Creatorだが、そのポテンシャルは上がっているようだ。
総括
以前はなんでもUnityという感じだったが、現在では国内の法人でもCocos Creatorの採用が増えてきた。
特にインペリアルサガ・エクリプスの出来の良さはCocos Creatorのポテンシャルの高さを示している。
カジュアルな2Dゲームなら、Cocos Creatorで十分という印象。
やはり、オープンソースというのは大きい。
ただ現在は、環境に応じてライブラリを使い分けることが増えているようだ。
かならずしも常にクロスプラットフォームを考える必要はなく、特定の環境に特化するなら、UnityやCocos Creatorといった汎用ライブラリにこだわる必然性はなく、たとえばWebはThree.jsやPlayCanvasなどを使ったほうがいい場合もあるだろう。