WSN(XML)形式
CardWirthPy/CWXEditorは従来のCardWirthシナリオ形式である
Summary.wsm(以下
クラシック形式)の他に、「
WSN」アーカイブという独自形式の再生・保存に対応しています。
これはXMLと素材をZIP圧縮したもので、CardWirthPyは元々それのみを再生でき、現Verでも内部的には他形式をWSN形式へ変換しています。
Pyに追加されている多くの新機能はWSN形式でしか利用できません。
- 目次
形式 |
再生・読み込み対応 |
クラシック形式 |
エンジン |
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専用機能を利用できる。
- カード画像のPNG対応/参照化等により店シナリオの容量が半減。
- テキストエディタなどで構造を可視化・編集しやすい。
- Unicode文字が使用可能。※絵文字は無保証
- 細部で変更が必要( ※)なものの、クラシック形式に戻せる。
- 読み込み・保存とも単一のアーカイブでシナリオを管理できる。
- Py以外では認識されないため、CardWirthエンジンのシナリオと同じ場所に置いても邪魔にならない。
WSN形式で保存するデメリット
- 現状ではPy系エンジン専用。未対応の他の派生エンジン、周辺ツール上からはクラシック形式に変換しなければ読めなくなる。
- 宿を他のエンジンに逆変換する際、WSN独自の機能を使った技能/アイテム/召喚獣カードは変換されない(持ち込めない)。
CWPyとWSN形式にしかない専用機能
「実現に手間が掛かるが、他でも実現できるもの(確率多岐分岐や評価条件など)」を除いた、
2020年現在
Pyでしか出来ないことに絞ったまとめです。Verごとの詳細は
コチラ。
Pyにしかない機能 |
Wsn. |
変数・文字列操作 |
独自変数「コモン」
|
コモンでは文字列の操作や数値の計算が可能です |
4 |
称号・ゴシップに対する 特殊文字・変数の埋め込み |
コモン等と連携してPC名などを入れた 不定型な称号を作成・操作できます |
4 |
リソースのサポート |
(透過)PNG/GIFの格納利用 |
Py以外のエンジンは非対応((透過)BMPのみ) |
0 |
カードイベントの素材持ち帰り 効果音,背景セル,BGM等… |
JPDCで撮影した画像や特殊文字も持ち帰る事ができます (0から使えますが、2以前にはJPDC関連でバグあり) |
0 |
キャスト所有カードの参照化 |
Py以外では格納・重複して持たせる必要があります |
1 |
カード画像を複数重ねる |
店の値札やカードのフレームなどに活用できます |
1 |
x倍解像度 |
高画質なカード素材を利用できます |
2 |
:グラフィック/サウンド演出 |
背景切替方式/速度指定 |
オプションの切替スピードを背景変更毎に変えられます。 |
0 |
表示順レイヤ |
キャスト、メニュー、背景セル、メッセージの 前面表示優先度を自由に変更できます。 |
1 |
BGM/効果音マルチチャンネル フェード/音量指定 |
合計4チャンネルで音を鳴らすことができます。 音量等を細かく指定できます。 |
1 |
バトル |
特殊なシステムクーポン |
効果対象の適宜変更が可能(詳細) |
2 |
PC用死亡イベント PC用キーコードイベント |
エリア・バトルエリアでPC側にも設定できる 従来は制御困難だった、「PC側の回復禁止」や 「非戦闘時の中毒による全滅」にも対処可能 |
2 |
エネミーカードの手札指定 |
特定のアクションカードだけが手札に配布される敵 |
4 |
ラウンド終了イベント |
「全てのキャストの行動終了後」「時間経過処理より前」 のタイミングでラウンドイベントを行うことができる |
4 |
効果モーション・効果系カード |
精神力増減数値指定 |
Py以外では最大回復/枯渇のみだった要素 |
1 |
効果コンテント拡張: ・KCイベント発火 ・選択メンバの能力参照 |
従来はカードで指定するしかなかったキーコードや 選択メンバの適性(命中・威力)を加味した効果が作れる |
2 |
効果目標:称号所有者 |
任意のクーポン所有者を効果目標に取れる(複数可) |
2 |
「選択カード」の概念 |
選択メンバのように1枚の効果系カードを選択・記憶します シナリオ外の不特定なカードを表示(#C)・削除できる |
3 |
変数の埋め込み ローカル変数 |
ステップやフラグ、コモンをカードに内蔵し、 シナリオ外でも利用することができる |
4 |
コモンによるカード判定 |
選択カードの希少度・価格・使用回数で効果を変動する |
5 |
使用回数消費なしで効果中断 |
特定条件で使用回数の減らないカード |
5.2 |
召喚獣の拡張 |
召喚モーションの参照化 |
自分を召喚する無限召喚獣を作ることができます。 |
1 |
召喚獣発動条件 |
意識不明時や麻痺でも動く召喚獣など: 従来は作れなかった召喚獣が作れます。 |
3 |
召喚獣の発動演出 |
召喚獣の発動アニメを行わず、あるいは キャストが使用するかのように効果を発動できます。 |
4 |
Unicode文字への対応
従来のCardWirthシナリオは、古いWindowsで採用されていた文字コードであるShift-JISでの出力しか対応していません。これは「😊」といったemoji以前、「♥(ハートマーク)」なども使用・表示できないことを意味します。
WSN形式ではUTF-8に対応しているので、これらの絵文字や、Shift-JISに収録されていない漢字、たとえば「𠮟」「塡」「剝」「頰」のような新常用漢字をカード名、解説テキストやメッセージコンテントなどで自由に使用可能になっています。
※Py2以前はメッセージ表示に不具合があります。
※emojiの一部はCWXEditorのプレビュー上では正常に表示されません。
CardWirth1.20-1.50(wsm4)/NEXT(wsm7)/Py(Wsn.5)比較表
文字数などの制限 |
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形式ではないので以下の機能は
クラシック形式でも使うことができます。
- カード名/解説欄の文字数上限がない。
クラシック仕様よりも長い解説を持ったカードをCWXEditorで作成/表示できる。
- 技能/アイテム/付帯能力カードイベントに指定されたシナリオ内素材持ち帰り。
シナリオ外で使える、独自効果音やセルアニメを使ったカードを作ることができる。
- 1.28以降の解説欄一致による同名カードの総合処理がない。
1枚づつ別個に保存されるため、同名の絵違いカードを保持できる。
- エフェクトブースターの撮影機能で撮影した画像を宿に保存する。
CWではシナリオフォルダに直接保存する仕様で、zipのまま再生しようとすると不具合が出るため。
- 同行キャストを連れ込んだ時、シナリオ内で獲得・剥奪したクーポンが反映される。
CWではキャストに設定されている称号で固定。
- 連れ込んだキャストの体力が標準値でない場合、基礎体力*倍率でレベル変動後も保持される。
たとえば計算式上本来体力15のキャストが体力30に設定されていた場合、体力上昇に2倍の補正が掛かる。CWではレベルの変動で初期化されるので逆変換した場合は標準値になり保持できない。
この機能はCWXEditor 8.0以降削除されました。CWPy側は再生可能なままですが、非推奨です。
+
|
... |
CWXEditorで格納したJPG, PNG, アニメ無しGIFを表示することができる。 ※Py以外のエンジンではエラーとなるのでクラシック形式でBMP以外を格納する場合は、Py専用シナリオであることを明記して下さい。
|
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圧縮するか従来のようにフォルダで管理するかです。軽いシナリオなら圧縮しておく方が容量の節約になりますが、読み込みが入るのである程度の規模のシナリオは展開しておくといいかもしれません。圧縮/展開はいつでも可能です。
WSN形式では、素材は格納されません。クラシック形式から変換した場合、カード画像などのシナリオに内部格納されていた素材はすべて取り出されて「Material」フォルダに保存されています。
シナリオフォルダ
┠Area エリアデータ
┠Battle バトルエリアデータ
┠Cast/Skill/Item/BeastCard 各種カードデータ
┠Material 格納されていた素材
┠Package パッケージデータ
…
最新の機能を使いたい(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)」を選択して保存します。
仕様上の注意点
WSN5現在、以下のNEXT機能は、Pyにおいてはサポートされていません。進行上の不具合が生じるケースは稀ですが、該当する機能を使用したシナリオは意図しない挙動をしている可能性があるのでご注意下さい。
- バックパック関連の所持分岐・獲得・削除コンテント…… 「荷物袋」「選択メンバ」に変換。
- 制限コンテントのキャンプ禁止・セーブ禁止 …… 状況設定コンテントに変換。
- 空白時間コンテントのミリ秒指定 …… できるだけ近い値の従来の空白時間に変換。
以下のNEXT機能は、Pyにおいては仕様が相反していますが、表面上はなるべく動作が変わらないように変換されます。
- 背景の前面セル …… レイヤ値400指定のセルとして解釈。
- 埋め込みされた素材 …… Materialフォルダに展開。Pyでは仕様により埋め込みが不要。
- 数値ステップ …… 100以上の場合、コモンに変換。99以下の場合、通常ステップに変換。
- 使用時イベントにおける効果コンテントの死亡イベント発火 …… ダメージ/吸収/麻痺/対象消去いずれかのモーションの付いた効果コンテントのみイベント発火オプションを有効化。
なお、「クラシックシナリオ(Summary.wsm)」を選択して保存した場合はCardWirth 1.50/1.50付属のWirthBuilderで再生可能なシナリオになりますが、NEXT専用機能を利用したイベントは消去または動作しない状態となるので修正が必要となります。
WSN形式からNEXT形式への変換(エクスポート)
CWXEditor 7以降では、WSN形式のシナリオを「無圧縮のNEXT形式」で保存することもできます。
ただし、上記のPyに存在しないNEXT機能はエクスポートでも使用できません。一度変換してからNEXT付属のWirthBuilderで修正する必要があります。
現在のWSN形式はNEXT形式に存在しない、似て非なる機能を多数備えています。NEXTにない機能は変換時に失われてしまいます。特に以下のようなシナリオは注意してください。
- 使用時イベントで敵を攻撃するカードをPCに持ち帰らせる(店)シナリオ
NEXTエンジンのデフォルト設定では「使用時イベントの効果コンテントで死亡イベントが逐次発火する」仕様となっていますが、これは使用時イベントで敵を攻撃するカードを作るのには不十分です。効果コンテントで敵にダメージを与えるカードでは、キーコードも発火させる必要がありますが、NEXTには相当する機能がありません。
- 独自のセル背景や文字フォント、効果音素材を使用するカードをPCに持ち帰らせる(店)シナリオ
カードの効果音と使用時イベント内で使用されている素材は、Pyでは全てが暗黙に保存されていますが、NEXTでは手動・コンテント単位で格納/埋め込みする必要があります。NEXTでは容量の大きいファイルが埋め込まれたカードは非常に読み込みが遅くなります。
ステップの値が0 .. 値数と完全に一致し、特殊文字も展開しない場合のみ、NEXTの「数値ステップ」として変換されます。
最終更新:2023年11月15日 17:21