非公式 MAYUNA 仕様書

はじめに

この仕様書で述べる仕様「MAYUNA」は,2000年に「偽春菜」の名前で開発が始まり2007年現在「伺か」の名前で呼ばれるデスクトップマスコットに着せ替えを行うための仕様である。

この仕様書は,伺か公式ページ内の旧仕様書,履歴,first のマスターシェル定義ファイルなどを元につくられた非公式仕様書であることに注意。

基本的なシェル定義に関しては非公式シェル仕様書を参照。

概要

シェルで着せ替えを行うための仕様が MANUNA である。本来,アニメーション仕様 SERIKO の一部であるが,着せ替え部分のみを指して MANUNA と呼ぶ。

この仕様書では,SERIKO/2.0 の書式で説明を行う。SERIKO/2.0 については非公式 SERIKO 仕様書を参照。

着せ替えオブジェクト

MAYUNA/1.x は SERIKO のサブセットであり,着せ替えを行うオブジェクトは SERIKO と同様の書式で 各 surface スコープに記述するが,動画仕様ではなく静止画仕様であることに注意して下さい。

例示。

surface0
{
animation0.interval,bind
animation0.pattern0,add,100,0,0,0
animation0.pattern1,add,101,0,0,0
animation0.pattern2,reduce,102,0,0,0
animation0.pattern3,add,103,0,0,0

animation1.interval,bind
animation1.pattern0,insert,2
animation1.pattern1,add,150,0,10,10

animation2.interval,bind
animation2.pattern0,bind,151,0,10,10
}

同じ種類のグループに常に同じ ID を振る必要があることに注意。例えば, surface0 の animation2 で「夏服」を設定した場合,他の「夏服」を必要とする全ての surface においても animation2 で「夏服」を設定する必要がある。

ただし sakura と kero の着せ替えは別々に管理される (sakura で着せ替えの ON/OFF を実行しても kero 側に影響はない。逆も同様) ため,sakura / kero の間では,異なる種類のアイテムの ID が重なっても問題はない。

グループ 0 から順番に処理される。例えば,グループ 0,1,3 が ON の時,0 番の上に 1 番が、1 番の上に 3 番が描画される。

SERIKO と同様に以下のエントリから構成される。

interval エントリ

interval エントリに bind を指定することで着せ替えを行う。

SERIKOとしては全てのウェイト(interval パラメータ)が無視されて1枚ずつ順ではなく,全て同時に処理されるものと考えることが出来る。

option エントリ

無し。

pattern エントリ

animation?.pattern?,(method),(surfaceid),(interval),(offsetx),(offsety)

アニメーションパターン 0 から順番に処理される。0 番の上に 1 番が,1 番の上に 2 番が描画される。従って,例えばパターン 3 がキャラクタに穴を開けたとしても,それがパターン 4 で再び塞がれれば表示上は穴は開かないことになる。

method パラメータ

method は描画メソッドを表す。以下のメソッドが使用できる。

bind メソッド
animation2.interval,bind
animation2.pattern0,bind,151,0,0,0

bind は単純な着せ替えを行う。着せ替えとして重ね合わせることができる surface は 1 枚 (pattern0 で指定した serface のみ) であり,pattern1 以降は無視される。

offsetx および offsety パラメータで合成する位置を設定する。省略不可。

bind は古い仕様であり add で置き換えることが可能である。

例えば,上記の着せ替えは次の記述で置き換えても等価である。

animation2.interval,bind
animation2.pattern0,add,151,0,0,0
add メソッド

add は bind を拡張し,複数の surface を重ね合わせることを可能にしたものである。SERIKOのoverlayに相当。

offsetx および offsety パラメータで合成する位置を設定する。省略不可。

reduce メソッド

reduce は現在の可視状態から特定の領域を明示的に削除する。

現在の透過領域に加えて,指定した surface の透過色 (左上の色) の部分が透過領域となる。合成する画像ファイルに pna が存在する場合は,アルファチャンネル合成となり,ベースの透明部分は無視される。

offsetx および offsety パラメータで合成する位置を設定する。省略不可。

replace メソッド

透明部分を含めて上書きする。

サーフィスの輪郭が削れる着せ替えをする場合,削る部分をreduceした後,overlayで追加をする必要があるが,replaceを使うと1度で行うことが出来る。

SSP拡張。

insert メソッド

insert は他のバインドグループの挿入を行う。surfaceid パラメータに挿入するアニメーショングループ ID を指定する。

//A
animation1.interval,bind
animation1.pattern0,add,301,0,10,10
animation1.pattern1,add,302,0,15,15

//A + B
animation2.interval,bind
animation2.pattern0,add,301,0,10,10
animation2.pattern0,add,302,0,15,15
animation2.pattern1,add,303,0,50,50

上記の着せ替えは insert により次のように記述することが可能となる。

//A
animation1.interval,bind
animation1.pattern0,add,301,0,10,10
animation1.pattern1,add,302,0,15,15

//(A +) B
animation2.interval,bind
animation2.pattern0,insert,1
animation2.pattern1,add,303,0,50,50

この仕組みによりシェル制作者は着せ替えをアイテム/パーツごとに分けて管理することが可能となる。

surfaceid パラメータ

surfaceid は合成するサーフィスの ID を表す。surfaceid は ファイル名ではなく ID で指定する。

指定した ID の surface スコープが存在する場合,そのスコープで定義 (element による定義) されたサーフィスが表示される。

指定した ID の surface スコープ に書かれた SERIKO / MAYUNA は無効になる。例外として SSP は MAYUNA (interval,bind) のみ有効となる。たぶん……

interval パラメータ

MAYUNA は静止画仕様であるので interval パラメータは無視される。

アニメーションのグループと区別するため,0 を指定することが多い。

offsetx / offsety パラメータ

詳細は各メソッドの項目を参照。

着せ替えメニュー

home
  +-ghost
      +-seriko
        +-shell
          +-master
            +-descript.txt
            ....
            ..
            +-thumbnail
              +-apron.png
              +-black.png
              +-ribbonblack.png
              ....
              ..
        +-ghost

服を着せたり脱がせたりするためには descript.txt を適切に編集する必要がある。

sakura.bindgroup0.name,服,エプロンドレス,apron
sakura.bindgroup1.name,リボン,白リボン,ribbonwhite
sakura.bindgroup2.name,服,黒服,black
sakura.bindgroup3.name,リボン,黒リボン,ribbonblack

sakura.bindgroup0.default,1
sakura.bindgroup1.default,1

kero.bindgroup0.name,ネクタイ,ネクタイ
kero.bindgroup1.name,腕章,黒腕章
kero.bindgroup2.name,腕,ドリル

kero.bindgroup0.default,1
kero.bindgroup1.default,1

sakura.menuitem0,2
sakura.menuitem1,3
sakura.menuitem2,-
sakura.menuitem3,0
sakura.menuitem4,1

kero.menuitem0,0
kero.menuitem1,1
kero.menuitem2,-
kero.menuitem3,2

name エントリ

*.bindgroup?.name,(category),(part),(thumbnail)

surfaces.txt の animation? で設定した着せ替えアイテムを着せ替えメニューに関連付ける。

bindgroup ID は surfaces.txt のアニメーショングループ ID と同じものを指定する。上記の例では surfaces.txt の sakura が使用する全ての surface スコープで animation0 がエプロンドレスを指定していなければならない。

category パラメータ

同一カテゴリのアイテムは同時に 1 つしか着ることができません。上記の例では sakura はエプロンドレスと黒服,白リボンと黒リボンを同時に着ることはできない。

上記の例では,sakura は次のような着せ替えが可能となる。

  • (無し)
  • エプロンドレス
  • 黒服
  • 白リボン
  • 黒リボン
  • エプロンドレス + 白リボン
  • エプロンドレス + 黒リボン
  • 黒服 + 白リボン
  • 黒服 + 黒リボン
part パラメータ

着せ替えアイテムの名前を設定する。設定した名前が着せ替えメニューに項目として表示される。

thumbnail パラメータ

着せ替えメニューで使用するサムネイルファイルを指定する。サムネイルファイルは thumbnail ディレクトリに格納したものを拡張子を省略して記述。省略可。省略時は何も表示されません。

ここで指定するサムネイルは Materia では実装されていない。

default エントリ

*.bindgroup?.default,?

このシェルのデフォルトの姿を設定する。ここでの設定がこのシェルの初回起動時の姿となる。デフォルトで ON のアイテムに 1 を指定する。0 を指定もしくは省略すると OFF となる。

同一カテゴリのアイテムを複数ONにしてはならない。

menuitem エントリ

*.menuitem?,?

menuitem はメニュー項目の構造を表す。メニューの表示順に bindgroupid を指定する。- (ハイフン) を指定するとセパレータとなります。上記の例だと sakura の着せ替えアイテムは上から順に次のようになる。

  • 黒服
  • 黒リボン
  • (セパレータ)
  • エプロンドレス
  • 白リボン