基礎編(その三)

ページ名:tutorial_basis_3

デフォルト値


さて、説明の前にまた「冒険者の宿.jpy1」(行番号つき)を再掲しておきますね。


 1: [init]
 2: backwidth=632
 3: backheight=420
 4: fileName=MapOfWirth.bmp
 5: 
 6: [冒険者の宿]
 7: width=400
 8: height=260
 9: fileName=AdventurersInn.bmp
10: position=116,15
11: transparent=0

前回のまとめでも示しましたが、冒険者の宿.jpy1 では七種類のパラメータが使われていました。


  • backwidth(背景の幅)
  • backheight(背景の高さ)
  • fileName(表示する画像のファイル名)
  • width(画像の幅)
  • height(画像の高さ)
  • position(画像の表示位置)
  • transparent(マスク機能の有無)

エフェクトブースターにはこのほかにもパラメータがあり、JPY1 用のパラメータは全部で 34 個あります( CardWirth のヘルプフォルダにある editor128.chm で見ることが出来ます)。
つまり、[init]セクションにせよ[冒険者の宿]セクションにせよ、指定されていないパラメータの方が多いわけですが、これらの指定されなかったパラメータについては、それぞれパラメータごとに定められたデフォルト値(既定値)が適用されます。


この辺がすこし微妙なところなのですが、必ずしも「パラメータを指定しなければ、その設定は無効」ということでもないんですね。
まあ、デフォルト値が無効を意味する値になっていればいいのですが、そうではなく、中には「わざわざ無効のパラメータを指定しない限り、その機能が勝手に有効になってしまう」という、地雷のような設定のパラメータが存在したり・・・するんですよ、これが実際に。


それが transparent です。


transparent の罠


前述したとおり、transparent はマスク機能を有効にするパラメータですが、非常に奇妙なデフォルト設定を持っています。CardWirth の配布パッケージに含まれる editor128.chm の説明によりますと・・・


transparent="半角数値"
 [init]背景画像にパーツを貼り付ける時、もしくはカードワースの画面そのものに一時描画する時に、貼り付ける画像で透明色を使うかを設定します。ただし、[init]でのパラメータは、一時描画の時だけ意味があります。
0.透明色を使わない([init]で省略時の値)
1.座標(0.0)の色を透明色にする([パーツ名]で省略時の値)


意味分かりますか?
init セクション(背景)においては transparent=0(マスク無効)ですが、その他のセクション(セルないしパーツ)においては transparent=1(マスク有効)がデフォルトなんですって!
誰だ、こんな意味不明な仕様にしたやつは!


などと文句をいっても今更始まりません。エフェクトブースターが実装されたのは CardWirth エンジン ver 1.28 、2003 年のことで、それ以降この奇妙な設定に基づいて山ほどシナリオが作られており、影響を考えれば今更変えるわけにも行かないでしょう。
これはもう「こういうもの」として飲み込むほかありません。


念のため、この奇妙な仕様が事実であることを確認しておきましょうか。
先に作った「冒険者の宿.jpy1」から transparent=0 の行を削除し、再度シナリオを実行してみましょう。こんな画面になるはずです。



なんかシロアリに食われたような感じになってますよね。これはマスク機能が有効になったため、冒険者の宿の画像(AdventurersInn.bmp)の左上1ピクセルと同じ色のドットは透明色とみなされ、下の地図が部分的に透けてしまっているからです。
ぜひみなさんも、実際に試して確認してみてください。


この transparent については見落としがちな事項ですので、覚えておいてください。
改めて書きますが transparent パラメータはデフォルト値が奇妙なために、わざわざ transparent=0 と指定しない限り透明色が有効になってしまいます。


ただ不幸中の幸いというか、こんな奇妙なデフォルト値を持ったパラメータは、そう多くはありません。
また微妙な書き方をしていますが・・・transparent しかありません!と断言できないのが悲しいところで、実は他にもひとつだけあります。
が、それはエフェクトブースターでアニメーションを作る際に問題になる話なので、その際にまた取り上げることにしましょう。ここではtransparent のデフォルト値には要注意とだけ覚えておいてください。


その他のデフォルト値


折角ですから、他のパラメータについてもデフォルト値を確認してみましょう。


backwidth
fileName などで画像を指定している場合はオリジナル画像の幅がデフォルト値となります。画像を指定しない場合は632(CardWirthの画面サイズ)となります。
backheight
fileName などで画像を指定している場合はオリジナル画像の幅がデフォルト値となります。画像をして指定いない場合は420(CardWirthの画面サイズ)となります。
fileName
デフォルト値はありません。
width
fileName などで画像を指定している場合はオリジナル画像の幅がデフォルト値となります。指定していない場合は 0 、つまり何も表示されません。
height
fileName などで画像を指定している場合はオリジナル画像の幅がデフォルト値となります。指定していない場合は 0 、つまり何も表示されません。
position
0,0(画面左上)がデフォルト値です。
transparent
本文の繰り返しになりますが、[init]セクションでは0(マスク無効)、その他のセクションでは1(マスク有効)がデフォルト値です。

「画像を指定していない場合」について、補足説明をしておきます。
これまで説明していませんでしたが color および backcolor というパラメータがあります。これは画像ではなくセル(あるいは背景)を特定の色の一色で表示するためのもので、WirthBuilder におけるカラーセルと似た機能を持っています。
具体的には、エフェクトブースターで


[カラーセル]
width=400
height=260
position=116,15
color=$ffffff
transparent=0

と指定すると、冒険者の宿サイズ&位置にただの白い色が表示されるんですね。色の指定についてはいずれまた扱うとして、ここでは $ffffff という奇妙な記号が白を意味している、ということだけ頭の片隅に置いといていただければ結構です。
そしてこの場合、画像ファイルを指定することなくセルを定義しているわけですが、この場合は width そして height とも、デフォルト値が 0 として扱われてしまうということであり、つまり幅や高さが 0 の図形というのはまったく表示されないということです。
現実にこうした指定をする機会は多くないと思いますが、念のため。


ちなみに backwidth / backheight がそうであるように backcolor は [init] 専用のパラメータです。パーツの色を指定するときは color を使いますが、[init] の場合だけは backcolor で指定します。


演習問題


以下のそれぞれについて、実際に行って表示を確認してみましょう。


  • 先の「冒険者の宿.jpy1」において、冒険者の宿の画像サイズを示すパラメータ( width と height )の行を削除し、画像サイズがそのまま表示されることを確認しましょう。
  • 冒険者の宿の表示位置を示すパラメータ( position )の行を削除し、画像がどの位置に表示されるか確認しましょう。
  • [init] セクションに transparent=1 を追加し、表示を確認しましょう。その後、値を 0 にし(transparent=0)、再度表示を確認しましょう。

まとめとおさらい


今回のポイントは以下の通りです。


  • 指定されなかったパラメータはデフォルト値を指定されたものとして動作する
  • transparent パラメータは奇妙なデフォルト値を持っているので要注意

今回、新たに登場したパラメータは以下の通りです。


パラメータ名機能
backcolor(背景専用)背景の色を指定する(書式$rrggbb)
color(パーツ専用)パーツの色を指定する(書式$rrggbb)

戻る:基礎編(その二)

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する

NG表示方式

NGID一覧