MMO(必ずしもMMORPGである必要はありません)で、PvPの途中で切断されたプレイヤーに対処するためのテクニックは何ですか?
特に、ネットワーク(または実生活)の問題のために切断された人々に悪影響を与えないようにし、それらに関与している人々に悪影響を与えないようにするにはどうしますか?
そして、重要なこととして、切断を不正行為の方法として使用できないようにするにはどうすればよいでしょうか?
MMO(必ずしもMMORPGである必要はありません)で、PvPの途中で切断されたプレイヤーに対処するためのテクニックは何ですか?
特に、ネットワーク(または実生活)の問題のために切断された人々に悪影響を与えないようにし、それらに関与している人々に悪影響を与えないようにするにはどうしますか?
そして、重要なこととして、切断を不正行為の方法として使用できないようにするにはどうすればよいでしょうか?
回答:
私が取り組んだいくつかのオンラインCCGでこの問題が発生しました。私が見た最高のソリューション:
1)プレーヤーは互いに直接接続するのではなく、サーバーに接続する必要があります。また、プレーヤーにストリーミングするデータで相手のIPアドレスを渡さないでください。これにより、プレイヤーが勝つために相手をオフラインにするサービス拒否攻撃を防ぎます。
2)接続の切断=負け、相手が勝ちます。あなたがドロップした場合、それは特定の損失を避けるためのドロップだったと仮定する必要があります。
3)切断は一定の時間再接続を試行するため、わずかなネットヒカップがあなた自身の過失によってあなたを強制的に失うことはありません。理想的には、誰かがケーブルを誤って蹴った場合に誰かが再接続できるほどの時間であるが、待機中に相手がイライラせずに眠りに落ちるのに十分な時間です。約45〜60秒が適切だと感じたと思います。
4)プレイヤーが対戦相手を報告できるようにします。これは、ポリシーに迷惑な方法を見つける人を防ぐために必要なキャッチオールです。たとえば、口頭で虐待しているために、相手がそこから抜け出すためにドロップしたり、ゲームの長さを伸ばすために絶えず切断して再接続したり、損失を避けるために妨害したりすることなどがあります。すべての悪い動作を止めることはできませんが、それを報告するゲーム内メカニズムを含めて、カスタマーサポート部門に残りを処理させることができます。
オンラインレーシングゲームで一度この問題に取り組む必要がありました。このゲームでは、負けているプレイヤーがレコードを失うことを避けるためにコンソールをオフにすることがよくありました。ただし、PvPの状況には非常によく当てはまります。
私の解決策は次のようになりました:
試合の開始時に、すべてのプレーヤーが参加してプレーが開始されると、プレーヤーが試合に負けた場合の結果を計算します。私たちのレースゲームでは、「失われた」とは「最後の場所に来た」ことを意味し、通常の結果は「プレイヤーランクからマイナスNポイント」になります。
結果を安全な場所に保存します(Savegame、Leaderboard、Online data areaなど)。
結果とともに、「GameStarted」フラグを保存します。これは、ゲームが始まったことを示しています。後で必要になります。
ゲームが完了したら、実際の結果を計算し、プレーヤーのスコア/統計に適用します。「GameStarted」フラグの設定を解除します。これは通常のゲーム完了プロセスです。
ただし、プレーヤーが接続を外したり、ケーブルを抜いたり、電源を切ったりすると、最終的にはゲームメニューに戻ります。メニューコードでは、「GameStarted」フラグを確認します。設定されていれば、ゲーム内で以前の接続が切断されたことを確実に検出できます。その後、保存された結果をプレイヤーのスコア/統計に適用できます。プレイヤーがゲームに負けた場合と同じです。また、プレイヤーに何が起こっているかを知らせる警告を出すこともお勧めします。その後、ゲームの途中で接続を解除すると結果が生じることがわかると、その動作が変化し始めることがわかります。
これを実現する唯一の方法は、ゲームの構造の問題だと思います。不正行為を望ましくないものにする2つの方法があります。罰と報酬です。したがって、不利な罰を望まない場合は、ドロップしなかったプレイヤーに報酬を与える方法を考えてください。
PvPからの報酬が被征服者の体の略奪品である代わりに(非常に悪いことをする)、経験値、金、または他の何か(ポイント?ランキング?)のような報酬を獲得できます。プレイヤーの1人がキックオフされた場合、残りのプレイヤーは報酬を受け取り、キックオフされたプレイヤーは何も獲得せず、何も失うことはありません。それがランキングシステムである場合を除き、その場合、退場するプレーヤーはいくつかのランキングポイントを失う可能性があります。
Lineage IIは次のようにします。
個人的には、私は同様にそれを行い、プレイヤーが切断時にアクションを事前に定義できるようにします(滞在して戦い、aggroを避けて最も近い安全なゾーンに走り、エスケープの通常のスクロールを使用し、祝福されたスクロールを使用します)エスケープ、...)、プレイヤーがログインしていなくても、キャラクターをゲームの世界に残します。
EVE Onlineがこれを処理する方法は次のとおりです。
船は、切断後15秒でワープを開始します。ワープスクランブルされている場合、船はワープしません。(あなたのキャラクターの船は、他のプレイヤーに「トラップ」されない限り、15秒後に「逃げ出します」)
PVPタイマー(PvP戦闘中にプレイヤーが「逃げる」までの時間)は3分に設定されます。(これは他の多くのタイマーに対抗するためです)。
NPCタイマーは1分のままですが、ワープがNPCによってスクランブルされない限り、船は15秒後にワープします。
船がプレイヤーによってロックされたターゲットである場合、pvpタイマーに切り替える必要があります(タイマーが設定されるまでターゲティングできない状況で切断された場合、1分タイマーを使用してそれに対抗します)。
戦闘におけるプレイヤーの通常のパターンをモデル化する方法がある場合、再接続するか、戦闘が先に終わるまでAIモードに送信できます。ただし、X時間以内に戻って来ない限り、戦闘に対する報酬(経験値、アイテムなど)を与えないでください。
何らかのヒステリシスを実装します。ニンジンとスティックを使用できます。ただし、どちらを使用するかの選択は、実績に基づいて行うことができます(それらの接続と現在の「勝利可能性」の分析を行い、それを使用することもできます)。うまくいけば、それを直接やります。単純なモデル:
はい、それを悪用できます。しかし、そうすることは、単に弾丸を噛むよりも多くの努力を要するかもしれません。(たとえば、DCが2つ悪くなった場合、技術的には損失の半分を取り除くことができます。しかし、悪用を軽減します。賢いプレイヤーが少ない場合は、すべての乱用)。
これを使用すると、スコアボードの合計が100%になりません。良い状態でDCを行い、損失を記録することはできません。しかし、他の良いプレーヤーは勝利を記録することができます。また、合計が100%にならないということは、2人のプレイヤーが協力してDCプレイヤーをオフに切り替えて勝利することを意味します。
だから絶対確実ではありませんが、ゲーム状態と接続のベイズ分析を追加すると、おそらくファンキーネスを検出し、このスキームを防弾にすることができます。(あなたはベイジアン分析を打ち負かすことができますが、人間はこれを行うのが得意ではなく、ほとんどの人にとって数学は手の届かないところにあります。