『Fy Mascot』-キャラクターを作る

はじめに

『Fy Mascot』ではキャラクターを自由に切り替えることができ、MMDモデルやセリフ(テキストファイル)などを用意することで誰でもキャラクターを作ることが出来ます。キャラクターの作成には、サンプルのキャラクターデータを参考にするとわかりやすいと思います。なお、サンプルのキャラクターデータにはMMDモデルは入っていないので、MMDモデルとモーションは皆さんで用意していただく必要があります。

思考エンジンも含めて完全にオリジナルのキャラクターを作ることもできますが、まずはサンプルのキャラクターをベースにモデルを選びセリフを差し替えてオリジナルのキャラクターを作るのも簡単でオススメです。

キャラクターデータ

キャラクターデータは『character』フォルダの中に、キャラクターごとにフォルダに分けて入っています。

picture

キャラクターは以下のファイルで構成されています。

サンプルのキャラクターにはセリフをスクリプト(テキストファイル)として分離して汎用性を持たせた『オモヒカネ』という『思考エンジン』を搭載しています。

キャラクターの情報ファイルやセリフなどは『XML』形式のテキストファイルで、通常は『Internet Explorer』あたりで開かれると思いますが、『メモ帳』で開くと編集もできます。

キャラクターはzip圧縮したものをプロパティシートにドラッグアンドドロップすることでインストールすることができます。

初回起動時のキャラクターは以下の設定ファイルの情報をもとに選択されます。

情報ファイル類

各キャラクターには『情報ファイル類』として、『テキストファイル(document.xml)』や『イメージ画像(image.png/icon.png)』などがあります。主にキャラクターを選択するプロパティシートやインストール時に利用されます。

・画像ファイル

『icon.png』、『image.png』の画像は、プロパティシートで表示される画像です。『icon.png』は60×60ピクセル、『image.png』は120×160ピクセルの画像です。

picture

・ドキュメントファイル

『document.xml』はキャラクターの各種情報が書かれたもので、『Fy Mascot』の他の情報ファイルなどと同じくXML形式のテキストファイルです。思考エンジンファイル名とMMDモデルファイル名には拡張子を含めません。

picture

モデルとモーション

『Fy Mascot』のキャラクターの立ち絵に相当するのは『MMDモデル』で、モデルデータに加えて『モーションデータ』と『情報ファイル』が必要です。すべてのファイルがキャラクターの入ったフォルダの『model』フォルダに保存されています。

picture

・MMDモデルとモーションデータ

キャラクター一人に対して、『MMDモデル(PMD/PMX)』が一つ、何もしていない時の『モーションデータ(VMD)』が一つ必要で、『モーションデータ』はリアクションにあわせて増やすことができます。

『MMDモデル』のファイル名は自由に決められますが、前述のキャラクターの情報ファイルにその情報を反映させる必要があります。デフォルトは『model』となっています。

モーションデータは必要な数だけ用意し、ファイル名は『モデルのファイル名+3桁の数字+L』になります。数字は000から順番にふる必要があります(抜けるとそこから先は無視されてしまいます)。何もしていないとき(待機中)のモーションの数字が『000』である以外はモーションの内容に関する決まりはありません。

マスコットのリアクションがどのモーションに対応するかは後述の『MMD情報ファイル』に記述するので、とりあえず順番に並べておけばOKです。下のモーションの対応表は例です。

picture

『MMDモデル』には画像など複数のデータが入っていますが、中身のデータの意味がよく分らないのでとりあえず全部丸ごとキャラクターの『model』フォルダに入れてください(笑)。

picture

・情報ファイル

リアクションとモーションの対応表にあたる『モデル情報ファイル』と、モーションごとのアタリ判定などを記述した『モーション情報ファイル』があります。『モデル情報ファイル』のファイル名はモデルファイルと同じで、『モーション情報ファイル』のファイル名はモーションファイルと同じになります。

ファイルは文字コードがUTF8のテキストファイルで、$から始まる行はコメントとして無視されます。コメントは何行あっても構いませんが一行あたりの文字数は全角で100文字程度にしてください。

picture

☆モデル情報ファイル

モデル情報ファイルにはモデルのキャラクター名と、リアクションとモーションの対応情報を記述します。

モデルのキャラクター名は1ヵ所(通常はリアクション対応表の前)、最初に『:(コロン)』をつけてから記述します。キャラクター名は最初の:を含めず半角英数字で255文字以内です。

picture

『Fy Mascot』は『思考エンジン』から送られてきたリアクション名をもとに、このファイルにかかれた対応表に従ってモーションの番号を選択します。リアクションは1行に『リアクション名,3桁のモーションの番号(改行)』の書き方で、リアクションのある分だけ列挙します。リアクション名は半角英数字で255文字以内です。

一つのモーションに対して複数のリアクションを割り当てることもできます。例えば、『click』と『stroke』をともに『002』にすることなどができます。 

picture

☆モーション情報ファイル

モーション情報ファイルにはアタリの情報などを記述します。

アタリの情報には位置とイベント名があり、1行に『イベント名,LEFT,TOP,RIGHT,BOTTM(改行)』の書き方で、アタリの数だけ記述します。アタリは一つのモーションにつき最大10個です。

イベント名はクリック又はストローク(なでる)した際に『思考エンジン』に送られます。イベント発生時の動作は『思考エンジン』しだいで、大抵はなんらかのリアクションをしてくれます。イベント名は半角英数字で255文字以内です。また、離れた二ヵ所で同じ意味のアタリがある場合に同じイベント名をつけることもできます

位置はキャラクターウィンドウの縦長を基準として、上下は上からの長さ、左右は中央からの長さをパーセンテージで、左、上、右、下(left,top,right,bottom)の順に記述します。例えば下図の赤い四角で囲った領域(キャラクターの顔)でイベント名がFACEならば、矢印で示した部分の長さとなるので『FACE,5,20,5,30(改行)』となります。

もっとも、モーションにつきモーション情報は一通りなので、激しく動くモーションではあまり当てにならないかもしれませんが、まぁ細かいことは気にしないで頂けるとありがたいです。

picture

・背景とセリフウィンドウ画像、セリフウィンドウ情報ファイル

モデルデータの他に『背景画像(background.png)』と『セリフウィンドウ画像(canvas.png)』、『セリフウィンドウ情報ファイル』が必要です。画像サイズはとくに規定はありませんが、背景画像は640x640ピクセルぐらいがオススメです。『セリフウィンドウ画像』は背景画像よりも小さくする必要があります。

『セリフウィンドウ情報ファイル』にはセリフの文字の色を、R、G、Bはそれぞれ0~255の数字で『COLOR:R,G,B(改行)』の形で記述します。COLOR:0,0,0(改行)で黒、COLOR:255,255,255(改行)で白です。

picture

思考エンジン

キャラクターのセリフと立ち絵は、『思考エンジン』というプログラム(DLL)でコントロールしています。『思考エンジン』は仕様を公開しており、『Fy Mascot』にサンプルソースコードも添付しているのでオリジナルのAIを作ることもできます。

作成するにはプログラミング(C言語)の技術が必要になりますが、それだけに工夫次第ではかなり自由度が高いのがポイントです。

オモヒカネ

キャラクターのサンプルには『オモヒカネ』という『思考エンジン』が搭載されています。『オモヒカネ』はセリフをスクリプト(テキストファイル)として分けているので、キャラクターのモデルを用意したら、スクリプトを編集するだけで簡単にオリジナルキャラクターを作ることができますこの項目では『オモヒカネ』の独自機能について記述します。

なお、スクリプトは『Fy Mascot』の情報ファイルと同じXML形式のテキストファイルになっており、メモ帳で簡単に編集することができます。

・クウネルヤル管理システム

『思考エンジン』は、基本的に『Fy Mascot』からイベントが送られてきて、それに応じてなんらかのリアクション(ほとんどがセリフを言う)を行います。

『オモヒカネ』では、さまざまなイベントに柔軟に対応できるように、セリフをイベントごとのスクリプトファイルに分け、『クウネルヤル管理システム』と呼ばれるシステムで管理しています。『クウネルヤル管理システム』は起動時にスクリプトファイルをスキャンしてイベントとスクリプトファイルの対応表を作成し、それに基づいてイベントをこなします。対応表は『オモヒカネ』の設定のプロパティシートで見ることができます。

picture

『クウネルヤル管理システム』はスクリプトファイルがないイベントが送られてきた場合は無視するようになっているので、全てのイベントを網羅する必要はありません。対応するスクリプトファイルを追加すれば新たなイベントに対応することができ、逆に少数のスクリプトファイルでも問題なく動作します。『オモヒカネ』を使ってオリジナルキャラクターを作るときは最低限のセリフを選んで編集し、残りを削除することで無理なく作ることができるかもしれません。

スクリプトファイルは『思考エンジン』の保存されているフォルダの『scripts』フォルダの中に保存しています。ファイル名でどんな時のセリフかはだいたい想像つくと思います。なお、『scripts』フォルダは『オモヒカネ』独自の仕様なので、他の『思考エンジン』では必要ありません。

picture

・スクリプトファイル

スクリプトファイルは、イベント名、コンテンツで構成されています。

picture

☆イベント名

イベント名はこのスクリプトファイルが使われる場面です。『order』と『param』の2つのパラメータがあり、『Fy Mascot』から送られてくるイベントに対応します。

例えば、カオ(イベント名:FACE)をクリックすると『order』に『CLICK』、『param』に『FACE』というイベント通知が送られてきます。『オモヒカネ』はスクリプトファイルから、『order』が『CLICK』で『param』が『FACE』となっているものを選びます。なお、イベント名でファイルを管理しているのでスクリプトファイルのファイル名は自由です。

picture

☆セリフアイテム

セリフアイテムはナンバー、アトリビュート(属性)、セリフスクリプトで構成されます。


picture

☆ナンバー

セリフアイテムのナンバーで1から順番に欠番や重複のないようにふります。なお番号が抜けるとそこで検索が打ち切られてその後のセリフアイテムが無効になってしまうので注意してください。

☆アトリビュート(属性)

同じ場面のセリフでも『時と場合』によって変化させることができた方が良いでしょう。例えば挨拶のセリフでも朝と夜では異なります。その『時と場合』を指定するパラメータがアトリビュート(『attribute』)です。『オモヒカネ』は『attribute』に指定されたパラメータでスクリプトファイルの中から最適なセリフアイテムを選択します。

『attribute』はイベントによって異なり表のようになっています。また、ヒットする『attribute』がなかった場合は『OTHER』が選ばれます。

イベント アトリビュート 意味
START FIRSTSTART 初めて起動された
SHORTBLANK ついさっき起動したばかり
LONGBLANK 久しぶりに起動した
EARLYMORNING 早朝
MORNING
DAYTIME 昼間
EARLYEVENING 夕方
EVENING
MIDNIGHT 草木も眠る丑三つ時
EXIT MORNING
DAYTIME
EVENING
HEALTHCARE NORMAL ふつう
CAUTION やばめ
DANGER
RESOURCE CPU_REPORT CPUに負荷がかかった
CPU_CONTINUATION CPUに負荷がかかっている(継続)
MEMORY_REPORT メモリが一杯
上記以外 NORMAL ふつう外

※オプションプロググラムと連動して独自のアトリビュートを使うこともできます。

☆セリフスクリプト

セリフのスクリプト本文です。以下のスクリプト構文とスクリプト記号が使えます。

スクリプト構文

セリフファイルにはいくつかのスクリプト構文があります。

$select{#attribute1|#attribute2}は、アトリビュートを使って複数のセリフアイテムのうちからランダムで一つを選ぶ場合に利用します。3つならば$select{#attribute1|#attribute2|#attribute3}といった具合に増やしていきます。

picture

$script{#name}は、$selectのセリフアイテムが1つしかないバージョンです。

アトリビュートは直接指定する他に以下のものも使えます。

アトリビュート 意味
$data ユーザー入力の結果をアトリビュートとします。
$date 日付をアトリビュートとします。10月1日ならば10_01になります。

$select{“string1”|”string2”}は、複数のセンテンスからランダムで一つ選ぶ場合に利用します。
例えば、『私は甘い物は$select{“好き”|”嫌い”}です。』のように使えば、『私は甘い物は好きです。』か『私は甘い物が嫌いです。』がランダムで選択されます。センテンスの前後に『”』があることに注意してください。

$replace{word}は、特定の文字に置き換える場合に利用します。表のような日にちや時間といったものと、アプリケーション側から指定されたものがあります。

ファイル名 意味
year 今年の西暦で置き換えます。
month 今月の月で置き換えます。
day 今日の日にちで置き換えます。
hour 今の時間で置き換えます。
minute 今の分で置き換えます。
week 今日の曜日で置き換えます。
sender イベントの『order』が『MESSAGE』の時、送り手の名前で置き換えます。
(『sender』要素に記述された内容)
string イベントの『order』が『MESSAGE』の時、送られてきた言葉で置き換えます。
(『string』要素に記述された内容)

picture

スクリプト記号

セリフには、それらしく表示するためにいくつかのスクリプト記号をが用意されています。詳しくはCanvas Scriptをご覧下さい。

記号 意味
\n 改行します。
\w[数字] 次の文字を表示するまで間をおきます。
(数字は何ミリ秒待つかを指定)
\e 表示したセリフを消去します。
\f[リアクション名] リアクション(モーション)を実行します。
キャラクター名は半角英数字で255文字以内です。
\c[キャラクター名] キャラクター名を変更します。
\c[$character]とするとモデル情報ファイルに書かれたキャラクター名になります。
キャラクター名は半角英数字で255文字以内です。
\\ \(円マーク)を表示します。
(\\を表示したい場合は\\\\と記述)

初回起動時のキャラクター

『Fy Mascot』では、初回起動時に選択されるキャラクターを、『config』フォルダの中にある『initialize.ini』というテキストファイルに記述しています。このテキストファイルはメモ帳等で編集することができます。

ここに『CHARACTER=sample』のように書かれている行があり、この『sample』の部分に初回起動時に選択させたいキャラクターの保存されているフォルダを指定します。独自キャラクターとともに配布する場合などにはここに独自キャラクターのフォルダを指定します。

※1 『sample』はデフォルトで指定されているキャラクターのサンプルです。

※2 二回目以降はセーブデータを初期化しない限りは、選択されているキャラクターが選択されます。