3

Travian 風 (または Ikariam 風) の Web ベースのゲームを作りたいと考えています。ゲームは PHP と MySQL ベースになります。ゲーム属性のライブ更新をどのように達成できるのだろうか。

フロントエンドの場合、AJAX 呼び出し (データベースから最新の値をフェッチする) を使用するか、値の偽の更新 (サーバーと通信しない) を使用して達成できます。

バックエンドの場合、これは PHP cron ジョブ (数秒ごとに実行される) によって行われますか? もしそうなら、誰かが私にいくつかのサンプルコードを提供できますか?

ちなみに、IIS+FastCGIを使うと大変なことはわかっています。

=== バージョン情報 ===

PHP: 5.2.3

IIS : FastCGI を使用した 6.0

OS:Windows Server 2003 Standard R2

4

4 に答える 4

6

正しい答えは、正確なニーズによって異なります。

誰もが常に同じレートでリソースを取得しますか? その場合、簡単な解決策は、ユーザーの存在期間を追跡し、取得率に基づいてリソースの量を計算し、合計で消費したリソースの数を差し引くことです。ただし、レートが変更される可能性がある場合、これは少し問題になるため、このソリューションを使用する場合、処理を完全に書き直さない限り (たとえば、以下のように)、選択したレートにほとんどこだわることはありません。 .

人々がリソースを取得できる速さが異なる場合は、データを定期的に更新する必要があります。cronjob/スケジュールされたタスクは、全員が更新されていることを確認するためにうまく機能しますが、状況によっては、各ユーザーのリソースを更新してからの経過時間を単純に測定し、ページが読み込まれるたびにそれらを更新する方がよい場合があります。ログインしている間、離れていた時間にリソースを獲得する速度を掛けることで、新しい値が実際に必要になるまで更新を回避できます。

于 2010-01-17T15:57:19.330 に答える
1

ページまたは JavaScript が要求するたびにリソースを計算することもできます。最終更新時刻を保存する必要があります。

于 2010-01-17T15:57:07.320 に答える
1

Travian のようなリソース管理では、最後にユーザー リソースを更新したときを追跡する必要があります。(ページの更新などのために)リソース値を読み取る場合は、「最終更新時刻」以降に取得したリソースの量を追加する必要があります(ユーザーが取得するリソース フィールドとボニの量に応じて)、その値をブラウザ。ブラウザ スクリプトでこれらの金額を計算することもできます。

これらの値は大量に必要とされるため、何らかの方法ですべてのリソース量をキャッシュすることを検討して、データベースとの通信を改善することを検討してください。

ユーザーがリソース フィールドの構築を終了したり、市場を使用したり、構造を構築したりした場合、リソースの量 (および「最終更新時間」) を更新する必要があります。これらの種類のイベントを単純に追跡することはできないからです。

リソースを計算すると、ユーザーがブラウザ ページを更新するたびに新しい値を書き込む必要がないため、データベースの負荷が軽減されます。また、丸め誤差が少ないため、より正確です。

ページを更新するたびにリソースを増やし続けるには、Frank Farmer が説明した方法が必要です。リソース量と「ゲイン頻度」をJavaScriptに埋め込み、「ゲイン頻度」ごとにリソース量を1ずつ増やします。

于 2010-01-17T19:24:50.067 に答える