【メモ箱に内容をコピー済み】
日記記事は書かれた日付時点のもので、内容が古いことがあります。上のリンク先で最新の情報をご確認下さい。
※※※
公式に新エンジンテストのお知らせが出ていたので、実際使ってみることにしました。何かあれば報告、という事で。
このテストでは、公式ファンサイトからダウンロードした先行配布版に、CardWirth Extenderの最新版(v.1.3)を上書きして使用しました。
【CardWirth Extenderで追加/修正された部分】
○これまでと大きく変わる事
・仮想システムクーポン「@MP3」(←全て全角)の追加
・MP3のループ再生に対応
・アルファチャンネル付きビットマップの表示に対応
○修正や対応がなされた問題点
・NPC増殖バグ
・ランダム分岐の解釈バグ
・ゲーム環境「選択モードでの背景効果」の状態が保存されないバグ
・メッセージコンテントで74×94以外の画像を使用した際のテキスト表示のズレ
・MIDI再生遅延関連
・冒険の中断・セーブ時のストリームからの読み込みエラー問題
○追加機能
・スクリーンショットの保存
【セーブデータの違い】
(1)セーブデータのバージョン
現行(v.1.2.8.3)=10、拡張DLLあり=11
(2)Environment.wydに「選択モードでの背景効果」保存用領域1バイト追加
他のゲーム環境設定項目の直後、先頭から42バイト目に割り込む形で追加されるため、それより後のシナリオ済印や宿ゴシップなど大部分のデータが1バイト分後ろにずれます。
Environment.wydへのデータ追加のため、拡張DLL存在下で保存した宿は、それ以前の環境ではロードできなくなります。
逆に言えば、バイナリエディタ等でその1バイトを削除すれば以前の環境でロード可能です。
(※詳細は最下部折りたたみの後に)
【シナリオ作りで気をつけること】
○ランダム分岐の解釈バグ関連
「1~99%の確率が内部的に2~100%として扱われる」のが正しく直ったとすると、拡張DLLの有無で1%の差が出ます。
対策1:
1%差をつけた2つの分岐処理を準備しておき、仮想システムクーポン「@MP3」の有無でプレイヤーの環境を特定して振り分ける。
対策2:
1%ぐらいの差は目をつぶることにして、バグ未修正の環境で100%扱いにならないよう、数値を1~98%の間で設定する。
○カードに透過BMPを用いる場合
どんな感じに見えるかと、とりあえず見てみました。
どこぞの使い回しですが、透けてそうなキャラで。
ついでに手札の方も表示を確かめました。
表示見た目は、メモ箱内のまとめでご確認ください。
透過非対応だと半透明部分がかなりおかしな事になっていますが、拡張を入れた方では問題なく表示されています。
対策1:
透過非対応環境向けに、従来型の画像を使った差分(イメージ格納を含むWSM・WIDファイルやフォルダ内に置く画像の差替え版)を用意しておく。
対策2:
シナリオの内容はそのまま透過BMPを使った所だけ従来型の画像に差し替え、拡張DLL対応版と従来向け版の両方を公開する。
対策3:
シナリオ開始時に仮想システムクーポンを利用して拡張DLL導入状況を見分け、説明を表示した上で宿に戻す。
対策4:
シナリオ側で特に何もしない場合は、添付テキストの目立つところに拡張DLLの機能を利用している事を書き、画像の表示がおかしくてもシナリオの不備ではない事を主張しておく。
(これは何だかなぁ…。)
○BGMをMP3にする場合
透過と同じような対策が必要そうです。
ただ、MP3ループ再生非対応環境用にMIDIファイルを準備しても上書きによる差し替えができないため、差分は駄目ですね。
代わりの手段としては、同じ場面のBGMをMP3とMIDIの両方で準備しておき、仮想システムクーポンを利用した振り分けで再生するファイルを変えるといった方法が考えられます。
個人的には、拡張DLLの100%普及を確信できる方法が無い以上、あれこれ対策に手間をかけるより、従来通りの画像やMIDIを使った方が楽なように感じます。
より軽量に作りたい個人的事情のせいもありますかねぇ。
しかし、昨今の傾向から考えると、透過BMPやMP3ループ再生への対応を歓迎される方も多そうです。
今後のシナリオは、互換性や軽さなどを重視する従来型タイプと、グラフィックや音楽に凝れるだけ凝る拡張活用タイプに分かれていくのかも…などと、ふと考えたり。
【MIDI再生遅延はどうなった?】
(1)エリア上メニューカードをクリックするとBGMを再生する。
(2)到着イベントを利用してBGMを流す。
の2種類のイベントを作り、(1)ではメニューカードをクリックしてから、(2)ではエリア移動用のカードをクリックしてからBGMが流れ始めるまでの時間を、ストップウォッチで計りました。
使用したエンジンは1.28のみ。
条件は、拡張DLL有・無、CardWirth MidiPatch(CWMPと略)有・無の組合せで4パターンです。
再生するMIDIファイルはデフォルト素材の「RYUNE.MID」を使いましたが、条件を同じにするため、シナリオフォルダ内に置いて参照しました。
○クリックイベント
拡張DLLなし+CWMPなし
→1回目:2.60秒/2回目:2.54秒/3回目:2.54秒(平均:2.56秒)
拡張DLLなし+CWMPあり
→1回目:1.92秒/2回目:1.90秒/3回目:1.87秒(平均:1.90秒)
拡張DLLあり+CWMPなし
→1回目:1.66秒/2回目:1.60秒/3回目:1.59秒(平均:1.62秒)
拡張DLLあり+CWMPあり
→1回目:1.60秒/2回目:1.59秒/3回目:1.60秒(平均:1.60秒)
○到着イベント
拡張DLLなし+CWMPなし
→1回目:2.99秒/2回目:2.99秒/3回目:2.97秒(平均:2.98秒)
拡張DLLなし+CWMPあり
→1回目:2.30秒/2回目:2.32秒/3回目:2.27秒(平均:2.30秒)
拡張DLLあり+CWMPなし
→1回目:2.02秒/2回目:1.96秒/3回目:2.03秒(平均:2.00秒)
拡張DLLあり+CWMPあり
→1回目:2.01秒/2回目:1.99秒/3回目:2.02秒(平均:2.01秒)
以前、メディアプレーヤー事前起動の効果をほとんど実感できなかった事から、それと同等と説明されている拡張DLLも同じ結果になるのではないかと考えていましたが、予想は裏切られました。
クリックイベントと到着イベントの双方で、約1秒ずつ曲の再生開始が早くなっています。
また、拡張DLLなしの状態ではCWMPでMIDIの再生が早くなりましたが、拡張DLLありだとほとんど差はみられないという結果でした。
※※※
修正後は、ストレスなく聞ける早さです。しかし、公式ファンサイトにメディアプレーヤー起動の効き目は環境によると書いてありましたし、環境によって差が出るのかもしれません。
【NPC増殖バグの修正確認】
キャスト加入イベントを持つシナリオを作成し、テストを行いました。
キャストを1人加入させるごとに中断→再開を行い、2人以上になっていないか確認。
NPCの数は、最大6人まで増やしました。
拡張DLLなし
→加入枠が一杯のキャスト6人の時を除いて毎度増殖あり
拡張DLLあり
→増殖は起こらず
もうすぐ5時か。
まだ試すべきことはあるけれど、今は寝よう。。。
[環境]
OS:Windows XP Home Edition SP3 [32bit版]
CPU:AMD Turion(tm) 64 X2 Mobile Technology TL-50, MMX, 3DNow (2 CPUs), 1.6GHz
RAM:1.37GB
Display:ATI Radeon Xpress 1150 [モニタの発色設定:32bit]
Security:Norton Internet Security 2008
○テストした先行配布版
CardWirth(v.1.2.8.3)+CardWirth Extender(v.1.3, 同梱のcwconv.dll含めて導入(※))
(※)winmm.dll(v.1.3)に同梱されているcwconv.dllはバージョン不明です。現行エンジンのものとサイズが異なり、何らかの変更が行われていると思いますが、その詳細は不明です。
○比較用として
[1] CardWirth(v.1.2.8.3)+cwconv.dll(v.1.5.5.6) …従来の1.28エンジン
[2] CardWirth(v.1.2.0.0)+cwconv.dll(v.1.0.0.0) …1.20エンジン
[関連記事]
・CardWirth Extenderを試す・その2
・CardWirth Extenderを試す・その3
※※※
以下、蛇足?
全く役に立ちそうにありませんが、興味本位で以下のような事を試してみました。
[1]先行配布版+CardWirth Extender v.1.3で新規宿を作り、パーティーを組んでセーブ
↓
[2]Environment.wydの先頭から42バイト目を削除
(※初めの1バイトを「先頭から1バイト目」と数えています)
↓
[3]CWフォルダ内からwinmm.dllのみ削除
↓
[4]CWエンジンを起動して[1]で作った宿をロード
すると、winmm.dllを削除しただけではロードできなかった宿データがロードできました。
…いや、内容から考えて当たり前ですね。
[4]の後でセーブすると、宿のデータバージョンは10に戻ります。
ただし、拡張DLLを削除した事で透過対応がなくなりますので、既に透過BMPを使ったカードがある場合、その表示が酷い事になります。
何かの事情で環境を戻す場合、今のところ、気をつけるべきはそこぐらいです。
(3/21追記)
拡張DLLのバージョンが1.4以上になるとエンジン本体にも修正が施されているため、追加1バイト分の削除と拡張の削除だけでは戻せません。
拡張なしのCW本体を新規インストールするなりして、本体も元に戻す必要があります。