3-2.グラフィクスとレイヤー


 [前のページ]   [目次に戻る]   [次のページ] 

グラフィクスの構造

はじめに

Famous Writerは、256枚のグラフィクス用レイヤー、2枚のメッセージ用レイヤー、その他、ボタンなどを表示するレイヤーを持ちます。
レイヤーの概念は、Adobe Photoshopなどのグラフィクスソフトや、Dynamic HTML(DHTML)などと変わりません。

グラフィクス用レイヤーは、画像ファイルを読み込む用途を意識して設計されております。
これには0から255の番号がついており、レイヤー0は背景レイヤーになります。
レイヤー1から255までは、数値が大きくなるほど前面に来ます。

メッセージレイヤーは、インライン行のテキストを表示します。
ボタン等を表示するレイヤーは、その性質上、Famous Writerが自動で配置します。

レイヤー構造

レイヤーの重なり順は、背景レイヤーが一番下、その上に1〜255のグラフィクス用レイヤー、その上にメッセージレイヤー、その上にボタンや選択肢などが乗ります。
図示すると、以下のようなイメージになります。

3-5-1

画面表示

画像読み込みなど、レイヤーに対する操作をした時は、それはその場で画面に反映されません。
Famous Writerの中のメモリ上に、情報が蓄えられてゆきます。
蓄えられたメモリの内容を画面に表示するには、&Draw 命令を使います。

これは、たとえば立ち絵を2枚読み込んで同時に表示するなどの用途に、お使いになることができます。

プログラムにお詳しい方は、レイヤーに対する命令はオフスクリーンに対して作用し、&Draw 命令でWindowに転送する、とお考えいただくと、すぐ理解できるかと思います(というか、そのまんま)。

重ね合わせとマスク

重ね合わせについて

レイヤーなどの全ての部品は、内部で重ね合わせて画面に表示されます。
この時、任意の部品に対し、所定のフォーマットのマスクつき画像を読み込んで使うと、その部品はアルファブレンドで重ね合わせされます。
なお、背景レイヤーのみ、その性質上、マスクは使えません。

マスクがついた画像

マスクつき画像は、左半分が実画像、右半分がグレースケールのアルファチャンネルとしてください。
&Layer.Load など、画像を読み込む際に、Famous Writerは二等分して適切に使用いたします。
アルファチャンネルは黒が透過なしで、白が完全透過です。もちろん中間調も使えます。

3-2-2
画像は『六角大王Super4(株式会社終作様)』付属のライブラリがオリジナル

Transparent

レイヤーに対しての&Layer.Transparent命令など、個別の部品に対してTransparent命令がございます。
この命令で、マスクの有効・無効を指定することができます。
マスクを無効にすると、アルファブレンドの計算がないぶん、高速に動作いたします(計算上は約1/3の実行時間)。

Transparent=1の部品はマスク有効、Transparent=0はマスク無効と扱いますが、これは画像の読み込み前に設定しておいてください。
Famous Writerの仕様といたしましては、読み込む時にTransparentを調べ、それに従って実画像とマスクを処理いたします。

グラフィクス用レイヤー

アクティブレイヤー

グラフィクス用レイヤーには、「アクティブレイヤー」という概念があります。
アクティブレイヤーとは、現在選択されているレイヤーです。

具体的に申しますと、レイヤーに対する命令は、まず、&Layer.No 命令で、レイヤー番号の0〜255を指定します。
この指定されたレイヤーがアクティブレイヤーになり、その後に書いた画像読み込みなどの命令は全て、アクティブレイヤーに対して作用します。

# レイヤー8を選択
&Layer.No = 8;

# レイヤー8にfoo.bmpというファイルを読み込まれる
&Layer.Load = foo.bmp; 

アクティブレイヤーは、一度指定すると次に指定されるまで変わりません。
Famous Writerが記憶しておりますので、&Layer.No 命令をその都度書く必要はございません。
従って、特定のレイヤーに対して、複数の命令を指定する必要がある場合は、そのまま書いて行くことができます。

&Layer.No = 1; # レイヤー1を選択
&Layer.Transparent = 0; # マスクを無効にする(レイヤー1に)
&Layer.Load = hoge.jpg; # hoge.jpgというファイルを読み込む(レイヤー1に)

&Layer.No = 2; # レイヤー2を選択
&Layer.Load = hogehoge.jpg; # hogehoge.jpgというファイルを読み込む(レイヤー2に)
&Layer.Pos = center,bottom; # 水平方向は中央揃え、垂直方向は下揃えの位置にする(レイヤー2に)

&Draw = 701; # 以上のレイヤー操作を画面に反映

レイヤーの仕様

背景レイヤーは、ウインドウの大きさ(*Windows.Size命令で指定したもの)のファイルを使うことを強く奨励します。
レイヤー1から255までは、ウインドウより小さいファイルや、それ以上のファイルも扱うことが出来ます。

メッセージレイヤー

はじめに

前に申し上げました通り、*MesBody, *MesHeadの2枚のレイヤーがあります。
*MesBodyは、インライン行が表示される領域で、*MesHeadは名前表示などに使います。
インライン命令の【】の中が、*MesHeadに表示されます。

顔グラ機能

*MesBodyには、「アイコン」として、サブ画像を記憶することができます。
これを使うことにより、いわゆる「顔グラ」の機能が簡単に使えます。

快適な動作のために

はじめに

パソコンソフトは一般的に、グラフィクス関係の処理が複雑になればなるほど、パソコンに高い性能が要求されます。
Famous Writerもなるべく注意して開発しておりますが、残念ながらその事実から逃れることは出来ません。
なるべく快適に動作させるためのヒントを、仕様を交えながらご説明いたします。

パソコンの動作原理

コンピュータは一般的に、メモリを使うほどスペックを要求いたします。
物理的なメモリ量だけでなく、データ量が増えることにより、処理能力(CPUパワー)や、マザーボードのバス速度なども必要になってきます。
また、Mac OS XやWindowsでは、物理メモリだけでは足りなくなって仮想メモリを使うようになると、ディスクアクセスのぶん動作速度が低下しやすくなります。
Mac Classic版ではヒープを使います関係上、あまりメモリを食うようだと、その領域が確保できずエラーになることがあります(ただし、その場合はFinderからFamous Writerの割り当てメモリを増やすことで解決する)。

従いまして、いわゆる「重く」ならないよう、画像の作り方を工夫したり、場合によってはゲーム自体の設計から考えていただくケースが出てくるかと思います。

ヒント

使用しているレイヤーが増えるほど、メモリを使いますので、たくさんのレイヤーを使う場合はその点に留意して下さい。
さらに、ウインドウが大きければ、そのぶんメモリを使います。

画像処理に使用するメモリは、画像の大きさにほぼ正比例いたします。
レイヤーに読み込む画像は、なるべく余白を削って小さくし、&Posで表示位置を指定するような方法がスマートかと思います。
また、単純な矩形で表示したい画像は、マスクを無効にして読み込むようにすると、アルファブレンドの計算がないぶん、高速になります。

それから、使わないレイヤーは、こまめに &Layer.Nil または &Layer.Clear して、メモリを解放してあげてください。


 [前のページ]   [目次に戻る]   [次のページ]