WSN形式

WSN(XML)形式

 CardWirthPy/CWXEditorは従来のCardWirthシナリオ形式であるSummary.wsm(以下クラシック形式)の他に、「WSN」アーカイブという独自形式の再生・保存に対応しています。
これはXMLと素材をZIP圧縮したもので、CardWirthPyは元々それのみを再生でき、現Verでも内部的には他形式をWSN形式へ変換しています。Pyに追加されている多くの新機能はWSN形式でしか利用できません。

紹介ページ Wsn.4 / Wsn.3 / Wsn.2 / Wsn.1

目次


形式 再生・読み込み対応
クラシック形式 エンジン CardWirth1.20-1.50,Py,NEXT
エディタ CWEditor,CWXEditor(2以降),WirthBuilder
NEXT形式 エンジン CardWirthNEXT
エディタ WirthBuilder(NEXT付属),CWXEditor(7以降・無圧縮のみ)
WSN形式 エンジン CardWirthPy
エディタ CWXEditor
CWXスクリプト エディタ CWXEditor

WSN形式で保存するメリット

  • CardWirth 1.50までのすべての機能に加えて、WSN専用機能を利用できる。
  • 読み込み・保存とも単一のアーカイブでシナリオを管理できる。
  • 展開して保存すれば変換を挟まないのでPyでの読み込みが高速。
  • カード画像のPNG対応/参照化等により店シナリオの容量が半減。
  • テキストエディタなどで構造を可視化・編集しやすい。
  • Unicode文字が使用可能。※絵文字は無保証
  • 細部で変更が必要( )なものの、クラシック形式に戻せる。

WSN形式で保存するデメリット

  • 現状ではPy系エンジン専用。未対応の他の派生エンジン、周辺ツール上からはクラシック形式に変換しなければ読めなくなる。
  • 宿を他のエンジンに逆変換する際、WSN独自の機能を使った技能/アイテム/召喚獣カードは変換されない(持ち込めない)。


CWPyとWSN形式にしかない専用機能

「実現に手間が掛かるが、他でも実現できるもの(確率多岐分岐や評価条件など)」を除いた、
2020年現在Pyでしか出来ないことに絞ったまとめです。Verごとの詳細はコチラ

Pyにしかない機能 Wsn.
素材 (透過)PNG/GIF格納      Py以外のエンジンは非対応。((透過)BMPのみ) 0
カードイベントの素材持ち帰り
効果音,背景セル,BGM等…
JPDCで撮影した画像や特殊文字も持ち帰る事ができます。
(0から使えますが、2以前にはJPDC関連でバグあり)
0
キャスト所有カードの参照化 Py以外では格納・重複して持たせる必要があります。 1
カード画像を複数重ねる 店の値札やカードのフレームなどに活用できます。 1
演出 背景切替方式/速度指定 オプションの切替スピードを背景変更毎に変えられます。 0
表示順レイヤ キャスト、メニュー、背景セル、メッセージの
前面表示優先度を自由に変更できます。
1
BGM/効果音マルチチャンネル
フェード/音量指定
合計4チャンネルで音を鳴らすことができます。
音量等を細かく指定できます。
1
独自変数「コモン
コモンでは文字列の操作や数値の計算が可能です。 4
称号・ゴシップに対する
特殊文字・変数の埋め込み
コモン等と連携してPC名などを入れた
不定型な称号を作成・操作できます。
4
戦闘 精神力増減数値指定 Py以外では最大回復/枯渇のみです。 1
特殊なシステムクーポン 効果対象の適宜変更が可能に。(後述) 2
PC用死亡イベント
PC用キーコードイベント
エリア・バトルエリアでPC側にも設定できるように。
従来は制御困難だった、「PC側の回復禁止」や
「非戦闘時の中毒による全滅」にも対処できます。
2
エネミーカードの手札指定 特定のアクションカードだけが手札に配布される敵
を作ることができます。
4
ラウンド終了イベント 「全てのキャストの行動終了後」「時間経過処理より前」
のタイミングでラウンドイベントを行うことができます。
4
カード 効果コンテント拡張:
 ・KCイベント発火
 ・選択メンバの能力参照
従来はカードで指定するしかなかったキーコード設定や
選択メンバの適性(命中・威力)を加味した効果が作れます。
2
効果目標:称号所有者 任意のクーポン所有者を効果目標に取れるように(複数可) 2
選択カード シナリオ外の不特定なカードを表示(#C)・削除できます。 3
変数の埋め込み
ローカル変数
ステップやフラグ、コモンをカードに内蔵し、
シナリオ外でも利用することができます。
4
召喚獣 召喚モーションの参照化 自分を召喚する無限召喚獣を作ることができます。 1
召喚獣発動条件 意識不明時や麻痺でも動く召喚獣など:
従来は作れなかった召喚獣が作れます。
3
召喚獣の発動演出 召喚獣の発動アニメを行わず、あるいは
キャストが使用するかのように効果を発動できます。
4


CardWirth1.20-1.50(wsm4)/NEXT(wsm7)/Py(Wsn.4)比較表

文字数などの制限        1.20-1.50 NEXT Py
カード名文字数 6 8 無制限
カードの解説文字数 163前後 無制限 無制限
カードのキーコード設定数 5 無制限 無制限
カードの素材格納方式
(シナリオ外持ち出し)
埋め込み
カード画像のみ
埋め込み
セル/効果音(使用時)
参照を全てコピー
セル/BGM/効果音
JPY1/特殊文字(フォント)
格納画像の対応形式 BMP BMP BMP/PNG/GIF/JPEG
ステップ最大値 10 100(可変)/9999(数値) 10000(可変)/無制限(コモン)
使用可能文字 Shift-JIS Shift-JIS Unicode(UTF-8)

NEXTにある拡張機能 NEXT Py Wsn.
新コンテント 背景再配置/置換/削除 1
メニュー移動 3
制限 △荷物袋のみ 4
メッセージ 選択肢縦分割 1~4 1~4 1
仮想ステップ 2
ステップで特殊文字を展開 #M/#U/#R/#T/#Y #と&文字全て 2
ウェイトのミリ秒指定 × -
メンバ選択 話者を選択状態にする 3
称号非所持分岐 4
エリア関連 メニューカードのアニメ無効化 4
メニューカード名に変数展開 4
バトル関連 エネミーカード名の上書き 4
エネミーカードの画像を
PCの画像にすり替え
4
背景セル 描画優先度 セル描画順のみ
前面/背面二択
全要素
レイヤ番号管理
1
プレイヤーセル △※拡大不可 1
カード関連 カードの効果対象選択 △※KC発火不可 2
バックパック対応 × -

アンダーラインした要素は実装の仕方に差異が生まれています。
  • Pyはシナリオからカードを入手する際、参照されている素材を全て持ち帰る仕様のため格納オプションが意味を持ちません。
  • NEXTは従来ステップを拡張した「可変ステップ」と数値のみのステップで扱える数が変わります。Pyは10000の(可変)ステップを持ち、「コモン」変数により無制限な値を扱えます。
  • 背景セル(0)、メニューカード/エネミーカード(100)、PCカード(200)、メッセージ(1000)
    Pyではそれぞれデフォルトで括弧内にあるレイヤ優先値を持ち、任意の数を入れることで全要素で描画順を変えることが出来ます。

全体的な思想としてWSNは従来のCWにあった、キャストに持たせる技能などの重複するカード・画像の格納で容量が無駄に増える仕様を撤廃し、参照できるようにすることで解決しようとしています。
WSNでは格納してもMaterialフォルダに入るだけでほとんど意味がありません。参照を活用しましょう。


WSN形式のバージョン

WSN形式独自の機能はWSN形式のみで保持され、クラシック形式に変換した場合は取り除かれます。
WSNにはバージョンがあり、概ねエンジンのメジャーバージョン単位で区切られています。
エンジン・エディタともに対応以降のバージョンでなければ新しい機能を使うことはできません。


WSN形式で利用できる特殊称号

 WSN4時点の特殊称号(システムクーポン)の一覧です。一部はクラシック形式でも利用できます。

名称 Ver 説明
バージョン判定称号 全Ver PyエンジンのVerを判定することができます。
2.0ではPCの死亡イベントにバグがあるため、
PCの死亡イベントを利用する場合は2.1以降を判定するのが無難です。
@R種族名 0 種族要素のあるスキンで種族を選択して
キャラクターを登録した時に自動で追加されます。
@Wsn.2 2 Wsn.2対応エンジン(Py2以降)なら必ずクーポン分岐コンテントの判定に成功します。
CW1.29で実装された@MP3のような使い方ができます。
@Wsn.3 3 Wsn.3対応エンジン(Py3以降)なら必ずクーポン分岐コンテントの判定に成功します。
@Wsn.2も引き続き使用できます。
@Wsn.4 4 Wsn.3対応エンジン(Py3以降)なら必ずクーポン分岐コンテントの判定に成功します。
以前の称号も引き続き使用できます。
@使用者 2 使用中のカード使用者に一時的に与えられ、行動の終了時に消滅します。
使用時イベントのギミックに利用できます。
@効果対象 2 カードの効果対象をすり替えることができます。
使用中のカードの効果対象全員に一時的に与えられ、行動の終了時に消滅します。
この称号は使用時イベント/キーコードイベント側で付与・剥奪でき、カードの本来の効果対象であっても【@効果対象】を剥奪すると対象から外れ、無関係の者であっても【@効果対象】が付与されれば対象に入ります。
@イベント対象 2 死亡イベントやキーコードイベントが発生した時、そのイベントが発生したキャストに与えられ、イベントの終了時に消滅します。
戦闘ギミックとしてカウンター/反射などの表現に使うことができます。
@効果対象外 2 実際に対象に効果が適用される段階で@効果対象を剥奪されたメンバに付与されます。
このクーポンを持つメンバには@効果対象をつける事ができなくなります。
(【@効果対象】を持っているメンバに事前付与しても効果対象から外れるわけではない)
ターゲットの変更が複雑な状況下で無限ループに陥らないようにするためのもので、通常はこのクーポンを意識する必要はありません。

WSN形式で利用できる追加素材

Py2/Wsn.2以降、DataフォルダにMaterialフォルダが追加されました。
Materialフォルダに入っている素材はXEditorでWSN形式のシナリオを作ろうとする時に、標準で選択できるようになっています。



Pyエンジンの独自仕様

Py独自仕様=WSN形式ではないので以下の機能はクラシック形式でも使うことができます。

  • カード画像にBMP以外を格納可能。
    CWXEditorで格納したJPG, PNG, アニメ無しGIFを表示することができる。
    ※Py以外のエンジンではエラーとなるのでクラシック形式でBMP以外を格納する場合は、Py専用シナリオであることを明記して下さい。

  • カード名/解説欄の文字数上限がない。
    クラシック仕様よりも長い解説を持ったカードをCWXEditorで作成/表示できる。

  • 吉里吉里・RPGツクールVXのBGMループに対応。※Ver1.0より
    C111ループとsliファイルを使ったループに対応。oggのループエディタとしてはFOLEなどがあります。
    詳しくは以下のサイトを参照して下さい。
    http://taira-komori.jpn.org/tkooltop.html

  • 技能/アイテム/付帯能力カードイベントに指定されたシナリオ内素材持ち帰り
    シナリオ外で使える、独自効果音やセルアニメを使ったカードを作ることができる。

  • 1.28以降の解説欄一致による同名カードの総合処理がない。
    1枚づつ別個に保存されるため、同名の絵違いカードを保持できる。

  • エフェクトブースターの撮影機能で撮影した画像を宿に保存する。
    CWではシナリオフォルダに直接保存する仕様で、zipのまま再生しようとすると不具合が出るため。

  • 同行キャストを連れ込んだ時、シナリオ内で獲得・剥奪したクーポンが反映される。
    CWではキャストに設定されている称号で固定。

  • 連れ込んだキャストの体力が標準値でない場合、基礎体力*倍率でレベル変動後も保持される。
    たとえば計算式上本来体力15のキャストが体力30に設定されていた場合、体力上昇に2倍の補正が掛かる。CWではレベルの変動で初期化されるので逆変換した場合は標準値になり保持できない。




WSN形式からクラシック形式への変換

 CWXEditorで「名前を付けて保存」を行い、保存形式として「クラシックシナリオ(Summary.wsm)」を選択して保存します。変換すると、WSN固有のコンテントやオプション指定は全て削除されます。
CWXEditor 7.0以降であれば、下記の問題を自動的に解決するため、それだけで変換完了です。

CWXEditor 6.4までの場合、CardWirth 1.50をエンジン登録せず、Pyエンジンと「Classic」スキンで1.50用シナリオを作ることは想定されていません。
後述の通り、「Classic」スキンは、CardWirth 1.50と拡張子互換を持たないのでPy以外では正常に再生されなくなり、WirthBuilderとの併用でデフォルト効果音指定が消失するなどの問題が起こります。
クラシック形式を参考にCardWirth1.28-1.50エンジンを登録するか、「カスタマイズしていないCardWirth1.28-1.50エンジンから自動生成した」スキンを利用して下さい。
CWXEditor 7.0以降は、クラシック形式なら強制的に「*.bmp」と「*.wav」で保存するように変更されました。

CWXEditor 3.0までの場合、CWPyで使用しているスキンにもよりますが、素材に絡む問題が出ることがあります。

CWPyに標準で付属している「Classic」スキンは、CardWirthとほぼ同じ環境を再現するスキンですが、
サイズを削減するため、背景イメージ(Tableフォルダ内)の形式を「*.png」に、
効果音(Soundフォルダ内)の形式を「*.ogg」に変換しています。
これらは、クラシック形式では「*.bmp」と「*.wav」でなければなりません。

そのため、「Classic」スキンで編集したシナリオをクラシック形式に変換したい時は、次の作業が必要です。

1. Ctrl+Fまたはメニューの「編集」から、「検索と置換」ダイアログを開き、
   「テキスト検索」タブを選択します。
2. 「検索/置換対象」で「ファイル名」のみにチェックを入れます。
3. 置換前に「.ogg」を、置換後に「.wav」を設定し、置換ボタンを押して置換を実行します。
4. 同様に、「.bmp」を「.png」に置換します。
5. 自分でシナリオ内に「*.ogg」や「*.png」の素材を用意して使用している場合は、
   巻き添えで拡張子が変わってしまうため、
   該当するファイル名を指定して置換を行い、「.ogg」と「.png」に戻します。



クラシック形式からWSN形式への変換

 CWXEditorで「名前を付けて保存」を行い、保存形式として「XML形式のシナリオ(*.wsn)」または「展開されたXML形式のシナリオ(Summary.xml)」を選択して保存します。

 両者の違いはzip圧縮するか従来のようにフォルダで管理するかです。軽いシナリオなら圧縮しておく方が容量の節約になりますが、読み込みが入るのである程度の規模のシナリオは展開しておくといいかもしれません。圧縮/展開はいつでも可能です。

 クラシック形式から変換した場合、カード画像などのシナリオに内部格納されていた素材は「Material」フォルダに保存されています。

最新の機能を使いたい(WSN形式)

 現在の正式版CWXEditor 7 ではWSN形式で保存すると「Wsn.4」のシナリオになりますが、
今後追加されていくWsn.5の機能を利用するにはPy/XEditor両方で
最新のテスト版(バグを踏む覚悟がある人向け)を使う必要があります。

 古いWSN形式(Wsn.0~4)のシナリオをWsn.5にするには
テーブル>シナリオ名>詳細データ>データバージョンで「Wsn5」を選択してください。


NEXT形式からWSN形式への変換

 CWXEditor 7以降では、無圧縮のNEXT形式の読み込みとクラシック形式やWSN形式への変換・逆変換(エクスポート)をサポートしています。ただし、NEXT形式のシナリオはデフォルト設定では暗号化されているため、そのままではCWXEditorで読みこむことができません。NEXT形式のシナリオを無圧縮に変換するには、CardWirthNext付属のWirthBuilderで、オプション>一般>「シナリオのファイル圧縮を無効化」を有効にしてシナリオを保存する必要があります。

 CWXEditorで無圧縮のNEXT形式シナリオを開くと、内部的にはWSN形式へ変換されて読み込まれます。WSN形式シナリオとして保存するには、クラシック形式と同じく「名前を付けて保存」を行い、保存形式として「XML形式のシナリオ(*.wsn)」または「展開されたXML形式のシナリオ(Summary.xml)」を選択して保存します。

仕様上の注意点

 WSN4現在、以下のNEXT機能は、Pyにおいてはサポートされていません。進行上の不具合が生じるケースは稀ですが、該当する機能を使用したシナリオは意図しない挙動をするのでご注意下さい。
  • バックパック関連の所持分岐・獲得・削除コンテント…… 「荷物袋」「選択メンバ」に変換。
  • 制限コンテントのキャンプ禁止・セーブ禁止 …… 状況設定コンテントに変換。
  • 空白時間コンテントのミリ秒指定 …… できるだけ近い値の従来の空白時間に変換。

 以下のNEXT機能は、Pyにおいては仕様が相反していますが、表面上はなるべく動作が変わらないように変換されます。
  • 背景の前面セル …… レイヤ値400指定のセルとして解釈。
  • 埋め込みされた素材 …… Materialフォルダに展開。Pyでは仕様により埋め込みが不要。
  • 数値ステップ …… 100以上の場合、コモンに変換。99以下の場合、通常ステップに変換。
  • 使用時イベントにおける効果コンテントの死亡イベント発火 …… ダメージ/吸収/麻痺/対象消去いずれかのモーションの付いた効果コンテントのみイベント発火オプションを有効化。

なお、「クラシックシナリオ(Summary.wsm)」を選択して保存した場合はCardWirth 1.50で再生可能なシナリオになりますが、NEXT専用機能を利用したイベントは全て削除されます。
最終更新:2020年02月26日 15:22