問題タブ [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.
php - PHP テキストベースの MMO ゲーム タスク構成
PHPテキストベースのゲームを開発しています。ゲームでタスクを整理しています。基本的にタスクはゲームの理解を深めます。
タスクは、ゲーム内の小さなアクションのグループです。
例えば:
タスクの説明: 自転車を盗んで修理し、別の都市に出荷する必要があります。
3つのアクションが含まれています。
- 自転車を盗む
- 自転車を修理する
- 別の都市(ロンドンとしましょう)に発送します
これらの 3 つのアクションは、1 つの異なるページで可能です。
TASK(task_id, title, description (TASK Description Above),STATUS) のテーブルを作成したのですが、タスクのアクションの保存方法と実行方法がわかりません。
関連テーブル TASK_ACTIONS (task_id, action_id,action(?),done) を使用するという 1 つのアイデアがあります。
しかし、アクション アクション(?) を格納する形式がわかりません:
アクションを確認するSQL文は以下の3点のようです。
- 自転車が盗まれたかどうか。はいの場合、アクションを完了にマークします
- 自転車は修理されたか、まだ損傷しています。修復された場合は、アクションを完了とマークします
- 自転車がロンドンに出荷されたかどうか。発送された場合は、アクション完了のマークを付けます
上記のすべてが完了とマークされている場合は、TASK STATUS を COMPLETED としてマークし、次のタスクを表示します。
php - Actionscript 3.0 -> PHP -> ゲーム アプリケーションの MySQL セキュリティの問題
actionscript 3.0(flash)でゲームを作ろうと思っています。ただし、ユーザー ポイントの保存に関してセキュリティ上の問題がいくつかあります。
より具体的には、以下を読むと、正確な問題が何であるかを理解できます。
- あなたは私のフラッシュアプリケーションを起動しています。PHP はユーザー名のセッションを作成します。数分間プレイして 750 ポイントに到達。
- 「ポイントを保存する」ボタンをクリックします。
- これは、「game.php?points=[]」をポイント数に結び付けます。したがって、game.php?points=750 になります。
- PHP は MySQL に接続し、アプリケーションを開いたときに入力したユーザー名で update/insert クエリを実行し、3 でわかるように $_GET['points'] でポイントを取得します。
問題は、「game.php?points=999999999999」を直接閲覧できる人は誰でも、自分のポイントがデータベースに保存されることです。
ポイントを暗号化することも考えましたが、Flash はクライアント側のアプリケーションであり、「チート エンジン」のようなアプリケーションを使用して誰でも「ポイント」の値を変更できます。ポイントを変更すると、暗号化されたポイントが Flash によって自動的に生成されます。
また、サインアップ時に各プレーヤーの秘密鍵を作成し、それに応じて暗号化することも考えましたが、ユーザーがチートエンジンでポイントを変更すると、フラッシュが特定の秘密鍵でポイントを自動的に暗号化するため、これも機能しません。無駄な理論…
Zynga のような人気のある企業が SSL を使用しているという理由だけで、SSL を使用するように提案した人もいますが、ここで他の理論を探しています。
SSLを使用することを除いて、この場合のアイデアはありますか?
Ps。ゲームは MMO になるため、安全なデータ トランザクションが不可欠です。
java - MMORPG でのクライアント/サーバー間のメッセージ レート
クライアントがサーバーに要求を送信する頻度は? また、サーバーはどのくらいの頻度でクライアントに更新を送信する必要がありますか? 推奨事項はありますか?
mmo - MMO には、キャップ定理に関してどのようなデータベースを使用する必要がありますか?
一人称視点、全員がプレイする 1 つの世界 (eve online など)、サンドボックス ゲームの機能を備えた MMO が作成されたとします。キャップ定理の観点から、そのニーズに最も適したデータベースはどれですか? CA、AP、CP、そしてその理由は?
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 やリアルタイム オンライン ゲームで、クライアントとサーバー間でメッセージをパッケージ化して読み取る標準的な方法は何ですか?
php - リアルタイム戦略ゲームは PHP でどのように機能しますか?
Travian や oGame などの一部の MMO リアルタイム ストラテジー ゲームは、PHP でコーディングされています。
そのようなゲームが舞台裏でどのように機能するかを簡単に説明していただけますか? プレーヤーのリクエストなしで、ゲームはどのようにリアルタイムの DB 更新を行いますか?
また、Travian などの RTS ゲームを 1000 人のアクティブ プレイヤーで実行する場合、どのようなサーバー負荷/帯域幅を期待する必要がありますか?
mysql - インベントリをデータベースに保存する最良の方法: 各アイテム インスタンスがそのリストを取得するか、各プレイヤーに「インベントリ」フィールドがありますか?
PHPとMySQLを使ってブラウザMMOを作っています。プレーヤーのインベントリを実装する 2 つの方法をためらっています。
作成/モンスターからドロップ/ファウンドされると、アイテムは Items テーブルに新しい行を作成し、そのタイプ (短剣のインスタンス、ポーションのインスタンスなど)、その場所 (タイル X:Y ? の地面) を格納します。プレイヤー Z のインベントリに ?) 追加のフィールドが 1 つまたは 2 つある可能性があります。アイテムのリストは次のようになります:
id=728 ; type=14 ; location="i426" ; special="e8"
(「i426」は「プレイヤー n°426 のインベントリ内」を意味し、「e8」はアイテムがエンチャント n°8 を持っていることを意味します)。
長所 :エンチャント、耐久性、前の所有者など、個々のアイテムに関するデータを保存できます。また、アイテムは任意の場所に簡単に配置できます。このシステムでは、たとえばオークションハウスにアイテムを無料で入れることができます - アイテム内のアイテムなどのクレイジーな可能性は言うまでもありません.
短所:何百人ものプレイヤーがモンスターを略奪し、一日中クラフトしているため、これはすぐに巨大なテーブルを作成し、かなり無駄に思えます. アイテムが関係するときはいつでも、これによりゲーム全体が遅くなる可能性があるのではないかと心配しています(私は多くのAJAXブードゥーを使用しています)。または :プレイヤーがインベントリにアイテムを入れると、データベース上のそのプレイヤーのインベントリ フィールドが更新され、新しいアイテムのタイプ (整数) が末尾に追加され、区切り文字が追加されます。典型的な在庫フィールドは次のようになります:
"|11|8|27|58|58"
長所:無駄が少ない。アイテム インスタンスは、数桁の数字と区切り記号です。
短所:アイテムに関する余分なデータはありません。すべてのインスタンスは同じです。また、アイテムをタイルにドロップすると、タイルには独自の在庫フィールドが必要になります。アイテムの可能なすべての場所などです。さらに、この方法では、単にテーブルから行を削除するのではなく、アイテムを追加/削除する必要があるときはいつでも文字列を操作します。もう 1 つのことは、プレーヤーのインベントリにはさまざまな数のアイテムを格納できるため、この文字列の長さは予測できません。
以前のプロジェクトでは、2 番目の方法を使用しました。最初の方法は楽しそうに見えますが、ストレージ容量とサーバーの速度に適合するかどうかはわかりません. これらの方法のうち、MMO で最もよく使用されるのはどれですか? 全く別物ですか?私が見逃した長所や短所はありますか?(この質問が少し主観的で申し訳ありません!)
sockets - ゲームサーバーを書く?
mmo ゲーム サーバーを作成したいのですが、どこから始めればよいかを示すリンクが見つからないようです。独自のサーバーを用意する必要がありますか? GoDaddy をホストとして使用してゲームサーバーを作成できますか? どんな情報も助けになります。
LAN 上のサーバー/クライアントでデモ ゲームを作成しました。ネットワーク プログラミングには十分慣れています。私の問題はオンラインサーバーの作成です。どこから始めたらいいのかわからない。
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 は、すべてのコードとリソースを内部管理する必要があるため、これを使用しませんでした。
どれが最良の選択なのか、私にはよくわかりません。私が決めるのを手伝ってください。
mmo - ゲームに相対タイマーを実装する方法
私たちのゲームは MMO ゲームであり、ロジック サーバーにはもちろんゲーム ループがあります。これらの論理モジュールを簡単に記述できるようにするために、タイマーモジュールを提供します。これは、リアルタイマーの登録をサポートし、可能な場合にトリガーします。ゲーム ループでは、システム時間 (ミリ秒単位) をタイマー モジュールに渡します。タイマー マネージャーは、トリガーできるタイマーがあるかどうかを確認します。たとえば、プレイヤー/モンスターの位置を更新するには、プレイヤーが動き始めると、200ms ごとにプレイヤーの位置を更新します。
しかし、ゲーム ループがあまりにも多くのロジックを実行すると、1 つのフレームで時間がかかりすぎて、次のフレームで一部のタイマーが実際の時間よりも遅くなります。それは実際にいくつかのバグを引き起こします。たとえば、あるフレームで 1 秒を費やし、次のフレームで実時間が 1000 ミリ秒で、移動タイマーが 800 ミリ秒でスケジュールされている場合、タイマーは 1000 ミリ秒でトリガーされ、予想時間よりも遅くなります。
この問題を解決するためのより良い解決策はありますか? たとえば、実際のコンピューター時間には依存せず、ゲームにのみ依存するタイマーを実装できますか?