"Unity、Godot、それとも自作エンジン?なぜ私のカー... ノート

"Unity、Godot、それとも自作エンジン?なぜ私のカードゲームは純粋なTypeScriptなのか" 公開日: 未定 タグ: gamedev, reactnative, typescript, showdev"

著者は、UnityやGodotのような既製のゲームエンジンを使用するのではなく、カスタムエンジンを作成してカードゲームアプリ「Decks」を構築することを決定しました。このアプローチが選択されたのは、単一のプラットフォームで多くのカードゲームをホストすることが目標であり、これは中央エンジンによって解釈されるJSONドキュメントとしてゲームを定義することによって達成されるためです。Godotでのプロトタイプは重すぎたり遅すぎたりすることが判明し、著者はカードゲームのレンダリングは基本的にシンプルであり、複雑な3Dエンジンを必要としないことに気づきました。プロジェクトの核心であるゲームルールは、レンダリングシステムから独立して簡単にテストできる必要がありました。選択されたスタックは、純粋なTypeScriptのゲームコアパッケージ、デザイントークン、そしてExpo、React Native、React Native Skiaで構築されたモバイルアプリで構成されています。主な利点は、ゲームコアがゼロ依存であるため、Node.jsとモバイルデバイスの両方で実行でき、シードによる広範なテストと再現可能なバグ修正を容易にすることです。ルールはデータとして定義されており、柔軟性を可能にし、evalに依存せずにヒントやAIボットのような機能をサポートします。プロジェクト全体でのTypeScriptの使用は、開発とテストを効率化します。React Nativeによって処理されるネイティブUI要素は、アクセシビリティと応答性を提供し、カードテーブル自体はSkiaを使用してレンダリングされます。カードの表面は動的に生成され、アプリのサイズを小さくすることに貢献しています。しかし、カスタムエンジンの構築には、ヒットテスト、フレームレートの最適化、ネイティブ依存関係の管理などの責任を含む、かなりのコストがかかります。ルール言語の汎用性は、冗長なデータ定義につながる可能性もあります。タッチジェスチャーやパフォーマンスの処理における課題にもかかわらず、著者はカスタムエンジンアプローチがその柔軟性と拡張性から最終的にやりがいのあるものだと感じました。今後の計画には、2人用ゲームやその他のソリティアバリエーションの追加が含まれます。