0

私は MonoGame で C# を使用していますが、コレクタブル カード ゲーム用に 100 万枚を超えるカード イメージを読み込む効率的な方法を考えています。今後のアップデートでさらに多くのカードが継続的に追加される予定です。これには、エレガントで効率的な天才的な方法がいくつかあると確信しています。他の人がこの問題をどのように解決するかについての洞察を得たいと思っています。

カードはすべて、ユーザーがダウンロードするクライアント側アプリケーションにあります。サーバーは、プレイヤーが不正行為をしていないことを確認します。カードのロードとアンロードに関して、クライアント側で大量のカード イメージを管理する効率的な方法を見つけようとしています。

カードは必要な場合にのみロードして表示する必要があることを理解しています。ただし、ゲーム内には、ユーザーが自分のコレクション全体を見ることができるポイントがあります。私はそれらの線に沿ってスクロールバーか何かで考えていました。カードの特定のプロパティに基づいてカードをフィルタリングできます。このシナリオでは、カードのロード/アンロードをリアルタイムで管理してシームレスかつ効率的にするにはどうすればよいでしょうか。

4

3 に答える 3

2

一度にすべての画像をロードすることはありません。これがオンライン ゲームであろうとなかろうと、それらすべてを一度にロードするのは非常に非効率的です。これを回避する 1 つの方法は、それらすべてをある種のデータベースに配置し、必要なときに必要なカードのみをロードすることです。たとえば、新しいハンドが配られたときなどです。クエリ速度がゲームの速度を低下させることを心配している場合は、これを確認してください。最速のクエリを修正する方法に関する詳細な記事/コンテスト、およびこれらのヒント。

あなたの編集に関して:

サーバー上で SQL データベースを使用し、クエリを実行して不正行為が行われていないことを確認することもできます。すべてのカードをチェックする必要はありません。現在持っているカードまたは扱っているカードだけを確認してください。

これがお役に立てば幸いです!

于 2013-01-23T02:51:28.047 に答える
1

これがオンラインゲームであると仮定します。カード情報を保存するために、データベース (MySQL など) を使用する必要があると思います。カード画像はすばやくアクセスできるように FTP に保存され、そのパスはデータベースに保存されます。次に、クエリを使用して、現在の画面に必要なカードにアクセスします。

于 2013-01-23T02:46:29.343 に答える
0

一度に何百万もの画像をロードしないでください。オンデマンドでのみロードします...たとえば、カードが配られたときに画像をロードします。

データベースに画像を保存できると思います。これは、最も効率的な保存と検索のメカニズムです。または、バイナリデータとして保存することもできます。画像データを RAM または SSHD に保持しない限り、それほど高速にはなりません。

あなたの懸念がパフォーマンスである場合、優先順位が間違っていると思います。;)

于 2013-01-23T02:51:40.123 に答える