#author("2023-11-15T17:39:30+09:00","default:post","post")
#author("2023-11-16T06:33:00+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に書き込む情報なのだが、座標を一つ一つ入力しなければならなかったため、これがまた非常に手間がかかるものだった。~
従来は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

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

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

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

なお、このままシェルにぶちこんだ場合、SSPが「Surface10が存在しないよ!」とエラーを言ってくる。~
これは伺かが伝統的に0番と10番を最初のデフォルト立ち絵として呼び出すためなので、surface10を定義するか、surface10.pngという1ドットの画像を用意すると出てこなくなる。いずれにせよ致命的なエラーではないので安心しよう。~
ざっくりな解説
-&color(#ff0000){descriptブレス};~
ここでversion,1を指定しておかないと、以下でふんだんに使っている新仕様が機能しない。必須。
-&color(#ff0000){element*,描画メソッド,ファイル名,X,Y};~
画像とその上から重ねる画像の指定。
-&color(#ff0000){collisionex*,当たり判定名,region,ファイル名,R,G,B};~
画像のどの色を当たり判定にするかの指定。

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


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


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