PathLink: 砂塵の彼方 > 徒然日記 > エントリタグ::CWエンジン@私家版との仕様差

エントリー

タグ「CWエンジン@私家版との仕様差」の検索結果は以下のとおりです。

[CardWirth] 続・Next宿をCW1.50に移植できたかも、という話

前回「Next宿をCW1.50に移植できたかも、という話」が、まだ続きました。

(7/15追記)
踊る金狼亭の私家版情報内に、Next→CW1.50宿移植のまとめを掲載しました。
関連記事3つの内容をまとめ、説明を意識した作りになっています。ぜひそちらもご覧ください。

※※※
前回の実験では、PCデータをNext用シナリオに移して圧縮解除、CWXEditorで開いてからクラシックシナリオとして保存し、1.50エンジンで取り扱える形に変換しました。そこまでは、そう難しくありません。
しかし、Environment.wyd にある済印や宿ゴシップの情報をバイナリエディタで移植するという難関があります。ここで間違うと、宿が使えません。
済印・宿ゴシップのもう少し簡単な移植方法はないものか……

というわけで、今回は直接バイナリエディタで移植するのではなく、Pyの逆変換機能を用い、Py宿経由で移植する方法を試しました。以下、実行した手順と結果です。
<最終更新:2019.07.13 2:38>

<Environment.wyd情報の移植(Py宿経由)>

実は、Next宿のEnvironment.wydは圧縮されていない。そのため、バイナリエディタで開けば、済印や宿ゴシップの情報がそのまま読める。

そしてさらに。
テキストエディタで開けば、テキストはテキストとして読むことができる(←ここ重要)。
ただし、うっかりテキストエディタで上書きすると宿が壊れるので、そこは気をつけた。

  1. あらかじめNextエンジンのユーティリティモードで、(1)最新・最古の済印、(2)最新・最古の宿ゴシップ をそれぞれ調べてメモしておく。
  2. Pyで空の宿を作り、Environment.xml をUTF-8対応のテキストエディタで読み込んでおく。
  3. Next宿のEnvironment.wydをテキストエディタで開き、最も古い済印から最も新しい済印までをコピーして、空のテキストファイルに貼り付ける。
    (※古い方から新しい方へ、1行に1つの済印が並ぶ形になったはず。)
  4. 各行の先頭に「<CompleteStamp>」、末尾に「</CompleteStamp>」を挿入し、全ての行が「<CompleteStamp>(済印テキスト)</CompleteStamp>」の形になるようにする。
    (※テキストエディタに一括置換機能があれば、それを使って改行部分を置換していくと早い。)
  5. Py宿 Environment.xml の<CompleteStamps>~</CompleteStamps>の間に、1つ前で加工した済印データを貼り付ける。
  6. 宿ゴシップについても、手順は同じ。最新・最古の宿ゴシップの出現位置からデータを取り出すべき範囲を確定し、4~5の手順を、
    <CompleteStamp> → <Gossip>
    </CompleteStamp> → </Gossip>
    <CompleteStamps>~</CompleteStamps> → <Gossips>~</Gossips>
    と置き換えて実行する。
  7. 宿全体の所持金も、ここで調整しても良いかも。
    「<Cashbox>4000</Cashbox>」となっているところを書き換える。
    (※4000→準備段階でメモした元の宿の所持金合計にする。)
  8. 書き換えた Environment.xml を保存。
    Next宿の Environment.wyd は、何もせずそのまま閉じる。
  9. 2で作成したPy宿の逆変換を行い、CW1.50用に変換。
    生成された Environment.wyd を、PCデータを移植した1.50宿のフォルダ内にコピー、上書きする。

こちらの方が、ミスは少ないかもしれません。

PCデータの移植方法は、前回の記事どおりが良いと思います。


実は、PCデータも、Py宿経由で1.50に移動させることができます。
展開されたWSN(XML)形式シナリオのキャストデータは、基本的に3行書き換えれば(キャラ画像は抜け落ちるものの)そのまま宿の冒険者データとして使えます。これを利用して、PCデータをCWXEditorで変換する際にXML形式で保存し、一度Py宿を作るやり方です。
その後、この記事の上の方で紹介した方法で Environment.wyd の情報も移植し、PCデータ含む全体を逆変換で1.50用に変えるのですが、この方法には直通の変換にない以下2つの欠点があります。

  • CWXEditor上の取り扱いがWSN形式で完結するため、効果音埋め込みの所持カードに全くエラーが表示されない。逆変換で効果音が消えるケースに気づけない可能性がある。
  • 逆変換により1.50仕様のカードが削除されることがあり、結果として直通変換よりも多くの所持カードを失う可能性がある。
    (※今回試したところでは、1.50仕様シナリオで入手した技能「焔紡ぎ」などが消えました。)

※※※
済印・宿ゴシップをテキストとして移植する今回の方法、バイナリ編集よりも楽かもしれませんが、やはり簡単楽々というわけにはいきませんね。多少楽になる程度のものです。
問題点の方は、前回記事に書いたとおりで、何も変わりません。

もしどうしてもNext宿を1.50環境に移植したいなら、PCデータはNext→1.50直通で、Environment.wyd にある情報はPy宿経由で変換するのがベターではないか。というのが結論です。
もちろん、元の宿は、事前バックアップ必須です。


[関連記事]
Next宿をCW1.50などに移植できるようになるかも、という話
Next宿をCW1.50に移植できたかも、という話
・続・Next宿をCW1.50に移植できたかも、という話(←現在地)

拍手送信フォーム

[CardWirth] Next宿をCW1.50に移植できたかも、という話

前回「Next宿をCW1.50などに移植できるようになるかも、という話」の続きです。
<最終更新:2019.07.13 2:38>

(7/15追記)
踊る金狼亭の私家版情報内に、Next→CW1.50宿移植のまとめを掲載しました。
関連記事3つの内容をまとめ、説明を意識した作りになっています。ぜひそちらもご覧ください。

※※※
7/7、Next専用シナリオの読み書き機能がついたCWXEditorがダウンロードできるようになりました。そこで、さっそく、6月末に予定していたNext宿移植を試してみることに。
以下の手順で試し、外見的にはだいたい移植できたような感じです。
(ただし、重大な問題点があります。下の方の問題点の項をご覧ください。)

<Next宿側の準備>

  1. 宿内に存在する全ての技能・アイテム・付帯能力カードを、いずれかのPCの所持欄に移動する。
    (※入りきれないときは荷物持ち用の仮PCを作成する。荷物袋、カード置き場、バックパックにカードを残さない。)
  2. 全てのPCについて、それぞれEP値を記録。
  3. 全てのPTを解散し、宿全体の所持金をメモしておく。
  4. セーブ。

<1.50宿側の準備>

  1. Next宿と同名の宿を作成。
  2. Next宿に所属するPC全てについて、同名のPCを作成する。
    (※荷物持ち含む。名前だけ一致していればよく、他の設定は適当でもOK。)
  3. ユーティリティーモードで宿の所持金額をNext宿の方に合わせる。
  4. 1.50宿をユーティリティモードで起動、適当な名称の済印・宿ゴシップを1個ずつ追加。
    (※後で行う済印と宿ゴシップの移植の際、置換範囲を明確化するため。)
  5. セーブ。

<PCの移動>

まず、シナリオ作成ツールを、以下の設定に変更する。

  • Next付属のWirthBuilder→環境設定で「シナリオのファイル圧縮を無効化」にチェックを入れて適用
  • CWXEditor→ツール>エディタ設定の「その他」タブで、対象エンジンを「CardWirth 1.50」に設定

両方の設定が終わったら、WirthBuilderで適当な空シナリオを新規作成する。
この新規シナリオを用いて以下の手順を繰り返し、Next宿の全ての (キャラ名).wcp ファイルについて処理を行う。

  1. (キャラ名).wcp を上で新規作成したシナリオのフォルダ内にコピーして Mate1.wid に改名。
  2. シナリオをWirthBuilder 1.2.0以降で開いて圧縮なしで保存。
    (※シナリオ保存後、Mate1.wid は Mate0.wid になっているはず。)
  3. 2で保存したシナリオを、Nextシナリオ読込対応のCWXEditorで開く。
  4. 編集>検索と置換 で、キーワード「@@@NEXT」を用いて「テキスト検索」を行い、検出されたPCの所持カードを削除。
    (※クラシック形式にした後に削除しようとすると、削除後の保存ができない(ことがある?)。必ずWSN形式として扱われている間に削除しておく。)
  5. 編集>検索と置換 で基準を「CardWirth 1.50」とした「誤り検索」を行い、CW1.50が対応していない所持カードを探す。あれば削除。
    (※CWXEditorによる自動変換で気づかないうちにカードの内容が変わる危険性をできるだけ減らすため、クラシックシナリオとして保存する前に誤り検索しておく。)
  6. 名前を付けて保存で、クラシックシナリオとして保存する。

    この後、9番の段階に進むまでは、CWXEditorを閉じずに作業を続けること!(※一旦閉じると、自動変換で内容が変わった非対応部分を見つけられなくなる可能性がある。)

  7. キャストの所有カードで残っているものについて、1つずつ編集画面を開ける。
    「OK」のボタンに警告表示が出ていたら、そのカードは削除する。
  8. それでも残ったキャストの所有カードのうち、使用時イベントがあるものは、1つずつ使用時イベントの編集画面を開ける。
    イベントツリーのどこかに警告表示が出ていたら、そのカードは削除する。
  9. 上書き保存で、非対応の所持カードがなくなった状態を保存する。
  10. Mate0.wid の名称を (キャラ名).wcp に戻し、1.50宿の同名ファイルに上書き。

全キャラ分処理が終わったら、次へ。

<移動で抜け落ちるデータの復元>

  1. 1.50宿を1.50エンジンで読み込み、PCのカード画像を設定し直す。
    (※自分のPCなので、元のファイルは持っている前提で。)
  2. 各PCのEPは、システム称号「@EP」(←全て全角)の点数で管理されている。
    準備の際に作成した記録を元に、ユーティリティモードを用いるか、簡単な称号配布シナリオを作って復元する。

<Environment.wyd情報の移植>

(7/13追記:バイナリエディタでの編集はちょっと……という場合、別の方法もあります。)

実は、Next宿のEnvironment.wydは圧縮されていない。そのため、バイナリエディタで開けば、済印や宿ゴシップの情報がそのまま読める。
[PNG-4KB]

  1. Next宿の Environment.wyd から済印領域(「済印文字列+改行」の繰り返し領域)だけをコピーして、1.50宿の済印領域(1で設定した適当済印の文字列+改行の部分)と置換する。
  2. 置換後の該当部分のデータのサイズが何バイトあるか調べて、置換した部分直前のデータ長の辻褄を合わせる
    (※済印領域直前の4バイト分がデータ長。)
  3. 宿ゴシップについても同じ。
  4. 書き換えた1.50宿の Environment.wyd を保存。

<パーティーや荷物袋・カード置き場構成の再現>

  1. PTを再結成し、荷物袋・カード置き場にあったカードを戻す。
  2. 荷物持ちPCを作成していた場合は、削除。
  3. セーブ。

以上。

ここまでの作業の結果として、アルバム情報とPC所持カードの出典情報を除いて、見た目的には元のNext宿と(たぶん)同じの1.50宿が完成し、動きも問題なさそうでした。

【重要】この方法による移植の問題点

  • 効果音が埋め込まれたカードなど、一部CW1.50で取り扱えないにもかかわらず、誤り検索で検出できないものがある。
    非対応カード探しは手間を惜しまず慎重に行わないと、宿移植によって気づかないうちに所持カードの内容がオリジナルから変化してしまうことがある。
  • 圧縮解除の際、各PCのデータを一旦シナリオの一部として保存する必要があるため、所持カードの出典情報(カード情報右下のシナリオ名+作者名)が、一律圧縮解除に使ったNextシナリオの情報に置き換わる。
  • アルバムのPCは、移植ができない。
  • 不具合の有無の検証が難しい。
    ほとんどは異常が発生して初めて顕在化することになると思われ、その点を納得した上で実行する必要がある。

なお、7/7時点の最新版でテストした結果です。
CWXEditorの今後の更新によって問題点の一部が緩和される可能性がありますが、そもそもイレギュラーな使用法のため、上手くいったらラッキー程度に考えた方が良いと思います。

※※※
今回は、下の方で紹介している称号データを手作業で切り貼りした実験よりも楽だったし、所持カードの移動が容易い利点もあります。ただ、やはりそれなりに時間がかかり、神経を使う作業になるのも事実です。上手く行かないこともありますし、上手く行ったように見えても問題が無いとは限らず、手軽にできるというものではありません。
結局、方法があったとして、実際やろうとする方はいないのじゃないかと……。

オマケで作ったもの:データ長部分の修正用→
(数値欄にデータ長(何バイトあるか)を入れて、変換ボタンを押す。)

結果の現物を見たい方のために、移植前後の宿データ詰め合わせを公開しています。
ダウンロードはこちらへ。

※※※
この移植実験では、CW1.50には無い要素がWsn.4を経由した変換でどうなるかを見るため、PCに次の6種類のカードを持たせていました。
中には誤り検索だけでは検出できなかったものもあり、所持カードが多いと、非対応カードの削除は多少面倒です。

非対応要素の種類 誤り検索 CW1.50宿での挙動
バックパック対応 非検出 問題なし
名称が全角8文字 非検出 問題なし?
効果音が埋め込み 非検出 音が鳴らない
キーコードが10個 検出 ---
使用時イベントでセーブ・中断を制限 検出 ---
使用時イベント内の効果コンテントが
カードの効果目標を対象としている
検出 ---

カードの「バックパック対応」設定は、クラシックシナリオにするときに自動で削除されるようで、全く影響ありませんでした。
全角8文字名称のカードも、特に何もなく移植できました。CW1.50でも、そのまま8文字名で表示されます。ただ、文字列の中身によってはカードの台紙からはみ出たり、メッセージにカード名表示されるときおかしくなることがあるかもしれません。

※※※
シナリオ作成ツールを使った場合のデータの整合性等に不安を感じるなら、各PCの称号を手作業で移植する方法もあります。正規のツールを使うなら、ユーティリティモードで。しかし、バイナリエディタの方が簡単です。
宿ゴシップと済印の移植は、上に書いた方法で、割と簡単に行えます。
宿にあるスキルやアイテムなどは、CW1.50でも使えるものだけ、1つずつユーティリティモードで配布するしかありません。


[関連記事]
Next宿をCW1.50などに移植できるようになるかも、という話
・Next宿をCW1.50に移植できたかも、という話(←現在地)
続・Next宿をCW1.50に移植できたかも、という話

拍手送信フォーム

[CardWirth] Next宿をCW1.50などに移植できるようになるかも、という話

(7/8追記)
7/7、Next専用シナリオの読み書き機能がついたCWXEditorがダウンロードできるようになっていたので、さっそく実際やってみました。
結果、見た目的には移植できた感じになりました。実際やってみたメモと結果は、続きの記事にあります。
続き「Next宿をCW1.50に移植できたかも、という話」

(7/15追記)
踊る金狼亭の私家版情報内に、Next→CW1.50宿移植のまとめを掲載しました。
関連記事3つの内容をまとめ、説明を意識した作りになっています。ぜひそちらもご覧ください。
----
昨日、まつ(@knbn_tikt_cw)さんが、こんなことをツイートされていました。

──CWXEditorにNext専用シナリオの読み込み機能が実装された場合、もしかしたらNextから1.50などへ冒険者のデータ(宿データ)を移動できるのでは?

面白そうだったのでちょっと色々試してみたのですが、手間さえ惜しまなければ、たぶんほとんど丸ごと移植できるのじゃないかなぁと。なお、あくまでCWXEditorにNext専用シナリオの読み込み機能が実装されたらの話です。(つまり、今はまだできません。)

恐らく、以下の手順でいけるはず。
CWXEditorのNext専用シナリオの読み込み機能が現実になったら、実際試してみますかね。もし可能になったら、後で試す用メモです。

(※ここにあった後で試す用メモの内容は、実際やってみたメモに移動しています。)

※※※
ちなみに、以前実験したところでは、上の方法でNext宿のPCデータの圧縮を解除しておいて、

  1. PCの解説欄(←選んだ素質や特性が分かる)を参考に、1.50宿で同じ初期設定のPCを作成。
  2. 称号データをバイナリ編集で1.50宿のPCに移植。

という手順で、PCのみの移植ならできました。

圧縮解除したNext宿PCの称号情報をコピーして、1.50宿にいる同名PCの称号情報に上書きし、最後に称号個数を書き換えてつじつまを合わせるやり方です。ただ、各PCの所持称号が相当に多かったので、それぞれ何個あるか数えるのに手間がかかり、CW1.50側でPC4人分の称号所持状況を再現したところで心が折れました。
所持称号の再現ができたら、Next宿に存在したアイテムや技能などカードをユーティリティモードで配布するつもりだったのですが、各カードの出典シナリオを調べて集め、そこから1つずつ手動で配布すると思ったらとてもやる気が起きず、カードの配布は手つかずで終わりました。

ということで、PCの称号は、今でも圧縮解除→バイナリ編集で移植可能です。
済印と宿ゴシップの移植は、実は割と簡単です。
アイテムや技能なども、ユーティリティモードで相当頑張れば移植できるかもしれません。

つまり、宿内にあるカードを諦めることができ、バイナリ編集に抵抗がないなら、Nextから1.50への宿の移植は、現在も比較的簡単に実行できます。
ただ、上の手順を実行するより、各エンジンに宿を作った方が断然楽そうです。方法があったとして、実際やろうとする方はいないでしょうね……。


[関連記事]
Next宿をCW1.50などに移植できるようになるかも、という話(←現在地)
Next宿をCW1.50に移植できたかも、という話
続・Next宿をCW1.50に移植できたかも、という話

拍手送信フォーム

[CardWirth] CardWirthで使える素材まとめ(10/5更新)

公式各バージョン及び私家版で、どのファイル形式が使えるのかまとめです。
あくまで「エンジンで再生可能か」のまとめというところにご注意ください。
付属のエディットツールで扱えないファイル形式を含むことがあるので、ファイル選択リストに出て来なければCW1.50付属のWirthBuilderを使ってみてください。

----
(追記)
踊る金狼亭・メモ箱に、もう少し詳しく調べた結果を、表形式でまとめて掲載しました。今後変化があった時は、そちらの方を更新します。
----

【BGM】
MIDI:1.20以降(全バージョン?)
MP3:1.28以降(1.28はループなし、1.29からループ再生可。CW1.20もMP3対応版なら……)
WAV:1.28以降
OGG:1.30以降(1.30はBASS再生時のみ、1.50は完全対応)
(※Next、PyはCW1.50と同じ。)

  • NextとPyは、RPGツクール仕様のMIDIループ(CC111)に対応している。
    CW1.50は非対応のため、MIDIは常に曲全体がループされる。


【効果音】
WAV:1.20以降(全バージョン?)
MP3/OGG/MIDI:1.30以降(1.30はBASS再生時のみ、1.50は完全対応)
(※Next、PyはCW1.50と同じ。)

【セル画像】
BMP:1.20以降(全バージョン?)
JPEG:1.20以降
PNG:1.50以降
(※NextはCW1.50と同じ。PyはCW1.50と同じ+アニメなしGIFも使える。)

  • CW1.29~1.30で透過BMPをセルに設定する場合、マスクをOFFにしないと表示がおかしくなる。
  • CW1.50やNextでアルファチャンネルなしのPNGをセルに指定した場合、マスクのON・OFF状態の影響を受けない。必ず見たままの表示になる。


カード参照】
BMP:1.20以降
PNG/GIF(アニメなし):1.50以降
(※Next、PyはCW1.50と同じ。)

【カード格納】
BMP:1.20以降
(※NextはCW1.50と同じ。PyはPNGやGIFも格納で表示できる。)

  • BMP以外では、WirthBuilderでPNG、CWXEditorではPNGとGIFを格納する画像として選択できる。しかし、シナリオ内に取り込まれる際の画像の扱いが異なるので注意が必要。
  • WirthBuilderでは、PNG画像は格納する際にビットマップ変換される。
    WirthBuilderが同梱されているCW1.30/1.50及びNextでPNGの格納が可能だが、実はエンジンは格納されたPNG画像の表示に対応していない。格納時にビットマップとして取り込まれるため表示できているだけ(重要)。
    • 格納時のBMP変換のため、CW1.30や1.50に付属のWirthBuilderでPNGを格納したシナリオは、結果的にCW1.20~1.50でも画像の表示が可能。
    • 透過PNGを格納した場合は透過BMPに変換され、エンジンの透過BMP対応状況の影響を受ける。
  • CWXEditorの「クラシックシナリオ」では、PNGやGIFはそのままPNG・GIFとして格納される。
    このためBMP以外の格納表示に対応していないCW1.20~1.50及びNextでは「ビットマップイメージが不正」や「ビットマップ画像が無効」のエラーが出る。

 

透過BMP

透過BMPの表示に対応したのは、CW1.29の時です。
それ以前のバージョンでも表示は可能ですが、アルファチャンネルの情報が適用されないため見た目がおかしくなります。
注意すべきは透過BMPをセルに使う時で、CW1.50では設定によらず透過情報付きの見たまま表示ですが、CW1.29~1.30ではマスクをONにしていると透明度≠0部分の背景が白く表示されます。マスクOFFにしておけば、透過BMP対応バージョンならどれでも正常に表示できます。

規格外を許容

WirthBuilder(CW1.30から同梱)では、カード画像の格納に「規格外を許容」オプションがあります。
74×94サイズ以外の画像も選べるようにするものですが、これを使った時のエンジン上での見た目はCW1.20~1.29でもCW1.30やCW1.50と同じです。

私家版では……

Nextで使える素材は、画像・BGM・効果音ともCW1.50とほぼ同じです。
異なるのは、恐らくNextがRPGツクール仕様のMIDIループ(CC#111)に対応していることのみです。

PyではNextと同じ素材が使えるほか、セルの画像にアニメなしGIFが使えたり、PNGをそのまま格納できたりします。「使える素材」ではないですが、セル画像にアルファチャンネルなしのPNGを指定した際、CW1.50やNextとは異なりマスクが正常に働くという違いもあります。

Nextで作成したシナリオはNext専用になるため他のエンジンを考えなくても大丈夫ですが、Py(CWXEditor)のクラシック形式で作成したシナリオはCW1.20~1.50やNextのユーザーがプレイする可能性があるため、他エンジンと異なる部分が入る時は付属テキストに書くなどしておいた方が親切かも。


※※※
昨日TwitterでNextとPyはOGGに対応しているというツイートを見かけて、反射的にCW1.30と1.50も対応していると呟いたのが、この記事の始まりでした。
CardWirthは新しくなるにつれて使える素材形式が増えてきましたが、何がいつ使えるようになったのかはあまり知られていないのではないかと思います。また、付属のエディットツールで扱えるファイル形式とエンジンで再生可能なファイル形式が異なっていることもあり、それも話をややこしくしています。

なお、私家版については、記事最終更新時点の最新版の情報です。
(Next1.60&WirthBuilder1.2.27 / Py1.1&CWXEditor4)

※素材以外の仕様変更も含めた各バージョン変更点まとめはこちら


【情報提供】
CWXEditorの格納の仕様については、@ankkkcwさんに情報を頂きました。ありがとうございますm(_ _)m

拍手送信フォーム

[CardWirth] 各種エンジンにおけるセリフコンテントの仕様の違い

CW1.30/1.50新機能代替サンプル内の特定のPC【A】が別のPC【B】の名前を呼ぶサンプルが、Pyでは上手く動かないという某所での会話から、セリフコンテントの、と言うかその後方の選択肢の扱いがエンジンによって異なることが判明しました。

時間が無い方のために、結論だけ先に書いておきます。

話者が持つ称号がコンテント内に含まれるセリフパターンの称号条件のいずれにも一致しない時、

  • セリフの表示が飛ばされるのは各エンジン共通だが、セリフ後方の分岐(選択肢として表示される部分)の扱いが異なる。
  • CW1.20~1.50/Next1.60では必ず分岐の一番上の枝に自動で処理が進むが、Py0.12.2では何らかの文字列が設定された選択肢が1つ以下の場合のみ一番上に自動で処理が進む。


何言ってるのか良く分からんと言う方は、以下の例をご覧いただくと分かると思います。

例えば、

セリフ(誰も持っていない称号が条件)「うんたらかんたら」
├【】→メッセージ「1」
├【2に進む】→メッセージ「2」
└【3に進む】→メッセージ「3」

というイベントがあったとします。【】の中は選択肢ラベル(OKとかYesとかNoとか入っているあれ)です。

これをCW1.50、CWNext1.60、CWPy0.12.2でそれぞれ実行すると、

●CW1.50/Next1.60
・セリフ「うんたらかんたら」は表示されず、メッセージ「1」が表示される。

●Py0.12.2
・セリフ「うんたらかんたら」は表示されず、[どれか一つを選択してください。] 2に進む/3に進む との選択肢が出現。

と実行の結果が異なりました。
正規版やNextではセリフは表示されずに1番上の分岐に進みましたが、Pyでは空のセリフ+選択肢と同じ扱いになっています。


そこでもう1つ、以下のようなイベントを試してみました。

セリフ(誰も持っていない称号が条件)「うんたらかんたら」
├【】→メッセージ「1」
├【2に進む】→メッセージ「2」
└【】→メッセージ「3」


前のと何が違うかというと、3番目の選択肢ラベルが空白になり、文字列が設定された選択肢が1つに減っています。そして、このイベントを実行した場合は、どのエンジンでもメッセージ「1」のみ表示されるのです。

今度は、Pyでもセリフ後方の分岐構造が無視されました。
Pyでは、表示が行われなかったセリフ後方に意味のある選択肢が存在しない時(=何らかの文字列が設定された選択肢が1つ以下の時)は分岐が無視され、そうでない時はメッセージなしの選択肢として扱われます。
他のエンジンでは、後方がどうなっていようと、全ての場合で分岐が無視されます。


そこで、冒頭の結論部分です。

話者が持つ称号がコンテント内に含まれるセリフパターンの称号条件のいずれにも一致しない時、

  • セリフの表示が飛ばされるのは各エンジン共通だが、セリフ後方の分岐(選択肢として表示される部分)の扱いが異なる。
  • CW1.20~1.50/Next1.60では必ず分岐の一番上の枝に自動で処理が進むが、Py0.12.2では何らかの文字列が設定された選択肢が1つ以下の場合のみ一番上に自動で処理が進む。

と、なってました。
某所での会話に参加していた方が、Pyの開発者さんにこの現象を報告されるそうなので、いずれ修正されるかもされないかもしれません。


なお、特定のPC【A】が別のPC【B】の名前を呼ぶサンプル(CW1.30/1.50新機能代替サンプル)ですが、名前を呼ぶセリフ直後の選択肢で、何かの文字列が設定されたものを1つにすれば問題なく動きます。
↑の言い方で分かり辛ければ、セリフが表示される時に選択肢がつかないようにする、とお考えください。



※※※
なぜこうなっているかを考えると、たぶん、シナリオ作成者が明らかに選択肢作りたかったんだろうなという時に選択肢表示してくれる親切機能の結果というのが、最も妥当な推測だと思います。仕様である可能性が高く、影響も特殊な条件下に限られるので、私は報告する決断に至れなかったかもしれませんね。。
ともあれ、今後別の何かを発見した時のために、余裕のある時にBitbucketに登録しておきますか。


(5/26追記)
この件について、メモ箱の私家版エンジン情報に追加しました。

拍手送信フォーム

[CardWirth] CW用「エンジン識別サンプル」 1.01 Py識別にも対応

1つ前のバージョンでは、対象消去後のNPCをランダム選択で選択できるかどうかでNextを見分けていましたが、このやり方ではPyはNextであると判定されていました。対象消去されたNPCは選択できない方が正しいので、これはやむをえません。
また、Pyを見分けるにはNextと同じ部分を見ても仕方ないわけで、別のCW1.50ともNextとも違う部分を探す必要があります。しかし、一昨日の段階ではさっぱり見つからず、これは長くかかりそうだと思っていたら。

何と翌日、意外に大きな違い発見しました。

「フィールド全体を対象としたクーポン分岐で、同行NPCの所持称号を検出できるか否か」

ただ、これを利用した見分け方は、そう長くは使えないかもしれません。
CW1.50やNextとは明らかに挙動が異なるため意図的な仕様と思われますが、今後CW1.50に合わせる変更が行われればそれまでです。
いまいち決め手に欠けるシナリオ更新でしたが、今日はここまで。

このサンプルは、「現在入手できる全てのエンジンを見分けること」を目標にしています。
してみると、今後は、どこかで新しいエンジン、新しいバージョンが出る毎に、それを見分けるという話になっていくでしょう。何だかキリがないような気もしてきました。
今後エンジンは増えることはあっても減ることはないだろうし、CW1.29の「@MP3」のように、各々のエンジンにそれぞれプログラム名とバージョンを表す仮想システムクーポンがあれば……と、まぁしょうもない妄想語っても意味ないですな。
いずれシナリオ側で他と区別できないエンジンが出てきたとしても、(と言うか今でも、)必要な時にはシナリオ作者がreadmeなどに対応エンジンを書けば済む話ではあります。

[現時点で識別可能なエンジン]
正規版
・CW1.20/1.28/1.29/1.30/1.50
私家版
・CardWirthNext(v.1.6.0.14)
・CardWirthPy(v.0.12.1)


エンジン識別サンプル→ver.1.01
・CardWirthPyの見分けを追加
DLはこちら

※※※
ちなみに、なぜCW1.50では対象消去後のNPCをランダム選択で選択出来てしまうかというと、同行NPCの対象消去が正常に機能していないからです。

ランダム選択でパーティーに同行中のNPCを選択
 ↓
選択メンバを対象として効果コンテントで対象消去

という処理を実行した場合、本来なら選択状態のNPCは消滅してキャンプの表示から消え、キャスト存在分岐で検出できず、当然ながらランダム選択でも選択できないのが正しい挙動です。
ところがCW1.50では、対象消去したはずのNPCがキャンプで閲覧でき、キャスト存在分岐・ランダム選択の双方で検出可能にも拘わらず、戦闘では動かないという謎の挙動をします。

なお、NextやPyの対象消去後のNPCは、現時点では次のような動き方です。

●CWNext(v.1.6.0.14)
対象消去後ランダム選択で選択できる現象はないが、キャンプで閲覧でき、キャスト存在分岐でも検出される。戦闘では動かない。

●CWPy(v.0.12.1)
対象消去後はキャンプでの表示が消え、キャスト存在分岐・ランダム選択の双方で検出されない。

CW1.50、Next、Pyでそれぞれ違っていて、ここに引っかかると割と危険です。
同行NPCを消したいなら、キャスト離脱コンテントで離脱させるのが無難だと思います。それならどのエンジンを使っていても同じ動きです。

拍手送信フォーム

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

2024年12月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

エントリー検索

エントリー検索フォーム
キーワード


翳の回廊(絵置き場)の一部を
TINAMIのスペースに置かせて頂いています。

pixivでも何かやっている……かも。

新着エントリー

cwNowUpのご利用条件の変更(7/14~7/18)について
2022/07/20 23:51
cwNowUp 0.816β
2022/07/12 20:40
cwNowUp 0.815β
2022/04/20 20:30
cwNowUp 0.814β
2022/01/29 00:00
cwNowUp 0.811β~0.813β
2022/01/26 23:40

新着コメント

Re:Re: CWBBS[26]-14
2015/06/23 from simoom
Re:Re: CWBBS[26]-14
2015/06/22 from ああ
Re:Re: CWBBS[26]-14
2015/06/22 from simoom
Re:Re: CWBBS[26]-14
2015/06/21 from 権限がありません
Re:Re: CWBBS[26]-14
2015/06/21 from あ

過去ログ

Feed