-今日のひとこと-

-今日のひとこと-
私の栄光戦士はv10.3で死にました。(2022.03.11)

2015年3月21日土曜日

雑記 - フリーズ落ち -

戦闘中の分隊長フリーズ落ちによる分隊長権限の移動について、
システム的に考えてみる。
ただし、ゲームの設計経験はないのであくまで推測に因る部分も多い。


<テストケースのフロー>
1.分隊長の戦線離脱と最初の権限移動
→戦闘開始2分後に分隊長bが戦線離脱。同時に戦場での権限はプレイヤーmに移動。
 分隊CHでは分隊長はbのまま。
 ちなみに分隊員5名のイニシャルはそれぞれb/c/d/m/zで、m以外は同じコーポに所属する。

2.2度目の権限移動
→戦闘開始6分後には、分隊長bは分隊CHから消え、プレイヤーdが正式に分隊長に昇格。
 つまりこの時点では戦場/分隊CHともに分隊長はプレイヤーdである。


<考察>
権限移動が2度、戦場と分隊CHとで非同期的に発生している点について。
これは不自然ではない。


[最初の権限移動タイミング]
メインコンテンツである戦場での参加人数管理は最も重要な要素だと考えられる。
人数の差は戦力差に直結するので、公平性を保つには「抜けた分だけすぐに補充」されるように設計されるはずだ。
何らかのハートビートが途絶えたキャラクタは「抜けた」と判定され、
すぐにそのプレイヤーがシステムにより戦場からKickされてもおかしくはない。

そして、その離脱したプレイヤーが複数人で構成された分隊の分隊長だった場合は、
直ちに新たな(戦場での)分隊長を決定しなければ「誰も指示を出せない」
あるいは「誰も爆撃できない」というようにユーザにとって理不尽な状況が発生する。
この2年間でそんな状況に陥ったことはないし、そんな事になったという話も一切聞いたことがない。
おそらくはその状況を防ぐために、分隊長が戦線離脱した際はすぐに権限移動処理が行われている。


[権限移動が戦場/分隊CHとで非同期なのはなぜか]
一時的なタイムアウト等で「戦闘には参加できないがゲームに接続はされている」
という状態が発生しうることを開発側が考慮しているのだと思われる。
また、戦場と違い、分隊CHでの権限移動を急ぐ必要はないという設計思想なんだろう。

戦闘から排除された分隊長のハートビートが復帰するまでしばらく待ち、
復帰しない場合は分隊CHから削除(正式に「落ちた」と判定)するというフローになっていると推測する。
正式に「落ちた」と判定された場合、落ちた分隊長を各CHのアクセス中キャラクタリストから削除し、
分隊CHでの権限移動処理が行われるのではないか。

余談だが「ゲーム終了後しばらくCHにキャラ名が残る」という現象もこの死亡判定待ちによるものかもしれない。
自分はいつもクロスバーからゲームを終了するが、ちゃんとゲーム内メニューでサインアウトしたら残らないんじゃないかと思い始めた。


[権限の移動先]
テストケースでは、最初の権限移動先はプレイヤーmで、2度目はプレイヤーdである。

なぜ1度目と2度目とで移動先が違うのか?これは謎だ。
"テストケース"と書きつつ実際に起きて録画もしている確かな現象なのだが・・・

権限移動が2度行われるのが自然だとしても、移動先がそれぞれ異なるのは不自然だ。
どちらの権限移動でも権限移動先の判定条件を同じにして問題ないはず。
何らかの要因によって処理や使用関数を分岐させるほど重要な情報ではないように思える。
むしろ戦場で2度も分隊長が変わるなんて混乱の元でしかない。


[そもそも本当にフリーズ落ちなのか]
システム上のメリットがない以上、
テストケースではそもそも本当に分隊長がフリーズ落ちしたかどうか不明である。

つまり、分隊長が
①気が向かないので戦線離脱
②戦場での隊長が別コーポのプレイヤーmになっている可能性に気付く
③mのことはよく知らずあまり信用できないので同じコーポのdを分隊長にする
④分隊から離脱
という手順を踏んでいる可能性もあり、どちらかというとこの方があり得そうに思える。

しかし、システムを改修していく度に「低コストでの新機能実現のために一見不自然な状態遷移を余儀なくされる」というような事態になってしまうことがままあるのはIT業界の哀しい常識である。
見目明らかに杜撰な開発を続けている某社某支部のシステムなら尚更その傾向が強い、と言われても何の疑問も持てない。。


<結論>
フリーズ落ちと敵前逃亡の区別は明確にはつけられない。
落ちた当人のことをよく知らない人からすると状況によっては「なんやあいつ隊長のくせに逃げたんか?」と軽蔑認定される可能性があるので注意


0 件のコメント:

コメントを投稿