- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-11-15T17:22:57+09:00","default:post","post")
#author("2023-11-15T17:39:30+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)
#ref(surface_base.png);
※ここではあくまで例としてAIさんに描いてもらいました。
**差分画像を作ろう [#e8c92da6]
表情などの差分はできるだけ透明部分(元絵の外縁部)を含めないように切り取るのがポイント。~
解像度も変更しないのが吉。
#ref(surface_parts.png)
#ref(surface_parts.png);
同じく形式は''PNG32(32bit-PNG、アルファチャンネル透明度つきPNG)''で保存しよう。~
こちらもファイル名は自分で覚えやすいもので。~
**当たり判定の画像を作ろう [#e2b6633c]
&color(#FF0000){なにそれ!?};…と思った人もいると思うが、これを使うとかなり手間を省ける。~
(当たり判定がいらない場合は下記はスルーして欲しい)~
ゴーストの当たり判定については触った事があると思う。~
さて、従来のやり方では、surfaces.txtに書き込む情報なのだが、座標を一つ一つ入力しなければならなかったため、これがまた非常に手間がかかるものだった。~
しかし、現在ではこれを画像で代用できるようになり、絵を描けるなら''この手間を省略できるようになった''。~
具体的には、使っているお絵描きツールで上に新規レイヤーを作成し、2値ペンなどを使い、こういうものを作る。
#ref(surface_region.png)
具体的には、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
という色の情報をメモしておこう。~
作るときは下図のようなイメージで。~
使っているお絵描きツールで上から新規レイヤーで塗っていくとやりやすい。~
#ref(surface_region2.png);
*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)が完成!
こんな感じで書いていけばサーフェス番号(0)と(1)と(2)が完成!~
なお、このままシェルにぶちこんだ場合、SSPが「Surface10が存在しないよ!」とエラーを言ってくる。~
これは伺かが伝統的に0番と10番を最初のデフォルト立ち絵として呼び出すためなので、surface10を定義するか、surface10.pngという1ドットの画像を用意すると出てこなくなる。いずれにせよ致命的なエラーではないので安心しよう。~
**もっと記述量を減らしたい! [#w507b105]
サーフェスの数が増えてきて、いちいちcollisionexの行をコピペしまくるのが面倒だと感じたなら、同じ記述は一括化・省略することもできる。
いちいち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まで全部にベース画像と当たり判定を設定し、~
「surface0-2」で0から2まで全部にベース画像と当たり判定を設定し、~
「surface.append番号」で1と2のelement1にそれぞれ異なる差分画像を重ねるというやり方。