†このページでは、サーフェスの変化のある部分だけを切り抜いて、ベースサーフェスに重ねる方法を紹介します。今後、変化のある部分だけの切り抜きを「差分」と呼びます。シェルのサーフェスすべてを、表情など変わる部分以外の絵もふくめて用意すると、すごい容量になります。それにPNAファイルまでついてくるとなると、ファイル数も相当なものになります。容量が大きければ、ユーザさんのDLの時間やHDDの圧迫にも関わってくるので、軽くしましょう。Manを用意しました。このゴーストを使って説明しています。Manのマスターシェルを見てください(shell/master)。普通の差分のないタイプのシェルです。このシェルであれば、顔部分しか変わっていないので、他は余分ということが分かります。切り抜いてしまいましょう。&attachref(./i_sb01.png);変わっているのはグリーンの部分だけなので、surface01.pngとsurface02.pngはこのようになりました。顔部分だけになってしまったので、surface01.pnaとsurface02.pnaのPNAファイルは不要です。今の状態でサーフェスを適用すると、差分失敗のシェル(shell/difference)と同じように、生首だけ表示されてしまいます。かっこわるいので、surfaces.txtを書き換えましょう。surface1を例にとると、surface1{collision0,9,153,141,182,Change}と現在書かれています。これに「element」を記述します。elementは差分をどうやって配置するかといった指示をします。この場合であれば、surface1{element0,overlay,surface00.png,0,0element1,overlay,surface01.png,20,20collision0,9,153,141,182,Change}となります。以下にelementの記述を一行づつ解説します。†この指示を文章として読むと「0のエレメントにsurface00.pngをx0・y0の位置に重ねます」です。Manはsurface00.pngがすべてのサーフェスのベースですので、element0にsurface00.pngを指定します。位置指定は、surface0と位置を変えなくていいので、0,0です。†これもelement0とほぼ同じ指示です。一つだけ違うのは、位置指定がされていることです。これをelement0と同じように0,0に指定してしまうと、顔がものすごくズレます。surface00.pngのx0・y0に重ねる指定になっているからです。この位置を指定するには、元の切り出し画像の左上隅からx・yいくつのところから切り出したか、その値を入れればいいわけです。Manであれば、&attachref(./i_sb02.gif);顔部分の左横と上の暗いピクセル数が、surface01.pngの位置指定の値です。この指定が面倒くさければ、右の例のように、左上隅x0・y0から目的のところまで切ってしまうと楽です。surface2も同じように記述を加えてください。†この状態で差分としてはぼぼできているのですが、たぶん差分成功/pna処理失敗のシェル(shell/almost)を適用したときのように、表情が変わると目の上のフチにわずかなジャギーが出ているはずです。これは個別に差分用のPNAファイルを用意してやっても消せますが、ファイルを増やさずに対処できます。はみ出している部分を透過色で塗りつぶしてしまいましょう。&attachref(./i_sb03.png);これだけです。最終的に差分成功のシェル(shell/better)と同じになっていれば成功です。