React、Unity、Godot、Construct、Game Maker、Phaserで同じ2Dゲームのプロトタイプを作成しようとしました。これが私が見つけたものです。

私は卓上ゲーム開発者です。新しいカードゲームを設計する際に、シミュレーションを実行し、概念実証を共同作業者と簡単に共有できるように、デジタルプロトタイプを作成することにしました。

私はJavaScriptとC#のバックグラウンドを持っており、多くの人がそうしているように着手しました。「どのフレームワークを使用すべきか」スレッドに途方もない時間を費やし、実際には何も作成せずにドキュメントを読むことです。

何ヶ月も前にフラッシュフォワードし、React、Unity、Godot、Construct 3、Game Maker Studio 2、Phaser 3で作業する(そして取り組む)ことに多くの時間を費やして、何がそれらを動かしているのかを理解しようとしています。

確かに、私は自分の小さなゲームを作るのに必要以上にそれぞれに多くの時間を費やしたと思います。おそらく最初のゲームに固執して、プロトタイプを失敗させた可能性があります。以下の情報が、エンジンやフレームワークを探し回っている他の人の役に立つことを願っています。

注意点:私は、あるエンジンまたはフレームワークを他のフレームワークよりも売ろうとはしていません。また、これらのフレームワークの1つまたはいずれかが他のフレームワークよりもうまく機能することを示唆していません。価格設定、バックエンド機能、またはプラットフォームの展開も比較していません。したがって、要件によっては、以下の情報の価値が異なる場合があります。

また、この体験は2Dカードゲームの開発に基づいているため、3Dエンジンや物理学などについては説明しません。

TL; DRの一番下までスキップすることもできます。

プロトタイプ

私のゲーム、Entromancy:Hacker Battlesは、TCG-lightメカニズムを備えた競争力のあるサイバーパンクカードゲームです。あなたは私たちのウェブサイトでもっと読むか、それがこのビデオでどのように再生されることを意味するかを見ることができます。ただし、カードゲームとしては、状態管理、UI、ドラッグアンドドロップUX、マルチプレーヤーを実装するためのバックエンドフックなどの基本的な機能をサポートする潜在的なデジタルフレームワークが必要であると言えば十分です。

これらの要件を考慮して、次のフレームワークとエンジンを調べて、実際にゲームを作成するのではなく、どれがゲームの作成に最も適しているかを確認しました(フレームワークに落ち着いたので、私はもっ​​と進歩しています)。

ここからプレイ可能なバージョンにアクセスできます。ゲームはライブプロトタイプが示唆するよりも進んでいますが、このバージョンはかなり安定しています(少なくともChromeでは)。

React

私が設計した卓上RPG用にReactでキャラクタージェネレーターのプロトタイプをすでに作成しているので、自然なステップは、フレームワークにカードゲームのスピンを与えることだと思いました。私は(それが反応するものだ状態管理が風であることが判明しない悪夢であることが証明されたカードのためのシンプルなドラッグアンドドロップ機能を実装するのに対し、すべての後、)。

基本的なドラッグアンドドロップ(React DnDなど)に役立つライブラリがいくつかありますが、ハッカーバトルはどのカードができるかについて非常に具体的であるため、カードゲームではドロップゾーンのよりエレガントなソリューションが必要であることがわかりましたいつ、どこでプレイされますか。

この経験から、Reactと連携して動作するboardgame.ioをチェックすることになりました。しかし、これは最終的に、既存のフレームワークの上に別のフレームワークを学ぶ必要があり、それは私の目的には理想的ではありませんでした。

Unity

一般的な興味から、私はUnityでチュートリアルを行い、エディターの使用方法を学ぶことに多くの時間を費やしてから、それを使用してカードゲームのプロトタイプを作り直そうとしました。アセットストアは素晴らしいリソースであり、公式および非公式のドキュメントがたくさんあるので、遭遇する可能性のある問題に対する答えを見つけることができると確信していました。

これまでのUnityでの私の経験は、混合バッグでした。私はC#での作業を本当に楽しんでおり、コードに関連するものはすべて比較的苦痛のない経験でした。ただし、Unityはその実装について非常に具体的であり、直感に反する場合があります。

一方、編集者は一緒に仕事をするクマです。Unityの可能性を最大限に活用するには、UIと格闘しながら、すべてがどこにあり、どのように使用するかを理解するために、かなり長い時間を費やす必要があります。また、2Dゲーム開発の時代に必死に遅れをとっており、主に3Dエンジンを2D平面に平坦化しようと試みており、結果はまちまちです。

公平を期すために、私はUnityエディターでの作業をとても楽しんでいます。ただし、2Dゲームエンジンを探している場合は、他の場所での生活の質がはるかに高くなります(Unityのアニメーションシステムのビデオを見るか、ピクセルの完成度を達成すると、私が何を意味するかがわかります)。

最終的に、Unityの2D空間の処理は、プロトタイプに必要なものよりも少し複雑ですが、他のタイプのゲームではそれに戻ります。

また、一部の人にとって役立つかもしれないサイドバー:私は当初、アセットストアに非常に興奮していました。開発プロセスをはるかに簡単にするカードゲームテンプレートを購入できると考えていました。それはうまくいきませんでした。それらのほとんどはMTG /ハースストーン/などでした。カードゲーム用に再構築するのに、最初から始めるのと同じくらい多くの開発時間を必要とするクローン。

Godot

Godotに出会ったときの私の最初の考えは、「C#をサポートするオープンソースのゲームエンジンですか?サインアップしてください!」でした。それから私はそれをダウンロードし、いくつかの基本的なチュートリアルを実行し、ビルド時にクラッシュしました。ハーム。

いくつかのグーグル検索、再インストール、そして後で髪を引っ張った、私はそれが私のバージョンのVSビルド(私は思う?)と関係があると思いました、それは私を別のウサギの穴に導きました。私は経験から、他のエンジン(その中のUnityチーフ)が完全にあなた自身のコードの外でゲームを壊す問題を引き起こす可能性があることを知っていましたが、これはおそらくGodotでの私の残りの経験を彩る厄介なハードルでした。

エディターに関しては、Godotのノードベースの実装が非常に気に入りました。これは、Unityのプレハブからの直感に反するものでしたが、最終的には暖かくなりました。実際、その2D機能はUnityの機能より優れていると言っても過言ではありませんが、コミュニティ、アセットストア(上記のサイドバーを参照)、特にUnityのドキュメントが不足しています。たとえば、Godotを使用してC#で作業する場合は、エンジンのカスタムGDScriptで回答を探し、それらをC#に変換する準備をしてください。

ただし、GDScriptの使用中にGodotで大きな成功を収めている人の話を聞いたことがあるので、時間をかけて学習したい場合は、Godotが提供するものを楽しむことができます。

構成3

上に挙げた警告の中で、私は議論のポイントとして価格設定を含めていないと述べました。それでも、私の経験に影響を与えることがわかったので、Construct3でそれを持ち出す必要があるように感じます。

ここにリストされている他のゲームエンジンとは異なり、ほとんどの場合、無料で使用できます(Game Maker Studio 2には30日間の無料トライアルがあります)。Constructの機能の大部分はペイウォールの背後にあり、サブスクリプション料金はそれ。うーん。

私は本当に、本当にシンプルな2Dのゲームのための構築物のジブのカットのように。エディターはMSペイントからのアップグレードのように感じますが、スプライトとオブジェクトの管理を非常にうまく処理し、非常に使いやすいです。「ビジュアルスクリプティング」スタイルを使用しているのは好きではありませんが、最近、プレーンな古いJavaScriptを作成する機能が追加されており、多かれ少なかれ機能しているようです。

プロトタイプの非常に基本的なアーキテクチャを短時間で起動してから、Construct 3デモ(ブラウザで実行)を閉じることができました...その後、新しいデモですべてを再試行しました。少なくともこのカードゲームでは、Construct 3で多くのことができるように感じますが、プロトタイプに年間99ドル(またはビジネスとして)を支払うつもりはありません。

Game Maker Studio 2

YoYo Gamesは、Game Maker Studio 2にアクセスしやすく、簡単にナビゲートできるようにするために、明らかに多くの作業を行ってきました。このプロジェクトで使用したすべてのエンジンの中で、GMSエディターが最も好きです。小さなプロジェクトの場合、自分の道を見つけてビジネスを始めるのは簡単です。ただし、大規模なプロジェクトはすぐに手に負えなくなる可能性があると思います。

これは、Game Maker Studioのプロプライエタリ言語であるGMLの影響を受ける可能性があります(ただし、GMS 2は、私が使用しなかったビジュアルスクリプトをサポートしています)。それは機能しますが、別のOOP言語(または、実際には、他の広く使用されている言語)からアクセスする場合は、実装に頭を悩ませたり、いくつかのことを行う方法を考えたりする可能性があります。初心者の場合、またはGMSGMLの使用方法を理解するために時間を費やすことをいとわない場合は、おそらく問題ありません。

Game Maker Studioのドラッグアンドドロップ機能にいくつかの奇妙な点がありました。つまり、ドラッグ時のマウスポインターの検出は少し不安定で、正しく機能させるには足場が必要です。

GMSが別の非独占的なプログラミング言語を使用する機能を提供した場合、私はここでより多くの損害を与えるために時間を費やすだろうと思います-そしてこれは私の側の完全に個人的な好みと怠惰です-。私は仕事中に複数のスキルをレベルアップすることに全力を注いでいますが、GMSエディターGMLの専門家になるために時間を費やしても、その知識を他の場所に簡単に適用することはできません。

それでも、これはかなり実用的な2Dエディターであり、コミュニティのサポートはUnityのサポートと同等ではないかもしれませんが、それでもかなり優れています。また、無料トライアルが終了すると、Game Maker Studio2を引き続き使用するには料金を支払う必要があることに注意してください。

フェーザー3

Phaserは、軽量のオープンソースJavaScriptゲームフレームワークです。周りにはいくつかのPhaserIDEがありますが、主にコードで作業したい種類の場合は、Atom、Sublime、またはお気に入りのエディターを使用して、ここにたどり着く可能性があります。

Phaser 2は、広く使用されており、十分に文書化されており、利用できるチュートリアルがたくさんあります。Phaser3はその反対です。初心者にとっては比較的高い学習曲線があり、例がたくさんあり、それらの周りのコンテキストはあまりありません。

そこにあるチュートリアルの多くはPhaser2をサポートしており、学習は転送可能ですが、コードは転送可能ではありません。さらに、開発者は最近、サポートをPhaser 4(およびES6ではなくTypeScript)に移行することを発表しました。これは、Phaser3での作業に時間を費やしたことがある場合はあまり良くありません。

あなたがプロのプログラマーではなく(私はそうではありません)、ES6クラスとJavaScriptのベストプラクティスに精通している場合(私はそうではありませんでした)、Phaserの手持ちの欠如とセットアップの必要性にすぐに不満を感じるかもしれません独自のIDEとワークフロー(私はそうだった)。

ただし、他のゲームエンジンよりもはるかに合理化された方法で多くのことを実行する、強力で軽量なフレームワークであることがわかりました。カードゲームのドラッグアンドドロップ機能は比較的簡単で、カードタイプをクラス(Unityのプレハブのようなもの)に分類する機能により、この種のゲームに必要な認知的負荷の一部が区分化されています。

フロントエンドの開発者であれば、すべてのピクセル座標をハードコーディングするのが好きか、それに慣れているかもしれませんが、これは骨の折れる作業です。さらに、JavaScriptのすべてに精通していない場合は、Phaser以外のサークルで回答を検索し、それをプロジェクトに適用することになるでしょう。これには、独自の利点があると思います。

明確でない場合のもう1つの注意点:Phaser 3にかなりの公式ドキュメントと例がありますが、他の多くのゲームエンジンが享受しているコミュニティやStackOverflowの回答はありません。問題が発生した場合、または何かがわからない場合は、独自の解決策を見つけるか、PhaserDiscordサーバーに質問を投稿する必要があります。これは私の経験に役立ちました。

結論

上記のすべてを考慮すると、私が固執し、繰り返し続けているプロトタイプは、Phaser 3で構築したものです。Phaserは本質的に「優れている」わけではないため、これは反気候的である可能性があることを認識しています。 2Dゲーム開発における他のフレームワークとエンジン(おそらく、デジタルゲーム空間での競争相手になろうとしないReactを除く)。

ただし、Phaserは、ハッカーバトルのドラッグアンドドロップとゲームループの管理をよりスムーズに処理しているようです。私の目的では、これは重要です。Phaserを使用するには、JavaScriptエコシステムとコミュニティにより多くの投資をする必要があることも楽しんでいますが、とにかくそうすることに興味があるので、ボーナスのように感じます。

あなたが「何かを素早く構築するために何を使用でき、エンジンが置かれているコンテキストを気にしない」タイプのYMMVの方が好きなら。

TL; DR

React:フロントエンド開発に最適です。ゲーム、特にドラッグアンドドロップには使用しません。

Unity:エディターと基礎となる3Dの特異性と格闘したいのであれば、あらゆるタイプの2Dゲームを作成できます。素晴らしいコミュニティサポート、そしてC#は素晴らしいです。アセットストアは存在しますが、目的に役立たない場合があります。

Godot:オープンソースであり、GDScript、C#、さらにはC ++やPythonをサポートしているので、手間のかかる作業をたくさんやりたいと思っています。良い2Dの意味ですが、Unityのようなものほど多くのコミュニティサポートはありません。また、私の経験はバギーでした。

構成3:サブスクリプションのペイウォールがあるため、非常に使いやすく、参入障壁が高くなります。JavaScriptがサポートされるようになりましたが、コードの使用や学習を検討している場合は、ビジュアルスクリプトが気になるかもしれません。

Game Maker Studio 2:コミュニティをサポートするユーザーフレンドリーなエディター。GMLやビジュアルスクリプティングは、他のより人気のあるプログラミング言語から来ている場合はお茶ではないかもしれませんが、ローマにいるときはねえ。また、30日間の無料トライアル後に支払いが必要です。

フェーズ3:すべてをコーディングすることを期待し、物事を機能させる方法を見つけるために多くの検索を行います。この特定のゲームとプロトタイプでは機能していますが、Phaser 4が進行中であるため、それがあります。

この投稿があなた自身の検索と識別のプロセスに役立つことを願っています。これらのフレームワーク/エンジンまたは他のフレームワークのいずれかでのあなた自身の経験についても聞いてみたいです!

この記事を楽しんだら、私のゲームや本をチェックするか、私のYouTubeチャンネルに登録するか、EntromancyDiscordに参加することを検討してください。

MS Farzan、Ph.D。 Electronic Arts、Perfect World Entertainment、Modus Games、MMORPG.comなどの有名なビデオゲーム会社や編集ウェブサイトで執筆および勤務し、Dungeons&DragonsNeverwinterMassEffect :Andromedaなどのゲームのコミュニティマネージャーを務めてきました。彼は、Entromancy :Cyber​​punk Fantasy RPGのクリエイティブディレクター兼リードゲームデザイナーであり、The NightpathTrilogyの著者です。 Twitter @ sominatorでMSFarzanを見つけてください。