WSN追加案:バックパック機能の実装

Issue #814 new
Former user created an issue

Nextにあるバックパック機能の実装を希望します。

XEditorで、Nextのデータが読めるようになるのであれば バックパックを実装したほうが合理的だと思います。

『Nextが実装し運用された期間』と、 『Nextでプレイしている人口』を考慮に入れると、

現状では「バックパックがあるというのが当たり前」、と認識している人が 多数を占めている状況に見えます。

バックパックを実装することによりNextとの差異が減り Next→Pyの変換において、バックパック対応スキルも

スムーズに変換できるという利点もあるのでは、と思います。

バックパックは「ゲームバランスを崩す」という人も居るかもしれませんが それは、一部の

『現実を直視する気の無い少数の老害の戯言』 ではないのでしょうか?

彼ら『少数の老害』の言い分を肯定すると

「Nextエンジンでのプレイはゲームバランスを崩す」ということになってしまい

現状におけるNextの使用状況を考慮に入れると

上記の『少数の老害』以外の 「Nextを使っている『大多数のプレイヤー』は崩れたゲームバランスでプレイしている」

という事となってしいます。

あくまでこれは、個人の主観ですが。

Comments (28)

  1. ルンバ

    部分的に賛成ですが、NEXTそのままで単純実装は不賛成です。
    バックパックの機能として少なくとも
    ①単に個人用の荷物枠
    ②技能使用回数が担保される枠

    という面があります。

    ①に関しては
    荷物袋の使用を禁止するコンテンツとの兼ね合いがありますが
    「単に荷物袋と連動」か「荷物袋禁止状態でも:Rのないキャラのみ使用可能とする」「荷物袋禁止状態でも:Rの有無を問わず出し入れ可能とする」といった選択をシナリオ作者側からできればむしろ従来よりも便利です。

    私がNEXTをプレイしている時にバックパックが便利に感じるのは単なる私物入れとしてですし、そういう方も多いと思います。

    のでこれは実装を期待したいです。

    ②に関しては
    シナリオ作者ごとに考え方の違いがありますので一つの答えを出すのは難しい気がします。

    今更ですがNEXTでこの機能を実装する時に「カードごとにバックパックでの使用回数担保可否を決める仕様」ではなく
    「どのようなカードでもシナリオ側で一括して技能使用回数担保可否を選べる仕様」であれば良かったと思います。
    であれば、シナリオ作者ごとに使用回数担保のON/OFFの選択が可能だし、カード自体に特殊な仕様をもたせる必要はなかったと思います。

    なぜなら「カードごとにバックパックでの使用回数担保可否を決める仕様」の問題点はその普及が進むほどに、昔のカードが忌避される可能性が高まるからです。過去のリソースの重複が特別に価値を持つカードワースというゲームにはふさわしくない仕様だと思います。

    なのでもし技能使用回数担保機能を導入するのであれば「どのようなカードでもシナリオ側で一括して技能使用回数担保可否を選べる仕様」であれば歓迎です。

    ただし、わざわざ新仕様を作成する必要があるのかも議論が必要でしょうが。

    なので私は私物入れとしての①の実装はお願いしたいです。
    ②は皆様の議論をお願いしたいです。(もちろん①も異論があればお聞きしたいですが)

  2. ルンバ

    なお②の機能が実装されない事が決定したなら①の枠は現在のNEXTの枚数指定にこだわる必要もないと思います。 実際私はNEXTプレイ中には単なる私物入れとしての枚数制限を不便に感じています。

    ①だけでも私物入れの中を対象にしたキーコード所持分岐やカード所持分岐の扱いを新設するのが大変そうなので急ぐ必要は無いと思いますが。

  3. k4nagatsuki repo owner

    ご提案ありがとうございます。

    まず第一に、フレームになりそうな表現は控えていただけると助かります。

    さて、バックパックでゲームバランスが変化するというのは、単に事実であり、少なくともバックパックの無い時期に作られたシナリオに関しては崩れたゲームバランスでプレイされているのも事実です。

    ただし、CWではゲームバランスは他のゲームと比べて曖昧性が高く、その時々のシナリオの傾向によっても変化が激しいため、その事実の重要性自体が低いのではないかと今は考えています。

    逆から見ると、仮にバックパックがある状態から無い状態に移行するような場合でも、バランス面での問題は起きにくいであろう、という事も言えます。


    ここ数年で私が認識した問題は、バックパックは既存の効果系カード処理に独立した別経路を設けてしまう事です。効果系カードを管理するイベントツリーを作る際に、きちんとやろうとすると従来に比べて複雑性が倍以上に増えます。

    「誰か一人がカードAを所持しているか判定する(荷物袋は除く)」という1コンテントで済む処理をバックパック対応にしようとしてみれば、それがいかに面倒かが分かるはずです。また、バックパックから使える技能カードとそうでない技能カードを識別する方法はありませんが、もしあったとしても、シナリオ作者が作る必要のあるイベントツリーはいちいち面倒でテストしづらい構造になってしまうなど、無数の新しい課題を導入してしまいます。

    既存のシナリオのイベント構造に穴が開く事も考えなければなりません。新機能は、無視してしまっても特に問題無い、というものである必要がありますが、バックパックはそうではなく、効果系カードを取り回す(既成のものを含む)全てのシナリオ作者が意識して対応を行う必要があります。

    この本質的な難しさの問題は、残念ながらすでにシナリオの潜在的バグという形で顕在化しており、CWNext向けに作られていても、カードやキーコードの所持判定でバックパックまで考慮してきちんと処理を行っているシナリオはあまり無いようです(私が調べた650本余りの中では、バックパックの操作自体を主目的したものを含めても13件だけで、選択メンバだけを相手にする一番簡単なケース以外に対応しているものは0件でした)。

    明らかに技術的な面で筋の悪い機能です。私は、致命的な互換性問題のためにどうしても必要にならない限り、この機能をWSNに入れたくありません。


    @RoombaCWさんが「私物入れ」と表現されていますが、バックパック機能に求められている用途の一つに、記念品だとか、そのキャラクターに強く結びついているが使用はしないカードを入れるというものがあります。そちらの需要だけを満たす何らかの機能を作るのであれば、上記のような問題もほぼ発生しないかと思います(ゲーム性に結びつかない、完全に問題を起こさない仕様を考えるとすると、隠蔽者の所持カードをどうやって取り出すかなどの話が出てくるのでこれもなかなか面倒そうではあります)。

  4. k4nagatsuki repo owner

    上記の通り、荷物袋内のカードを個人が所有するようにすると、どうしても「荷物袋にあるはずのカードがPCの隠蔽・隠蔽解除によって消えたり現れたりしてしまう」といった既存のシナリオで問題の出る現象を防げないので、問題の無いやり方を考えてみました。

    仮所有とでもいうべき考え方を導入すればよさそうです。この考え方により、荷物袋にカードが存在する事と個人が同じカードを所持している事を、見かけ上両立できるようになります。

    仕様は以下の通りです。

    1. 荷物袋のカードをPCへ仮所有として送れるようにする。
    2. 仮所有されたカードは、荷物袋の中にとどまっているが、仮所有しているPCの持ち札としても見えるようになる。

      • PCは仮所有のキーとして、カードの種類・名前・解説・使用回数を持つ。もし同じ使用回数のカードが荷物袋になかった場合は、使用回数以外がマッチするカードを仮所有した状態になる。
    3. PCは、アイテムと召喚獣の所有数に余裕がある限り、仮所有しているアイテム・召喚獣を直接使用できる。その際の挙動は荷物袋カードの使用と同様。

    4. 荷物袋の操作が可能になった時点で荷物袋から仮所有されているカードがなくなっていたら、仮所有は解除される。

      • 解除されなくてもいいかもしれない。その場合、同じカードが荷物袋へ戻ってきた場合に仮所有が復活する。
    5. 荷物袋が禁止されている時は、仮所有しているカードも見えなくなる。

    6. 仮所有情報はシナリオからは無視される。荷物袋にあるのと同様の扱いになる。

    いくつか検討すべき事項もあります。

    1. UIをどのようにするべきか?

      • 「送り先」に「~の仮所有」というような項目を設けて送れるようにするか?
      • PCのカード欄では特殊技能・アイテム・召喚獣の下に仮所有のボタンを設けるべきか?
      • 仮所有という名前はいまいちなので、もっとましな名前にするべき。
    2. 理屈の上では複数のメンバが同じカードを仮所有する事も可能だが、抑止した方がよいか?

    3. 仮所有されているカードは荷物袋の操作時に見えなくなっていた方がよいか?

      • その場合、そのカードを仮所有しているPCがいなくなったら荷物袋の表示が復活する。
    4. 枚数制限はどうするか? 枚数制限は実質必要ないが、制限無しにすると頁切替が必要になってくるので、UI設計の問題が追加発生する。

    なお、この仮所有はエンジンのインタフェースだけの問題でシナリオの仕様とは関係ないので、実装の際にはオプションでオン・オフする事も可能になるはずです。

  5. ルンバ

    これは、荷物袋内に各人のスペースをパーテーション区分するという事なのかと理解しました。
    それなら所有分岐のややこしい問題も持ち込まずにバグも避けられますし
    PCレベルに応じた枚数制限も設ける必要が無く便利そうです。

    以下はその理解に基づき今後もNEXTのような所有分岐を設けないという前提での意見としてご参考になれば幸いです。

    検討事項4の枚数制限はない方が良いと思います。
    少なくともPCレベルに応じた制限は無意味ですのでレベルに関わらず1頁フルの10枚まで使用できるべきです。
    できれば頁切替も対応し無制限にした方が単にプレイ上快適ですし、また個人のカードコレクションというゲーム性が向上します。
    (例えば死霊術師PCに死霊術関係カードを無制限にコレクションさせるとかプレイヤー次第)

    検討事項2の重複に関しては可能の方が便利ではありますが、煩雑にはなりますがオプションでON/OFFできるようにした方がユーザー側の多様な好みには対応できます。NEXTのバックパックとの使用感の差異は人によって真逆な反応がありえるからです。仕様2の荷物袋との重複表示に関しても同様にオプションON/OFFでもいいのかもしれません。(どちらもデフォルトはOFFの方がNEXTのバックパックと違和感が無くていい?)

    仮所有以外の名称としては意味的には『パーテーション』がわかりやすいですがゲーム雰囲気に馴染まないかもしれません。
    Skill Item Beast の下に同様に横文字で配置される分には Partition でもギリギリアリかなあ…という気もします。
    Personal spaceだと長すぎなので単に『Personal』もあり? どっちも微妙ではあるので他にもっといいのがあればその方がいいですが、バックパックとは明らかに意味と機能が異なるので別名称な必要はあるでしょう。
    個人的には、あくまで荷物袋内での扱い方、という点が明確なので『パーテーション』がいいですが。

  6. k4nagatsuki repo owner

    枚数制限は、レベルによって変化する、10枚持てる、制限無しの3つの選択肢が考えられますが、私としてはレベルによる拡張に心が傾いています。スキルカードを3枚しか持てないキャラクターが10枚の私物を持っているのは違和感がありますし、レベルによる制限がある事で、実質ゲーム内容に変化をもたらさずにレベルアップの楽しみを増やせるかもしれません。

    多い方の枚数から後で減らす事はできませんが、少ない方の評判が悪ければあとから増やすのは可能、というのもあります。


    名前について。Partitionは実態を捉えていますが、仰る通りあまりなじまないような気がします。UI上の見え方(私物のように見えるUIになるはず)との噛み合わせの悪さもあるでしょう。また、漢字2文字かカタカナ4文字程度の略称がほしいところなのですが、Partitionではいい訳語が思い浮かびません。Personalならば私用や私物といった語が当てられそうです。

    バックパックは荷物袋と意味が同じで、後々ややこしくなる事が明白なので、私は選択肢に入れていません。

    今の所、個人的にしっくりきている案はありません。時間はいくらでもあるのでゆっくり考えてみます。

  7. k4nagatsuki repo owner

    よさそうです。持ち札を含まない私物のニュアンスがありますし、ポケットに入っている間は直接使えず、しかしすぐ取り出して使えるなど、実態とイメージが合います。

    あとはポケットにロケットランチャーやらサラマンダーやらが入っているという感じの違和感にどう慣れるかでしょうか。

    他に名案が出なければ、Pocketでいいかもしれません。

  8. k4nagatsuki repo owner

    アイテム・召喚獣カードを使い切った時の仕様を考えていませんでした。

    普通に考えると、使い切った時に仮所有は解除されます。しかし、解除されない事にすると少し面白い事が起こります。

    例えば傷薬を仮所有しているメンバがそれを使ったとします。傷薬の使用回数は1回なので使い切り、消滅します。ここで荷物袋に傷薬がもう1つ入っていると、前の仮所有情報が残っているので、次の傷薬を仮所有した状態になります。

    これは便利で、見方によっては妥当ですらある仕様かもしれません。そのメンバに傷薬を持たせたいというプレイヤーの意思は、傷薬が存在する限り持続するものと推定した方がよいかもしれません。


    なお、使い切ったカードが荷物袋にも見当たらない場合は、やはり仮所有は解除した方がいいでしょう。さもないと、遠い未来に次の傷薬を手に入れた時に荷物袋に見当たらないという事になりかねません。

  9. k4nagatsuki repo owner

    PCをパーティから外した時と解散した時の処理を少し工夫した方がよさそうです。PCがパーティから外れて別のパーティへ加入した時は仮所有をどうするか、解散して再結成した時はどうするか、といった問題があります。

    単純に考えると以下のようになりますが、

    • 外れたPCのカードは荷物袋に戻ってきて、別パーティに入った時はその別パーティが荷物袋に持っているカードが仮所有される。
    • 解散した場合、仮所有情報は消滅する。

    これはいかにも不自然です。

    そこで、パーティから外れたPCのカードは荷物袋からカード置場へ移動する事を考えます。

    1. パーティから外れたPCの仮所有カードはカード置場へ移る。PCの仮所有情報は消去しない。
    2. 仮所有情報を持つPCがパーティへ入った時、カード置場から該当するカードを探し、見つかったら荷物袋へ移す。
    3. 該当するカードが無かった場合、仮所有情報は消滅する。

    パーティの解散時・新規結成時は、上記の処理をパーティメンバ全員に行うだけです。

  10. ルンバ

    名称に関しては#889の事もあるので直球ですが「ブックマーク」もありかと思います。機能が明快でパーテション程は違和感が無い気がします。

    Skill Item Beast に続きBookmarkだとやや文字数多いのが難点ですがアイコンも単に☆にすればいいです。

    ポケットも悪いとは思いませんが、意味を込めるならばブックマークを推します。貼紙ウインドウには☆によるブックマークは馴染んでいるが、ゲームプレイ中にその文言が登場する事を許容するかどうかの好みの問題もありますが。

    またもし、カード置き場や荷物袋にある仮所有中カード(の左下とか?)にアイコンを付けたりする際にも☆で済みます。現パーティが仮所有中ならその☆に1~6の数字が重なるとかだと便利そうです。(このアイコン+数字的なものは名称が何であれ検討していただければと思いますが、複数人が同じカードを仮所有はできない仕様であればです)

  11. ルンバ

    #889見直したら、現状すでに荷物袋内で☆でブックマークできたんですね…

    そうするとブックマークの名称も被りで駄目駄目ですが、何か仮所有中な事とその人物数を明示するアイコンの部分だけご検討していただければと思います。

  12. k4nagatsuki repo owner

    仮所有されたカードが荷物袋に残るのであればなんらかのマークは必要だと思います。

    私としては、仮所有されているカードは荷物袋から消えていた方がいいような気がしています。そうする事で、同時所有の問題だとか、他のメンバが一時的に取り出して使おうとした時の問題だとかいった複雑な問題を回避できます。

    その場合でも隠蔽したメンバの仮所有カードは荷物袋に戻ってくる事になるので、やはりマークは必要です。半透明に描画するというような形でもよさそうです。

  13. k4nagatsuki repo owner

    パーティから外れた時の処理ですが、パーティから出る・入るという操作はシナリオの外でしか発生しないので、仮所有中のカードは宿帳に入った時点で本当の所有に切り替えてもいいかもしれません。そうしてもシナリオの動作に影響する事はありません。

    1. 仮所有を行っているメンバがパーティから外れた場合、仮所有中のカードは外れたメンバの(本当の)所有カードとなり、パーティの荷物袋から消えます。
    2. 仮所有枠にカードを持っているメンバがパーティに加わった場合、それらのカードは荷物袋に入り、仮所有状態になります。

    動作としては一番自然そうな気がします。

  14. k4nagatsuki repo owner
    • 隠蔽メンバの仮所有カードが荷物袋へ戻ってくる問題ですが、これはそもそもキャンプモードで隠蔽メンバの仮所有カードを操作できれば問題なさそうです。見た目もその方が自然になるはずです。
    • 荷物袋内のカードを探索する時、仮所有中のカードは最後にヒットするべきです。荷物袋内のカードを1枚消すというような場合に仮所有されているカードが先に消えるのは不自然です。
    • 所持枚数に制限をつける場合、レベル調節の時の挙動を決める必要があります。他の所有カードと同様荷物袋送りになり、レベルを戻した時に返ってくるか、そのままになるかです。後者は仕様と実装がシンプルになりますがプレイヤーの目からは前者の方が自然な気がします。

  15. k4nagatsuki repo owner

    pull request #36

    ここまで書いた事を踏まえての実装です。

    • 名前はとりあえず私有・私物・Personalとしました。画像を作ってみたら思ったよりはしっくり来たことと、以下のようなニュアンスを持たせられそうな事が理由です。ただし他の候補と比べて名案といえるほどではないとは感じています。

      • 使用するために持っている特殊技能・アイテム・召喚獣と異なりすぐに使えるわけではない文字通りの私物である事
      • 荷物袋の中の枠(私物枠)である事
    • 私有したカードは荷物袋からは見えなくなります。

    • パーティから離脱した時は完全な所有状態になります。パーティに加入した時は荷物袋に入れてから私有化します。
    • アイテムと召喚獣は私物枠から一時的に取り出して使用できます。
    • 枚数制限はレベルによっています。評判が悪いようなら将来緩和できます。

      • レベル調節した場合は他のカードと同じように一時的に手放した状態になります。
    • 荷物袋内を検索した時は、私有カードが最後にヒットします。

    • キャンプ中は、隠蔽状態でも私物の操作を行えます。
    • オプションで無効化できます。

  16. ルンバ

    実装ありがとうございます。

    用意していただいた画像はクラシックスキンに違和感ない印象ですし、こういうカバンやサイドバッグ的な素材はそこそこ出回っている気がするのでその他スキンにも各プレイヤーごとに利用しやすそうです。

    枚数に関してこれはこれでレベルアップが楽しみになるゲーム性が増えた気がしますが、高レベルPCが一時的にレベル制限をしている時こそ元のカードをこの機能で持たせておきたいものでしょうから、オプションで良いので枚数制限OFFはやはり必要かと思われます。

    デバッグ用高レベルパーティを必要に応じLV調整というのはシナリオ作者なら多くの方が行っていると思いますし、一般プレイヤーでも最高LV到達後もそのまま冒険を続ける人はある程度確実にいるでしょうから。コレクション的意味でこの枠を使うだけでなく、鑑定重視シナ用装備とバトル特化シナ用の装備ワケといった実用上でのこの枠の使用も見込まれますので。

  17. k4nagatsuki repo owner

    私有の枚数はゲームバランスに影響しないので、たしかに仰る通りなんですよね。

    レベル調節に対応している理由はパッと見のバランスが凄く悪くなるという気分の問題でしかないので根拠としては弱いです。

    レベル調節への対応を外す事自体は簡単なので、もう少し意見が集まってから考えます。何も意見が出なければ外すと思います。

  18. ルンバ

    すみませんLV調整を戻すとカードも戻る仕様での実装だったのを見過ごしていました。それでもやはり本来のこの枠での保持カードがそのまま確認できる方が望ましいプレイヤーはいるでしょうから、オプションで良いので枚数制限OFFはやはり必要かと思われます。

  19. k4nagatsuki repo owner

    今はパーティから外すと私有カードは本当に所持した状態になりますが、改めて考えるとちょっとこのやり方は筋が悪そうです。

    1. 宿帳にいる時に私有カードを確認できません。UIを追加するには情報欄が狭いです。
    2. オプションで機能のオン・オフを切り替えられますが、オフにしても本当に所有しているカードは所有したままの状態になります(一応パーティに加入すれば荷物袋へ入ってはきます)。

    上の方に書いた、カード置場へ送って後で回収するやり方の方がましそうです。実装し直します。

  20. k4nagatsuki repo owner

    pull request #44

    とりあえずレベル調節中の枚数制限に関して隠しオプションを追加しました。

    以下でレベル調節の影響を受けないようにします。

    <LevelAdjustmentAffectPersonalPocket>False</LevelAdjustmentAffectPersonalPocket>
    

    私もしばらくこの状態で使ってみます。

  21. カニ風味

    いつも更新お疲れさまです。
    以前から楽しみにしていた追加案だったのでさっそく試させていただきました。

    満杯状態のPersonalを入れ替えようと宿のカード置き場や荷物袋からPersonalへ召喚獣を送ったところ、
    交換モードでPersonal内の技能やアイテムカードが表示されずに召喚獣のみが表示されており、送り先のPersonalに召喚獣がない場合ではカード交換ができないようです。

    同じ条件で技能やアイテムカードを送った場合は召喚含む三種類全てのカードが表示され交換することも出来たので、おそらく不具合かと思いご報告させて頂きました。

  22. カニ風味

    いつもお疲れさまです。

    Personal同士の交換モードでカードビュー右上の送り先からキャラのPersonalを指定して交換する場合と、手動選択で送り先キャラのキャストカード手前に表示されるカード入れのアイコンをクリックして交換した場合で挙動が違うようなのでご報告させていただきます。

    前者は相互にカード交換されるのですが、後者は交換モードで選んだカードが送り元キャラのPersonalではなく荷物袋に送られてしまいます。

    また交換モードでカードを選択せずに閉じてキャンセルした場合も、前者は送り元キャラのカードビューが表示されるのに対して、後者はカードビューが表示されずにカード置き場や荷物袋のエリアが表示され、もう一度キャンセルするとキャラの私有カードが解除されて荷物袋内の最下段(ソートし直すと整列条件の位置に戻ります)に配置された状態で送り元キャラのカードビューが表示されるようです。

    cardwirthpy 20200808c_x64 にて宿画面とシナリオプレイ中のどちらの操作でも発生しました。

  23. k4nagatsuki repo owner

    pull request #70

    ご報告ありがとうございます。

    スプライトというかアイコンをクリックした時の処理には、私有スペースに空きがあるならそのまま渡し、そうでないのであれば交換ダイアログを開くという分岐があります。

    そのまま渡す処理の中では、渡そうとしているカードの私有フラグが一時的に解除されるのですが、その解除処理だけが分岐の前にはみ出ていました。

    そのため、交換ダイアログを開いた時点でカードが荷物袋へ戻ってしまっていました。

  24. 暗黒 騎士

    CardWirthPy 4.3 (64-bit)
    Build: 2020-09-12 15:34:20

    1~2人のパーティで、宿帳からキャラを1人加入させた直後、カード操作ダイアログの「送り先」の私物と人数の計算がおかしくなっているように見えます。また、キャラクター名を変更した直後も私物側は送り先名が更新されていないようです。

    送り先でも枚数が表示されるのはいいと思うんですが、セレクトボックスが狭いため、「(キャラ名)の私物x/x」では名前が1文字のキャラしか枚数が確認できません。表記を縮めるか少しボックスを横に伸ばした方がいいのでは?

  25. k4nagatsuki repo owner

    1~2人のパーティで、宿帳からキャラを1人加入させた直後、カード操作ダイアログの「送り先」の私物と人数の計算がおかしくなっているように見えます。また、キャラクター名を変更した直後も私物側は送り先名が更新されていないようです。

    これは私物とは関係ないバグで、カード選択ダイアログの再利用を行うようになったためにCWPyBitmapComboBoxの不具合が顕在化していました。pull request #102で他の不具合とまとめて修正しました。

    送り先でも枚数が表示されるのはいいと思うんですが、セレクトボックスが狭いため、「(キャラ名)の私物x/x」では名前が1文字のキャラしか枚数が確認できません。表記を縮めるか少しボックスを横に伸ばした方がいいのでは?

    これは私も実装時に気になっていたのですが、これ以上ダイアログ上部にスペースはありませんし、よい文言も思いつきません。コンボボックスを開いた時に確認できるだけでも無いよりはましくらいに考えています。

  26. Log in to comment