クラシック形式

クラシック形式

 CardWirthPy/CWXEditor では従来のCardWirth(1.20-1.50、バリアント)で再生できる
Summary.wsm」で構成されるシナリオ形式を便宜上「クラシック形式」と呼称し、
Py/XEditorのみで再生・保存できる専用形式「WSN形式」と区別しています。

目次

CWXEditorでクラシック形式のシナリオを作るには

CWXEditorでシナリオを作る時、普通に新規作成を行うとWSN形式のシナリオを作成してしまいます。
これは元々WSN形式専用のエディタとして作られていたという経緯によるものです。

WSN形式は現在のところPy専用形式であるため、1.50以前との互換を保ちたい場合は、少し注意してクラシック形式を選択しましょう。

1. クラシックエンジンの登録


CWXEditorは従来型のCardWirthエンジン(以降クラシックエンジン)を認識し、できるだけそのエンジンに合わせた表示や設定を行おうとします。
例えば学園バリアントは、ファンタジーⅠ型のエンジンとカードや背景の外見が異なり、
キャラクターの作成時に「熱血型」や「秀才型」といった型を選択できますが、CWXEditorが学園バリアントを認識すると、それらに適合するシナリオを作ることができるようになります。


クラシックエンジンは手動で設定して認識させることもできますが、もっとも簡単な方法は、
そのエンジンのScenarioフォルダ(バリアントはそれに相当する)以下にあるシナリオを開く」です。
CWXEditorは、シナリオを開いた時に、そのシナリオが存在するフォルダを上へ上へと辿って行き、
CardWirthエンジンを見つけるとそれを認識し、自分の中に登録します。

あるいは、シナリオを新規作成する際に、ターゲットとするクラシックエンジンのScenarioフォルダ内を作成先として選択するといいでしょう。


2. クラシック形式シナリオの新規作成


メニューやツールバーから「新規作成(Ctrl+N)」を選ぶと「新規シナリオの作成」ダイアログが現れますが、
ここで「タイプ」に「クラシック」を選択します。
後は、普通にシナリオを編集すればOKです。

もし誤って「クラシック」以外で新規作成を行った場合は、次の方法で変換しましょう。

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


CWXEditorで「名前を付けて保存」を行い、保存形式として「クラシックシナリオ」を選択して保存します。
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」に戻します。

まとめ(最低限やっておくべきこと)

  • まず対象となるエンジンを指定できているか確認する。(テーブル>貼り紙クリック>詳細データ)
  • 選択肢にない場合、そのエンジンのシナリオフォルダを一度開く(自動登録)
  • もしくは手動登録する。(ツール>エディタ設定)※ついでにその他>対象エンジンを選んでおくと良い


どのエンジン向けに作るか

さて、クラシック形式で保存することで、大抵のCW互換エンジンが認識できる形式になりました。
しかしこれだけでは全てのエンジンで十全に遊べることを意味しません。
自分が使用しているエンジンだけに対応するのは簡単ですが、複数のエンジンに対応したい場合は、各エンジン間に存在する膨大な仕様違いを把握し、場合によっては判定分岐などを駆使してエラーが起きないようにする必要が生じます。しかしそれは大抵の制作者には高すぎるハードルです。

対象エンジンの登録

CWXEditorでは補助機能として、「設定>その他>対象エンジン」に対応したいエンジンを指定しておくと、そのエンジンで使えない機能を使おうとした場合に警告が表示されるようになっています。

また検索ダイアログ(Ctrl+F)にある「誤り検索」で対象エンジンの環境下でエラーが起きる箇所を検出してくれます。低Verの移植時やシナリオの総仕上げにやっておくといいでしょう。


【重要】CWXEditor製シナリオで1.50以下に対応する際の注意


  • CW1.20-1.50/NEXTでは、PNG形式の画像を格納したカードを取得できない(異常発生と表示)。
 1.50のPNG形式対応は不完全で、実際には「PNG画像の格納」にはPy以外のエンジンは一切対応していません。Py以外のエンジンにも対応したい場合、画像編集ソフト等でBMPで保存した物を格納して下さい(拡張子をリネームするだけでは駄目)。WirthBuilderは格納時に強制的にBMPに変換する仕様(32bit透過PNGは32bit透過BMPになる)なので、BMP変換ツールとして代用することもできます。(読み込み→保存)

  • CW1.20-1.50/NEXTでは、PNG形式の画像を格納した貼り紙やエリアのメニューカードを表示できない。
 貼り紙を表示/エリアに入った瞬間エラー。エリアでのカード画像埋め込みはメリットが少ないので、すべて参照にするのがお勧めです。参照指定なら、PNG形式でも1.50/NEXTで表示することができます。
貼り紙の画像は、クラシック形式では格納するしかないのでPNGは使用できません。カードと同じくBMPを用意して下さい。

  • 各エンジンで、カード名と解説欄で使用できる最大文字数が異なる。
 →比較表

  • 「CWXEditorで制作したシナリオ」の他のエディタでの保存しなおし。
    • 上記Classicスキンの拡張子問題でWirthBuilderでシナリオを上書き保存した場合、ファイル名の指定情報が吹っ飛ぶ。
    • 上記PNGの格納問題で、PNG格納カード・エリアを読み取れないので、WirthBuilderでシナリオを上書き保存した場合、それらはすべて消えてしまう。
    • 貼り紙の解説の改行ラインが異なるため、自動で改行が行われズレが生じる。
    • 下記の「CWXEditorでしか入力できない設定項目」は、他で編集した場合初期化。
 WirthBuilderと併用する方は注意。「いつのまにかエリア・カード・デフォルトのファイルや効果音などの参照指定が消えていた」ということが起こりえるので、マメにバックアップを取った方がいいです。
CardWirthEditor / WirthBuilderで制作したシナリオをCWXEditorに移行する場合はほぼ問題ありません。

CWXEditorでしか入力できない設定

Py以外のエンジンも再生対応しているものの、
本家エディタや旧WBでは入力できない、ある意味隠し機能です。
  • キャストカードに初期状態を設定
  • カードの一次・二次効果音にシナリオ内効果音を設定。※Py以外では持ち出し不可
  • カード単位でシナリオ名/作者名を設定可能。
    リューンアイテムの倉庫シナリオなどで出典を「交易都市リューン」のままにできる。

クラシック形式でのPy用シナリオ

WSN形式があるんだから、クラシック形式でPyシナリオを作る意味はないんじゃないの?
WSN形式に比べると制限が付きますが、あえてPyでもクラシック形式を採用したい場合があります。

  • 複数のエンジンにマルチ対応したい
Pyの機能を使いたいが、1.50などのエンジンでも遊んで貰いたい場合。
たとえば、バージョン判定称号を活用すればPyには独自効果音の技能を配布、他にはデフォルト効果音の技能を配布ということが可能です。
(ややこしいので通常は素直にWSN形式で作った方が良いでしょう。)
  • 減色要らず
Pyでは格納したPNGをそのまま表示できます。Py専用になってしまうものの、
カード画像を256色に減色しなくてもいい」という事実は魅力です。
  • エディタ上の表示がシンプル
WSN形式では専用の新コンテントや機能が追加されていますが、
これらはXEditorがクラシック形式のシナリオを開いている時は表示されません。
あまり凝った事をしない制作者にとって、機能が限定されているということはメリットです。
  • 他のエンジンにも対応したくなった時に移植性が高い
表示されていないので、誤って移植困難になる機能を使ってしまうということがありません。
  • クラシック形式の志向性を保つ
WSN形式では全てがXML文書になり、素材格納の概念がないという強い独自性があり、シナリオ構造をあまり見られたくない制作者には抵抗があるかもしれません。また、クラシック形式では画像を格納するので重複で容量は増加しますが、展開時の総ファイル数は少なくて済みます。

クラシック形式でも利用可能なPyの専用機能



  • 技能/アイテム/付帯能力カードイベントに指定された素材持ち帰り
    たとえば銃の独自効果音などはDataフォルダに移動を指示しているシナリオがありますが、
    Pyではシナリオに入っていれば自動でカードに格納します。

  • カード名と解説欄の文字数制限なし。最大まで埋められる。
    カード名がはみ出す場合、枠内に収まるように縮小表示される。

  • 1.20以前と同様に解説文が同じで異なる画像・使用時イベントを持ったカードを保持できる。
  • 連れ込んだキャストにシナリオ中での称号変動が反映される。
    また、レベル変動後も固有体力が保持される。高い体力を持った連れ込みキャラを作成可能。

  • いくつかのBGMループに対応。(RPGツクール形式のMIDI、ogg)

CWPyのバージョン判定称号

CWPy3.3現在、クーポン分岐コンテントなどで以下のシステムクーポンを判定すると
実際に持っているかにかかわらず所有判定に成功します。
クラシック形式でエンジンがPy系かどうかを判定したい場合などに利用してください。

Ver判定称号一覧
@CardWirthPy Version.0.12.2
@CardWirthPy Version.0.12.3
@CardWirthPy Version.0.12.3b
@CardWirthPy Version.1.0
@CardWirthPy Version.1.1
@CardWirthPy Version.2.0
@CardWirthPy Version.2.1
@CardWirthPy Version.2.2
@CardWirthPy Version.2.3
@CardWirthPy Version.3.0
@CardWirthPy Version.3.1
@CardWirthPy Version.3.2
@CardWirthPy Version.3.3

新しいバージョンは過去の称号を全て持っています。たとえば1.0なら1.0以降かを判定できます。
過去の特定バージョンのみを判定したい場合、
@CardWirthPy Version.2.0 Only」というように、Onlyを付けて下さい。


mode.iniで互換モードを使う


CWPyではCardWirth 1.50までに存在するいくつかのバグが修正されています。
また、1.50に存在する、「カードの表示順の1.20互換にする(FLIP用)」オプションがありません。
しかし、それらを前提としているシナリオが少数存在します。

今後そうしたシナリオを作る側が、Pyでも動作を望む場合には、
対応するmode.iniを同梱することで、シナリオ側からPyの挙動を制御することが可能です。
(プレイヤー側に「アニメ最速」というような設定変更を求めなくて済むということ)

  • やり方
シナリオフォルダ(Summary.wsmのある階層)にmode.iniを一緒に入れるだけです。
mode.iniの書き方については「互換モード」って何?を見て下さい。
以下は面倒臭い人向けの記述済みiniです。

機能別
対象消去キャンセルバグ DL
1.20のカード表示順(FLIP)オプション DL