きのこシステムに追加して楽しむためのスキンデータの制作方法を解説します。
きのこスキンデータのファイル構成は、次のようになっています。
kinoko.exe
nayuki.dll
skin
+-superkinoko
+-surface0.png // ベースサーフェス
+-kinoko.ini // スキン情報定義ファイル
+-profile.txt // スキンプロフィールファイル
+-1upkinoko
+-surface0.png // ベースサーフェス
+-kinoko.ini // スキン情報定義ファイル
+-profile.txt // スキンプロフィールファイル
+-nayuki.dll // NAYUKIオーバーライド
+-dempa
+-surface0.png // ベースサーフェス
+-surface1.png // 追加サーフェス
+-surface0a.txt // アニメーション定義ファイル
+-kinoko.ini // スキン情報定義ファイル
+-profile.txt // スキンプロフィールファイル
すべての大元となる1枚のグラフィックです。すべてのスキンデータは最低1枚のベースサーフェスを持っている必要があります。
サーフェスはPNGファイル形式で、4ビット/8ビット/24ビットのいずれかの形式とします。
追加サーフェスはアニメーションを行うために使用します。アニメーションを行わない場合は追加サーフェスは不要です。
追加サーフェスのファイル名は、SERIKO/1.2仕様に基づき、アニメーション定義ファイルにて決定されます。
追加サーフェスのファイル形式はベースサーフェスに準じます(PNG形式)。
スキンには、「何か。」でも使われている「SERIKO/1.2」仕様と互換性のあるアニメーションを持たせることができます。
このファイルの書式は「何か。」で使用されるサーフェス用アニメーション定義ファイルと互換性があります。詳しくは「何か。」本家のSERIKOアニメーション仕様を参照してください。
きのこシステムでサポートされる SERIKO/1.2 の互換性については後述します。
NAYUKI オーバーライドに使用されるDLLです。
詳しくはNAYUKI仕様書を参照してください。
スキン情報定義ファイルは、「kinoko.ini」というファイル名で、スキンデータの各種情報を記述します。ファイルの書式は Windows の ini ファイルの文法に習います。基本的なことについては、きのこ本体に付属しているスキンの kinoko.ini を参考にしてください。
KINOKO.INI には現在「KINOKO」セクションのみが規定されています。
KINOKOセクションは以下のエントリを持ちます。
ベースサーフェスサーフェスのファイル名を指定します。このエントリを省略すると、ベースサーフェスファイル名は「surface0.png」となります。
アニメーション定義ファイルのファイル名を指定します。
スキンの属するカテゴリを指定します。現在、次のカテゴリを提唱していますが、カテゴリ名は自由に決定できます。
「きのこ」「動物」「植物」「人」「構造物」「アンテナ」「ロボット」
カテゴリ名は本体側が開発インターフェースを通して取得できますが、本体側がその情報をどう使用するかは本体側に任されます。
省略するとカテゴリ未定義となり、本体側には空文字列が渡ります。またカテゴリ名はカンマで区切って複数指定できます。
例: category=動物,人,ロボット
スキン名称を指定します。スキン名称はユーザーがスキンを切り替える際にメニューに表示される他、本体側からも取得できます。
このエントリを省略すると、スキンデータの格納されているフォルダ名が名称として使用されます。
きのこの生成位置からのオフセットを指定します。省略すると0になります。
正の値を指定すると右方向及び下方向へ、負の値を指定すると左方向および上方向へオフセットされます。
きのこ生成位置については後述します。
きのこをSAKURAの背面に表示するか前面に表示するか指定します。0 が背面(省略時デフォルト)、1 が前面になります。
きのこ表示位置計算に使用する原点のタイプを指定します。
0 絶対きのこ領域座標(省略時デフォルト)(サーフェス定義ファイルの point.kinoko.centerx/point.kinoko.centery にて指定)
1 顔突っつき判定領域の中心座標
2 胸触り判定領域の中心座標
3 サーフェス中心座標(サーフェス定義ファイルの point.centerx/point.centery にて指定)
0 を指定しても、SAKURAの対象サーフェスに絶対きのこ領域が定義されていない場合は、頭部なでなで領域の座標の中心座標を代用します。
同様に、顔突っつき判定領域、胸触り判定領域、サーフェス中心座標のそれぞれが省略されていた場合は、きのこ側でそれなりに計算します。
座標計算の詳しくは後述します(「きのこ生成位置の算出方法」を参照)
きのこの表示位置計算をするのに、原点座標から相対的にどのように配置するかを指定します。
0 原点座標がきのこサーフェスの下辺の中心になるように配置します。
1 原点座標がきのこサーフェスの上辺の中心になるように配置します。
2 原点座標がきのこサーフェスの左辺の中心になるように配置します。
3 原点座標がきのこサーフェスの右辺の中心になるように配置します。
4 原点座標がきのこサーフェスの左下になるように配置します。
5 原点座標がきのこサーフェスの右下になるように配置します。
6 原点座標がきのこサーフェスの左上になるように配置します。
7 原点座標がきのこサーフェスの右上になるように配置します。
8 原点座標がきのこサーフェスの中央になるように配置します。
座標計算の詳しくは後述します(「きのこ生成位置の算出方法」を参照)
アーカイブをドラッグ&ドロップでインストールできるようにする場合、skinフォルダの下にこのスキン用に作成するサブフォルダの名称を指定します。
この指定を省略した場合、TITLEでの指定が使用されます。さらにTITLEも省略した場合は、アーカイブファイル名から拡張子を除いたものを使用します。
NAYUKI.DLL のファイル名を変更できます。サブフォルダを含めての指定も可能です。
例:nayuki=data\mynayuki.dll
こうすることで data\mynayuki.dll がNAYUKI.DLLとして使用されます。
次の規則に従ってスキン用ファイル一式をアーカイブファイルにまとめておくことで、ユーザーがそのアーカイブをきのこの上にドラッグ&ドロップするだけでインストールできるようになります。
アニメーション定義ファイルの書式は「何か。」本家に準じます。
詳しくは本家の仕様書を参照してください。
きのこでサポートしている SERIKO/1.2 は以下の通りです。
always : 完全サポート
runonce :そのスキンに切り替えたときに一度だけ発生。
sometimes :まばたき程度の時間をおいて発生。
rarely :かなり長い時間をおいて発生。(現在タイミング調整中)
never :サポートされません(指定しても一切発生しません)
overlay : 完全サポート
overlayfast :完全サポート(合成後のリージョンが変化しない場合に使用)
move : 完全サポート
base : 完全サポート
制限 : overlay / overlayfast メソッドでは、現在のベースサーフェスの領域を突破することはできません。(何か。では、楢崎このみ対策でサポートされている)
きのこシステムは、KINOKO.INI にて指定した原点座標を、きのこベースサーフェスの位置参照に使用します。
原点をどこにするか、および原点に対してきのこをどのように配置するか、すべては KINOKO.INI のBASEPOSITIONとBASEADJUSTにて指定します。この項目を省略した場合は、原点は「絶対きのこ座標」、相対位置は「下辺の中心」と見なされます。
実際に表示する際は、その座標にさらにスキン定義ファイルでのオフセット指定を追加し、さらにアニメーションにてmoveメソッドを使用している場合はそれも加味します。
原点を「絶対きのこ領域」にした場合でも、対象となるサーフェスが座標の指定を持っていない場合があります。この場合、きのこは他の情報からだいたいの位置を計算し直します。
この場合は本体側からAKF座標を取得し、そのまま使用します。
AKF指定がなくても頭なでなで領域の指定があった場合、頭なでなで領域の中心座標を絶対きのこ領域座標と見なします。
この場合は「キャラクタのだいたいの概型」を取得し、その上辺の中心を絶対きのこ領域座標と見なします。
原点が「顔突っつき領域座標」と「胸触り領域座標」「サーフェス中心座標」だった場合も、それぞれの領域指定がサーフェスに存在しない場合は、きのこ側で勝手に計算して算出します。ただし、この精度はあまり高くないので、このようなサーフェスを使用している場合はあまり正しいきのこの生成は望めません。当該シェル/ゴーストの制作者に、領域情報を記述するよう要望を出してください。