PHP から一連の配列を出力し、javascript を使用してキャンバスでアニメーション化するターン ベースの戦略ゲームを開発しています。
javascript/canvas で 20 fps (1 秒あたりのフレーム数) を目指していることを考えると、php はブラウザーが受信して処理するための多くの情報を生成しています。
これらのphp配列をjavascriptに渡すにはどうすればよいですか?
編集私が具体的に言及しているデータの量は、1ターンあたり約5メガバイトです。
PHP から一連の配列を出力し、javascript を使用してキャンバスでアニメーション化するターン ベースの戦略ゲームを開発しています。
javascript/canvas で 20 fps (1 秒あたりのフレーム数) を目指していることを考えると、php はブラウザーが受信して処理するための多くの情報を生成しています。
これらのphp配列をjavascriptに渡すにはどうすればよいですか?
編集私が具体的に言及しているデータの量は、1ターンあたり約5メガバイトです。
あなたが答えようとしている2つの質問があると思います。
Q1 に関して: 選択できる手法がいくつかありますが、プロジェクトについてもう少し知らなければ、明確な利点を提供するものはありません。あなたが使用することができます:
Q2に関して:
プロジェクトについて詳しく知らずに最適なソリューションを 1 つ選ぶのは難しいですが、このリストが参考になることを願っています。
わかりました。5 MB を送信する必要がある場合、あなたができる最善の方法は次のとおりです。
gzip や gzcompress などのデータ圧縮を使用して、5mg のペイロードを減らします。通常、ファイルは元のサイズの約 20 ~ 25% (この場合は 1 ~ 1.25 MB まで) に縮小できます。
とはいえ、5 MB は通常よりもはるかに多いため、ゲームを強化するために必要なデータを再構築することを検討する必要があります。
あなたは私たちに作業するための詳細を与えていないので、ここで私たちが遊ぶための「わら犬」があります.あなたのゲームがチェスであると仮定してください. (そうではないことはわかっていますが、焦点を合わせる何かが必要です)
すべてのレンダリングをクライアントに移動します。送信するデータは、移動 (「Rook-A6」) のみを送信する必要があります。クライアントはそのデータを取得し、Rook を現在の位置から A6 上の新しい位置にグラフィカルに移動させます。
ゲーム ロジックをクライアントに移動します。クライアントは、ゲームの状況に個別に対応できる必要があります。たとえば、クライアントは、プレーヤーがキングを危険にさらそうとする動きを「元に戻す」必要があります。同様に、(「キャッスル キングサイド」) のような複雑な動きのデータを送信する場合、クライアントは、データからの説明を必要とせずに、キング + ルークを適切に動かす方法を知っている必要があります。
パターン認識を実行して、送信されるデータを簡素化/削減します。したがって、チェス盤上の 32 個すべての駒の初期位置を設定するには、(「白の Rook-A1 を動かし、白の Knight-B1 を動かして…など」) の代わりに (「Reset」) を送信します。
セマフォを使用して、ゲーム リソースの可用性を制御します。ゲームの一部で、ユーザーが希少なリソースの共通グループを取得/使用する必要がある場合は、セマフォを使用して、個々のリソースを実際に追跡する代わりに、ユーザーがリソースを「チェックアウト」/「チェックイン」できるようにします。