WSN形式

WSN(XML)形式

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

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

目次

形式 再生・読み込み対応
クラシック形式 CardWirth1.20-1.50,Py,NEXT
CWEditor,CWXEditor(2以降),WirthBuilder
WSN形式 CardWirthPy,Pyスキン,CWXEditor
CWXスクリプト CWXEditor

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

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

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

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

WSN形式の独自拡張

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

Wsn.0(Py 0.12.3以降/XEditor3以降)


  • 背景変更などのイベント各種コンテントで切替方式とスピードを指定できる。
    CWではプレイヤーの設定に依存していたのでアニメ無し最速が常態化していたが、
    シナリオ側で演出に組みこむ事ができるようになった。

  • カードのキーコード設定数に上限がない。
    5個以上の設定が可能。

  • キャストに種族を設定できる。

Wsn.1(Py 1.0 以降/XEditor4以降)


  • 新コンテント「背景再配置・背景置換・背景削除」の追加。
    NEXTと同等のもの。切替方式&速度指定との組み合わせにより安定したアニメ表現が可能に。

  • BGM・効果音関係の全般的な強化。(bass.dllの機能に依存)
    • すべての指定箇所で音量/ループ回数/フェードイン時間を指定できる。
    • BGM・効果音再生コンテントで、再生チャンネル(主音声・副音声)を指定できる。
      これによりBGM等を二重・打ち消されずに再生可能。

  • キャストの所有カード及び召喚対象を参照指定できる。
    データを軽量化でき、自分を召喚する召喚獣など従来作れなかったデータが作成可能。

  • カード画像にレイヤ設定を追加し、複数のイメージを重ねて表示できる。

  • メニュー・エネミーカード及び背景セルにレイヤ値を指定できる。
    これによりPCカードやメニューカードの手前に背景セルを置く等の表現が可能。

  • 背景セルの種類にキャラクターセルを追加。拡大・縮小表示が可能。

  • メンバ選択コンテントに評価条件によるランダム選択の追加。
    台詞コンテントの評価メンバと同様に点数合計が高いメンバを優先選択できる。

  • 技能の残り回数(精神力回復/不能モーション)の固定値での増減に対応(1~9)。

  • メッセージコンテント選択肢の縦割り分割オプション。
    NEXTと同等のもの。

Wsn.2(Py 2.0以降/XEditor5以降)


  • システムクーポン「@Wsn.2」を追加。
    Wsn.2に対応しているエンジンかの判定に用いる。


  • 新コンテント「クーポン多岐分岐・ランダム多岐分岐」の追加。
    ステップ多岐分岐のように複数のランダム確率分岐やクーポン所有分岐を一度に行える。

  • 効果コンテントの大幅な拡張。
    • 死亡/キーコードイベントを発火するオプション。
      効果コンテント単位でキーコードを付けることができ、
      使用時イベントで敵を対象とするスキルやアイテムを自由に作れるように。
    • 選択中メンバの能力参照を行うオプション。
      従来は(6×対象レベル)で固定だった効果式をキャラクターの適性依存にすることができる。
    • 効果目標に「称号の所有者」「カードの効果対象」を追加。
      選択中メンバにしなくても条件を満たす目標に一度に効果を与えることができるように。
      また「カードの効果対象」ではメニューカードにKCを発火することもできる。

  • カード効果に新モーション「効果無し」を追加。
    対属性で無効化されない限り必ず有効で、暴露+解除のような無効化音防止に活用できる。

  • メッセージコンテントに縦方向・横方向の「センタリング」オプションを追加。
    文字数が一定ではない特殊文字等を考慮したテキスト自動整形が可能になった。

  • クーポン分岐コンテントで複数クーポンのAND/OR条件に対応。
    従来大量の所持分岐ツリーを作る必要があった処理が一回で済む。

  • キーコード所持分岐条件に「手札」を追加し、個別のチェック式に変更。
    従来不可能だった戦闘中アイテムのみの検索や「全て」ではない複数条件が一度に行えるように。

  • キャスト加入コンテントに「戦闘中加入ラウンドから即時行動する」オプションの追加。

  • ステップに「特殊文字を展開」オプションを追加。
    #Mなどの名前をメッセージの$ステップ名$で使用できるようにする機能。
    Pyでは&Rなどのカラーやフォントにも対応。
  • 仮想ステップ「$??Player1$~$??Player6$」「$??SelectedPlayer$」に対応。
    NEXTと同等のもので、パーティの並び順に対応するキャラクター名と選択メンバの番号をメッセージなどで出力できます。
    選択メンバ番号はステップ代入コンテントのソース変数にも指定できます。
パーティの並び順
1 2 3 4 5 6
$??Player1$ $??Player2$ $??Player3$ $??Player4$ $??Player5$ $??Player6$


  • カード画像の配置方法の指定(中央寄せ・左上合わせ)。
    メニューとキャストで規格外サイズの配置位置が異なっていたが、個別に指定できるようになった。



Wsn.3(Py 3以降/XEditor6以降)

※これらの機能は仮実装中で正式版までに変更される可能性があります。
  • システムクーポン「@Wsn.3」を追加。
    Wsn.3に対応しているエンジンかの判定に用いる。

  • 新コンテント「カード再配置」の追加。
    エネミー・メニューカードの位置・拡大率・レイヤ情報をグループ単位で操作。
    NEXTの「メニュー移動」コンテントを代替可能。

  • 新概念「選択中カード」。
    選択メンバのカード版で、従来の「使用カード(#C)」を上書き・操作することが可能に。
    • キーコード所持分岐と各カード所持分岐コンテントに、条件に合うカードが見つかった時に選択状態にするオプションを追加。
      最初に見つかったカードが上述の「選択中カード」になる。
    • キーコード所持分岐と各カード所持分岐コンテントの適用範囲に「選択カード」を追加。
      「選択中カード」のみに対してこれらの判定を行うことが可能に。
    • 各カード獲得・喪失コンテントの適用範囲に「選択カード」を追加。
      持ち込んだシナリオ外カードを削除したり、使用時イベントで別のカードを要求する、いわゆる「物々交換イベント」を簡単に作れるようになった。

  • クーポン獲得・剥奪コンテントの適用範囲に「任意の称号の所有者」を追加。
    たとえば「_♂」を指定すれば、敵を含むフィールドに存在する全ての男性キャラを対象に称号を与えたり消したりすることができる。仕様上同行NPCは含まれない。

  • メッセージ・台詞コンテントに「話者を選択状態にする」オプションを追加。
    NEXTにある機能と同等のもので、表示された話者がメッセージ送り時に現在選択メンバになる。

  • 効果中断コンテントに「イベントを発火させたカードの使用回数を消費する」オプションを追加。
    キーコードイベント等でカードの使用回数を減らさずにイベントを終了させる事ができるようになった。


  • 召喚獣に発動条件と消滅条件を設定可能に。
    これにより、「麻痺でも動く召喚獣」や「意識不明で消滅しない召喚獣」を作ることができる。

  • バトル設定の細かな補完
    • バトルエリアに逃走の可否を指定するオプションを追加。
      CWのバトルで、逃走禁止を表現するには空の逃走イベントを作り、汎用の逃走イベントを上書きする必要がある。このオプションが有効なら逃走ボタンを表示しないため、イベントを作る手間を減らすことができる。
    • バトルのBGMに「再生中のBGMを継続」を設定できるように。
      CWではバトルで継続して同じBGMを鳴らすには同一のファイルを決め打ちで指定する必要があった。

Pyエンジンの独自仕様

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

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

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

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

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

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

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

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

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


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

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

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


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

制限の解除          1.20-1.50 NEXT Py
カード名文字数 6 8 無制限
カードの解説文字数 163 無制限 無制限
カードのキーコード設定数 5 無制限 無制限
カードの素材格納方式
(シナリオ外持ち出し)
× 任意埋め込み
セル/効果音(使用時)
参照を全てコピー
セル/フォント/BGM/効果音
ステップ最大値 10 100(可変)/9999(数値) 10000(可変)

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

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

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

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

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

名称 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も引き続き使用できます。
@使用者 2 使用中のカード使用者に一時的に与えられ、行動の終了時に消滅します。
使用時イベントのギミックに利用できます。
@効果対象 2 カードの効果対象をすり替えることができます。
使用中のカードの効果対象全員に一時的に与えられ、行動の終了時に消滅します。
この称号は使用時イベント/キーコードイベント側で付与・剥奪でき、カードの本来の効果対象であっても【@効果対象】を剥奪すると対象から外れ、無関係の者であっても【@効果対象】が付与されれば対象に入ります。
@イベント対象 2 死亡イベントやキーコードイベントが発生した時、そのイベントが発生したキャストに与えられ、イベントの終了時に消滅します。
戦闘ギミックとしてカウンター/反射などの表現に使うことができます。
@効果対象外 2 実際に対象に効果が適用される段階で@効果対象を剥奪されたメンバに付与されます。
このクーポンを持つメンバには@効果対象をつける事ができなくなります。
(【@効果対象】を持っているメンバに事前付与しても効果対象から外れるわけではない)
ターゲットの変更が複雑な状況下で無限ループに陥らないようにするためのもので、通常はこのクーポンを意識する必要はありません。

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

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

BGM/効果音
(両用)
l_chirr.ogg 虫の合唱
l_rain.ogg
l_sing.ogg 鳥の囀り
l_waterfall.ogg
l_windstorm.ogg
l_wind_1.ogg 籠った風
l_wind_2.ogg 野外の風
効果音 l_church_bell.ogg 教会の鐘
l_walk_on_sand.ogg 砂上を歩く
l_wooden_clappers.ogg 拍子木
s_attack_1.ogg 攻撃(叩きつける1)
s_attack_2.ogg 攻撃(撃つ)
s_attack_3.ogg 攻撃(爆発)
s_attack_4.ogg 攻撃(叩きつける2)
s_bell_of_buddhist_altar.ogg 仏壇の鈴
s_breath_a.ogg ブレス音(あ)
s_breath_e.ogg ブレス音(え)
s_breath_i.ogg ブレス音(い)
s_breath_o.ogg ブレス音(お)
s_breath_u.ogg ブレス音(う)
s_chime_of_store.ogg 入店チャイム
s_decide_1.ogg 決定(電子音)
s_decide_2.ogg 決定(和風)
s_hand_drum.ogg
s_hitting_tennis_ball.ogg テニスボール
s_idea.ogg 閃き
s_information_end.ogg お知らせ終了
s_information_start.ogg お知らせ開始
s_koto.ogg 和琴
s_metal_bat.ogg 金属バット
s_question.ogg 疑問
s_sliding_cornice.ogg カカン
s_soft.ogg 柔らかい音



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

CWXEditorで「名前を付けて保存」を行い、保存形式として「クラシックシナリオ(Summary.wsm)」を選択して保存します。
CWXEditor 3.1以降であれば、以下の問題を自動的に解決するため、それだけで変換完了です。

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形式)

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

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