WSN追加案: 背景移動・入替

Issue #453 resolved
req created an issue

セルの 移動・入替 機能を模索しています。

後には 編集不可にした背景変更ダイアログで現在のコンテントのセル内容の

表示機能を持たせようとしているので、その前段階です。

現在、背景削除 でセルをまとめて消去したり、背景置換で名前を付けたセルを セルで置き換えたりしているということは、移動・入れ替えも内部的には問題ない ようです。

エリアを移動しないでも背景画像を入れ替えたり、表示キャラクターを 裏に隠して表示・非表示したり、変えたり、メッセージ枠、テキストセルを隠したりをするのに便利かなと思っています。

ニーズがあるのか(ニーズとしてはメッセージ・セリフコンテントの方があるそうですが)、背景削除、背景置換とかがあるから必要ないのか、私の知らないうちに実装済みだとか、実現するなら

dialog.png

content_tree.png

こんな感じでいいかとかご議論いただきたいのでご提案いたします。 cwxeditor の ソースに慣れたいのもあって、出してみました。

Comments (27)

  1. req reporter

    よく考えたら、セルは削除されるわけではないから エフェクトブースター関係ないですね!

    あと 多対多の入れ替えになること自体はなんとかなりそうなのですが、 前景表示フラグとかどうしましょうか?

  2. k4nagatsuki repo owner

    入替えには技術的な問題はないと思います。

    しかし同じ名前のついたセルは複数ある可能性があり、それぞれ別のレイヤ情報を持てるので、ご提案の中にあるような2つの名前の入替えというやり方は恐ろしくややこしい事態になりそうです。1つの任意のセル名称に任意のレイヤ値を設定するような方法の方がよいのではないでしょうか?

    エフェクトブースターの実行に関する設定は、CWNextの挙動の問題に対応するためにつけたものなので、新規コンテントには必ずしも必要はないとは思います。


    あとは新規コンテントを作るほどの需要がどれくらいあるかですが、これは正直なところ疑問です。すでに背景はかなり自由自在に操作できます。

    どのセルを配置していても名称さえ分かっていればレイヤを変えられるという事は、例えばイベントシーンでマップ表示を画面の裏側に移動して終わってから手前に出すというような事ができるか、と思いましたが、これはセル移動でもできますし、フラグの領分でもあります。

    私が有効な使い方を思いつかないだけかもしれません。ご意見をお持ちの方はどんどん仰っていただければと思います。

  3. req reporter

    1つの任意のセル名称に任意のレイヤ値を設定すると、 多対1になる可能性があります。それであれば結局のところ多対多が出来ても変わりません。

    テキストセルを前に出したり、後ろに引っ込めたりとか 表示キャラクターの登場・退場という使い方もあるかと思います。

    pull request #1759,pull request #2 しておきました。議論のたたき台になればと思います。

  4. k4nagatsuki repo owner

    入替えだと、現時点で存在しないレイヤにセルを移したい時にその方法が無いという事にならないでしょうか?

    例えば

    テキストセルを前に出したり、後ろに引っ込めたりとか 表示キャラクターの登場・退場という使い方もあるかと思います。

    これらは、入替えを前提とすると、テキストセルやキャラクターの手前にダミーのセルを配置しないと実現できなさそうです。

  5. req reporter

    そうですね、何らかの背景セルか何かを置いておいて背景セルと入れ替えるか、

    透明のダミーセルとかと入れ替えるかになりますね。

    ということは、片方が設定されていない場合は、

    先頭にもっていくとかしたほうがいいのでしょうか?

  6. k4nagatsuki repo owner

    やりたい事が「任意のセルを任意のレイヤに移す」という事であれば、入替えではなく単にレイヤ値を設定できるようにした方がいいと思います。

  7. Iraka.T

    ひとりのシナリオ作者としての意見ですが、セルを入れ替える機能は使いどころが極めて限定的で、持て余されそうだと思います。

    同様のことは、背景置換でまったく同じ内容のセルを新しく作れば可能ですから、セルの入れ替えは、作者がセルの内容を把握できない状況でのみ有効に働くように思います。しかし、作者が把握できない状況を作り出すことは、バグの温床となるため、あまり行われないでしょう。

  8. req reporter

    そんなものなんですね~。背景1、背景2、メッセージ枠、メッセージ枠に表示する文字、表示キャラクターとかにそれぞれ名前を付けておいてレイヤ切替したら便利かなと思ったのですが。

    基本的にはやりたい事は「任意のセルを任意のレイヤに移す」ってことなんですが、作者がセルの内容を把握できなくなってくるというのはその通りで、レイヤ値指定 はその点では ちょっとつらいかなと思いました。

    なので全てのセルに名前を付けてもらって、ソースセル名称とターゲットセル名称に変えて ラジオボタン1つ付けて、移動(ターゲットセル名称の最初のセルの前に移動) と入替を切り替えてもいいのかなと思いました。

  9. Iraka.T

    メッセージ枠の拡張でしたら、是非背景ではなくそれ専用の新機能を実装していただきたいです。これには需要が高いはずです。

    背景はバックログに残りません。メッセージを背景セルで描画することが主流になると、バックログは機能として死にます。

    バックログを死なせないために、テキストセルをバックログに残すオプションを作るよりは、メッセージ系コンテントのビジュアルを拡張する機能を作るほうがいいと思います。

  10. req reporter

    メッセージ枠の拡張という案はとても賛成です。 しかし自分としてはソースコードみはじめて間がないので、迂闊なことは言えません。

  11. req reporter

    あと メッセージをテキストセルなどで書いたとしても、今のところビジュアルリンクやアイコン表示などでの入力待ちとかが出来るわけではないので、本当はメッセージやセリフを拡張したほうがいいですね。

    貴重なご意見ありがとうございます。WSN追加案一覧に、メッセージ枠の拡張 を追加しました。

  12. Iraka.T

    考えを言うのは迂闊ではないと思います(ので、私も言うようにしています)。特にここは意見を交わす場ですから。

    現在、テキストセルには、問題が多数あります。そのため、私はテキストセルを使いません。jptxもです。

    テキストセルは文字描画の調整ができません。行高や字間など、すべてフォントに依存します。指定のフォントがプレイ環境にインストールされていなければ、意図した表示にはなりません。代替フォントの指定もできません。また、エンジンのフォント設定も反映できません。

    セルの領域をはみ出す部分は途切れてしまいます。これは縁取り形式1の行頭や一行目で頻繁に発生しますし、一文字の矩形範囲から大きくはみ出す文字(フォントによっては存在します)は当然見切れてしまいます。パディングの指定ができないので、これを防ぐには空行やスペースを置くしかありません。空行やスペースのサイズはフォントに依存しますので、インストールされていなければ表示の乱れが大きくなります。

    行の折り返しもされません。ただテキストを表示するだけなら必要ない機能だからなくても問題ないことですが、メッセージに使うなら問題になりえます。

  13. req reporter

    何となく開発する人間として、少し自制してしまいました。

    ご指摘の点はその通りだと思います。

    自分も jptx を自動的に作成させて文字数も制限を掛けて、

    メッセージ表示しようとしたこともありますが、なかなかうまくいきませんでした。

    メッセージ枠は、今ソース読んでみたところ計算されて折り返しなどが されているようなので 直ぐには手を入れられないかもしれませんが、

    フォント色の強化 とかからなら、やりようによっては出来ると思います。 すぐ対応してほしかったら、WSN追加案で課題を立てていただければと思います。

  14. req reporter

    自分は メッセージやセリフコンテントのパワーアップと同様、 セルも使いやすくなっていって欲しいです。

    例えばですが、

    アニメーションセル(簡単なGUIでの設定で、エフェクトブースターのJPY1書かなくても簡単なアニメーションを実現)とか、

    テキストセルを問題解決(バックログにも表示するオプションも持つ)するとか、 アイコンリンク・文字リンクやそのリンクが押されるまでの入力待ちとか、いろいろできてほしいです。

    ティラノスクリプトには [layopt] (レイヤの属性設定)というタグがあり、

    layerパラメータでレイヤ名を、

    visibleパラメータで表示・非表示を切り替えることが出来ます。

    それを利用していろいろできます。

    吉里吉里もティラノスクリプト互換(吉里吉里の方が先だろうから逆でしょうが) なので同様でしょう。ノベルゲームではデファクトスタンダードです。

    そこで思ったのはセル名称が例えば@数字だったら レイヤ値 として判断するというのはどうでしょうか 長月さん。 それであれば安全に移動が可能ですし、 メッセージコンテントのメッセージで各種表示用に使われている記号とかとは字句解析されているのですぐには変更できないかもしれませんが、セル名称 はWsn.1の拡張機能で、内部的には メッセージコンテント の本文を利用して指定したパラメータで取ってきているだけ(多分)なので最初に@なりの記号が付いていても問題ないはずです。他にセル名称の最初にその記号を使っている人がいれば問題なんですけどね?

    何より途中まで作った(まあ試してみたというのもありますが)のが報われるかなあと思います。

    後には、エディタに コンテントツリーのコンテントを右クリックしたら現在のセルの内容を把握できるように表示するという機能を追加したらどうかと思います。

  15. req reporter

    ・移動、入替の切替チェックボタン

    ・セル名称の最初に@が付いていたらその後ろの数字でレイヤ値指定

    ・上記 pull request してしまったときに長月さんにご指摘いただいた点の修正

    以下の修正を加えて、コミットログや画像でどのような修正を加えたかお示ししたいと思います。

  16. req reporter

    文字描画の調整とか、折り返しとか、ノベルゲーム作成ツールではどう処理してるんでしょうね?

    何かソースコードが公開されているものか何かあればいいのですが。

    まあ メッセージ・セリフ コンテントでの文字の表示処理を読み解いて、

    それをテキストセルに持ち込んでみるのがいいかもしれませんね。

  17. k4nagatsuki repo owner

    この機能を実装まで持ち込むには、どのようなメリットがあるかを明快に示す必要があると思います。

    CWの背景操作は、すでにかなり自由が利きます。背景セルを新しく配置したり、入替えたり、位置を移したり、といった事は既存のコンテントでできますし、フラグによって存在するセルを出したり消したりする事も自在です。

    それを踏まえた上で、この機能で何か新しい事ができるのか、あるいは既存の方法を非常に簡略化できるのか、という事を具体的に示せなければ、あえて新しい機能を追加するまでもない、という事になってしまいます。

    仕様に追加するという事は、それを永遠にサポートし続けなければならず、新しくエンジンやエディタを実装する時にも避けて通れなくするという事を意味しています。ですから、この新機能にしか存在しない、一目瞭然な利点を示すのは大切な事です。


    真に新しい事ができるわけではないがあえて実装された機能としては、最近だとクーポン多岐分岐やランダム多岐分岐があります。これらには、イベントツリーの簡略化ができ、しかも簡略化の度合は分岐の数が増えれば増えるほど圧倒的になるというメリットがありました。

    今回は新しい事ができるわけではなさそうなので(レイヤの変更なら背景変更コンテントが使えます)、この機能でできる便利な事例を具体的に示せれば、私を含め周囲の人の賛成を取り付けられると思います。

  18. req reporter

    そうですね、仕様に追加するという事は、それを永遠にサポートし続けなければならないということを考えると迂闊なこと言えませんかね。

    慣れた背景変更とかで設定しなおしても同じだとは思うのですが、毎回同じように位置設定・フラグ、画像名とか設定しなくてもいいかなと思いました。

    今書いていて思ったのですが、背景変更 の表示デフォルトを今のセル状態にする オプションとかがあるのでしたらこの案は取り下げますが、今はないですよね? それを模索してもいいのでしょうか?

  19. k4nagatsuki repo owner

    今書いていて思ったのですが、背景変更 の表示デフォルトを今のセル状態にする オプション

    これはもしかして背景継承の事でしょうか?

  20. req reporter

    CardWirthPy で背景継承どこで選ぶんだろう・・・ 開発に参加し始めている身で申し訳ない感じです。

    背景継承ってエリアの最初で指定して、セルレイヤ0を継承するんですよね?

    エリアの最初か背景変更で、 セルをいろいろ追加した状態で 背景削除や背景置換、背景再配置などを 反映した現在のセル状態を、背景変更のデフォルト表示にするオプションを 付けたらいいかなと思いました。

    そしたらそれの入れ替えとかも矢印アイコンで入れ替えるだけですから。

  21. Iraka.T

    CWXEditorの背景継承は、エリア背景や背景変更コンテントの一番最初の(上の)セルがフルサイズの不透明画像でない場合に継承されますよ。シナリオをCardWirthEditorやWirthBuilderで開いて見比べてみるとわかります。

    そして、背景継承が継承するのはすべての背景セルです。背景不継承にすると、それまで積み重ねてきたセルをすべて破棄する、それ以外は常に(同階層レイヤの)上に重ねていくという処理になっています。

  22. k4nagatsuki repo owner

    書いてるうちに@IrakaTさんが分かりやすく説明されましたが、せっかく書いたので置いておきます。


    CWにおいて、背景は、「背景変更やエリア移動によるは背景更新で、一番最初のセルが、0,0に配置された、632x420の、フラグを設定されておらず、透明色もないイメージセルだった時」に、一旦リセットされます。これが背景が継承されていない状態です。

    それ以外の場合、背景は継承されます。つまり、それまでに配置されたセルは全部残っている状態で、新しいセルがそれらのあとに配置される事になります。

    そしたらそれの入れ替えとかも矢印アイコンで入れ替えるだけですから。

    この辺りはエディタのコピー&ペーストやイベントテンプレートなどを駆使すれば楽ができそうな気がします。

  23. req reporter

    エディタのコピー&ペーストでいいですね。そうですね、失礼しました。 この案は取り下げたいと思います。

  24. req reporter

    自分が納得しましたし、他のコンテントで十分であり、ニーズもなさそうということで課題解決とします。

  25. Log in to comment