クラシック形式
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以下に対応する際の注意
旧CWXEditorの格納PNG問題
- CardWirth 1.20-1.50/バリアント/NEXTでは、PNG形式の画像を格納したスキル/アイテム/召喚獣/情報カードを取得できない(異常発生と表示)。
- CardWirth1.20-1.50/NEXTでは、PNG形式の画像を格納した貼り紙や、エリアの格納メニューカードを表示できない(エラー発生)。
CWXEditorの8以前では、BMP以外の画像を格納することができていましたが、CardWirth 1.50 のPNG形式対応は不完全で、実際には「PNG画像の格納」にはPy以外のエンジンは一切対応していません。これによってクラシック形式なのにPy以外では読み込めないPy専用シナリオが不本意に作られてしまう、という問題が起こっていました。
最新のCWXEditorではBMP以外を格納できなくなったため、この問題は起こりません。しかし、カード画像を格納するために、PNGやGIFをBMPに変換するには、別のアプリケーションでの変換が必要です。
■よく使用されているペイント・レタッチ系ソフト■
WirthBuilderのPNG>BMP保存問題
「1.50またはNEXT付属のWirthBuilder」は格納時に強制的にBMPに変換する仕様(32bit透過PNGは32bit透過BMPになる)なので、BMP変換ツールとして代用(読み込み→保存)できますが、不正なヘッダ情報を付与するため、他のアプリケーションでは読めなくなるバグがあります。CWPy・CWXEditorユーザーの観点からは、この方法は非推奨です。
Py・XEditorでは一見、正常に表示できているように見えてますが、この壊れたBMPを逐次読める形に修復して読み込んでいるため、パフォーマンスが悪化しています。たとえば、荷物袋等の読み込みに時間がかかる遠因にもなっているので、この事情に配慮していただける方は、WirthBuilderのPNG変換機能は使用せずに、上記のような外部ツールで正常に変換したBMPを格納するのが望ましいです。
エンジン・エディタ仕様の違い
- 各エンジンで、カード名と解説欄で使用できる最大文字数が異なる。
- 「CWXEditorで制作したシナリオ」の他のエディタでの保存しなおし。
- 上記PNGの格納問題で、PNG格納カード・エリアを読み取れないので、WirthBuilderでシナリオを上書き保存した場合、それらはすべて消えてしまう。
- 貼り紙の解説の改行ラインが異なるため、自動で改行が行われズレが生じる。
- 下記の「CWXEditorでしか入力できない設定項目」は、他で編集した場合初期化。
Classicスキンの拡張子問題でWirthBuilderでシナリオを上書き保存した場合、ファイル名の指定情報が吹っ飛ぶ。→XEditor7以降はクラシック形式であれば強制でwav/bmpとして保存するため、この問題はなくなりました。
WirthBuilderと併用する方は注意。「いつのまにかエリア・カード・デフォルトのファイルや効果音などの参照指定が消えていた」ということが起こりえるので、マメにバックアップを取った方がいいです。
CardWirthEditor / WirthBuilderで制作したシナリオをCWXEditorに移行する場合はほぼ問題ありません。
CardWirth「1.28」とバリアントについて
各自でCardWirthExtenderを導入して1.30相当にアップデートしたり、Pyでスキン化して1.50相当 (or Py専用)シナリオを作ることについては公式によるアナウンスがないため、取り扱いにご注意下さい。
|
オリジナルバージョン |
ギルド投稿 |
現代 |
1.28 |
○ |
学園 |
1.28 |
○ |
大江戸 |
1.28 |
○ |
妖魔 |
1.28 |
- |
SF |
1.28 |
- |
CardWirth1.28とPyのみサポートしている機能
- 動画(MPEG)再生機能。この機能は、1.50では動作しません。
- JPEGのマスク指定。Pyでは下記の互換iniが必要です。
CardWirth1.28でサポートされない機能
CWXEditorでしか入力できない設定
Py以外のエンジンも再生対応しているものの、
本家エディタや旧WBでは入力できない、ある意味隠し機能です。
- キャストカードに初期状態を設定
- カードの一次・二次効果音にシナリオ内効果音を設定。※Py以外では持ち出し不可
- カード単位でシナリオ名/作者名を設定可能。
リューンアイテムの倉庫シナリオなどで出典を「交易都市リューン」のままにできる。
連れ込みNPC(キャスト)のPy独自仕様
従来のCardWirthエンジンではキャストを連れ込んだ場合、宿製PCと異なる体力、シナリオ内で変化したデータは初期化されますが、Pyでは一部維持されます。連れ込みシナリオを作る際はご注意下さい。
キャストデータ |
1.28-1.50 |
Py |
標準値と異なる体力 |
次回レベルアップ時に初期化 |
係数として保持 |
特殊型選択時のレベル上限上昇 |
無効(神仙型でも10) |
有効(神仙型なら15) |
初期称号に設定された「@レベル上限」の得点 |
有効 |
有効(型よりも優先) |
初期称号に設定された「@EP」の得点 |
強制的に0 |
有効(Py4以降) |
シナリオ中に配布・破棄された称号 |
初期化 |
反映 |
シナリオ中に配布・破棄されたカード |
初期化 |
反映 |
シナリオ中に撮影されたJPDC |
シナリオ内保存 |
宿内保存 |
シナリオ内の画像・音声を使ったカード |
持ち出し不可 |
持ち出し可能 |
つまり、連れ込みキャラクターの初期称号をメイキングするようなシナリオはPy向きです。
他のエンジンではどの道実現できない(全パターンの差分を用意するしかない)ので、
WSN形式で作成する方がいいでしょう。
クラシック形式でのPy用シナリオ
「WSN形式があるんだから、クラシック形式でPyシナリオを作る意味はないんじゃないの?」
WSN形式に比べると制限が付きますが、あえてPyでもクラシック形式を採用したい場合があります。
Pyの機能を使いたいが、1.50などのエンジンでも遊んで貰いたい場合。
たとえば、
バージョン判定称号を活用すればPyには独自効果音の技能を配布、他にはデフォルト効果音の技能を配布ということが可能です。
(ややこしいので通常は素直にWSN形式で作った方が良いでしょう。)
WSN形式では専用の新コンテントや機能が追加されていますが、
これらはXEditorがクラシック形式のシナリオを開いている時は表示されません。
あまり凝った事をしない制作者にとって、機能が限定されているということはメリットです。
表示されていないので、誤って移植困難になる機能を使ってしまうということがありません。
WSN形式では全てがXML文書になり、素材格納の概念がないという強い独自性があり、シナリオ構造をあまり見られたくない制作者には抵抗があるかもしれません。また、クラシック形式では画像を格納するので重複で容量は増加しますが、展開時の総ファイル数は少なくて済みます。
クラシック形式でも利用可能なPyの専用機能
- 技能/アイテム/付帯能力カードイベントに指定された素材持ち帰り。
たとえば銃の独自効果音などはDataフォルダに移動を指示しているシナリオがありますが、
Pyではシナリオに入っていれば自動で保存されるため、シナリオ外でも独自効果音を再生できます。
- カード名と解説欄の文字数制限なし。最大まで埋められる。
カード名がはみ出す場合、枠内に収まるように縮小表示される。
- 1.20以前と同様に解説文が同じで異なる画像・使用時イベントを持ったカードを保持できる。
- 連れ込んだキャストにシナリオ中での称号変動が反映される。
また、レベル変動後も固有体力が保持される。高い体力を持った連れ込みキャラを作成可能。
- いくつかのBGMループに対応。(RPGツクール形式のMIDI、ogg)
CWPyのバージョン判定称号
CWPy5.1現在、クーポン分岐コンテントなどで以下のシステムクーポンを判定すると
実際に持っているかにかかわらず所有判定に成功します。
クラシック形式でエンジンが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 |
@CardWirthPy Version.3.4 |
@CardWirthPy Version.4.0 |
@CardWirthPy Version.4.1 |
@CardWirthPy Version.4.2 |
@CardWirthPy Version.4.3 |
@CardWirthPy Version.5.0 |
@CardWirthPy Version.5.1 |
新しいバージョンは過去の称号を全て持っています。たとえば「@CardWirthPy Version.1.0」を称号分岐成功なら1.0以降かを判定できます。
過去の特定バージョンのみを判定したい場合、
「@CardWirthPy Version.2.2 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 |
1.20互換動作 |
DL |
1.28互換動作 |
DL |
1.30互換動作 |
DL |
1.50互換動作 |
DL |
1.15互換動作
- バトル中、ゲームオーバーコンテントによる敗北イベントを発火させない。
1.20互換動作
- メッセージで、旧式の折り返し判定を行う。(1.28以降は行末にスペースがあると位置が変わる)
- 旧式の状態判定分岐を行う。(呪縛・睡眠・中毒・麻痺がずれて判定される)
- 選択中のメンバがいない状態での「選択中メンバ」に対する称号所持判定を「誰か一人」として動作する。
- ダメージ系モーションの最大値処理で防御修正を適用する。
- カード配布系コンテントで、キャストに配布しきれないカードを消滅させる。(1.28以降は荷物袋に配布)
- カード名をキーコードとして扱わない。
- バトル終了時、同行NPCの変化した状態を初期化する。
- バトル終了時、時間を経過しない。
1.28互換動作
- 確率分岐コンテントで常に+1された状態で判定を行う。(99%成功は100%となる)
- JPEGのマスク(左上の1ピクセルを透過色として透過)指定を正常に行う。(CW1.50以降では無効化される)
- MP3のループを行わない。
1.30互換動作
- メッセージで1.50追加の文字カラーO,P,L,Dを描画しない。選択肢で特殊文字を表示しない。
- キーコード発火イベントで、「!」等、1.50追加特殊キーコードを通常のキーコードとして処理する
- JPDCのcopymode=1指定を正常に動作させる。(CW1.50ではcopymode=2指定のように動く)
- JPY1で、paintmodeが3以外であり、filter=1などのレタッチ操作を画像に適用する時、transparent=1やセルとして配置した画像のマスク設定を無効化する。
- JPY1で、同一のセクション名が重複している時、後方に記述されたセクションを連続実行し、先の同一名セクションは実行しない。(CW1.50では反対に、先に書かれたセクションを連続実行し、後方のセクションは無効になる)
- レアカードの売却価格を1/2で計算する。(1.50では2/3)
1.50互換動作
- 同行NPCを対象消去した時、実際には対象消去を行わず、戦闘で行動不能状態にする。(Py5以降では正常に対象消去を行う)
最終更新:2024年02月24日 11:13