━━━━ 伺か ━━━━


実装編 制作概要編 SHELL編 GHOST(YAYA)編 TIPS


SHELL編



●はじめに

 ここではシェル制作に絞った説明をしていきますが、概論でも言った通り詳細は他のサイトさんを参考にしてください。w
概論でも紹介したThe Giftさんのところと、 こちらの非公式シェル仕様書を見ていただければ 殆ど解かると思います。
重要な部分と簡単に作るためのポイントをまじえながら、概論でDLしてもらったゴースト「紺野ややめ」を改造していく手順で 説明しておこうと思います。

 その為にまずはghostフォルダ内のややめのデータが入ったフォルダ「konnoyayame」をコピーし、適当にどこか(ディスクトップなど)に一時的に貼り付けて、 好きな名前(作りたいゴーストの名前など)にリネームしてから「konnoyayame」フォルダと同じ階層(ghostフォルダ内)に戻してください。
この時、概論でも触れていますがフォルダ名は半角英数のみにしておきましょう。

 ここでは説明しやすいようにリネームしたフォルダ名を「myghost」として今後説明していきますので、自分のつけた名前と置き換えて読んで下さい。
そしてもう1つ、「伺か」では色んな部分の設定でもこの代名詞が使われていますが、説明の為にもメインキャラ側を「さくら」、 サブキャラ側を「ケロ」と呼んでいきます。
(言わずもがな「C.Cさくら」からついた名前ですねw ケロ側は他サイトでは「うにゅう」と呼ばれる場合もあります。)

●必要なファイルは?

 さて、myghost>shell>masterとフォルダを開いていくと中にシェルの構成ファイルがありますが、この中で最低限必要なファイルというのは 実は3つしかありません。
シェル全体の定義ファイルになる「descript.txt」と、さくら側のメインサーフェイス(大抵は素立ち姿)の「surface0000.png」、 そしてケロ側のメインサーフェイスになる「surface0010.png」の3つのみです。
その他のファイルは無ければ無いで構いません、が、気力があれば一段落ついたら作ってクウォリティーを上げていきましょう。w

 と言う事で・・・、下手に残しておくと挙動が怪しくなると困るのでこの3つ以外のファイルは削除してしまってください。w
もし一度でも紺野ややめを伺かで起動してからkonnoyayameフォルダをコピーした方は「profile」フォルダもあると思うので、それも削除しておいて下さい。

●オリジナルと言えばオリジナルシェル!!

 オリジナルと言えばやっぱり、見た目が変わるのが一番自分で作ったゴースト感がわきますよね、ってことで先にサーフェイスから作ってしまいましょう。

まずはメインキャラとなるさくら側のsurface0000から作ることになりますが、サーフェイスを作る上での注意点とポイントを上げておきます。

・使用可能なファイルの形式はPNGファイル(と一応BMPファイルが可能?)、ファイルサイズ、画像サイズには特に決まりはありません。 (ファイルサイズの面などPNGの方が一般的に使用されている為、今後の仕様変更も考えPNGファイルでの出力をお奨めします。)

・名前は「surface【ID】.png」です。IDは4桁に拘る必要は無くID.10であれば「surface10.png」でも「surface010.png」でも構いませんが、 ファイル名ソート管理を安易にする為に初めから適当な桁数にしておくと便利です。現状サーフェイスの登録は最大8192枚までの為、 当サイトでは4桁で説明しています。

・上でも書いてありますがsurface0000はいわゆるデフォルト姿になるので、伺かでの起動時には一番目にする時間が長いサーフェイスです。 設定で色々変更することは可能ですが、一般的には普通に立っている絵が多いです。

・後のdescript.txtの項目でも触れますが、伺かでは表示中のキャラクタをドラッグする事で任意の位置にキャラの表示場所を移動できますが、 上下左右自由に動かせる設定と左右にしか動かせない設定がdescript内ででき、これにより足下や腰下を描いて無いサーフェイスでも成り立ちます。

・サーフェイスの左上(座標0,0)の部分の色を透過色として自動認識します。よくあるミスとしては背景を黒(RGB0,0,0)にして作ったら、 まつ毛や目の輪郭にも黒(RGB0,0,0)を使ってて抜けちゃったなんて事がありますので背景は100%使わないであろう色に設定しておきましょう。

・起動時の立ち位置を意識してつくろう。これはこの後つくるケロ側のサーフェイスとの関係になりますが、真正面で立っているのもOKですが 基本はさくら側とケロ側との対話する事になるので自分の中でさくらは右、ケロは左など立ち位置を決めて若干向き合う方向に体を斜めを向けた サーフェイスを描くと自然になります。これに関しては私の主観的な物が入ってるのでお好みで。

・もう1つ、これも後で触れますがパラパラ漫画のようにサーフェイスの上にパーツ的な小さな画像をオーバーレイすることでアニメーションさせる事が 可能です、これは主に生きてる感を出すために目パチをさせたり、アクション時のエフェクト等を表現するのに使いますが、後々、目パチ用のパーツを 作るため、レイヤー別けが可能なペイントツールを使用している場合は顔・目・髪の毛は別レイヤーに別けておくことをお奨めします。


とまぁ、注意点はこのくらいですので頑張ってかわいい(カッコイイ?)キャラを描きあげて下さい。w

ちなみに、ちょっとした補足を・・・
 上で座標0,0の色を透過色として認識すると書きましたが、この場合RGB値でこの色と完全に一致した色しか透過しません。なので当然キャラクターの 輪郭にジャギー(ギザギザ)が発生してしまいます。折角時間をかけて描いたのにちょっと悲しいですよね?
伺かではそれを回避する方法もちゃんと用意されています。

 作ったサーフェイス画像と同じ画像サイズのグレースケール(白黒)pngファイルをもう1枚用意し、透過させたい場所を黒(RGB0,0,0)、残したい部分を白(RGB255,255,255) で塗った画像を作ります、いわゆるアルファ画像と同じで色が濃いほど透過することになる画像で、サーフェイスの輪郭部などの1〜2ピクセルを灰色に ぼかすことでジャギーが発生しないサーフェイスを作ることができます。
 フォトショップを使っている方はアンチエイリアス有りで背景部分を選択して真っ白の画像の上に黒で塗りつぶせば輪郭部に勝手にグラデーションが発生 するのでそれだけで作れてしまいます。

 作ったグレースケールpngファイルのファイル名をsurface****(対応したサーフェイスと同じ番号(ID)).pnaと「png」ではなく「pna」へ拡張子を変更してshell>master フォルダ内に一緒に保存しておきます。(制作概論編、ファイル構造図を参照)
これでベースウェアはサーフェイスファイルを読込む時に同時に同じサーフェイスIDのpnaファイルも自動で読込みます。
pnaファイルを用意する場合は座標0,0の色を透過するという処理は無視される為、サーフェイスの背景色は何色でもOKです。(この場合馴染む背景色は大抵黒かな・・・)

 surface0000.pngが完成したらsurface0010.pngも作りましょう。こちらも注意点などはsurface0000と変りません。
一応参考に(殆どの部分が私の手書きじゃないですけど・・・)下の物が私が個人的に作成してる、うたわれるものゴーストのsurface0と10です。
(ゲーム画像流用画像なので加工サンプル品でご勘弁を・・・)
サンプル画像
あと・・・これをやると「伺か」の存在意義に反する!!と言われそうですが裏技(でもないけどw)を1つ。
 どうしても「このゴーストはメインキャラ以外要らないんだっ!!」って方はsurface0010.pngを1色ベタ塗りで用意すると完全に透過処理されるので 伺か上はそこにサーフェイスが存在しているけどユーザーからは見ることも弄ることも出来ないキャラクターが作ることができます。
 これを利用して、画面上からどこかへ出かけたなどを表現することができます。
ただし、一応伺か上は画面上に存在していることになっているのでghost側で喋らせると何もないところに吹出しが出て喋ってしまいますが。w

サーフェイスの説明をしているので、ついでに。
 後々、この基本サーフェイスの2枚以外にもサーフェイスを用意する時のポイントですが、サーフェイスIDは0と10以外は何番にどんな絵を用意しても 全く構いません、が、伝統的なサーフェイスIDというのが用意されています。詳しくは上記の非公式シェル仕様書のサイトを読んでもらいたいのですが、 これは、「伺か」対応外部ソフトがこの処理をしたら表示中のゴーストのサーフェイスを何番に変更などの処理をベースウェアに送ってくる為、 それに自然に対応させる為です。
(例えば伺か対応音楽プレイヤーソフトで曲再生始めに表示中ゴーストのサーフェイスをさくら側ID.25(歌)に変更など)

 それと、さくら側はさくら側で、ケロ側はケロ側で全てのサーフェイスの画像サイズと画像内での体の位置を揃えておくと後々、 設定ファイルを作る時に設定を最小限にすます事ができます。まぁこれは設定でどうにでもできるので適当に聞いておいてください。

さてさて、surface0000.pngとsurface0010.pngが完成したらとりあえずサーフェイス作りは一度中断して、次にdescript.txtの説明に入ります。

●最重要定義ファイルdescript

 まずはdescript.txtをメモ帳でいいので開いて見ましょう。
なにやら意味不明なアルファベットが並んでいて一目見て頭痛くなりそうですねっ!なので名前を付けて保存を選び、別の名前を付けて保存してから 新規作成を選び、下記の内容をコピペして、descript.txtの名前で上書き保存してください。
charset,Shift_JIS


//作者情報
craftman,yasi
craftmanw,yasi

//シェル情報
name,Master
type,shell

//バルーン設定
sakura.balloon.alignment,none
kero.balloon.alignment,none

//シェル設定
sakura.seriko.alignmenttodesktop,free
kero.seriko.alignmenttodesktop,free
 上記の内容を説明していきますが、その前にdescript.txtの文法を説明しておきます。後々非公式シェル仕様書を参考に自分のサーフェイスに合わせて 設定を追記する場合の参考にしてください。
基本的に各項目の記載順番は決まっていません、1行1項目であればどの項目を後に書こうが先に書こうが構いません。
文法としては【項目】,【値・内容】で、項目と内容の間を「,(カンマ)」で区切ります。
 おまけ説明として、上記内容に「//」の後に説明が入ってる行がありますが、この「//」はコメントアウトと呼ばれ、その行の//以降の内容は プログラム上無視されます。これを利用して、所々に内容の説明を入れておくと後々メンテナンスする時に解りやすくなります。

では上記内容の説明をしていきます。

・charsetはこのdescript内で使用されている文字符号化スキームの指定です。通常はShift_JISで構いません。
 一応省略可能で省略した場合はShift_JISに設定されるようです。記載する場合はdescriptでは唯一記載する順番が決まっていて一番上に記載します。
・craftmanとcraftmanwはシェル制作者の名前を明記します。craftmanは半角英数のみ、craftmanwは全角文字も使用できます。
 どちらか一方を記載する事が必須で、両方記載しても構いません。yasiの部分を自分の愛称などに書き換えてください。
・nameはこのシェルの名前を明記します。Master部分に適当な名前(キャラ名や服装など)をつけましょう。必須項目です。
・typeはファイルセットの種別を明記します。シェルのファイルなのでここではshellと入力します。必須項目です。
・sakura.balloon.alignmentとkero.balloon.alignmentはさくら側、ケロ側の各バルーン(吹出し)の表示方向を指定します。
 サーフェイスに対し、常に左に表示はleft、右に表示はright、サーフェイスの位置によって自動調整はnoneを指定します。
・sakura.seriko.alignmenttodesktopとkero.seriko.alignmenttodesktopはさくら側、ケロ側の各サーフェイスの移動制限を指定します。
 上記のサーフェイス作りのところで言いましたが、伺かではキャラクターをドラッグして表示場所を移動させることができます
 上下左右どこでも移動を許可する場合はfreeを指定、タスクバーに接地したまま左右のみの場合はbottomを指定。
 省略可能で省略時はbottomに設定されます。

この他にもdescript.txtでは右クリックで表示されるメニューの画像指定や、バルーンの初期表示位置の指定などができます。 詳しくは非公式シェル仕様書を。

 さて、descript.txtとsurface0000.png、surface0010.pngの3つができたら一度ベースウェア上で起動してみたいですよね?
とりあえずこの3つをmyghost>shell>masterフォルダに保存できたら今度はmyghost>ghost>masterフォルダ内の descript.txtを開いて下さい。こちらの内容についてはGHOST(YAYA)編で説明しますのでとりあえず項目「name」の「はろーYAYAわーるど」の部分を 自分のゴースト名など好きな名前に変更してください。半角でも全角でも構いません。(例:name,まいごーすと)
 上書き保存できたらmyghost>ghost>master側にもprofileフォルダが残ってる方はこれを削除ともう1箇所、myghostフォルダ内にあるinstall.txtを削除してください。
フォルダ画像
削除できたらssp.exeを起動してゴーストを右クリック、メニューのゴーストの切り替えにマウスポインタを移動してみましょう。
出てきたリストの中にghost側descript.txtのname項目で入力したゴースト名が登録されていると思います。クリックして呼び出してみましょう。
メニュー画像
 どうですか?話している内容は紺野ややめと同じかもしれませんが見た目は貴方が作ったサーフェイスに変っていると思います。ちょっとワクワクしませんか?w
ここまできたら、後はサーフェイスの種類を増やしてクウォリティーを上げていくだけですね!

●詳細設定はsurfaces.txtでっ!

 ここまでで会話内容はGHOST(YAYA)編で変えていくとして、SHELL(サーフェイス)はさくら側、ケロ側各1枚とはいえオリジナルになったわけですが、 ただ単に止まっている画像ではちょっと寂しいですよね?そんな時に目パチだけでもさせるとキャラクターとしてグッと愛嬌がでると思いますが、 安易なアニメーションの設定はゴースト側ではなくシェル側のsurfaces.txtで行います。
その他にも、今後色んなシチュエーション用のシェルを用意していくと困る事がでてきます。
 例えば吹出し(バルーン)の表示位置はdescript.txt側でサーフェイス全てに適応される値を指定することはできますが、 サーフェイスによっては顔の位置が画像全体に対して下寄りだったり左右どちらかに寄っていたりする場合もあるのでそれに合わせたいですよね?
そういった個々のサーフェイスに対しての詳細設定をするのがsurfaces.txtになります。

 とりあえず、まずはアニメーションの設定方法を説明します。下にあるのがアニメーション用パーツファイルのサンプル画像です。
今回はベースになるサーフェイスファイル(サンプルではsurface0000.png)と、最低限滑らかな目パチをさせる為に目の周辺部分だけのパーツサーフェイスを 2枚(サンプルでは半目surface0100.pngと、目閉じsurface0101.png)用意しました。今回パーツを2枚にしましたが多ければ多いほど滑らかになります、 ただし当然多いほど処理量は多くなりますし、あまり細かくモーションを割りすぎると速度感が無くなって見えるので程々にしましょう。
サンプル1
 ちなみに今回のサンプルではパーツサーフェイスのIDを100と101にしていますが、特に意味はありません。ただポイントとしてパーツ用に限らず サーフェイスIDを割り振る時は例えば1000の位が1の時はさくら側、2の時はケロ側のアニメーション用サーフェイスパーツなどといった感じに 1000の位や100の位の数字に意味を持たせて割り振ると、メンテナンス時など管理が楽になります。

 さて、surfaces.txtですがファイル名は制作概論編でも書いたように「surfaces.txt」でなければなりません。
次に中身ですが文法はdescript.txtとほぼ同じですが、若干違う部分があります。surfaces.txtでは各サーフェイスに細かい設定をする項目を サーフェイスごとや、サーフェイス以外の大枠項目ごとにスコープと呼ばれる単位で{ }を使って纏める必要があります。
実際の文法を文字で書くとこんな感じです。
【スコープ名】
{
【設定項目1】,【値・内容1】,【値・内容2】
【設定項目2】,【値・内容1】,【値・内容2】
【設定項目3】,【値・内容1】,【値・内容2】
【設定項目4】,【値・内容1】
【設定項目5】,【値・内容1】
}

【スコープ名】
{
【設定項目1】,【値・内容1】,【値・内容2】,【値・内容3】
【設定項目2】,【値・内容1】,【値・内容2】,【値・内容3】
}
descript.txtと同じように項目と値の間を「,(カンマ)」で区切り、値と値の間は「.(ドット)」で区切ります。
これでもよく解からないと思うので実際にサンプル画像用のsurfaces.txtの内容を見ながら説明します。
charset,Shift_JIS //文字符号化スキーム

descript //サーフェイス定義スコープ
{
version,1 //SERIKOバージョンフラグ
}

//エルルゥ設定
surface0000 //サーフェイスIDスコープ
{
animation0.interval,rarely //アニメーション設定【animation【ID】】.【エントリ/動作】,【値/内容】
animation0.pattern0,overlay,0100,50,108,90
animation0.pattern1,overlay,0101,90,108,90
animation0.pattern2,overlay,-1,50
}
一応コメントアウトで簡単な説明が入っていますが、上から順に内容を見ていきましょう。

・charsetはdescript.txtと同じくこのtxtで使用されている文字符号化スキームの指定、通常はShift_JISで省略可能。記載時は最初の行へ記載。

・descriptはサーフェイス全てに関する事や、このtxt全体の設定をするスコープ({ })。
・versionはSERIKOのバージョンフラグを指定。SERIKOとはアニメーション内容を設定する為の規格名でver1.xと2.0がある。
 ver1.xで記載する場合はフラグ値0、ver2.0の場合はフラグ値1を指定。現在使いやすいver2.0を使えば問題ない。
 verNo.とフラグ値の違いに注意。

・surface【ID】は各サーフェイス設定用のスコープ。surfaceの後に続けてIDを記載。

アニメーション設定に関しては少しゆっくり説明します。内容の詳細については非公式SERIKO&element仕様書 を参考にしてください。

animation【ID】(例:animation0 animation1)
アニメーションは1つのサーフェイスに対して2つ以上設定する事が可能です。その為それらを区別するのに各アニメーションに対しIDを割り振ります。 例えば目パチにanimation0、口パクにanimation1のように割り振ります。 アニメーションIDは別のサーフェイスのアニメーションIDと重複しても構いません。例えばsurface0000でanimation0を使用し、 surface0001でanimation0を割り振っても別のスコープの物なので別物として扱い、関連性は持ちません。 IDを割り振ったら、アニメーション設定はそのIDに対し細かく設定していきます。

【エントリ/動作】(例:interval pattern0)
エントリは何を設定するのかの項目です。正確には【animation【ID】】.【エントリ】と「.(ドット)」区切で記載した2つセットで1項目になります。

 上記のサンプル用の内容ではまず最初にanimation0の発生タイミングを指定するエントリ「interval」を設定しています。
その後に,(カンマ)区切で値を設定します。interval値の種類については上記サイトさんを参考に。今回はrarelyを使用しています。 色々設定を変えてみて丁度良い設定を探してみてください。

 次の行ではエントリに「pattern【No】」を設定しています。ちなみに、「次の行」と書いてはいますがアニメーションIDで判断しているので スコープ内であれば記載する順番にきまりはありません。descript.txtと同じく1行1項目です。
 patternはいわゆるパラパラアニメの1コマにあたります。Noはアニメーション表示される順番になり、0番から始まります。又、アニメーションIDが変ればその1コマ目のNoも0から設定します。
patternエントリの値は、最初に内容を示すメソッドと呼ばれるコマンド、その後ろに全て「,(カンマ)」区切で値をいくつか指定します。項目を続けて書くと以下の様になります。
animation【ID】.pattern【No】,【メソッド】,【値1】,【値2】,【値3】,【値4】(値の数はメソッドによって違います。)
 サンプル用の内容ではメソッドに「overlay」を指定しています。overlayはベースサーフェイスの上にパーツ用サーフェイスを重ねて表示・切換えをする事で アニメーションさせる為のメソッドで、値1にパーツサーフェイスID、値2に表示までの時間(ms)、値3にパーツサーフェイスの座標0,0が位置するベースサーフェイス側の X(横)座標、値4にそのY(縦)座標を指定します。ちなみに時間のmsはミリ秒なので1s(秒)=1000msです。又、表示時間ではなく表示までの時間である事に注意してください。サンプル内容を文字で書くと
アニメーションID0.コマ番号0,重ね表示で,サーフェイスID0100を,50ms後,X108,Y90 座標に描画させる
という感じです。

サンプル用の内容では、次の行でも同じ様に2コマ目(pattern1)も設定しています。
 さて、その次の行も同じくpatternエントリで3コマ目が設定されていますが、値のサーフェイスIDに「-1」が設定されていて、XY座標の値が設定されていません。 サーフェイスIDに「-1」が指定されている場合はベースサーフェイスのみの描画に戻す意味があります。その為パーツ用サーフェイスの指定は無いのでXY座標の値が必要ありません。 ただし、この「-1」という指定は1つのanimationIDに対し、必ずしも必要なわけではありませんし、2回以上指定しても構いません。
 目パチ用のアニメーションでは普通、目を閉じたら開く(ベースサーフェイスへ戻る)を繰り返すので最後に-1を指定していますが、アニメーションによっては パーツサーフェイスを重ね表示させたままにして終わらせる、というアニメーションの使い方も問題ありません。

 とりあえず、目パチをさせるアニメーションの設定としてはこんな感じです。テスト用にサンプルのサーフェイスファイルとsurfaces.txtを こちらに圧縮ファイルでアップしたので、解凍したファイルをmyghost>shell>masterフォルダに差換えで入れてみて、ssp.exeを起動して確認してみてください。
(自分でつくったサーフェイスファイルなどに上書きしないよう注意してください!)

 さて、上記の内容を参考に上手く目パチアニメーションは出来たでしょうか?他にも色んなエントリ、色んなメソッドがありますので 非公式SERIKO&element仕様書を参考にチャレンジしてみてください。 サーフェイスやアニメーションの組み合わせだけでも色んな表現ができると思います。

●他にもいろいろsurfaces.txt

 surfaces.txtにはアニメーションの他にもシェル個々に対する色んな設定ができます。主によく使う設定をいくつか紹介します。
項目の書き方などは非公式シェル仕様書や、 非公式SERIKO&element仕様書を参考にしてください。

 collision(collision id)は各サーフェイスの当たり判定領域とその識別子(呼び名)を設定します。他のゴーストをいくつか弄ってみた方は判るかもしれませんが、 キャラクタの頭を撫でると喜んだり、スカートをクリックすると怒られたりなど、お遊び的なコミュニケーションをゴーストで設定する時に、 マウスの位置を判定する領域を指定するのに使用します。

 (character id).balloon.* (例:sakura.balloon.offsetx)はバルーンのオフセット表示位置のオーバーライトを行います。descript.txtでも全てのサーフェイスに 適応されるオフセット位置を設定できますが、surfaces.txt内でこの設定がされているサーフェイスにはこちらの設定が優先されて表示されます。

 element(element id).*は複数のサーフェイスファイルを重ね合わせて1つのサーフェイスIDを定義します。例えば上のサンプルのsurface0000.pngと、目パチで使用した 目を閉じたパーツのsurface0101.pngを組合わせて伝統ID割り当ての目閉じであるsurface0006を作る事で、実際にsurface0006.pngを作らなくてもそれを代行させる事ができ、これにより サーフェイスファイル群のデータ量を減らすことができます。
ちょっと解かり難いと思うので、上のelement設定を実際にsurfaces.txtに記入する場合はこんな感じになります。
surface0006
{
element0,overlay,surface0000.png,0,0 //element【ID】,メソッド,サーフェイスファイル名.x座標.y座標
element1,overlay,surface0101.png,108,90 //elementIDが大きいほど上に重ねられます
}

 他にもまだまだ設定できる項目はありますが、初めからあれもこれも設定しておこうと思うと疲れてしまうので、ゴーストを作りながら必要に感じたら 設定を増やしていってみるのもいいと思います。






Hobbyへ

TOPへ