最高のゲームエンジンはどれか?:MonoGameはあなたに向いているのか
業界に入ったばかりのデベロッパにとって,最高のゲームエンジンを選ぶのは困難な作業だ。ここでは,最も人気のあるゲームエンジンの1つであるMonoGameに関する話題を多く取り上げるので,プロジェクトに適したゲームエンジンかどうかを確認してほしい。
このページですべての主要なゲームエンジンに関するその他の詳細なガイドを読むことができる。
ゲームエンジンとしてのMonoGameの強みは,実際には1つではないことだ。MonoGameは,独自のエンジンを構築できるフレームワークであり,その結果,かなりの優位性を共有し,いくつかの欠点を抱えている。これについては後述したい。
MonoGameはコーダーやプログラマを対象としているが,ゲーム開発者は自分の手を汚して,カスタム構築されたツールを持ちたいと考えている。また,MonoGameはマルチプラットフォーム向けの開発に重点を置いているので,移植業者が選択すべきエンジンだ。
MonoGame は,2013 年に廃止されたMicrosoftの後期ゲーム開発ツールセットであるXNAのアプリケーション プログラミング インターフェイス (API) を実装するオープンソースのC# フレームワークだ。また,すべての .NET 言語をサポートしている。MonoGameは2009年に,モバイルへの移植を容易にするためにXNAコミュニティのメンバーであるose Antonio Leal de Farias氏が作成したプロジェクト「XNA Touch」として開始された。
MicrosoftがXNA のサポートを停止し,MonoGame は引き続きサポートすると発表した。それ以来,Linuxゲーム移植者Ethan Lee氏はまた,FNAと呼ばれるMonoGameから派生したXNAの再実装を作成している.
したがって,XNAは長い間死んで埋葬されてきたが,MonoGameとFNAだけでなく,他の小さなオープンソースフレームワークを通じてまだ生き延びている。
「MonoGameはXNAの終わりまで非常に堅実なソリューションでした」と,Mercenary KingsとFlinthookのデベロッパであるTribute Gamesの共同創設者,Jean-Francois Major氏は語る。「XNA フレームワークは少し古いですが,それに投げ込んだものは何でも処理できました」
MonoGame を採用する開発者は,通常,XNAで作業しており,このエコシステムにとどまるほうが簡単だと思った開発者たちだ。Axiom Vergeの開発者Thomas Happ氏はそうだった。
「2010年にAxiom Vergeを作ることを最初に考えたとき,それは私の余暇のプロジェクトにすぎませんでした。しかし,Microsoftは XNA を使用して Xbox 360 用のゲームを開発することを可能にしており,ゲーム機でリリースしたいと考えていたので,私が重点を置いていたのです。次世代のゲーム機がリリースされる頃には,XNAは放棄されていましたが,MonoGameがその代わりを果たすようになって,PlayStation 4をサポートしていました」
MonoGameは完全に無料で,幅広いプラットフォームをサポートしています:もちろん,PS4,Xbox One,スイッチ,iOS,アンドロイド,PSVita,MacOSとLinux。
MonoGameの利点はなにか
●MonoGameは柔軟で汎用性が高く,カスタマイズ性が高い
「MonoGameはエンジンというよりも便利なC#ライブラリのセットなので,クリエイティブな自由度が高くなります」-Thomas Happ氏
MonoGameの主な強みは柔軟性だ。ゲームエンジンそのものではなくフレームワークなので,開発者は独自のエンジンを書き,ニーズに合ったものを作れる優れた自律性を与えている。「エンジンというよりは便利なC#ライブラリのセットに似ているため,アセットの読み込みや処理などを提供しつつも,クリエイティブな自由度を高めます」と Happ氏は語る。「他のエンジンでは,ユーザーインタフェースの使用法を学び,エンティティを作成し,それらに動作を追加する方法など,特定の種類のパラダイムに押し込まれることが多いです」
「プログラマの場合,(MonoGame)は,独自のエンジンを作成し,あなたが望むようにカスタマイズする能力のほとんどを提供します。これには,変更せずにテクスチャ,サウンド,フォントなどを読み込むために使用できるアセット処理パイプライン全体が含まれていますが,カスタムレベルのデータの読み込みやテキストのローカライズなど,カスタムのものに対して簡単に変更できます」
MonoGameは基本的に,どんなときも手を止めることなく作業できるエコシステムを提供しており,独自のツールを構築することができる。
「私にとっては,エンジンが多機能すぎるのとエンジンが不十分なのの間のちょうどいいところに当たりました」と,Ska Studiosのスタジオ・リード,James Silva氏は語る。「私にとって,エンジンが不十分というのは,空の Visual C++ プロジェクトを開くことを意味し,(私のニーズに対して) エンジンが多機能すぎるというのはUnityまたはUnrealを意味します。MonoGameはC#でコードが書け,いくつかの素敵な基本ゲームフレームワーク機能(コンテンツ処理,スプライト描画,音楽とオーディオ,入力など)を提供してくれます。これは私に必要なすべての出発点となるものです。
「Ska Studiosの過去12年間に,私はXNAと,さらにMonoGame用のコンテンツ作成のための社内ツールを本当にたくさん作ってきました。ですから,たくさんのさまざまなものの中の1つ,そして間違いなく優れているUnityベースのツールを使うという選択肢は存在しますが,私は自分のツールを使いたいですね。私はそれらと共に,まったく快適に成長してきましたので(たぶんスキルも?)。おそらく,Spineはより優れた2Dアニメーションツールです。しかし,私は独自のアニメーションツール(最近はSkellingtonsと呼んでいる)を使って本当に生産性が上がっています。これは2007年に作成して,10年以上にわたって繰り返してきたツールです」
●MonoGameは2D開発に最適
ニーズに合わせて MonoGame をカスタマイズすることもできるが,2D プロジェクトの開発者にはフレームワークをとくに推奨したい。
「MonoGameは,あまりにも多機能なエンジンと不十分なエンジンの間のスイートスポットに当たります"-James Silva氏, Ska Studio
「私の経験では,MonoGameは,エンジンがシンプルで,ツールはカスタムメイドの2Dゲーム開発に最適です」とSilva氏は語る。「私はThe Dishwasher: Dead Samurai,I Made a Game with Zombies in It,The Dishwasher: Vampire Smile, Charlie Murder, and Salt and Sanctuaryを作成するためにXNAとMonoGameを使用してきました。すべてのゲームは,2Dアニメーション,カスタムエンジン,本当に基本的な物理演算,およびいくつかのシンプルなポストプロセスのカスタムシェーダを特徴としています」●MonoGameは,クロスプラットフォームの開発を容易にする
MonoGameはクロスプラットフォーム開発に深く根ざしている ― MonoGameがゲームをモバイルに移植するプロジェクトとしてどのように始まったか覚えているだろうか? また,これはWindows プラットフォームと本質的にリンクしているが,XNAの撤退を超えて進化している。
「我々の物語(MonoGameでの)は,Tributeが設立されたときにさかのぼります」とMajor氏は語る。「当時,ゲーム機でリリースする唯一の確実な賭けは,XNA経由で Xbox Live Indie Gamesを通すものでした。しかし,最初にソニーがPS4でMercenary Kingsをリリースするために我々にアプローチしたとき,我々はそのシステムで動作させるためソリューションが必要でした。必要なマルチプラットフォームのサポートを得るためには,MonoGameに目を向けなければならなかったのです」
MonoGameは,マルチプラットフォームのサポートを提供するだけでない(それも非常に良いものだが),とFlying Oak Gamesの創設者Thomas Altenburger氏は続けている。
「どんなプラットフォームでもターゲットにすることができ,MonoGameで作られたゲームは通常,移植がスムーズです」と,氏は語る。「熟練すれば,本当に『一度書けばどこでも動く』というコードになります。フレームワークのスポンサーであるSickHead Gamesは,MonoGameを新しいプラットフォームに準拠させることにも非常に積極的であり,オープンソース技術と非常に関連性の高い選択肢となっています」
「新しいプラットフォームでは,コンパイラの最適化を利用できるように,すべてが C++ にクロスコンパイルされます」と Happ氏は付け加えた。
●MonoGameはオープンソース
Altenburger氏が触れたばかりだが,MonoGameはオープンソースであり,すでに非常に汎用性の高いエンジンにさらに柔軟性を追加している。「計算されるものを細かく制御できます」と氏は語る。
「MonoGameはあらゆるプラットフォームをターゲットにすることができ,それで作られたゲームは通常,移植がスムーズです」-Thomas Altenburger氏, Flying Oak Games
Happ氏は次のように付け加えた:「"すべてのコードはオープン ソースであるため,思ったような処理でない部分は,コードを変更すればいいのです。一部の企業にロックされていないので,XNAのように消える心配はありません」この時点で,MonoGameチームは会社ではなく,非営利団体であり,寄付に依存するすべてのボランティア組織であることに言及するべきだろう。MonoGameの現在のプロジェクトリーダーは,デベロッパーとポーティングハウスSickhead Gamesの共同創設者である Tom Spilman氏と,Deloitte Digitalのコンサルティングのスペシャリストマネージャーであるベテラン開発者の Steve Williams氏だ。
●C# は,MonoGameをコーダーに最適にし,迅速な反復プロセスを可能にする
MonoGame はコーダーに最適なフレームワークであり,C# を使用すると迅速な反復処理が可能になり,プロジェクトのプロトタイプ作成やプロジェクトの実行が簡単になる。
「C# でのコーディングが好きで,コードだけでタスクにアプローチする方法を正確に知り,人気のあるエンジンのさまざまなプロジェクト フローに対処したくない場合,MonoGame は完璧です」と Silva 氏は語る。「重要なのは,MonoGameも素晴らしい移植性を持っていることです。Unityでの私の経験は非常に限られていますが,重要なクランチ期間中に更新でAsset Storeのアイテムが壊れるというUnityの怖い話を聞いたことがあります」
※この記事に限らないのだが,不思議なことに,追い込み期間中でもエンジンをアップデートしてしまい,ゲームが動かなくなるという話がごく普通に行われている。日本のゲーム開発だと,ほとんどのところが開発を始めたときのエンジンバージョンのまま固定していると思うのだが,そういう管理は行わないのだろうか。なお,更新して動かなくなった場合でも古いバーションのエンジンに戻せば問題はなくなる。
「我々にとって,MonoGameの強みはC#による高速なイテレーションプロセスにあります。非常に軽量であるという事実もプラスです。我々は,これらすべてのシステムの所有者です。何かが正しく実行されない場合,それは我々のせいであり,我々はそれを自分たちで修正する力を持っています。パートナーが問題を解決するのを待ったり,エンジンの欠点を回避する必要はありません」
●Unityのおかげで,C# プログラマは簡単に見つかる
C# は一般的なプログラミング言語であるため,MonoGame を使用してゲームを作成いているのなら,雇用は非常に簡単だ。―この点はUnityに感謝すべきだろう。
「C#プログラマは Unity の人気のおかげで簡単に見つかります。MonoGame への移行を恐れるべきではありません」とMajor 氏は語る。「MonoGameプロジェクトをサポートするポートハウスも数多くあります」
MonoGameの欠点はなにか
●MonoGameは3Dで苦労する
前のセクションを読んでいれば,MonoGame の弱点のいくつかは明らかである。まず第一に,それは3Dをうまく処理していないということだ ― それはできないという意味ではないが,あなたのプロジェクトが3Dである場合は,おそらくMonoGameの代わりにUnrealかUnity,またはCryEngineを調べるべきだ。
「シーンエディタが付属していないため,MonoGameで3Dゲームを作るには,より多くの知識とシーンの合成とレンダリングに深く取り組む意思が必要です」とAltenburger氏は語る。「2D API は XNA で成功を収めたものであり,MonoGameは非常に簡単に使えます」
「MonoGameの主な欠点は,あなたが取り組んでいるプラットフォームに抽象化レイヤーしか取得できないことです」-Jean-Francois Major氏, Tribute Games
●MonoGameの機能は必要最低限だ最初のプロジェクトの開始を検討していて,経験があまりない場合は,MonoGame は実際にはエンジンとして機能しない可能性が高い。C# を最低限に理解していれば問題ない場合は,問題を把握できるが,しかしそうではない場合でプロジェクトが 2D に入っていない場合は,GameMakerが適している可能性が高い。MonoGameは多くの制作物を必要とする。
「それは非常にベアボーン(必要最低限)です。 ― 開発者は,ツールを構築したり,ほかのソースからデータをインポートする方法を追加したり,独自の衝突システムを作成する必要があります」と,Major氏は語る。「MonoGameの主な欠点は,作業中のプラットフォームに抽象化のレイヤーしか取得できないことです。ツールやあらかじめ構築されたゲーム コンポーネントがありません。これは,始めたばかりの人にとって大きな困難であり,最初のプロジェクトで立ち上げプロセスを遅らせるかもしれません」
「自分でプログラムができる人に向いているのは間違いなく大きいです。WYSIWYG(表示されるものが得るもの) やグラフィカルなエディタはありません, 物理演算やアニメーションコンポーネントは組み込まれていません。あなたは自分で作るか,それを行うライブラリを見つける必要があります。また,マネージド言語であるため,C++ を使用するエンジンよりもハードウェアやメモリと直接やり取りする必要がある場合は,より複雑になります」
●MonoGameにはドキュメントとサポートがない
MonoGameは,ほぼ7年前に引退したXNAをルーツとしているので,オンラインリソースが不足している。MonoGame開発者の小さいながらも強力なオンラインコミュニティはあるが(詳細は以下を参照),公式リソースはほとんどない。
「(MonoGameの欠点は)ドキュメントの欠如と,ターゲットオーディエンスのほとんどが元XNA開発者であるという事実です」と,Altenburger氏は語る。「すでに知っている人は,一般的に非常に熟練しており,コミュニティのインタラクションやドキュメントを必要としません」
「ほとんどのチュートリアルとドキュメントは,XNA時代(ホストのWebサイトが期限切れでないことを示す)から約10年前のもので,フレームワーク上で最近行われた素晴らしい作業を最新の状態にしていません。MonoGameの専門家もほとんど知られていません。彼らは10年にわたる実践を通じてドキュメントレスで作業するので,それほど多くの知識を広めないのです」
「ほとんどのチュートリアルとドキュメントは,XNA時代の約10年前のものです」-Thomas Altenburger氏, Flying Oak Games
このページにはドキュメントがあるが,公式なサポートは期待できない。すでに触れたように,MonoGameはすべてボランティアで,100%無料のプロジェクトなので,アセットストアや開発者の質問に答える公式の企業サービスは存在しない。―パブリッシャやプラットフォームホルダーを通じてプロジェクトリーダーの誰かと接触しない限りは。「私には(サポートは)基本的に信じられないほどでしたが,これはソニーが最初からSickhead Gamesのクリエイター,Tom Spilmanのところに行ったことが大きいと思います」とHapp氏は語る。「普通の人はオンラインフォーラムにもっと頼らなくてはならないでしょう。有料のエンジンやサービスではないので,カスタマーサポートはありません。それを理解する必要があります」
●経験豊富なMonoGame開発者を見つけるのは困難
Happ氏は,経験豊富な MonoGame 開発者を採用することは,基本的に C# コーダーを見つけるのと同じくらい簡単だと考えているようだが,インタビューを受けた人の中には,実際にはそれほど簡単ではないと考えている人もいる。
「大変,かなり大変です」とAltenburger氏は採用について語る。「Real MonoGameのエキスパートはまれになってきています。移植サポートが必要な場合は,世界中の一握りの企業に手中することになるでしょう。しかし,C# 開発者であれば技術的には安心できるはずです」
●MonoGameの柔軟性を発揮させるためには時間と労力が必要
回答者の意見が食い違ったもう1つのトピックは,MonoGameで何かを動かすのにどれだけ早くできるかかという質問だ。Major氏は先ほど高速なイテレーションプロセスを賞賛したが,Tea for TwoのプログラマGarry Williams氏はMonoGameが速くないと主張している。だからスタジオはSnowtopiaでUnityに切り替えた。
「(MonoGameは)素早く物事を行うのは得意ではありません」と氏は語る。「小さなプロジェクトで,自分のコードベースを読むのに時間を費やしていないのであれば,Unityを使うほうが簡単です。我々は実際にMonoGameで(Snowtopiaを)開始しました。一般的に言って,私はMonoGameが好きです。それはより細かく管理ができ柔軟だからです。しかし,3Dのゲームでは,レンダリングエンジンとマテリアルシステムを持つことがすべてを容易にするため,Unityに切り替えました。― それは3Dで何かを行うときに追加される複雑さをすべて処理してくれます」
そして,いくつかの側面から,Unityはより良い選択肢であると考えているのは彼だけではなかった。
「私はUnityをいじっていて,ブルームや色収差などのポストエフェクトを短時間で加えることができました」とSilva氏。「私が作ったさまざまなMonoGameのゲームエンジンでは,そのようなものを追加しようとすると,常にちょっとした再構築が必要になる要素が含まれています。それはすべてを壊す恐れがあるものです」
新しいMonoGameユーザーへのアドバイス
●コミュニティに頼る
「コミュニティは素晴らしいです ― 技術を前進させたい人でいっぱいです」-Thomas Altenburger氏, Flying Oak Game
新しいエンジンを始める最善のアプローチについて話し合うときは,いつも,出てくるアドバイスのほとんどが,コミュニティをうまく利用することに関するものになる。MonoGameは,公式フォーラムと小さいながらもかなりアクティブなDiscordサーバーを持っている。
「(コミュニティは)技術を前進させたい人たち,知識を共有することについてかなりオープンな優れた開発者でいっぱいです」とAltenburger氏は語る。「XNA時代から技術を使用している非常に熟練したスタジオとの非常にクールな相互関係があります」
Major氏は,MonoGameスポンサー Sickhead GamesとFNAクリエイターEthan Lee氏は,XNA開発者のための「神の使い」であり,長年にわたって非常に有用で親しみやすくなっていると付け加えている。
「コミュニティはおそらくUnityのコミュニティよりもはるかに小さいですが,非常に活発です」と,Silva氏は語る。「MonoGameではあまり苦労していませんが,どんな問題でも何らかの形でコミュニティを通じて問題をすぐに解決することができます」
●Web検索をMonoGameに限定しない
MonoGameはXNAのさまざまな進化形の1つにすぎないので,困難に直面したときには,視野を少し広げてみると,より多くの幸運が得られるかもしれない。
「ヘルプやチュートリアルを探しているときは,XNA,FNA,またはMonoGameの結果を必ず確認してください」と Major氏は語る。「これらすべてが,XNA がかつて行ったのと同じ動作を実現するはずです。ですから,得られる結果の量が広がります」
Happ氏は,実際にゲームエンジンを検討する際に,MonoGameだけではなくFNA自体も調べるようにアドバイスする。
「FNAはMonoGameの以前のブランチに基づいていますが,Windows,Mac,Linux用に単一のバイナリを使用するという考えで設計されています」と氏は説明している。
●期待しすぎない。MonoGameは初心者向けではない
MonoGameを使用する場合は,何を取り入れようとしているのかを十分に認識する必要がある。我々のインタビューイが長々と議論したように,MonoGameは厳密にはゲームエンジンではないので,それがゲームエンジンのように動作することを期待してはいけない。
「本格的なエディタを期待してはいけません,MonoGameは主にクロスプラットフォームにするために,低レベルのものを抽象化するものです」と,Altenburger氏は語る。「エンジンとツールを作るのは,実際にはあなた自身です。MonoGameは通常,2Dゲームの細かい制御と優れた移植性を望む人々に最適です」
MonoGameが自分のためのものではないことに気付いたかもしれないが,Happ氏は「C++やC#の経験豊富なプログラマであれば,MonoGameで多くの時間とエネルギーを節約できます。しかし,初心者は,Unityのようなものから始めるほうが簡単かもしれません」と語る。
Silva氏は,「複雑なエンジンを扱うよりもコーディングが好きで,2Dゲームの作成に着手しているなら,MonoGameは試してみる価値があります」とまとめた。
すべての主要なゲームエンジンに関する詳細なガイドは,ゲームに最適なテクノロジーを見つけるのに役立つ― このページは定期的に更新され,新しいエンジンがリストに追加される予定だ。あなたが最も人気のあるゲームエンジンを見ている場合は,すぐに我々のUnityガイドにジャンプするか,ここでUnreal Engineの詳細を読むことができる。
※本記事はGamesIndustry.bizとのライセンス契約のもとで翻訳されています(元記事はこちら)