修正案:デバッグモードの制限(段階的)

Issue #14 new
暗黒 騎士 repo owner created an issue

現在のPyReboot、PyLiteではどのタイミングであってもCtrl+Dでデバッグモードに切り替えられるようになっている。(本家Pyでは確か宿内のみ)

一方、CWではデバッグ機能が全解放された「デバグ宿」と通常のプレイ宿が完全に分けられていて、通常宿では状態変数インスペクタ等のデバグ宿の機能の一部を解放する「ユーティリティモード」しか使えない。

現在の仕様は便利ではあるのだが、常にチート機能を全開にしているようなもので、ライトプレイヤー向けでは無い。どの道シナリオや宿は暗号化されていないし、Pyは特にテキスト形式なので制限かけたところで大差は無いという考えもあるが、適度に塞いでおく必要があると自分は考える。

CWでユーティリティモードに切り替えられるのはオープニング画面からのみなので、つまりセーブできるタイミングでは現在のままにし、一先ずトレード・解散・ゲームオーバーエリアなど、必要性の低そうなところから段階的に切り替え禁止にしていく。

Comments (11)

  1. 暗黒 騎士 reporter

    ひとまず、トレード・解散でのスキン変更・デバッグモード変更を禁止した。

    スキン変更も問題となるシチュエーションが大体同じなので「特殊な状況の時はスキン変更・デバッグモード変更を禁止する」でPyLiteの仕様として一貫させた方が良いかな。3.0時はマニュアルにも書いておくべき。

  2. 暗黒 騎士 reporter

    ゲームオーバーエリアでも禁止にした。ゲームオーバーにはエリアIDが振られていないので判定はcw.cwpy.status == "GameOver"で行う。

  3. 暗黒 騎士 reporter

    戦闘中の切り替えも制限したいが、使い勝手的に不便なケースがあると思われる。 オプションを付けるはめになっては本末転倒なのでさしあたっての3.0では見送り、4.0以降で熟考の上判断する。

  4. 暗黒 騎士 reporter

    やはり制限するべきと結論。ユーザーに委ねられるものだとはいえ、通常モードにおいて戦闘中詰みそうになった時、デバッガ操作するという選択肢は作ってはならないと思う。

    次回のα版で試験的に制限して様子を見る。

  5. 暗黒 騎士 reporter

    制限した環境でプレイ中、デバッグモードのままうっかり戦闘に入って解除できないことが多く、やはり使い勝手が悪いので、5か6でCWライクのユーティリティーモードを新設し、デバグモードを完全にわけたい。

  6. 暗黒 騎士 reporter

    「ユーティリティモード」を追加し、ctrl+Dで切り替えるようにした。

    現在の仕様メモ

    • 拠点内とシナリオのキャンプ中、無条件でデバッガとゴミ箱を表示(デバッグモード共通)
    • カード操作ダイアログのカード検索対象に「キーコード」を追加(デバッグモード共通)
    • シナリオ選択ダイアログで「エディタで開く」ボタンを表示(デバッグモード共通)
    • 設定に関係なく、プレミアカードの破棄が可能(売却不可)
    • キャラクター情報の経歴クリックでクーポン操作(※経歴欄上では隠蔽クーポンは可視化されない)
    • ユーティリティモードは戦闘時に自動解除
    • デバグモードは拠点内でのみ切り替え可能(Py初期仕様に再帰)

    「デバグ宿」と「ユーティリティモード」では細かく挙動に違いがあるので現状の検証結果をメモした。

    https://w.atwiki.jp/pylite/pages/14.html#id_db7df3cf

  7. 暗黒 騎士 reporter

    Pyではそもそもデバッグ設定も全宿共通の「マスター設定」であるため、宿固有オプションを作らないとならなかった。Rebootの互換を考えると独自パラメータは余り用意したくないため、システムゴシップ「@デバグモード」を実装した。PyLiteにおいては、「@デバグモード」を持つ宿はロード時にデバグモードとなる。

    通常ゴシップ判定でシナリオ側で「デバグモードか」を判定可能な点でもよい方法だと思う。

  8. 暗黒 騎士 reporter

    どうも宿ロードの初期処理でdebugの変更処理を呼び出すとステータスバーを更新する処理周りがブッキングしているのか?surfaceがロックされてしまうらしく、何度も宿の出入りを繰り返していると不規則に変なエラーが出てフリーズするので判定処理では変数を変更するだけにした。


    • 宿選択画面からユーティリティモードで起動するUIを作る

    達成。WX部分を久々に触ると仕様が独特で混乱するな…ついでに拡張メニューが多すぎるので「変換」と「逆変換」を一つにまとめた。

    残件

    • デバッガの機能制限
    • 「UtilityMode」のスプライト表示、背景処理(半透明の黒いラインを付ける)

    背景処理は結構面倒臭さそうなので、当面手をつけないかも。

    とりあえず現状で形にはなっているので満足気味。

  9. 暗黒 騎士 reporter

    CardWirthのデバグ宿では全滅時、パーティがそのまま宿に帰還する仕様になっている。

    特にメリットがある仕様には思えないし、今変更すると変な不具合を入れてしまいそうなのでPyLite 6.0で検討する。

  10. 暗黒 騎士 reporter
    • デバッグモードでは実際の最大レベルに関わらず15に設定できるようにした

    CWのデバグ宿PCはレベルを1~15の範囲で自由に操作可能で、@レベル原点を直接操作しているようなのだが、Pyではまるで考慮されていないのでどうするべきか悩む。デバッグモードを気軽に切り替えられるのに原点操作出来てしまうとEPの整合性がなくなるので、暫定的にデバッグモードのみ、調節レベルを15まで変えられるようにした。

    レベル16以上の連れ込みPCはどうなるのかと思って試したが、これは逆にCW側で考慮されていないっぽい。レベル20を調節しようとすると、通常宿では20/20になっているのにデバグ宿では15/15になってしまう。

  11. 暗黒 騎士 reporter
    • ユーティリティモード中はデバッガからバトル・パッケージ・スタートイベントの呼び出しを禁止

    5.1から。CWのユーティリティモードにおいて、状態変数インスペクタで実行できなくなっているのは情報(冒険者情報の編集)・バトル・パッケージの三種。「情報」に関しては、Pyには連れ込みNPCの独自体力問題(キャラ編集ダイアログを開かないと体力を元に戻せない)があるので、現状デバッガからは開ける(キャラクター情報ダイアログからの直接アクセスは禁止)ようにしている。

  12. Log in to comment