#author("2023-11-15T17:22:57+09:00","default:post","post") *簡単なシェルの揚げ方 [#t8d16a3e] 記述日:2023年11月 シェルの作成は里々の領分ではないので、かなり大雑把に説明。 ---- #contents ---- ~ 着せ替えとかアニメーションとかは専門の解説サイトを読もう。~ まずはSSP公式仕様書。 -[[UKADOC - descript.txt>http://ssp.shillest.net/ukadoc/manual/descript_shell.html]] -[[UKADOC - surfaces.txt>http://ssp.shillest.net/ukadoc/manual/descript_shell_surfaces.html]] -[[UKADOC - シェルの作り方>http://ssp.shillest.net/ukadoc/manual/dev_shell.html]] シェルの仕様書は先人の努力の積み重ねもあって高機能だが、そのぶん複雑にもなっている。~ 新機能もどんどん追加されているので、マニュアルがまだ追い付いていないことも多い。~ そこで、現在主流SSPを前提とした、極力手間を省いたシンプルなシェルの作り方を紹介。 *シェル画像の用意 [#gd1ea871] shell\masterフォルダ内に画像を作る。~ 過去の仕様も使えるので色々こんがらがるが、''今は新機能によってpnaや背景を原色にするといった事を気にする必要がなくなった''。~ **ベース画像を描こう [#c84ba1fd] 画像形式は''PNG32(32bit-PNG、アルファチャンネル透明度つきPNG)''で保存しよう。~ ファイル名は自分で覚えやすいもので。~ #ref(surface_base.png) ※ここではあくまで例としてAIさんに描いてもらいました。 **差分画像を作ろう [#e8c92da6] 表情などの差分はできるだけ透明部分(元絵の外縁部)を含めないように切り取るのがポイント。~ 解像度も変更しないのが吉。 #ref(surface_parts.png) 同じく形式は''PNG32(32bit-PNG、アルファチャンネル透明度つきPNG)''で保存しよう。~ こちらもファイル名は自分で覚えやすいもので。~ **当たり判定の画像を作ろう [#e2b6633c] &color(#FF0000){なにそれ!?};…と思った人もいると思うが、これを使うとかなり手間を省ける。~ (当たり判定がいらない場合は下記はスルーして欲しい)~ ゴーストの当たり判定については触った事があると思う。~ さて、従来のやり方では、surfaces.txtに書き込む情報なのだが、座標を一つ一つ入力しなければならなかったため、これがまた非常に手間がかかるものだった。~ しかし、現在ではこれを画像で代用できるようになり、絵を描けるなら''この手間を省略できるようになった''。~ 具体的には、使っているお絵描きツールで上に新規レイヤーを作成し、2値ペンなどを使い、こういうものを作る。 #ref(surface_region.png) 画像形式はPNG。特に気にせずPNG32でよい。~ ただし、塗った色情報(RGB)はきちんとメモに控えておくこと!~ この画像の例では -頭(Head)が赤・R=255 G=0 B=0 -顔(Face)が緑・R=0 G=255 B=0 -胸(Bust)が紫・R=255 G=0 B=255 という色の情報をメモしておこう。~ *descript.txtを作る [#fc4afd70] ここからはテキスト編集作業。~ メモ帳でもいいけど、なんかよさげなテキストエディタを選ぶと捗るはず。~ descript.txtはゴーストの辞書本体側(ghost)にも同じ名前のファイルがあるので、混同しないように気を付けて!~ こっちはシェル側のdescript.txt。 charset,UTF-8 craftmanw,作者名 type,shell name,シェルの名前 seriko.use_self_alpha,1 どれも重要だが、「seriko.use_self_alpha,1」に注目。~ これを書いておかないと用意したPNGの透明度が適用されない。~ また、下のsurfaces.txtに共通して、「charset」はShift_JISかUTF-8の文字コードを指定しよう。~ (今のwindowsで新規作成→テキストドキュメントで作った場合、文字コードは''UTF-8''になっているはず)~ これが違うと全角文字が化けるので、逆に化けていたなら文字コードが間違っているとも言える。~ *surfaces.txtを作る [#j1fe34ad] これさえ終わればシェルの最低限の体裁は整う。頑張って。 charset,UTF-8 descript { version,1 } surface0 { element0,base,ベース画像.png,0,0 collisionex0,Head,region,当たり判定画像.png,255,0,0 collisionex1,Face,region,当たり判定画像.png,0,255,0 collisionex2,Bust,region,当たり判定画像.png,255,0,255 } surface1 { element0,base,ベース画像.png,0,0 element1,overlayfast,差分画像その1.png,0,0 collisionex0,Head,region,当たり判定画像.png,255,0,0 collisionex1,Face,region,当たり判定画像.png,0,255,0 collisionex2,Bust,region,当たり判定画像.png,255,0,255 } surface2 { element0,base,ベース画像.png,0,0 element1,overlayfast,差分画像その2.png,0,0 collisionex0,Head,region,当たり判定画像.png,255,0,0 collisionex1,Face,region,当たり判定画像.png,0,255,0 collisionex2,Bust,region,当たり判定画像.png,255,0,255 } こんな感じで書いていけばサーフェス番号(0)と(1)と(2)が完成! **もっと記述量を減らしたい! [#w507b105] サーフェスの数が増えてきて、いちいちcollisionexの行をコピペしまくるのが面倒だと感じたなら、同じ記述は一括化・省略することもできる。 charset,UTF-8 descript { version,1 } surface0-2 { element0,base,ベース画像.png,0,0 collisionex0,Head,region,当たり判定画像.png,255,0,0 collisionex1,Face,region,当たり判定画像.png,0,255,0 collisionex2,Bust,region,当たり判定画像.png,255,0,255 } surface.append1 { element1,overlayfast,差分画像その1.png,0,0 } surface.append2 { element1,overlayfast,差分画像その2.png,0,0 } このように書き換えられる。~ 「surface0-3」で0から2まで全部にベース画像と当たり判定を設定し、~ 「surface.append番号」で1と2のelement1にそれぞれ異なる差分画像を重ねるというやり方。