簡単なシェルの揚げ方

記述日:2023年11月

シェルの作成は里々の領分ではないので、かなり大雑把に説明。




着せ替えとかアニメーションとかは専門の解説サイトを読もう。
まずはSSP公式仕様書。

シェルの仕様書は先人の努力の積み重ねもあって高機能だが、そのぶん複雑にもなっている。
新機能もどんどん追加されているので、マニュアルがまだ追い付いていないことも多い。
そこで、現在主流SSPを前提とした、極力手間を省いたシンプルなシェルの作り方を紹介。

シェル画像の用意

shell\masterフォルダ内に画像を作る。
過去の仕様も使えるので色々こんがらがるが、今は新機能によってpnaや背景を原色にするといった事を気にする必要がなくなった

ベース画像を描こう

画像形式はPNG32(32bit-PNG、アルファチャンネル透明度つきPNG)で保存しよう。
ファイル名は自分で覚えやすいもので。

surface_base.png

※ここではあくまで例としてAIさんに描いてもらいました。

差分画像を作ろう

表情などの差分はできるだけ透明部分(元絵の外縁部)を含めないように切り取るのがポイント。
解像度も変更しないのが吉。

surface_parts.png

同じく形式はPNG32(32bit-PNG、アルファチャンネル透明度つきPNG)で保存しよう。
こちらもファイル名は自分で覚えやすいもので。

当たり判定の画像を作ろう

なにそれ!?…と思った人もいると思うが、これを使うとかなり手間を省ける。
(当たり判定がいらない場合は下記はスルーして欲しい)

ゴーストの当たり判定については触った事があると思う。
さて、従来のやり方では、surfaces.txtに書き込む情報なのだが、座標を一つ一つ入力しなければならなかったため、これがまた非常に手間がかかるものだった。
しかし、現在ではこれを画像で代用できるようになり、絵を描けるならこの手間を省略できるようになった
具体的には、2値ペンなどを使い、こういうものを作る。

surface_region.png

画像形式はPNG。特に気にせずPNG32でよい。
ただし、塗った色情報(RGB)はきちんとメモに控えておくこと!
この画像の例では

作るときは下図のようなイメージで。
使っているお絵描きツールで上から新規レイヤーで塗っていくとやりやすい。

surface_region2.png

descript.txtを作る

ここからはテキスト編集作業。
メモ帳でもいいけど、なんかよさげなテキストエディタを選ぶと捗るはず。
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を作る

これさえ終わればシェルの最低限の体裁は整う。頑張って。

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)が完成!

なお、このままシェルにぶちこんだ場合、SSPが「Surface10が存在しないよ!」とエラーを言ってくる。
これは伺かが伝統的に0番と10番を最初のデフォルト立ち絵として呼び出すためなので、surface10を定義するか、surface10.pngという1ドットの画像を用意すると出てこなくなる。いずれにせよ致命的なエラーではないので安心しよう。

もっと記述量を減らしたい!

いちいち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-2」で0から2まで全部にベース画像と当たり判定を設定し、
「surface.append番号」で1と2のelement1にそれぞれ異なる差分画像を重ねるというやり方。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS