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