surfaces.txtを正しく書こう
今更surfaces.txtの書き方など、私より絵を描かれるみなさんの方が詳しいと思いますが、時々エラーログを吐くsurfaces.txtに遭遇することがあります。そこで今回は主にsurfaces.txtを正しく書くためのチェック方法について取り上げてみたいと思います。
なぜ正しく書く必要があるのか
間違った書き方をしても、SSPは頑張って描画してくれます。でも、それは本当に自分が意図した通りの動きをしているでしょうか。アニメーションをさせようとして、「なかなか思い通りに動かないなー」って悩んだ経験はありませんか?
それはもしかしたら、記述法が間違っているのかもしれません。また、正しくないsurfaces.txtではSSP以外のベースウェアでは表示すらされないかもしれません。効率的に記述ミスを発見して自分の思い通りの動きをさせるために、異なるベースウェア間でも同じ動作をすることを保証するために、SSPをあまり困らせないように、自作のシェルにエラーが無いかどうか、以下に紹介する方法で一度チェックしてみましょう。
surfaces.txtのデバッグ方法
まず自作のゴーストを立たせます。シェル作者さんは自分のシェルを使ったゴーストを立たせましょう。私は『ポストと狛犬』を説明用に使わせていただきます。
まずオーナードローメニューから、「機能」>「開発用パレット」を選択します。
「エラーログを表示」を選択します。
NoticeやErrorといったものが表示されました。今表示されているものがすべて消えることを最終目標とします。
まずErrorから。"[SERIKO]Surface=7 画像が存在しません。"とあります。 『ポストと狛犬』のshellフォルダの中にはSurface=7にあたる画像は見当たりません。しかしsurfaces.txtには以下の指定が記述されています。
surface7
{
collision0,10,50,200,90,Head
collision1,69,138,85,163,LeftEye
collision2,116,137,132,162,RightEye
collision3,18,117,187,242,Face
point.kinoko.centerx,145
point.kinoko.centery,30
}
これはSurface=7にあたる画像を入れ忘れた可能性がありますね。このままでは\s[7]としても描画されません。surface0007.pngを作成してshellフォルダに入れる、もしくはGHOST側で\s[7]を使わないのであれば、上記の記述を削除することでこのエラーは消えます。
次にNotice。"[SERIKO]Surface=** どこからも使われていません。"とあります。shellフォルダには確かにsurface00**.pngが入っていますが、surfaces.txtにはそれに関する記述がありません。つまり、このサーフィスは使われていない可能性があります。起動時にSSPが読み込んでしまう分、起動が遅くなってしまうので、このサーフィス画像は削除したほうが賢明です。
「いやいや、そのサーフィス使うんだよ!」っていう場合。surface0011.pngはそもそも狛犬の刮目サーフィスで実際使われていますし、surface0021.pngからsurface0023.pngまでは「らぼ」メニューの「ちんぼつ」で使われています。
*ちんぼつ
:(0)(21)(22)(23):何、してるんだ。
:沈没。
:な……
:(23)(22)(21)(0)どうかな。
:どうかな、じゃなくてだな……。
当たり判定もアニメーションも画像の合成もしていないのでsurfaces.txtには何も書かれていませんが、実際にはSSPが画像のファイル名から当該番号のサーフィス定義を補っていると考えられます。でも、実際に使われていないファイルと区別がつかないのでNoticeが出ています。画像を使用する旨をきちんと定義することでこのNoticeを消すことができます。
surface11
{
}
ただ、これをやると偽林檎で死ぬらしいです。(参考:殊海夕音/やってはいけない - 駄でべろぱの小ネタWiki)
ダミーの記述を入れておけば問題ないでしょう。
surface11
{
element0,overlay,surface0011.png,0,0
}
他の3つのNoticeも同様の記述で消すことができます。
まとめ
いかがでしたでしょうか。これでエラーの無い真っ当なシェルをリリースすることができます。中にはSERIKO/1.xとSERIKO/2.0のアニメーションの記述が混在していてエラーが出る場合もあるでしょう。SERIKO/2.0については以下のサイトが参考になります。
surfaces.txt付きのフリーシェルを作成する場合や、他のGHOSTの追加シェルを作る際にもぜひエラーなどがないようチェックしておきましょう。
ここまでくるとsurfacetable.txtの書き方に関するTipsなども欲しくなりますが、今回はここまでとさせていただきます。
宣伝
このエントリは以下の企画用に書き上げたものです。
特に技術的なテーマに限定しませんので、伺かに関して何か書いてみたい方は、お気軽にご応募下さい。