FFAデスマッチサーバーのスポーンシステムについて
お久しぶりです!
皆さんはデスマッチサーバーのスポーンポイントがどのように決定するか考えたことがあるでしょうか。
現在稼働している多くのデスマッチサーバーでは同じプラグインを使用していて、ほとんどの場合そのまま使っていると思われます。
しかし、AzPlex FFA DMサーバーで採用されているスポーンシステムは私が改良を加えたもので、他のサーバーにはない独自のアルゴリズムによって、次のスポーンポイントが決定されています。
今回はそれについて解説します。
(元々現役でAzPlexが稼働したいた頃に書こうとしていたんですが、めんどくさがって書かなかったので今更書いています)
既存のデスマッチプラグインのアルゴリズム
まずは一般的に採用されているデスマッチプラグインのスポーンの決定方法について解説していきます。
フローチャートで表すとこんな感じになります。
正直かなり雑です。基本的には視界に入っていないスポーンポイントで確定します。敵との距離も一切見ずに視界に入っていないという理由だけでそこのスポーンポイントが選ばれるというなんとも雑なシステムになっています。
AzPlex FFA DMのアルゴリズム
AzPlexの場合、とても複雑ですがフローチャートで表すとシンプルです。
全てのスポーンポイントを探索し、各スポーンポイントを様々な指標から加点方式で定量的に各スポーンポイントを評価します。
その中から最も得点の高いスポーンポイントを次のスポーンポイントとして決定します。
指標には下記のようなものがあります。
(点数はこの記事のための適当な数値で、実際の数値とは異なります)
・敵の視界に入っていない(+300点)
・直前に倒された敵との距離が一定以上離れている(+100点)
(死んだプレイヤーが直前に倒された敵の位置を把握してしまっていると決め撃ちされてしまい不公平になります)
・直前にスポーンしたスポーンポイントではない(+50点)
(何度も同じところにスポーンするのはストレスですよね)
・最も近くにいる敵との距離(+10点×離れている距離)
(離れていればいるほど得点が高くなります)
最後に
うまく伝わったでしょうか。
現在AzPlex FFA DMサーバーが復活しています。しばらくは改善に取り組み予定です。
他にもこんな評価指標があるといいんじゃない?とかアイデアがあれば是非ご連絡ください!