軽量化裏技 コミメカ3版


 上級者向け。
 ほとんど知られていない、というか知る人がいたかどうか……な軽量化の裏技です。
 MB単位の軽量化は期待しないでください。
 KB単位でちまちまと軽量化していく地味な方法です。
 確実ですが、間違えるとコマンドが「不明なコマンド」になってしまったり、破損したファイルとして扱われる可能性があります。
 慎重に作業しなければなりません。
 この方法について、配布元サイト様で質問することは絶対にやめてください。
 試して失敗しても自分で解決出来る、または自分で解決しようと思える方のみ使用してください。
 当サイトの掲示板では質問等を受け付けます。



 コミックスクリプトファイル(.cf3)をテキストエディタで編集します。
 無くても大丈夫な情報を削ります。
 練習ファイルこちら。(2012/02/04:練習4〜7追加)


 〜練習1〜

 〔グラフィックの表示〕。
 レイヤーの位置を変更する≠ノチェックをしていない時。
 その〔グラフィックの表示〕におけるレイヤーの位置情報は消しても、それより前に指定したレイヤーの位置に表示され、問題無く動きます。
 これを削ります。
 「GraphicDraw.Layer.Move=0」が、〔グラフィックの表示〕でレイヤーの位置を変更する≠ノチェックをしていない、という情報です。
 この情報がある〔グラフィックの表示〕に限り、
GraphicDraw.Area.ViewLeft=〜
GraphicDraw.Area.ViewTop=〜
GraphicDraw.Area.Left=〜
GraphicDraw.Area.Top=〜
GraphicDraw.Area.Width=〜
GraphicDraw.Area.Height=〜
 が削れます。
 〔グラフィックの表示〕でレイヤーの位置を〜≠ノチェックをしている時に、
 ViewLeft=相対X座標
 ViewTop=相対Y座標
 Left=X座標
 Top=Y座標
 Width=横幅
 Height=縦幅
 で表示する、という情報です。
 上記の順番で書かれていなくても問題ありません。

 念の為スクリプトファイルをコピーした物で、「GraphicDraw.Layer.Move=0」を検索しながら、これらを削除して、空いた行を詰めて、上書き保存。
 練習1.cf3で行なうと、2.77KB(2,842バイト)→2.12KB(2,178バイト) になるはずです。
 ほんの少しじゃないか、と思われるかもしれません。
 そういう方法なんです。
 元々大きなサイズのファイルほど、作業していくと「うぉ?!」というほど軽くなります。
 積み重ねです。


 〜練習2〜

 〔メッセージの表示〕。
 レイヤーの位置を変更する≠ノチェックをしていない時。
 練習1と同じく、その〔メッセージの表示〕におけるレイヤーの位置情報は消しても、ユーザーレイヤーに表示する場合はそれより前に指定したレイヤーの位置に表示され、テキストレイヤーに表示する場合は自動的に画面全体に表示され、問題無く動きます。
 これを削ります。
 「MessageDraw.Layer.Move=0」が、〔メッセージの表示〕でレイヤーの位置を変更する≠ノチェックをしていない、という情報です。
 この情報がある〔メッセージの表示〕に限り、
MessageDraw.Area.Left=〜
MessageDraw.Area.Top=〜
MessageDraw.Area.Width=〜
MessageDraw.Area.Height=〜
 が削れます。
 〔メッセージの表示〕でレイヤーの位置を〜≠ノチェックをしている時に、
 Left=X座標
 Top=Y座標
 Width=横幅
 Height=縦幅
 で表示する、という情報です。
 上記の順番で書かれていなくても問題ありません。

 練習1と同様に作業し、上書き保存。
 練習2.cf3で行なうと、1.67KB(1,715バイト)→1.24KB(1,275バイト) になるはずです。


 〜練習3〜

 〔数値変数の制御〕。
 真ん中と右辺が無い時。
 真ん中の情報と右辺の情報は、元々入れていないので、消しても問題無く動きます。
 これを削ります。
 [数値変数]←1 だけ、などの時、
 ValueCtrl.ValueVar=%数値変数%
 ValueCtrl.LeftValue=1
 ValueCtrl.RightValue=
 ValueCtrl.Calc=
 @ValueCtrl
となります。この内、
ValueCtrl.RightValue=
ValueCtrl.Calc=
 が削れます。
 ValueCtrl.RightValue=右辺、ValueCtrl.Calc=真ん中(+や−の情報)です。
 上記の順番で書かれていなくても問題ありません。
 もし ValueCtrl.Calc= の右辺に何か数値が入っていても、 ValueCtrl.RightValue= の右辺に何も無ければ、削ってしまって大丈夫です。

 練習1、2と同様に作業し、上書き保存。
 練習3.cf3で行なうと、1.39 KB (1,429 バイト)→1.20 KB (1,229 バイト)になるはずです。
 間違えて[数値変数1]←[数値変数1]+[数値変数5]の一部まで削って、「数値変数1:1」と表示されないように気をつけてください。


 〜練習4〜

 〔レイヤーの制御〕。

レイヤーに画像を読み込む≠ノチェックをしていない時。
 その〔レイヤーの制御〕より前に読み込まれた画像情報が残っているので、読み込まない画像情報を消しても問題無く動きます。
 これを削ります。
 「Layer.Image.Change=0」が、〔レイヤーの制御〕でレイヤーに画像を読み込む≠ノチェックをしていない、という情報です。
 この情報がある〔レイヤーの制御〕に限り、
Layer.Image.FileName=〜
 が削れます。
 〔レイヤーの制御〕でレイヤーに画像を読み込む≠ノチェックをしている時に、〜部分の画像ファイルを読み込む、という情報です。
 〜部分が無いこともあります。

 レイヤー位置を変更する≠ノチェックをしていない時。
 その〔レイヤーの制御〕におけるレイヤーの位置情報は消しても、それより前に指定したレイヤーの位置に表示され、問題無く動きます。
 これを削ります。
 「Layer.Pos.Change=0」が、〔レイヤーの制御〕でレイヤー位置を変更する≠ノチェックをしていない、という情報です。
 この情報がある〔レイヤーの制御〕に限り、
Layer.Pos.Left=
Layer.Pos.Top=
 が削れます。
 〔レイヤーの制御〕でレイヤーに画像を読み込む≠ノチェックをしている時に、
 Left=X座標
 Top=Y座標
 で表示する、という情報です。
 上記の順番で書かれていなくても問題ありません。

レイヤーサイズを変更する≠ノチェックをしていない時。
 その〔レイヤーの制御〕におけるサイズ情報は消しても、それより前に指定したレイヤーのサイズに表示され、問題無く動きます。
(画像を読み込む≠ノチェックをして画像ファイルを指定している場合は、前に指定したレイヤーのサイズは反映されず、自動的に新しい画像と同じサイズに変更されます)
 これを削ります。
 「Layer.Size.Change=0」が、〔レイヤーの制御〕でレイヤーサイズを変更する≠ノチェックをしていない、という情報です。
 この情報がある〔レイヤーの制御〕に限り、
Layer.Size.Width=〜
Layer.Size.Height=〜
 が削れます。
 〔レイヤーの制御〕でレイヤーサイズを変更する≠ノチェックをしている時に、
 Width=横幅
 Height=縦幅
 で表示する、という情報です。
 上記の順番で書かれていなくても問題ありません。

 表示範囲内の表示位置を変更する≠ノチェックをしていない時。
 その〔レイヤーの制御〕における表示範囲内の表示位置情報は消しても、それより前に指定したレイヤーの表示範囲内の位置に表示され、問題無く動きます。
 これを削ります。
 「Layer.ViewPos.Change=0」が、〔レイヤーの制御〕で表示範囲内の表示位置を変更する≠ノチェックをしていない、という情報です。
 この情報がある〔レイヤーの制御〕に限り、
Layer.ViewPos.Left=〜
Layer.ViewPos.Top=〜
 が削れます。
 〔レイヤーの制御〕で表示範囲内の表示位置を変更する≠ノチェックをしている時に、
 Left=レイヤーに表示する画像のX座標
 Top=レイヤーに表示する画像のY座標
 で表示する、という情報です。
 上記の順番で書かれていなくても問題ありません。

 練習4.cf3で行なうと、3.05 KB (3,127 バイト)→2.51 KB (2,575 バイト) になるはずです。


 〜練習5〜

 〔ダイナミックレイヤーの作成〕
 ダイナミックレイヤーは設定項目が多いので、削除項目を間違えないように注意してください。

 基本設定(必須)≠フ描画スタイル≠ナ「表示しない」または「イメージを表示」を指定している時。
 そのダイナミックレイヤーに表示しないテキストの情報は消しても問題無く動きます。
 「DynamicLayer.Type=Transparent」が「表示しない」、「DynamicLayer.Type=Image」が「イメージを表示」を指定している、という情報です。
 これらの情報がある〔ダイナミックレイヤーの作成〕に限り、
DynamicLayer.Text.Text=〜
 が削れます。
 「テキストを表示」に指定している時に、〜部分のテキストを表示する、という情報です。
 〜部分が無いこともあります。

 基本設定(必須)≠フ描画スタイル≠ナ「表示しない」または「テキストを表示」を指定している時。
 そのダイナミックレイヤーに表示しない画像の情報は消しても問題無く動きます。
 「DynamicLayer.Type=Transparent」が「表示しない」、「DynamicLayer.Type=Text」が「テキストを表示」を指定している、という情報です。
 これらの情報がある〔ダイナミックレイヤーの作成〕に限り、
DynamicLayer.Image.FileName=
 が削れます。
 「イメージを表示」に指定している時に、〜部分の画像ファイルを表示する、という情報です。
 〜部分が無いこともあります。

 クリック≠フクリッカブル動作の指定≠ナ「無効」を指定している時。
 そのダイナミックレイヤーをクリックした際に移動・サブルーチンコールしないページの情報は消しても問題無く動きます。
 「DynamicLayer.Clickable.Mode=None」が「無効」を指定している、という情報です。
 これらの情報がある〔ダイナミックレイヤーの作成〕に限り、
DynamicLayer.Clickable.Move=〜
DynamicLayer.Clickable.BookName=
DynamicLayer.Clickable.PageName=
 が削れます。
 Move=〜
 が、クリックされたときの動作≠ナ指定している情報。
 BookName=ブック名
 PageName=ページ名
 に移動またはサブルーチンコールする、という情報です。
 〜部分が無いこともあります。
 上記の順番で書かれていなくても問題ありません。

 練習5.cf3で行なうと、5.06 KB (5,191 バイト)→4.55 KB (4,662 バイト) になるはずです。


 〜練習6〜

 〔しばらく待つ〕の制限時間による解除≠ナ一定時間経過したら、一時停止を解除する≠ノチェックをしていない時。
 その〔しばらく待つ〕で使用されない制限時間の情報は消しても問題無く動きます。
 「Wait.TimeBreak=0」が制限時間による解除≠ナ一定時間経過したら、一時停止を解除する≠ノチェックをしていない、という情報です。
 この情報がある〔しばらく待つ〕に限り、
Wait.Time=0
 が削れます。

 〔音楽を演奏する〕の指定回数ループしたら演奏をやめる≠ノチェックをしていない時。
 その〔音楽を演奏する〕で使用されないループ回数指定の情報は消しても問題無く動きます。
 「Music.Loop=〜」が、指定回数ループしたら演奏をやめる≠ノチェックをして、ループの回数を入力している、という情報です。
 逆に、「Music.Loop=」が、チェックをしていない、という情報です。
 「Music.Loop=〜」で回数が指定されていない〔音楽を演奏する〕に限り、
Music.Loop=
 が削れます。

 練習6.cf3で行なうと、879 バイト (879 バイト)→840 バイト (840 バイト) になるはずです。


 〜練習7〜

 ユーザーレイヤーを作った後に削除すると、削除したはずのレイヤーの情報が消えずに残ったままになることがあります。
 <Head="LayerList">〜<Head End>が、ユーザーレイヤーの情報です。
 例えば、レイヤー1〜6を作成し、レイヤー6は削除した場合、
<Head="LayerList">
LayerCount=6
Layer.1.LayerName=レイヤー1
Layer.1.FileName=
Layer.1.Attr=0
Layer.1.Left=0
Layer.1.Top=0
〜略〜
Layer.5.LayerName=レイヤー5
Layer.5.FileName=
Layer.5.Attr=0
Layer.5.Left=0
Layer.5.Top=0
Layer.6.LayerName=レイヤー6
Layer.6.FileName=
Layer.6.Attr=0
Layer.6.Left=0
Layer.6.Top=0
<Head End>
 のようになります。
 LayerCount=6は、現在使用しているユーザーレイヤーの総数に背景レイヤーを足した数です。
 現在使わないレイヤー6の情報は削除しても問題無いので、
Layer.6.LayerName=レイヤー6
Layer.6.FileName=
Layer.6.Attr=0
Layer.6.Left=0
Layer.6.Top=0
 の部分だけ削ります。
 ユーザーレイヤーの作成順や並べ替えなどによっては、
<Head="LayerList">
LayerCount=6
〜略〜
Layer.5.LayerName=レイヤー5
Layer.5.FileName=
Layer.5.Attr=0
Layer.5.Left=0
Layer.5.Top=0
Layer.6.LayerName=レイヤー5
Layer.6.FileName=
Layer.6.Attr=0
Layer.6.Left=0
Layer.6.Top=0
<Head End>
 のように、現在使用しているユーザーレイヤーと同じ名前で余分に残る場合もありますが、同様に削除して問題ありません。

 練習7.cf3で行なうと、934 バイト (934 バイト)→839 バイト (839 バイト)になるはずです。



 戻る