簡単なシェルの揚げ方

シェルの作成は里々の領分ではないので、ここでは自力で絵を描ける・編集できる人向けのサクッと作る手順を紹介。
参考情報/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)はきちんとメモに控えておくこと!
この画像の例では

RGB
頭(Head)が赤25500
顔(Face)が緑02550
胸(Bust)が紫2550255

という色の情報をメモしておこう。

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

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番を最初のデフォルト立ち絵として呼び出すため(メインが0、相方が10)なので、10番を定義すれば解消するし、surface10.pngという名前の画像ファイルを用意する事でも解決する。
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
}

なお、一つのサーフェス番号に対してsurfaceブレスは一度しか使えず、surface.appendブレスは何度でも使える仕様。
アニメーションの定義の時も省力化に活用できるので覚えておくと便利。

TIPS

差分の組み合わせは何を選べばいい?という話

シェルの差分の組み合わせの方法は、大きく分類すると2パターンある。
ここでは上とは別のAI氏に描いてもらった絵を加工したものを例に解説。

パーツ分割タイプ

こちらはベースをのっぺらぼうにしておいて、上に目・口といった差分パーツを重ねていく方法。

ex_parts1.png

まるごとタイプ

こちらは差分画像をパーツ周辺で切り取る、もしくはサーフェス毎にまるごと一枚絵にする方法。

ex_parts2.png

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