問題タブ [mmo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
578 参照

php - PHP テキストベースの MMO ゲーム タスク構成

PHPテキストベースのゲームを開発しています。ゲームでタスクを整理しています。基本的にタスクはゲームの理解を深めます。

タスクは、ゲーム内の小さなアクションのグループです。

例えば:

タスクの説明: 自転車を盗んで修理し、別の都市に出荷する必要があります。

3つのアクションが含まれています。

  1. 自転車を盗む
  2. 自転車を修理する
  3. 別の都市(ロンドンとしましょう)に発送します

これらの 3 つのアクションは、1 つの異なるページで可能です。

TASK(task_id, title, description (TASK Description Above),STATUS) のテーブルを作成したのですが、タスクのアクションの保存方法と実行方法がわかりません。

関連テーブル TASK_ACTIONS (task_id, action_id,action(?),done) を使用するという 1 つのアイデアがあります。

しかし、アクション アクション(?) を格納する形式がわかりません:

アクションを確認するSQL文は以下の3点のようです。

  1. 自転車が盗まれたかどうか。はいの場合、アクションを完了にマークします
  2. 自転車は修理されたか、まだ損傷しています。修復された場合は、アクションを完了とマークします
  3. 自転車がロンドンに出荷されたかどうか。発送された場合は、アクション完了のマークを付けます

上記のすべてが完了とマークされている場合は、TASK STATUS を COMPLETED としてマークし、次のタスクを表示します。

0 投票する
2 に答える
354 参照

php - Actionscript 3.0 -> PHP -> ゲーム アプリケーションの MySQL セキュリティの問題

actionscript 3.0(flash)でゲームを作ろうと思っています。ただし、ユーザー ポイントの保存に関してセキュリティ上の問題がいくつかあります。

より具体的には、以下を読むと、正確な問題が何であるかを理解できます。

  1. あなたは私のフラッシュアプ​​リケーションを起動しています。PHP はユーザー名のセッションを作成します。数分間プレイして 750 ポイントに到達。
  2. 「ポイントを保存する」ボタンをクリックします。
  3. これは、「game.php?points=[]」をポイント数に結び付けます。したがって、game.php?points=750 になります。
  4. PHP は MySQL に接続し、アプリケーションを開いたときに入力したユーザー名で update/insert クエリを実行し、3 でわかるように $_GET['points'] でポイントを取得します。

問題は、「game.php?points=999999999999」を直接閲覧できる人は誰でも、自分のポイントがデータベースに保存されることです。

ポイントを暗号化することも考えましたが、Flash はクライアント側のアプリケーションであり、「チート エンジン」のようなアプリケーションを使用して誰でも「ポイント」の値を変更できます。ポイントを変更すると、暗号化されたポイントが Flash によって自動的に生成されます。

また、サインアップ時に各プレーヤーの秘密鍵を作成し、それに応じて暗号化することも考えましたが、ユーザーがチートエンジンでポイントを変更すると、フラッシュが特定の秘密鍵でポイントを自動的に暗号化するため、これも機能しません。無駄な理論…

Zynga のような人気のある企業が SSL を使用しているという理由だけで、SSL を使用するように提案した人もいますが、ここで他の理論を探しています。

SSLを使用することを除いて、この場合のアイデアはありますか?

Ps。ゲームは MMO になるため、安全なデータ トランザクションが不可欠です。

0 投票する
3 に答える
672 参照

java - MMORPG でのクライアント/サーバー間のメッセージ レート

クライアントがサーバーに要求を送信する頻度は? また、サーバーはどのくらいの頻度でクライアントに更新を送信する必要がありますか? 推奨事項はありますか?

0 投票する
1 に答える
458 参照

mmo - MMO には、キャップ定理に関してどのようなデータベースを使用する必要がありますか?

一人称視点、全員がプレイする 1 つの世界 (eve online など)、サンドボックス ゲームの機能を備えた MMO が作成されたとします。キャップ定理の観点から、そのニーズに最も適したデータベースはどれですか? CA、AP、CP、そしてその理由は?

0 投票する
3 に答える
1224 参照

c# - サーバー クライアント メッセージ用の高速テキスト パーサー - MMO

応用

MMO に取り組んでいて、問題が発生しました。私が構築した MMO サーバーは高速で、UDP ソケットで最大 50 ミリ秒ごとにゲーム クライアントにメッセージをローカルに送信します。現在のメッセージ システムを介したサーバーからクライアントへのメッセージの例を次に示します。

count={2}body={[t={agt}id={42231}pos={[50.40142117456183,146.3123192153775]}rot={200.0},t={agt}id={4946}pos={[65.83051652925558, 495.25839757504866]}腐敗={187.0}}

シンプルなテキスト パーサー、コードを作成しました: http://tinypaste.com/af3fb928

私は次のようなメッセージを使用します:

問題

オブジェクトが 60 以上になると、パフォーマンスが劇的に低下します。

質問

MMO やリアルタイム オンライン ゲームで、クライアントとサーバー間でメッセージをパッケージ化して読み取る標準的な方法は何ですか?

0 投票する
5 に答える
9554 参照

php - リアルタイム戦略ゲームは PHP でどのように機能しますか?

Travian や oGame などの一部の MMO リアルタイム ストラテジー ゲームは、PHP でコーディングされています。

そのようなゲームが舞台裏でどのように機能するかを簡単に説明していただけますか? プレーヤーのリクエストなしで、ゲームはどのようにリアルタイムの DB 更新を行いますか?

また、Travian などの RTS ゲームを 1000 人のアクティブ プレイヤーで実行する場合、どのようなサーバー負荷/帯域幅を期待する必要がありますか?

0 投票する
1 に答える
7753 参照

mysql - インベントリをデータベースに保存する最良の方法: 各アイテム インスタンスがそのリストを取得するか、各プレイヤーに「インベントリ」フィールドがありますか?

PHPとMySQLを使ってブラウザMMOを作っています。プレーヤーのインベントリを実装する 2 つの方法をためらっています。

  1. 作成/モンスターからドロップ/ファウンドされると、アイテムは Items テーブルに新しい行を作成し、そのタイプ (短剣のインスタンス、ポーションのインスタンスなど)、その場所 (タイル X:Y ? の地面) を格納します。プレイヤー Z のインベントリに ?) 追加のフィールドが 1 つまたは 2 つある可能性があります。アイテムのリストは次のようになります:
    id=728 ; type=14 ; location="i426" ; special="e8"
    (「i426」は「プレイヤー n°426 のインベントリ内」を意味し、「e8」はアイテムがエンチャント n°8 を持っていることを意味します)。
    長所 :エンチャント、耐久性、前の所有者など、個々のアイテムに関するデータを保存できます。また、アイテムは任意の場所に簡単に配置できます。このシステムでは、たとえばオークションハウスにアイテムを無料で入れることができます - アイテム内のアイテムなどのクレイジーな可能性は言うまでもありません.
    短所:何百人ものプレイヤーがモンスターを略奪し、一日中クラフトしているため、これはすぐに巨大なテーブルを作成し、かなり無駄に思えます. アイテムが関係するときはいつでも、これによりゲーム全体が遅くなる可能性があるのではないかと心配しています(私は多くのAJAXブードゥーを使用しています)。

  2. または :プレイヤーがインベントリにアイテムを入れると、データベース上のそのプレイヤーのインベントリ フィールドが更新され、新しいアイテムのタイプ (整数) が末尾に追加され、区切り文字が追加されます。典型的な在庫フィールドは次のようになります:"|11|8|27|58|58"
    長所:無駄が少ない。アイテム インスタンスは、数桁の数字と区切り記号です。
    短所:アイテムに関する余分なデータはありません。すべてのインスタンスは同じです。また、アイテムをタイルにドロップすると、タイルには独自の在庫フィールドが必要になります。アイテムの可能なすべての場所などです。さらに、この方法では、単にテーブルから行を削除するのではなく、アイテムを追加/削除する必要があるときはいつでも文字列を操作します。もう 1 つのことは、プレーヤーのインベントリにはさまざまな数のアイテムを格納できるため、この文字列の長さは予測できません。

以前のプロジェクトでは、2 番目の方法を使用しました。最初の方法は楽しそうに見えますが、ストレージ容量とサーバーの速度に適合するかどうかはわかりません. これらの方法のうち、MMO で最もよく使用されるのはどれですか? 全く別物ですか?私が見逃した長所や短所はありますか?(この質問が少し主観的で申し訳ありません!)

0 投票する
2 に答える
1604 参照

sockets - ゲームサーバーを書く?

mmo ゲーム サーバーを作成したいのですが、どこから始めればよいかを示すリンクが見つからないようです。独自のサーバーを用意する必要がありますか? GoDaddy をホストとして使用してゲームサーバーを作成できますか? どんな情報も助けになります。

LAN 上のサーバー/クライアントでデモ ゲームを作成しました。ネットワーク プログラミングには十分慣れています。私の問題はオンラインサーバーの作成です。どこから始めたらいいのかわからない。

0 投票する
2 に答える
5003 参照

netty - netty vs スマートフォックスサーバー

MMO ゲーム バックエンドの分野で、これら 2 つのサーバーを比較したホワイト ペーパーがあります。 http://www.smartfoxserver.com/downloads/sfs2x/documents/SFS2X_WP_PerformanceAndScalability.pdf

大きな性能差はないようです。

さらに、Netty のパフォーマンス テストがあります: http://www.jboss.org/netty/performance

では、smart fox サーバーと netty のどちらを選択する必要がありますか? 個人の状況に応じて、常に長所と短所があります。私のゲームは最大 100 万のクライアントをホストすることを目指しているため、スマート フォックス サーバー ライセンスは、合計すると高すぎる可能性があります。ただし、Amazon クラウドでゲームを実行すると仮定すると、2 つの間のパフォーマンスはそれほど大きくはありませんが、このような規模でゲームを展開するとサーバー使用量が大幅に節約される可能性があります。

一方で、SFS はおそらくゲームでの使用にかなり最適化されていることは理解していますが、Netty はオープン ソースであり、その利点があります。Netty には Apache 2 ライセンスがあります。つまり、Netty をほとんど変更して、独自の商用目的で使用することができます。とにかく、SFS を変更することはできません。フラッディング、ルーム管理、チャットなどの SFS の一部の機能は、これらの照明を高速に作成できるため、特定の規模のゲームではほとんど役に立ちません。本当に重要なのは、ソケット エンジンのパフォーマンスです。Facebook には非常に多くの Web ページ MMO ゲームがありますが、SFS を使用するものはほとんどありません。理由は 2 つあると思います。1 つはライセンス料が高くつく可能性があること、もう 1 つは自分の目的のために変更できないことです。Zynga は、すべてのコードとリソースを内部管理する必要があるため、これを使用しませんでした。

どれが最良の選択なのか、私にはよくわかりません。私が決めるのを手伝ってください。

0 投票する
0 に答える
293 参照

mmo - ゲームに相対タイマーを実装する方法

私たちのゲームは MMO ゲームであり、ロジック サーバーにはもちろんゲーム ループがあります。これらの論理モジュールを簡単に記述できるようにするために、タイマーモジュールを提供します。これは、リアルタイマーの登録をサポートし、可能な場合にトリガーします。ゲーム ループでは、システム時間 (ミリ秒単位) をタイマー モジュールに渡します。タイマー マネージャーは、トリガーできるタイマーがあるかどうかを確認します。たとえば、プレイヤー/モンスターの位置を更新するには、プレイヤーが動き始めると、200ms ごとにプレイヤーの位置を更新します。

しかし、ゲーム ループがあまりにも多くのロジックを実行すると、1 つのフレームで時間がかかりすぎて、次のフレームで一部のタイマーが実際の時間よりも遅くなります。それは実際にいくつかのバグを引き起こします。たとえば、あるフレームで 1 秒を費やし、次のフレームで実時間が 1000 ミリ秒で、移動タイマーが 800 ミリ秒でスケジュールされている場合、タイマーは 1000 ミリ秒でトリガーされ、予想時間よりも遅くなります。

この問題を解決するためのより良い解決策はありますか? たとえば、実際のコンピューター時間には依存せず、ゲームにのみ依存するタイマーを実装できますか?