「TeamControler R0.03」の編集履歴(バックアップ)一覧に戻る
TeamControler R0.03 - (2012/06/15 (金) 20:47:57) の編集履歴(バックアップ)
【本ページは記述中です】
(2012/06/14 21:30 記述開始)
(2012/06/14 21:30 記述開始)
■忘れないうちに重要な注意事項を記載致します
(1)R0.03の主要機能は下記2点になります
- マップ別補正値の自動修正機能
- プレイヤー能力計算式のマップ別設定
(2)その他の修正は下記3点になります
- 通信関連パラメータのディフォルト値変更
- PluginLogへの出力抑制を可能に
- ラウンドの途中でProconまたはPluginを再起動した場合に既接続プレイヤーの全PAを自動取得
- 途中接続者のチーム配属方法にて「強制不利Join」を利用可能に
- プレイヤー能力計算式に入力した+記号がProcon再起同時に消えてしまうProconの不具合に対応
- プレイヤー能力計算式で使用可能な項目を追加
(3)一部の項目にてR0.02とはパラメータの互換性がありません
下記のパラメータはR0.02とは互換性がありません。
- プレイヤー能力計算式
- 評価対象マップ名
パラメータ名称は変更されていないため、
Proconの仕様によりR0.02用の設定値を自動で読み込みますが、
そのままでは正常に稼働しませんので後述の手順に従ってR0.03用に適宜変更して下さい。
Proconの仕様によりR0.02用の設定値を自動で読み込みますが、
そのままでは正常に稼働しませんので後述の手順に従ってR0.03用に適宜変更して下さい。
(4)新DLC Close Quarters対応について
2012/06/12に新しくリリースされたDLC「Close Quarters」では4種類のマップを3種類のゲームモードでプレイ出来ます。
TeamControlerでは新DLCに対する特別な修正及び試験は行っておりませんが
既に多数の鯖管様より情報が寄せられておりますので、
下記の通り纏めさせて頂きます。
既に多数の鯖管様より情報が寄せられておりますので、
下記の通り纏めさせて頂きます。
- 新マップは4種類とも正常稼働するがゲームモードによっては使用不可
- Conquest Dominationの場合は問題なく稼働する
- Gun Masterの場合はチケットの内部的な扱いが不明なため強制不利Join機能の稼働状況が未確認
- Team Death Match Close QuartersについてはTeamControlerが3チーム以上のゲームモードに対応していないため稼働しない
従って、詳細な試験は未実施であるものの、ゲームモードがConquest Dominationの場合は使用可能と考えられます。
■TeamControler R0.03リリースの趣旨
様々なプレイヤーの特性を数値化するためのパラメータが「プレイヤーの能力計算式」ですが、
R0.02では全てのマップ共通で一つのパラメータとなっていたため、
一台のサーバで特性の異なるマップをローテーションさせる場合には
適切なパラメータを見出すことが難しいものとなっていました。
R0.02では全てのマップ共通で一つのパラメータとなっていたため、
一台のサーバで特性の異なるマップをローテーションさせる場合には
適切なパラメータを見出すことが難しいものとなっていました。
そのためR0.03ではマップ別にプレイヤーの能力計算式を設定出来るよう改修を行っています。
また、マップ別補正値に適切な値を設定するためには相当量の戦績データを収集する必要があり、
そのための手間も時間も多大なものになりがちです。
そこで、ラウンド終了毎に自動で補正値を修正する機能を追加しました。
そのための手間も時間も多大なものになりがちです。
そこで、ラウンド終了毎に自動で補正値を修正する機能を追加しました。
■Pluginログの出力抑止について
R0.02ではPluginタブの画面下部に大量のPA(プレイヤー能力値)に関する情報が出力されました。
この情報が不要な場合には「プラグインログを出力する?」で"No"を選択することにより、出力を抑止することが出来ます。
この情報が不要な場合には「プラグインログを出力する?」で"No"を選択することにより、出力を抑止することが出来ます。
■R0.03.01.218 (パラメータ設定画面イメージ)
■サーバ接続関連パラメータのディフォルト値変更について
- 送信タイムアウト(ms)
- 受信タイムアウト(ms)
StatsNowServerが高負荷状態の際、希にTimeoutが発生していたためディフォルトタイムアウトを延長しています。
Timeoutが発生しやすいのは朝(午前中)となっており、
データベースの整合性確認やバックアップ処理など大容量の一括処理が実施されていることが原因です。
Timeoutが発生しやすいのは朝(午前中)となっており、
データベースの整合性確認やバックアップ処理など大容量の一括処理が実施されていることが原因です。
- バランス処理開始待ち時間(秒)
Timeoutの発生を考慮するとバランス処理の開始はやや早めの方が適切となるため、
ディフォルトの待ち時間を若干短縮しています。
ディフォルトの待ち時間を若干短縮しています。
■プレイヤーの能力計算式(PAE)の変更について
マップ毎に計算式が設定可能となったため書式が大幅に変更されています。
(例) MP_007 : Caspian Border : Avg : (KITSCORES_ENGINEER_G + SC_VEHICLE_G) / TIME_PLAYED_G * 60 : 50 MP_012 : Operation Firestorm : Avg : (KITSCORES_ASSAULT_G + KITSCORES_ENGINEER_G + SC_VEHICLE_G) / TIME_PLAYED_G * 60 : 100
PAEは1マップあたり5つのパラメータにより構成されます。
・マップファイル名 : マップ名(可視名称) : 集計方法 : 計算式 : ディフォルト値 ・マップファイル名 : MapListに登録してあるマップ名称になります ・マップ名(可視名称) : 人間が識別しやすい名称を適宜設定して下さい(未入力不可) ・集計方式 : ・計算式 : R0.02同様のルールで記載してください ・ディフォルト値 : 該当する戦績が無いプレイヤーに設定するディフォルトPAの値を設定して下さい
各種注意事項
- Proconの仕様によりR0.02用のパラメータが保存されている場合はR0.03の初回起動時に自動で読み込まれますが、互換が無いため速やかに再設定して下さい
- Proconの仕様によりパラメータ一つあたり(複数行のパラメータについては全ての行の合計が)1024文字までとなっています
- 使用しないマップの定義は不要です
- Proconの不具合により"+"記号が保存されません。そのため"+"の代わりに"$"及び"+"(全角のプラス)を使用可能です。
(例、下記3本の計算式は同義です)
KITSCORES_ASSAULT_G + KITSCORES_ENGINEER_G KITSCORES_ASSAULT_G $ KITSCORES_ENGINEER_G KITSCORES_ASSAULT_G + KITSCORES_ENGINEER_G
■評価対象マップ名の変更について
評価対象マップも実行中のマップ毎に設定出来るよう変更しました。
(例) MP_001 : Grand Bazaar : MP_001 / MP_011 MP_007 : Caspian Border : MP_007 / MP_012 / MP_017 / MP_018 MP_011 : Seine Crossing : MP_001 / MP_011 MP_012 : Operation Firestorm : MP_007 / MP_012 / MP_017 / MP_018 MP_017 : Noshahr Canals : MP_007 / MP_012 / MP_017 / MP_018 MP_018 : Kharg Island : MP_007 / MP_012 / MP_017 / MP_018
R0.02では複数指定時の区切り文字が"|"となっていましたが、Proconの仕様により複数行入力時に"|"を使うことが出来ないため、"/"に変更いたしました。御注意願います。
- Proconの仕様によりパラメータ一つあたり(複数行のパラメータについては全ての行の合計が)1024文字までとなっています
- 使用しないマップの定義は不要です
- マップ名(可視名称)は人間が識別しやすい名称を適宜設定して下さい(未入力不可)
マップを複数指定するケースでは複数のGUIDを"|"(パイプ記号)で区切って記述してください。 "|"の前後の空白は必須ではありませんが空白がある方が読みやすいでしょう。 尚、指定可能なマップ数に上限はありません。
・評価対象期間(日数)
あまりにも古いデータはPA算出のためには無意味なものかもしれません。
当初はかなりアレだったプレイヤーさんも今では立派な方になっているかも。
当初はかなりアレだったプレイヤーさんも今では立派な方になっているかも。
そのため過去N日以内の戦績のみを対象にPA算出するための条件です。
戦績数過少プレイヤー対応設定
これは実際にあったお話。
SPMをベースにバランス処理を行う試験中にSPM2000オーバーのプレイヤーが接続。
チータかと調べてみたところ戦績が2ラウンドしか存在しておらず、うち1ラウンドがSPM5000超になっていました。
SPMをベースにバランス処理を行う試験中にSPM2000オーバーのプレイヤーが接続。
チータかと調べてみたところ戦績が2ラウンドしか存在しておらず、うち1ラウンドがSPM5000超になっていました。
そのラウンドについて調べてみると、ラウンド終了8秒前に接続しスコアゼロで終了。
コンクエスト参加とコンクエスト勝利のアワードで700点。
確かにSPM5000超になります。
もう一つのラウンドの詳細は忘れましたが、SPM0であっても平均するとSPM2500にはなってしまいます。
コンクエスト参加とコンクエスト勝利のアワードで700点。
確かにSPM5000超になります。
もう一つのラウンドの詳細は忘れましたが、SPM0であっても平均するとSPM2500にはなってしまいます。
このような事態を回避するための機能が下記2つのパラメータになります。
・最低ラウンド数
他の検索条件によってプレイヤーごとに評価対象となる戦績を絞り込んだ結果、
該当する戦績の件数がここで設定した値を下回る場合には全ての戦績を評価対象外とします。
該当する戦績の件数がここで設定した値を下回る場合には全ての戦績を評価対象外とします。
評価対象外となったプレイヤーのPAは次に説明する「プレイヤーのディフォルト能力値」で設定します。
・プレイヤーのディフォルト能力値
下記のケースに該当するプレイヤーのPAはこの項目で設定した値をPAとして使用します。
1.各種検索条件にて絞り込んだ結果、戦績が1件も存在しない場合
2.各種検索条件にて絞り込んだ結果、該当の戦績が「最低ラウンド数」を下回った場合
2.各種検索条件にて絞り込んだ結果、該当の戦績が「最低ラウンド数」を下回った場合
このディフォルト値は全プレイヤーの平均をやや下回る程度を設定するのが無難と考えられます。
プレイヤー別戦績集計方法
前述の通り、「プレイヤーの能力計算式」に基づいて各ラウンド毎のPAを求めますが、
検索条件による絞り込みを行いますが、それでも多数のラウンドの戦績が評価対象となることが一般的です。
(つまり絞り込んでも1件にはならないのが普通)
検索条件による絞り込みを行いますが、それでも多数のラウンドの戦績が評価対象となることが一般的です。
(つまり絞り込んでも1件にはならないのが普通)
各プレイヤー毎に複数の戦績が評価対象になるためPAも各プレイヤー毎にPA算出されます。
これらをどのように集計するかを指定するのが下記「プレイヤーの能力集計方式」です。
Avg 戦績毎に算出された複数のPAの平均値を該当プレイヤーのPAとする方式。恐らくこのパターンを使用するケースが多くなるでしょう。 Max 戦績毎に算出された複数のPAの中から最大の値を該当プレイヤーのPAとする方式。 PA計算式にRankなど減少することの無い値を使用する場合にはこのパターンになることが多くなるでしょう。 Min 戦績毎に算出された複数のPAの中から最小の値を該当プレイヤーのPAとする方式。用途不明。 Sum 戦績毎に算出された複数のPAの総合計を該当プレイヤーのPAとする方式。 サーバGuidで絞り込みを行い、プレイ時間の総合計を求めれば「常連さん指数」が作れますが、バランスが良くなるかどうかは不明。 Last &color(red){未実装} 最後の戦績だけを用いてPAを算出する方式。 Rankなど絶対に下がらない数値をベースとしたPAを算出する場合には、最後の戦績だけを用いるべきですがサーバ負荷の問題により未実装となっております。 多くの場合はLast=Maxの関係が成り立ちますのでMaxを指定して代用してください。
ラウンドの途中で接続したプレイヤーのチーム配属
この点については非常に奥の深い問題が多々存在しており、簡単に最適な方式が見つかりそうに無いのが現状です。
「途中接続プレイヤーのチーム決定方式」を用意しておりますが、ほとんど影響が無いためディフォルトの"Number"を選択して下さい。
尚、現状にて実装されている途中接続者の配属先チーム決定アルゴリズムは後述いたします。
マップごとのチーム編成について
ラウンド開始時に全プレイヤーのPAを算出し、PAの合計に偏りが発生しないよう2チームに配属を行います。
通常では2チームのPA合計値の差は0.1%以内に収まることを確認しています。
通常では2チームのPA合計値の差は0.1%以内に収まることを確認しています。
(例) PA算出式にRankのみ指定し、バランス処理実行時に接続していた全プレイヤーの平均ランクが30だったとします。 この場合、USの平均ランクが29.99、RUSの平均ランクが30.01などになります。
しかし、必ずしもこれでバランスの良いゲームが生まれるとは限りません。
経験的にその理由は大雑把に下記3点と言って良さそうです。
経験的にその理由は大雑把に下記3点と言って良さそうです。
1.プレイヤーの能力計算式が不適切(完全に適切な計算式は恐らく存在しないでしょう)
2.途中切断者及び途中接続者によるバランスの乱れ(この点は今後徐々に改善していく予定です)
3.マップの特性による陣営ごとの有利不利(プレイヤーの能力が50/50なら常にどちらかが勝つように出来ている)
2.途中切断者及び途中接続者によるバランスの乱れ(この点は今後徐々に改善していく予定です)
3.マップの特性による陣営ごとの有利不利(プレイヤーの能力が50/50なら常にどちらかが勝つように出来ている)
ここでは3.のマップ特性による有利不利を補正する方法を解説いたします。
Operation MetroやStrike at Karkandなど著しく一方の陣営の勝率が高いマップでは
陣営ごとの平均(合計)PAをバランスさせてもゲーム進行のバランスが良くなるとは限りません。
陣営ごとの平均(合計)PAをバランスさせてもゲーム進行のバランスが良くなるとは限りません。
そのため意図的に陣営間バランスを「不均衡に安定させる」(一定の差に保つ)ことによってゲームバランスを改善させるための機能です。
・マップ別補正値
このパラメータは使用しない場合でもマップごとに0を設定する必要があります。(ディフォルトで0になっています)
(例) XP1_001 : Strike At Karkand : 1 : 20 パラメータの意味は左から順に下記の通り マップファイル名(修正不要) : マップ名(修正不要) : チーム番号 : 補正係数(+%) ※区切り文字である":"(コロン)は消さないで下さい。 チーム番号は下記の通りです。 0 該当マップではチーム別の補正を行わない 1 US(ATT)側を補正します 2 RUS(DEF)側を補正します 補正係数は0以上の値を設定して下さい。 負の値を設定したい場合はチーム番号に逆のチームを設定して正の補正係数を設定して下さい。 US側を20%補正するとRUSに対しPAの合計が20%高くなるようバランスされます。
PluginLogの表示内容について
ProconのPluginタブを選択すると画面下部に様々なログが表示されますが、
TeamBalance処理に関する重要情報をそちらに表示する機能が実装されていますので内容について解説します。
TeamBalance処理に関する重要情報をそちらに表示する機能が実装されていますので内容について解説します。
[18:24:21 00] TeamControler : Retrieving PlayerAbility : PlayerName = M16A5 (新しいプレイヤーM16A5が接続した) [18:24:21 33] TeamControler : Response PlayerAbility : PlayerName = M16A5 : PlayerAbility = 46.000 : RecordCount = 431 (M16A5のPAは46.000と算出され、絞り込みを行った後の戦績情報は431件だった) [18:24:22 87] TeamControler : NewPlayerJoin : PlayerName = M16A5 : TeamId = 2 (M16A5はTeam1(RUS)へ配属された) [18:24:22 88] TeamControler - TeamAbility : Team1(28) = 369.000 : Team2(29) = 377.000 : Diff = 2.168% (Team1は合計28名となりPAの合計は369.000、Team2は合計29名となりPAの合計は377.000となった)
※上記Diffの値はマップ別補正を行っていない場合は0付近、マップ別補正を行っている場合は補正係数付近の値になります。
■既知の不具合(と言うより未実装機能)
- ゲームサーバがダウンし再起動した場合、再起動直後のラウンドでは正常にバランスされません。
これはダウン直前に接続していたプレイヤーがまだ接続中であると御認識することが原因です。
- ラウンド進行中にProconを再起動すると、次のラウンド開始までは正常にバランスされません。
進行中のラウンドに既に接続していたプレイヤーのPAを測定する処理を実装していないことが原因です。
■次回リリース予定の機能
(後程記載します)