コミメカ3研究中間報告書


 この報告書は、擬似メニューバーコミメカ3版開発に伴って行なわれている研究の中間報告をする物である。
 ……だったが、今後は擬似メニューバーの為だけではなく色々な方面にも手を広げていく予定である。
 2009/10/26現在のコミックメーカー3最新バージョン3.12に基づいている。
 Windows XP以外での研究は行なっていない為、全ての環境下において再現可能かどうかは不明である。
 「中間報告」である為、コミックメーカー3のバージョンアップに伴い随時修正を行なう。
 追加・修正事項にはが付いている。
 日本語がちょっとおかしくても寛大な目で見ていただきたい。

 ダイナミックレイヤー 選択肢の表示 ユーザーレイヤー
 グラフィックの表示 変数 メッセージの表示 しばらく待つ
 条件分岐 セーブコントロールコマンド  隠しコマンド



・ダイナミックレイヤー

 ダイナミックレイヤーは全てのユーザーレイヤーの一番上に来る。
 ダイナミックレイヤーの上にテキストレイヤーでメッセージを表示することは不可能。
 (表示設定をした場合、ダイナミックレイヤーの下に表示される)
 ダイナミックレイヤーの上にユーザーレイヤーで画像・メッセージを表示することも不可能。
 (表示設定をした場合、ダイナミックレイヤーの下に表示される)
 テキストを表示、は他の表示フォントに設定していてもデフォルトフォント「MS ゴシック」しか使えない。Ver.3.01で修正されました。
 太文字・色変え・サイズ変えなどはメッセージの表示と同じように使用可能。
 アニメーション表示は1コマ0.5秒、目パチには少し遅いが、他にも応用が可能。
 表示エフェクトありのメッセージ表示の表示途中に、ActiveMode「Wait/MassageWait〜」のページ移動ダイナミックレイヤーをクリックすると、表示が全て終わるまで移動しない。
 表示エフェクトありのメッセージ表示停止中に、ActiveMode「Wait/MessageWait〜」サブルーチンコールダイナミックレイヤーをクリックすると、サブルーチンコール中、メッセージ表示の文章+▽は変わらない。ダイナミックレイヤーが実行モードを保持する<`ェック無しだと、サブルーチン復帰後、メッセージ表示が途中でも、文章が消え▽だけ残して次に進む。実行モードを保持する<`ェックありだと、サブルーチン復帰後、その▽のまま一時停止を続行。<W〜>で停止中の場合は、チェック無しだと途中でも文章が消え次に。チェックありだと、サブルーチンコール中も<W〜>のカウントを続け、サブルーチン復帰後に更に残りのカウントを続ける。
 表示エフェクトありのメッセージ表示で停止中&サブルーチンコールダイナミックレイヤー&〔選択肢の表示〕というコンボは、メッセージ表示の▽は残して文章だけが消える。

 ActiveMode、クリック可能か否かの対応表(ID指定無し・有り共通、無効は除く)
Ver.3.01でバグが修正されました
自動Waitモード時のみWait/MassageWaitモード時
しばらく待つすべてのキー操作
ダイナミックレイヤーのみ
メッセージ表示キー待ち××

ID指定無し・有りのクリア方法対応表
無し有り
ダイナミックレイヤーのクリアID指定無しそのIDに指定
選択肢の表示× & 同時使用可能

ダイナミックレイヤーID指定の注意

どれをどのIDに指定したのか混乱しやすい。
 →メモを取りながら作業するべし。
そのIDに指定してクリアしないとずっと消えない。
 →どこで指定してどこで消すのか、と決めてから設定するべし。
「上級者向け」と書いてあるが、指定してもいいのか?
 →……責任は負えません……。

利点・特徴

 ID別に消去が出来る。
 複数のダイナミックレイヤーに対し同じIDが使用可能。(IDは1〜999、兼用個数の上限は不明)
 選択肢の表示によるクリアが不可能である為、同時使用が可能。
 選択肢の表示を後から被るように設定すると、選択肢の表示の方が上に表示される。
 クリックカブル動作「無効」の場合、選択肢の表示を一時的に覆い隠すことが可能だが、選択肢自体は使用可能。
 「〜有効」は、選択肢の表示を覆い隠し、使用不可にすることが可能。クリアは不可。


・選択肢の表示

 同じブック内のページしか移動先ページに指定出来ないのはコミメカ2同様。
 位置設定を既存レイヤーに合わせる機能は未実装である為、詳細不明。Ver.3.02から実装されました。
 全てのユーザーレイヤーより上に表示される。
 メッセージの表示と同時使用が可能。
 表示と同時にID未指定ダイナミックレイヤーをクリアする。
 ID指定ダイナミックレイヤーはクリアしない。
 ID指定ダイナミックレイヤーの後に被るように設定すると、そのダイナミックレイヤーより上に表示される。
 通常作業のみでは、他の表示フォントに設定していてもデフォルトフォント「MS ゴシック」しか使えない。(プレビュー画面では使えそうだが現時点では使えない)Ver.3.12で修正されました。
 太文字・色変え・サイズ変えなどはメッセージの表示と同じように使用可能。
 その為、選択肢の項目別に色変えすることも可能。
 選択メッセージを「<B>&文字列変数&」「<clWhite>&文字列変数&」のようにすると、文字列変数が空白でもその項目箇所に一本の線が現れ、その線も選択可能。
 解決策:文字列変数に<B>なども入れて、選択メッセージは「&文字列変数&」にする。
 クリア方法は四つ。(四つ目を教えていただきました)
 項目をどれか選択する、制限時間を越える、別に選択肢の表示を用意しその項目をどれか選択する。そして、IDを2001に指定したダイナミックレイヤーのクリア。
 三つ目は特殊。以下、一部の現象を回避するには↑四つ目の方法が有効。
 ID指定ダイナミックレイヤーによって覆い隠す・一時的に使用不可にするには可能。(上記ID指定利点・特徴参照)
 「しばらく待つ」コマンドの「すべてのキー操作〜」も一時的に選択肢の表示を使用不可に出来る。
 「しばらく待つ」コマンドの「ダイナミックレイヤーの〜」実行中は、選択肢使用可能。
 選択肢の表示中に実行モード保持ノーチェックでサブルーチンコールのID指定ダイナミックレイヤーをクリックすると、復帰した時に選択肢の表示は終了され、次のコマンドが実行される。
 ただしクリアされたわけではなく、選択肢の文章はそのまま表示され続け、「しばらく待つ」コマンド「ダイナミックレイヤーの〜」を入れれば復活する。


・ユーザーレイヤー

 非表示にする+画像読み込み ということも可能。
 一番最初、画像読み込みまたはグラフィック表示設定をする前にレイヤー表示をすると、設定位置の左上に小さな白の四角が現れるので注意。
 そのレイヤーに画像を読み込まない限り白の四角は表示が続く。
 読み込み・グラフィック表示設定前に、白背景以外に一度表示させたい時は、透明なPNGを用意。
(白背景が続くのであれば、紛れてしまうので問題無い)
 1×1で充分。ただ透明なPNG。
 その際、レイヤー制御内の読み込みの場合、サイズ変更と同時使用しない方が良い。
 その際、グラフィックの表示での設定の場合、表示内のレイヤーの位置変更はしない方が良い。
 これにより、白い四角は現れない。


・グラフィックの表示

 「指定範囲に合わせて〜」が無くなった為、サムネイルなどを作る時は別個縮小画像を用意する必要がある。
 グラフィックの表示はフェードアウトなどは可能か?
  可能。
  背景(背景レイヤーに限らず、表示効果を指定したい画像の後ろに表示されている画像)が一色なら、背景に使用している画像で表示効果を使用。
  その際、グラフィックの表示内でレイヤーの位置変更はしない方が良い。
  背景が一色でなければ、上記の透明1×1PNGを使用し、表示効果を設定。
  その際、グラフィックの表示内でレイヤーの位置変更はしない方が良い。
  グラフィック表示後、そのユーザーレイヤーを非表示にするか、引き続き使うのか要確認。


・変数

 初期値が設定出来ない。
 0または空白以外に初期値が欲しければ、一番最初のページ(例:スタートページ)で変数を調整しておくことで代用出来る。
 乱数は0〜999。上限値を変更する方法はあるが、サポート対象外。
 %変数%←%@乱数%mod(上限値)とすることで代用出来る。
 ↑の方法は、例えば上限値に5を入れると%変数%=0〜4となる。


・メッセージの表示

 テキストレイヤーか、ユーザーレイヤーか選択出来る。
 テキストレイヤーを選択すると、全てのユーザーレイヤーの上に表示される。
 その代わり、その後のレイヤー制御・グラフィック表示で自動的に同時に消去される。
 グラフィック表示が表示効果ありだと、表示効果が終わった瞬間に消去される。
 テキストレイヤーでもユーザーレイヤーでも、ダイナミックレイヤーより下に表示される。
 テキストレイヤーでもユーザーレイヤーでも、次の選択肢の表示で消去されることはない。
 テキストレイヤーと複数のユーザーレイヤーとで、同時にメッセージ表示することも可能。
 同一レイヤーに対する次のメッセージ表示で、メッセージが切り替わる。
 テキストレイヤーは、一度位置設定を変更すると、「レイヤーの位置を設定する」にチェックしていなくてもその位置に表示される。Ver.3.01で修正されました。チェックしていない時は自動的に全範囲指定になります。
 ユーザーレイヤーのメッセージ表示は、そのユーザーレイヤーを非表示にしても、画像を読み込んだりグラフィックの表示で使ったりしない限り、次のそのレイヤー指定のメッセージ表示がされるまでずーっと維持される。
 ユーザーレイヤーにメッセージ表示をした後、そのレイヤーに表示効果ありでグラフィックを表示すると、文章のフェードアウトなども可能。
 つまり、他の画像と同時に同じ表示効果で変化させることも可能。
 ただし表示始めは↓の二通りだけ。
 表示エフェクトあり(一文字ずつ表示)・なし(一括表示)が選択出来る。
 一括表示は、ウェイトタイム設定(<W1>など)・メッセージ表示内キー待ち(<KEY>)が無効になる。
 一括表示で一定時間、またはキーの入力を待ちたい時は、しばらく待つを使用する。
 表示エフェクトありの▽は、待機中に〔ダイナミックレイヤーのクリア:ID2002〕で表示が消せる。
 コミックメーカー2では使用出来なかった「!"'()?;:*/」も使用出来る。


・しばらく待つ

「制限時間による解除」のカウントダウンタイマーはタイマー画像が未実装。Ver.3.03から実装されました。
 「ユーザー操作による解除」は「すべての〜」「ダイナミックレイヤー〜」のどちらでもダイナミックレイヤーによる解除が可能。(ダイナミックレイヤーActiveMode対応表参照)
 「制限時間による解除」「ユーザー操作による解除」の二つは同時選択も出来る。


・条件分岐

 一つにつき判断出来る条件は一つ。
 二重三重に囲むことで、複数の条件を同時に判断することが出来る。
 条件は数値変数・文字列変数の二種類。
 数値変数は、数値または数値変数との比較が可能。
 文字列変数は、文字列または文字列変数との比較が可能。
 比較対象文字列は、%(数値変数)%や$(文字列変数)$を複雑に入力することも可能。
 「そうでなければ」は、指定条件と指定条件以外の二種類に対して動作をしたい時に便利。(例:⊆+そうでなければ)
 ↑必ず入れる必要はない。


・セーブコントロールコマンド

実行状態をセーブファイルに記録する
 その時の状態をとにかく全部保存する。
 ユーザーレイヤーもダイナミックレイヤーも変数もどのブック・ページ・箇所からサブルーチンコール中なのかも画面画像も保存日時も。(08/02/29修正
 セーブした時点でどの箇所を実行中かはセーブされない。
 ダイナミックレイヤーは新しい物から順に保存されてしまう。
 複数のダイナミックレイヤーを重ねている状態で保存するのは場合によっては危険。
 ……まぁつまり、セーブシステムにはデフォルトで危険な点があるわけです。
 今度みっくすさんに報告しようかな……。
 〔メッセージの表示〕表示エフェクトあり≠フ表示途中の場合、その時表示しているメッセージ+続きが保存される。

セーブファイルから実行状態を復元する
 セーブされたそのままが再現され、そのセーブ箇所から再開される。
 サブルーチンコール前の箇所がセーブされているので、サブルーチンコール前の箇所から再開される。
 ダイナミックレイヤーは新しい順に保存されたのを順に表示するので、ばらばらっと、セーブ時とは逆の順序で表示されてしまう。
 ロードすると、そのロードコマンド以降は実行されない。
 ロードしようとしてもセーブファイルが無い場合は無視されて、続くコマンドが実行される。
 セーブ時の音量も再現される。例えばBGMの音量を50にしてセーブして終了する。もう一度起動するとBGMは終了時と同じ音量50で流れる。ここでBGMを音量100にして、音量50のセーブデータをロードすると、BGMの音量は50になる。だがBGMをOFFにして、音量50のセーブデータをロードすると、音量50のはずがBGMは流れない。

変数の内容をセーブファイルに記録する
 文字列変数の保存の実装は暫く先だそうです。
 各登録キーワードには数値のみを保存し、どの数値変数から保存したかという情報は保存しない。
 違う数値変数同士で同じ登録キーワードを使っても問題ない。
保存する値は数値変数ではなくただの数値も可能。

セーブファイルから変数の内容を復元する
 文字列変数の読み込みの実装は暫く先だそうです。
 各登録キーワードには数値のみが保存されており、どの数値変数から保存したかという情報は復元しない。
 違う数値変数同士で同じ登録キーワードを使っても問題ない。


◆隠しコマンド

 配布元サイト様ではサポート対象外です。
 普通にコミックメーカー3で作品を作るなら、隠しコマンドは使いません。
 擬似メニューバー等の特殊な使い方をしたい場合のみ使用します。
 よくわからない人は触らないのが懸命です。
 興味がある人のみ反転してください。

・登録キーワード「System.MusicVolume」

 画面を閉じた時のBGMの音量をコミメカ3側が自動保存する。
 起動すると↑で保存した音量でBGMを流す。
 c_save00.sviがある時は普通に数値変数に読み取ることが可能だが、起動中に音量を変えた後に読み取ると変更前の音量が出される。

・登録キーワード「System.UseMusic」

 画面を閉じた時のBGMのON・OFFをコミメカ3側が自動保存する。
 起動すると↑で保存したON・OFFに従ってBGMを流す。
 c_save00.sviがある時は普通に数値変数に読み取ることは可能だが、起動中にON・OFFを変えた後に読み取ると変更前の状態が出される。

・登録キーワード「System.SoundVolume」

 画面を閉じた時の効果音の音量をコミメカ3側が自動保存する。
 起動すると↑で保存した音量で効果音を流す。
 c_save00.sviがある時は普通に数値変数に読み取ることが可能だが、起動中に音量を変えた後に読み取ると変更前の音量が出される。

・登録キーワード「System.UseSound」

 画面を閉じた時の効果音のON・OFFをコミメカ3側が自動保存する。
 起動すると↑で保存したON・OFFに従って効果音を流す。
 c_save00.sviがある時は普通に数値変数に読み取ることは可能だが、起動中にON・OFFを変えた後に読み取ると変更前の状態が出される。

・_smallimage.bmp

 セーブ時の画面画像が、各セーブファイルごとに保存される。
 BMPファイルが新たに作られるわけではない。セーブデータの中に画像データが保存される。
 どんな画面サイズだろうが80×60に縮小される。
 その時表示されている全てのユーザーレイヤーが保存される。
 テキストレイヤー、ダイナミックレイヤーは画像には保存されない。
 デフォルトと違う画像が使いたい場合は、別の画像の80×60の_smallimage.bmpを作り、使う作品で1度以上使用する。
 読み込むには、
〔セーブコントロール〕セーブファイルを開く<Zーブファイル名「(そのセーブファイル名)」モード:読み込みのみ
ダイナミックレイヤーまたはグラフィックの表示で_smallimage.bmpを表示
〔セーブコントロール〕セーブファイルを閉じる
 とする。

・登録キーワード「Supplement.SaveDate」

 そのセーブデータをセーブした日時が入っている。
 例:2009/01/01 1:01:01
 何故か時だけ、一桁の時は前に0がつかない。

・文字列変数{$_system:date$}

 備え付けメニューバーのセーブ日時を表示する時に使用される。
 表示に使うのみで、保存には使われない。

・数値変数%_musicvolume%

 その時のBGMの音量が入っている。
 ただし、音量をいじらない初期状態では音量は100なのにこの変数は0。

・数値変数%_soundvolume%

 その時の効果音の音量が入っている。
 ただし、音量をいじらない初期状態では音量は100なのにこの変数は0。


 以上。

 戻る


初版:05/06/12
二版:05/06/21 メッセージ表示を追加。ダイナミックレイヤー・選択肢の表示にいくつか追加。
三版:05/07/29 ブックマーク設置。諸々追加。バグに関してなども。
四版:05/08/12 主にVer.3.01のバグ修正について。
五版:05/09/21 選択肢の表示レイヤー位置表示実装、乱数について。
六版:05/10/13 ID2001クリア、しばらく待つ・条件分岐を追加。その他削除。
七版:05/11/16 しばらく待つタイマー画像実装。<B>など+文字列変数の選択肢の解決策追加。
八版:06/06/14 セーブコントロールコマンドを追加。
九版:06/11/23 選択肢の表示フォントについて修正。ダイナミックレイヤーについて一項目削除。
十版:09/09/06 ▽関連でダイナミックレイヤーに2件、メッセージ表示に1件追加。
十一版:09/10/26 セーブコントロールコマンド2件、隠しコマンド全般を移動。セーブ〜コマンド2項目に分割整理、1件追加、隠しコマンド2件追加。