■■■■■■■■■■■■■■■■■■■
■■■
■■ ネフテュス(Nef) 使用説明書
■
本説明書が想定しているバージョンは
です。
■概要
flashノベルエンジンネフテュス(以下nef)は、HTML準拠のXML形式外部ファイルをドキュメントとして読み込み、
そのドキュメントに従ってテキストや画像などを時系列を伴い出力するものです。
nefを使用するには以下のファイルが必要となります。
nef.swf nef本体
xxx.html nef.swfを読み込むHTMLファイル
xxx.xxx 任意の名前のドキュメントファイル
以上を同一ディレクトリに置いて使用します。
htmlファイルは、添付しているnefTemplate.htmlのsample.dat(2箇所)やwidth/height指定などを書き換えて、
使用することをお薦めします。ドキュメントファイルはテキストエディタで作成します。記述方法は以下の
項をお読みください。また、具体例はsample.datをテキストエディタで開いてご覧いただけます。
■タグの説明
NefドキュメントはHTMLに近似したXML形式で記述されます。
XMLではデータをタグで挟む形でデータに意味を持たせることができ、タグは半角の<>で挟まれる形で
示されます(<body>など)。タグには開始タグと終了タグ(例えば<p>と</p>)があり、
そのタグに装飾されるドキュメントはその内部に挟まれます。内部にドキュメントを持たない場合、
HTMLでは終了タグがしばしば省略されますが(<br>タグなど)、XMLでは省略できませんので、
代用として<br/>のように1つのタグで開始・終了を指定してください(HTMLで表示したときもこれで影響ありません)。
なお、以下のタグの名前や機能に関しては予告無く変更されることがありますのでご了承ください。
※尚、現行nefではタグは小文字で記述してください。将来は大文字対応する予定です。
※タグは将来の版では変更される可能性があります。(再現性の問題でCCS記述になるかも??<でも長い記述はデータ作成者が面倒。)
非HTMLと書かれたタグ、属性は直接データをブラウザで表示したときに再現されません。
NefドキュメントはHTMLと互換を持たせるために以下の形で記述します。
[0次構成タグ]
<html>
<body>
(ドキュメント)
</body>
</html>
このドキュメントの部分に以下の1次構成タグ、2次構成タグを挿入します。
尚、bodyタグは次の属性を持ちます。
<body> text=テキストの色を指定します。色の指定方法はHTML同様の16進表記"#RRGGBB"です。
link=リンクの色を指定します。
[1次構成タグ]
1次構成タグは0次構成タグの内部にある必要があり、1次構成タグ同士を入れ子にすることはできません。
また、これらは<p>タグと同次元で管理され、つまりそれぞれが1ページに相当します。従って<a>タグの
name属性を使ってジャンプするときはこれらのタグ全てに対象として有効となります。
<p> 段落を意味します。nefではこの単位でページを切り替えます。
なのでページのpと思ってもらってもいいかもしれません。次のパラメータを持ちます。
nonstop="true"/"false" 文書描画後、マウス入力待機をせずに次に進みます。
<img> 画像(JPEGおよびswf)を読み込みます。以下のパラメータを持ちます。
(※画像にswfファイルを用いる場合は30fpsで制作してください)
src=画像ファイル名を指定します。
x=画像を表示する横位置を指定します。非HTML。
y=画像を表示する縦位置を指定します。非HTML。
xscale=画像の横倍率を%で指定します。非HTML。
yscale=画像の縦倍率を%で指定します。非HTML。
nonstop="true"or"false" 画像表示後、マウス入力待機をせずに次に進みます。
<command> 非HTML。nef制御用のコマンドです。
slave="release" 外部プログラムからnefを呼んでいる場合に、制御を外部プログラムに返します。
dress="true"or"flase" 文字装飾を有効/無効にします。デフォルトでtrueです。
※dressをfalseにするとテキストがチラつくことがあります。
<reserve> 非HTML。装飾予約。予約後に登場するstringの内容をreplaceに置き換えます。
string=予約装飾対象文字列。
replace=装飾済み文字列。
※stringおよびreplaceでの「<」および「>」の記述は「&lt」、「&gt」で表す必要があります。
<data> 非HTML。外部プログラムからnefを呼んでいる場合に、外部プログラムに変数を渡します。
[2次構成タグ]
2次構成タグは1次構成タグである<p>タグの内部にある必要があります。テキストドキュメントもこの階層に記述されます。
<br> 改行を表します。通常<br/>の形で記述します。
<font> 文字装飾を指定します。以下のパラメータを持ちます。
face=フォントを指定します。"MS ゴシック"等といった形で指定してください。
pt=文字の大きさをポイントで指定します。非HTML。
color=テキストの色を指定します。"#ffeedd"等。
align="left"/"center"/"right" 文字の揃えを指定します。非HTML。
underline="true"/"false" 下線を付けます。非HTML。
bold="true"/"false" 太文字にします。非HTML。
italic="true"/"false" 斜体にします。非HTML。
<effect> 効果を指定します。非HTML。
screen=画面効果を指定します。
fadein 画面をフェードインします。
fadeout 画面をフェードアウトします。
closein 画面中央から表示します。
closeout 画面周辺から消去します。
textbgxx xxの値にテキストの背景地の透明度を指定します(0〜100)。
この指定はページ切り替えの際にリセットされる場合があります。
(現行では0および50がそれぞれデフォルトのp,imgの透明度であるため)
downup 現在の位置からスクロールして画像の下を表示したあと上を表示します。
y1=下端の縦座標(折り返し位置)
speed1=降下中の速度(1回の移動に対するピクセル数)
y2=上端の縦座標(停止位置)
speed2=上昇中の速度(1回の移動に対するピクセル数)
zoom 現在の位置、倍率から指定した位置、倍率へ推移します。
x=停止横座標
y=停止縦座標
z=停止倍率(パーセント指定)
speed=推移速度(何段階掛けて推移完了するかを指定。大きいほどゆっくりになる)
wait タグを挿入した位置で指定した条件でテキスト進行を停止させます。
count=指定した数の文字数表示と同じだけ停止します。
until="imgload" 画像が読み終わるまで停止します。
until="effectend" エフェクト終了まで停止します。
comexec=指定した内容を画像ファイル(swfで指定している場合のみ)のcomexec関数に渡します。
<textbox> テキストの表示位置等を指定します。非HTML。
width=テキストを表示する範囲の幅を指定します。
height=テキストを表示する範囲の高さを指定します。
x=テキストを表示する横位置を指定します。
y=テキストを表示する縦位置を指定します。
color=テキスト背景地の色を指定します。
border="true"/"false" テキストボックス枠の表示を切り替えます。
(枠はテキストボックスの種類によりますが現行標準では白実線です)
textbg=テキストの背景地の透明度を指定します(0〜100)。
この指定はページ切り替えの際にリセットされる場合があります。
(現行では0および50がそれぞれデフォルトのp,imgの透明度であるため)
こちらの指定ではページ切替時に変化します(そのうち統一されるかも)。
textsize=デフォルトに対する文字の大きさをパーセントで表します。
文字単位ではなく、テキストボックス内すべての文字に有効です。
docspeed=ドキュメントの表示速度を指定します。単位はミリ秒です。
ただし<command>タグでdressを無効にしているときだけ有効です。
標準では30fps、1秒に30文字を表示しようとしますが(CPUパワーに依存)、
この速度をミリ秒で指定できます(CPU負荷の軽減が可能です)。
この指定は30fpsの精度で実行され、1以下の値は意味を持ちません。
<imgbox> 画像の表示位置等を指定します。非HTML。
width=画像を表示する範囲の幅を指定します。
height=画像を表示する範囲の高さを指定します。
x=画像を表示する横位置を指定します。
y=画像を表示する縦位置を指定します。
xscale=画像の横倍率を%で指定します。
yscale=画像の縦倍率を%で指定します。
xoffset=オフセット横座標。イメージボックスの左上の点を画像内のどこに合わせるかを指定。
yoffset=オフセット縦座標。 〃 。
<a> ページジャンプ、およびページジャンプ用のしおりを設定します。
ページ内に複数のジャンプ指定を記述するとマウスクリックによる選択肢になります。
ページ内にジャンプ指定が唯一の場合、タグ内の文字列は表示されず、ページをめくる動作でジャンプを行います。
href=ジャンプ先の指定。
ファイル名を指定すると指定ファイル(XML)を先頭から読み込みます。
#○○と記述すると現在のファイル内から○○のしおりを探してジャンプします。
ファイル名#○○と記述すると指定ファイル内の○○のしおりにジャンプします。
name=しおりの名前 このしおりを挟んであるページにジャンプするときに使います。
※name用途で<a>タグを用いる場合は<p>タグ内部に限らずに記述できます。
<setvar> 変数に値を代入、或いは値の変更を行います。非HTML。
name=変数名
value=代入する値。省略すると値は維持されます。新規/維持のいずれかに対し、以下の演算が適用され代入されます。
add=指定した数値を加算します。
sub=指定した数値を減算します。
mul=指定した数値を乗算します。
div=指定した数値を除算します。
power=指定した数値でべき乗します。
sqrt=数値の指定に関わらず平方根をとります。
<getvar> 変数の値を文中に書き出します。非HTML。
name=変数名
<if> 変数の値が指定の条件を満たさない場合はタグ内を無視します。非HTML。
var=変数名
eq=指定した値と変数の値が等価である
lt=指定した値より変数の値が小さい
gt=指定した値より変数の値が大きい
le=変数の値が指定した値以下である
ge=変数の値が指定した値以上である
not=指定した値と変数の値が異なる
■Tips
[テキストサイズについて:標準の文字サイズを変更するには?]
標準の文字サイズは<textbox>タグのtextsize属性で変更することができます。
ちなみにデフォルトでは文字は画面全体に大きく表示されるようになっていて、swfのサイズが640x480ピクセル
のとき、文字サイズは28ポイントです。
[背景合成、JPEGをマスク処理することは?]
できません。Flashで読み込める画像ファイルはJPEGとSWFのみです。JPEGは矩形であるため、
SWF以外でマスクデータを作成することができず、それなら最初からSWFでマスク処理された画像を用いるべきです。
残る選択肢はテキストデータでマスクを指定することですが、これもそのデータ作成側の手間・精度を考えると
あまり良い選択肢でない感じがします。
当面FlashがPNGなどに対応するか、マスク処理したSWFの出力の出来るツールの登場を待つことにします。
勿論現在でもmacromediaFlashMXを用いればマスク処理した画像データを作成・使用することができます。
そういうわけで、持ってない方はADVタイプのゲームを作るときに不便を感じるかもしれません。
#なお、これとは別にシーンチェンジエフェクトや画像先読みのためにレイヤーを準備する予定です。
[連続でエフェクトを行いたい]
<effect>タグを並列させただけでは、エフェクトは最後のタグしか有効になりません。
これはエフェクト実行時をテキストとの相対で管理しているためで(その代わりエフェクトが
入っても文字表示には時間的に影響しない)、間に文字の無い<effect>タグ並列は同時に実行される
ために最後のエフェクトのみが実行されるということになります。
これを解決するために、連続した<effect>タグの間には全角スペースで構わないので文字を挿入して
ください(半角スペースは無視されます)。
そして、<effect screen="wait" until="effectend"/>をエフェクトの始まるよりも前に記述しておけば
エフェクトは連続で実行されます。
[CPU負荷を軽減させたい]
Nefは30fpsで実行され、1秒に30文字の速度で記述し、その度にテキストボックス内の文字に対して
装飾(太文字、リンク、文字サイズなど)を行うため、CPU負荷が非常に高くなります。
#フレームレートを高速にしている理由は、背景でSWFを用いた場合に30fpsのアニメを実現できる
#ようにしているためです。また、各フレームごとに装飾を再定義しないと装飾文字が崩れる原因
#になることがわかっています。
この問題を解決するには1ページ内の文字装飾を多用しないことです。また、文字装飾の全く無い
ページでは<command dress="false">として、<textbox>タグのdocspeed属性を使用する方法があります。
背景でアニメーションを行っている場合などCPUに負荷が大きくなる場面ではこれを利用するのが有効です。
また<reserve>タグによる装飾も普通に装飾を行うのと同様、ページ内で対象が増えればCPU負荷は大きくなります。
#装飾によるCPU負荷に関してはプログラム側での解決も模索を続けたいと思います。
[自作のFlash作品からNefを利用したい]
自作のFlash作品上にNefを外部ファイルとして組み込むことができます。
まずFlash内にnefを読み込むためのムービークリップを作ります、そのインスタンス名がnefの場合、
nef.loadMovie("nef.swf");
をムービークリップのある階層で実行すればNefを読み込むことができます。
あとはNefとのデータのやりとりのために_rootに以下の関数を作ります。
function nefDocument()
Nefが表示するXMLファイルの指定をするルーチン。
function nefgPath()
Nefのデフォルトパス以外に画像を置きたい場合にそのパスを指定するルーチン。
B2ではこれを使ってB2で使用している画像をNefと共有して、swf画像を用いた場合の操作を統合している。
そういった用途が無い場合は不要。
function nefloadData(a)
Nef経由でXMLからデータを受け取るためのルーチン。
<data>タグで指定された内容をオブジェクト形式で受け取る。
例えば<data hensuu="123">というデータを受け取ったとき、この関数が呼ばれ、
関数内のa.hensuuの値は"123"になる。
現アイソトニクスのメニューでは日付データはXML内にあり、Nef経由でこれを親のswfが受け取って表示している。
実際の記述は以下のようになります。
function nefDocument(){
return "sample.dat";//Nefドキュメントの指定
}
function nefgPath(){
// return;//もし画像のパスが親flash内にある場合はそのパス。通常不要。
}
function nefloadData(a){
親flash内での変数名=a.xxx;//nefのdataタグで<data xxx="〜〜"/>と
//記述してある場合、これで親に渡される。
//nefドキュメントから特にデータを受け取らない
//場合(通常)は不要。
}
■免責および著作権表示
本ツールおよびゲームを使用することで生じたいかなる損害についても
アイソトニクス および にー(NIX)は責任を負いかねますので、
ご使用の際は使用者の責任で行ってください。
同梱された全てのファイルについて著作権は にー(NIX)にあります。
[予め許可されていること]
・無償の場合
同梱されるファイルの改変を伴わない再配布につきましては、
nef.swf、および本ツールを用いて作成されたデータ(作成したデータおよび改変したnefTemplate.html)
ともにご自由に配布して頂く事ができます。
・有償でも可能なケース
この際、nef.swfと作成されたデータのセットでの配布の場合は、
有償無償に関わらずご自由に行うことができます。
[許可無しに行えないこと]
データを伴わずnef.swfを対価を伴って配布する場合は事前に許可が必要です。
nef.swfの改変を伴う再配布は著作者の許可が無い限り行えません。
■改定履歴
1.01 -2003.01.04
・正式公開用初版。
■補足
さて、エフェクトの汎用化が大体完了しました(レイヤーや画像マスクに対するエフェクトが実装される段階で
もう一度見直すことになると思いますけど)。これで外部からエフェクト用swfを読み込んで使用する準備が
整ったりしたわけですけど、なにぶんswfなんでセキュリティ的に怖い部分がありますね。実際にもしフリーで
エフェクト用swfを公開してくれる方がいるとしたらソース添付のもと…という形がいいかもしれないなぁ、
なんて思ったりしました。
さて、次のver1.03ではいよいよ外部音ファイル読み込みを実装して、一通りの完成を目指したいですね。
一通りというと操作バーも作らないとダメですか。一時停止とか履歴バックと選択肢までスキップあたりですか。
外部豪華装飾短文用プラグイン(?)実装もしたいですね。変数も強化ですか?ツリーはまたそのうちということで。
さて、そんな感じで。