TOP > MODの作り方 > シナリオ(ステージファイル)について

シナリオ(ステージファイル)について
ステージの内容を定義するファイルを用意できます。
設定ファイルは以下の条件を満たす必要があります。
・フォーマットは UTF-8。


シナリオ(ステージファイル)には1行につき一つのイベントを記述します。
各イベントは、基本的に以下の書式です(実行制御系の一部を除く)。
 [命令], パラメータ1, パラメータ2, ...
パラメータの個数は可変で、変数が使用できます。
変数名の先頭は以下のいずれかの記号にします(作法)。
先頭の記号によって役割が異なります。
記号説明
$セーブされるデータ。
#セーブされないデータ。
%一時データ。ステージ開始時に初期化される。

実行制御系
マテリアル変更系
マップ・ギミック系
エフェクト系
その他の表示制御系

実行制御系
命令 意味
//
コメント行

行の先頭にダブルスラッシュを記述するとその行は
明示的なコメント行になります(作法)。
明示しなくても、イベントとして意味を持たない行は
エラーにならずただ無視されます。たとえば空白行。
[State],
 strKey,
 strValue
変数代入,
 変数名,
 値
@マクロ名 マクロの挿入。マクロは挿入位置に展開されます。
:ラベル名:
ラベル

[Jump]などを行うと、この行以降を実行します。
ラベル名は前後に":"(コロン)をつけます(作法)。
:Break イベント実行の停止。
:Jump,
   strLabel
ラベル行へのジャンプ
 ラベル名
:JumpIfState,
 strLabel,
 strKey,
 strvalue
ラベル行への ==条件ジャンプ
 ラベル名
 変数名
 値
:JumpIfNotState,
 strLabel,
 strKey,
 strvalue
ラベル行への !=条件ジャンプ
 ラベル名
 変数名
 値
:JumpIfStateFloat,
 strLabel,
 strKey,
 strCompare,
 fvalue
ラベル行への実数条件ジャンプ
 ラベル名
 変数名
 条件("!=", "==", "<", "<=", ">", ">=")
 値
[StageComplete],
 strNextStage
ステージ終了要求
 次のステージのステージ変数(省略可)

特殊なステージ変数
 "title":タイトルへ
[WaitHitAnyKey]
タップ入力待ち
[WaitReleaseAllKey]
全ての指が離れるの待ち
[TimeWait],
 fTimeSpan,
 bHitAnyKey
時間経過待ち,
 待ち時間(秒),
 タップ入力で解除するか(True:する、False:しない)
[UserInput],
 bUserInput
プレイヤ操作可不可設定,
 操作可不可(True:可、False:不可)
[StateOffCount],
 strFurnitureName,
 strKey
状態がOFFのギミック数を集計(特定の名前),
 ギミック名,
 ギミック数を格納する変数名
[StateOffTypeCount],
 strFurnitureType,
 strKey
状態がOFFのギミック数を集計(特定の種類),
 ギミック種類,
 ギミック数を格納する変数名
[LoadingAnimation],
 bLoadingAnimation
待ち時間のためのアニメーション表示,
  表示有無(True:表示、False:非表示)
  
[Model]など時間のかかる処理をする時に、
くるくる回るアニメーションを表示させます。
[DataSave]
状態のファイル保存
  
先頭に$のついた変数をsavedata.txtに書き出します。

マテリアル変更系
命令 意味
[Texture],
 strName,
 strFileName
テクスチャ差し換え,
 テクスチャ名,
 テクスチャファイル名

システム内部定義のテクスチャ名
テクスチャ名 意味
"font"文字フォント
"perticle"パーティクル
"solid_black"汎用黒
"sky"背景
"player"プレイヤー
"furniture"地形
"block"移動可能ブロック
"title_wall"タイトル画面
"title_icon_ring"タイトル画面 表示部品
"title_logo"タイトル画面 表示部品
"title_signature"タイトル画面 表示部品
"menu_wall"タイトルメニュー画面
"menu_item"タイトルメニュー画面 メニュー項目
"indicator_wall"インジケータ背景
"text_wall"テキスト背景
"InstantMessage"ステージ名称表示背景
"char1"バストアップ1
"char2"バストアップ2
[Sound],
 strName,
 strFileName
サウンド差し換え,
 サウンド名,
 サウンドファイル名

システム内部定義のサウンド名
サウンド名 意味
"title"タイトル画面BGM
"button_on"一時停止ボタン押下
"button_title"中断ボタン押下
"button_restart"リトライボタン押下
"bang"破裂音(未使用)
"sw_on"スイッチON
"sw_off"スイッチOFF
"gate_open"円環稼働開始
"gate_active"円環稼働中
"gate_enter"円環稼働進入
"voice_groan"プレイヤー死亡時のうめき
"stage_open"ステージ開始
"menu_apply"メニュー項目確定
"player_walk"プレイヤーの足音
"player_stamp"プレイヤーの移動開始擦過音
"player_slide"ブロックを押す音
"demo_open"ゲーム内デモ開始
"demo_close"ゲーム内デモ終了
"display_message"メッセージ読み進み音
[Model],
 strName,
 strFileName,
 fModelSize
モデル差し換え,
 モデル名,
 モデルファイル名,
 スケール(1.0:等倍 省略可)

システム内部定義のモデル名
モデル名 意味
"block"移動可能ブロック
"gate"円環
"downsw"床スイッチ
"firecolumn"炎の出る床
"floor0"〜"floor3"地形生成用
"wall_0"〜"wall_z"地形生成用
"edge_1"〜"edge_5"地形生成用
"player"プレイヤー。
[EntityCustomParts]の項に示すパーツを内包しています。

ただし、"player"の大きさを変えたい時は[Model]のスケール指定で拡大するのではなく、
[EntityScale]を使用すべきです。
読み込み済みのモーションと、モデルの大きさが乖離するのを避けるために。
[LightPos],
 fLightX,
 fLightY,
 fLightZ
照明方向,
 X
 Y
 Z

ノーマライズされるので適当に値を入れてよい。
[LightColor],
 fLightColorR,
 fLightColorG,
 fLightColorB
照明色,
 R(0.0〜1.0),
 G(0.0〜1.0),
 B(0.0〜1.0)
[LightAmbient],
 fLightAmbientR,
 fLightAmbientG,
 fLightAmbientB
照明に影響する環境色,
 R(0.0〜1.0),
 G(0.0〜1.0),
 B(0.0〜1.0)
[Diffuse],
 fDiffuseR,
 fDiffuseG,
 fDiffuseB
拡散色,
 R(0.0〜1.0),
 G(0.0〜1.0),
 B(0.0〜1.0)
[Ambient],
 fAmbientR,
 fAmbientG,
 fAmbientB
環境色,
 R(0.0〜1.0),
 G(0.0〜1.0),
 B(0.0〜1.0)
[Fog],
 strDistMin,
 strDistMax,
 fR,
 fG,
 fB,
 fA
フォグ設定,
 最短距離,
 最長距離,
 色R,
 色G,
 色B,
 色A

マップ・ギミック系
命令 意味
[Map],
 strMap
マップ定義,
 マップ定義文字列

マップ定義は複数行の文字列でマトリクスを描く。
各行の長さは異なっても良い。
文字 意味
@プレイヤー開始位置
!
?毒霧
#
.空き
(スペース)
[MapGenerate],
 bEdgeBounds
マップ生成,
 マップ端自動生成処理(True:する、False:しない)

[MapGenerate]より前に全ての[Map]を行うこと。
[Gimmick],
 strType,
 strName,
 strModelName,
 strTextureName,
 strFunctionName,
 strMapChar,
 fWidth,
 fRotateY,
 iCollision
ギミックの配置,
 ギミック種類,
 任意の名前,
 モデル名
 テクスチャ名
 イベント名
 マップ上の文字
 あたり判定幅
 Y軸回転角度
 あたり判定種類

ギミック種類について
ギミック種類 意味と状態
"Block"移動可能なブロック
"FireColumn"吹き上げる炎
 "on" 炎を吹き上げる。触れると死ぬ。
 "alive" 何か少し立ち昇っている。通れる。
 "off" 完全に停止。
"Mist"毒霧
 "on" 霧を吹き上げる。触れると死ぬ。
 "off" 完全に停止。
"Gate"円環
 "open" 稼働中。
 "enter" 表示のみ稼働中。
 "close" 停止中。
"DownSW"床スイッチ
 "on" 押された状態。
 "alive" OFF状態。何か少し立ち昇っている。
 "off" OFF状態。
"NPC"NPC
"Item"アイテム
"Wall"
"Area"エリア
"Fence"
 "on" 出た状態。
 "alive" 引っ込んだ状態。何か少し立ち昇っている。
 "off" 引っ込んだ状態。
"on"と"open"は同義。"alive"と"enter"も同義。"off"と"close"も同義。
どちらを書いても受け付けます。

名前について
イベントから操作するために、ギミックには任意の名前を付けられます。
ギミックは、つけた名前に%を冠した変数で状態が管理されます。
例えば円環を"gate"という名前で配置し、
"%gate"変数に"open"という値を入れると
円環"gate"は稼働状態になります。

イベント名について
ギミック種類によって、特定のアクションでイベントを発動できます。
イベント、とはシナリオ(ステージファイル)に記述したラベルへのジャンプのことです。
イベント名はラベル名です。
ギミック種類 イベントのおこるアクション
"Block"なし
"FireColumn"なし
"Mist"なし
"Gate"稼働中、プレイヤーが進入したとき
"DownSW"ブロックが載ったとき
"NPC"近くでアクションボタンを押したとき
"Item"接触したとき
"Wall"なし
"Area"接触したとき
"Fence"なし

マップ上の文字について
ギミックを配置するマップ上の位置を特定するために
あらかじめ[Map]でステージ内に任意の文字を置いておきます。
ギミック用に使用できる文字は0〜9、a〜z、A〜Zです。
このうち0〜9、a〜zは同じ位置に普通の床が生成されます。
床を作らずにギミックだけを置きたい(床の形のギミック)場合は
A〜Zを使用してください。

あたり判定種類について
あたり判定は以下の値を足して行います。
値は二進数でも記述可能です。
例: 0 → 0b0000 あたり判定なし
例: 1 → 0b0001 前面のみ
例:15 → 0b1111 全面。箱状のあたり判定。
あたり判定 意味
1前面
2左面
4後面
8右面
[FurnitureRotateToObject],
 strSrcObjName,
 strDstObjName,
 fTimeSpan
ギミックの回転,
 回転対象のギミック名,
 向く先のギミック名、または"player"
 回転速さ(1.0=180度/秒)
[BackLight],
 strFurniture,
 idxTexture,
 fScale,
 fX,
 fY,
 fZ,
 fR,
 fG,
 fB,
 fA
ギミックにバックライトを付加する,
 ギミック名,
 バックライトのパーティクル番号,
 大きさ,
 オフセット座標X,
 オフセット座標Y,
 オフセット座標Z,
 色R,
 色G,
 色B,
 色A
[BaseColor],
 strFurniture,
 fR,
 fG,
 fB,
 fA
ギミックの基本表示色を設定,
 ギミック名,
 色R,
 色G,
 色B,
 色A
[FadeColor],
 strFurniture,
 fR,
 fG,
 fB,
 fA
ギミックの消え行く表示色を設定,
 ギミック名,
 色R,
 色G,
 色B,
 色A
[Visible],
 strObjName,
 bVisible
ギミックの表示有無制御,
 ギミック名,
 表示有無(True:表示、False:非表示)
[EntityCustomParts],
 strEntity,
 strSrcModel,
 strCustomModel,
 strTextureName,
 vModelOffset.x,
 vModelOffset.y,
 vModelOffset.z,
 vModelSize.x,
 vModelSize.y,
 vModelSize.z
パーツのモデル差し替え,
 Entity名("player"),
 元モデル名,
 差し替えモデル名,
 テクスチャ名,
 座標オフセットX(Enitity相対。省略可),
 座標オフセットY(Enitity相対。省略可),
 座標オフセットZ(Enitity相対。省略可),
 モデルのスケールX(省略可 1.0:標準),
 モデルのスケールY(省略可 1.0:標準),
 モデルのスケールZ(省略可 1.0:標準)

Entity名について
Jehanneシステムにおいて、オブジェクトは2種類に分類されます。
>Furniture...地形として配置される単モデルのオブジェクト。ギミック。
>Entity...モーションつきモデルで自律的に動き回るオブジェクト。
iJehanneにおいてEntityは"player"のみです。

Entityはステージ開始時に生成されるので、
結果的にパーツ差し換え状態もステージ開始時に初期化されます。
恒常的にパーツがさし変わった状態にするためには、
ステージ開始時([MapGenerate]以後)に忘れずパーツ差し替えを行う必要があります。

元モデル名について
モーション付きモデルは複数のパーツで構成されているため、個々のパーツは
 "モデル名:パーツ名"
の形式で表されます。
playerの頭部パーツの例:"player:head_PM2" 。
"player"が内包するパーツは以下のとおり。
躯幹 "player:head_PM2"
"player:neck_PM2"
"player:heart_PM2"
"player:body_PM2"
"player:waist_PM2"
左腕 "player:shoulder_left_PM2"
"player:upperarm_left_PM2"
"player:elbow_left_PM2"
"player:underarm_left_PM2"
"player:hand_left_PM2"
右腕 "player:shoulder_right_PM2"
"player:upperarm_right_PM2"
"player:elbow_right_PM2"
"player:underarm_right_PM2"
"player:hand_right_PM2"
左脚 "player:thigh_left_PM2"
"player:knee_left_PM2"
"player:shin_left_PM2"
"player:toe_left_PM2"
右脚 "player:thigh_right_PM2"
"player:knee_right_PM2"
"player:shin_right_PM2"
"player:toe_right_PM2"

差し替えモデルについて
名前付け規則は元モデル名と同様です。
パーツのテクスチャだけを差し換えたい場合、元モデル名と同じものを指定します。
全く新しいモデルを作って差し換える場合、
個々のパーツ位置(ボーンのジョイント)は元モデルと同じであるのが望ましいです。
位置の異なるパーツあるいは単品のモデルを適用するには、
座標オフセットを指定する必要があります。
差し換えモデル名を""(空文字列)にすると、パーツは非表示になります。
[EntityCustomPartsReset],
 strEntity
パーツ差し換え状態の初期化,
 Entity名
[EntityScale],
 strEntity,
 fScale
Entityのスケール指定,
 Entity名,
 スケール(1.0:標準)

エフェクト系
命令 意味
[SoundPlay],
 strSoundName
サウンド発声,
 サウンド名
 
サウンド名はファイル名と異なることに注意。
[BGMPlay],
 strSoundName
BGM開始,
 サウンド名
 
サウンド名はファイル名と異なることに注意。
[BGMStop],
 fFadeSpan
BGM停止,
 フェイドアウト時間(秒)
[Effect],
 strObjName,
 vOffsetX,
 vOffsetY,
 vOffsetZ,
 strEffectName,
 fScale,
 fR,
 fG,
 fB,
 fA,
 fTimeSpan,
 idxTexture
エフェクトの表示要求,
 基準座標にするギミック名または"player",
 座標オフセットX(ギミック相対 メートル),
 座標オフセットY(ギミック相対 メートル),
 座標オフセットZ(ギミック相対 メートル),
 エフェクト種類,
 大きさ,
 色R,
 色G,
 色B,
 色A,
 表示時間,
 パーティクル番号(省略可能)

エフェクト種類 意味
"Spark"プレイヤーの消える時の光
"Diffuse"扉が消える時の煙

その他の表示制御系
命令 意味
[Camera],
 strEyeObjName,
 vEyeOffsetX,
 vEyeOffsetY,
 vEyeOffsetZ,
 strLookAtObjName,
 vLookAtOffsetX,
 vLookAtOffsetY,
 vLookAtOffsetZ,
 fTargetEyeSpeed,
 fTargetLookAtSpeed
カメラ移動指示,
 視点基準にするギミック名または"player",
 視点のオフセットX(ギミック相対 メートル),
 視点のオフセットY(ギミック相対 メートル),
 視点のオフセットZ(ギミック相対 メートル),
 注視点基準にするギミック名または"player",
 注視点のオフセットX(ギミック相対 メートル),
 注視点のオフセットY(ギミック相対 メートル),
 注視点のオフセットZ(ギミック相対 メートル),
 視点移動速度(おおよそ到達に要する秒 省略可能),
 注視点移動速度(おおよそ到達に要する秒 省略可能)
[CameraApply] カメラ強制移動

[Camera]で指定した目的地へ瞬時に配置する。
[TextFont],
 strFontName,
 iSize
テキストフォント設定,
 フォント名称,
 フォントサイズ
[TextColor],
 fTextColorR,
 fTextColorG,
 fTextColorB,
 fTextColorA
テキスト色,
 R(0.0〜1.0),
 G(0.0〜1.0),
 B(0.0〜1.0),
 A(0.0〜1.0)
[TextClear]
テキスト消去
[TextDraw],
 fX,
 fY,
 fWidth,
 fHeight,
 strText
テキスト描画,
 横位置(画面に対し 0.0〜1.0),
 縦位置(画面に対し 0.0〜1.0),
 描画矩形幅(画面に対し 0.0〜1.0),
 描画矩形高さ(画面に対し 0.0〜1.0),
 描画テキスト

テキストには [] (半角角括弧)で括って変数を記述できる。
(変数が|(パイプ)で連結された文字列であるとき、部分文字列のいずれかをランダムに採用する。)
\nを記述すると改行できる。
{}(半角中括弧)で括った文字列はその位置直上にルビ表示する。
ルビの先頭に -(半角マイナス)を記述すると一文字前の直上にルビ表示する。
[TextDraw_xx], 〜
特定の言語のためのテキスト描画。
書式は[TextDraw]におなじ。
xx は言語種類の指定子。
指定子についてはsetting.txtの #Languagez を参照。
[Text],
 strText
テキスト描画(入力待ちあり),
 描画テキスト

テキストを全て消去した後、所定の矩形内に描画する。
描画後、入力待ちを行う。
テキストの書式は[TextDraw]に同じ。
[Text_xx], 〜
特定の言語のためのテキスト描画(入力待ちあり)。
書式は[Text]におなじ。
xx は言語種類の指定子。
指定子についてはsetting.txtの #Languagez を参照。
[TextWall],
 bVisible
 fAlpha
テキスト背景の表示制御,
 表示有無(True:表示、False:非表示),
 透明度(0.0〜1.0 省略可)
[VisibleController],
 bVisible
コントローラの表示制御,
 表示有無(True:表示、False:非表示)

表示に設定しても、設定画面でユーザにより
非表示設定とされていたら表示されない。
[VisibleActionButton],
 bVisible
アクションボタンの表示制御
 表示有無(True:表示、False:非表示)
[CharImageCleanup] バストアップ画像初期化
[CharImage],
 strCharImage,
 fCharSrcPos,
 bReverse
バストアップ画像設定,
 バストアップ画像のテクスチャ名,
 初期位置(正の値:右から、負の値:左から 省略可),
 反転指定(True:反転、False:正方向 省略可)

テクスチャ名はファイル名とは異なることに注意。
[Indicator],
 bVisible
インジケータの表示有無制御,
 表示有無(True:表示、False:非表示)
[Message],
 strMessage
イーズインするメッセージの表示,
 メッセージ文字列
[MessageClose]
メッセージのイーズアウト
[FadeIn],
 fTimeSpan
黒からフェイドインする,
 時間(秒)
[FadeOut],
 fTimeSpan
黒へフェイドアウトする,
 時間(秒)
[ModelDisplay],
 strName,
 strModel,
 strTexture
インジケータにアイテムを表示,
 任意のアイテム名,
 モデル名,
 テクスチャ名
[ModelDisplayRemove],
 strName
インジケータからアイテムを取り除く,
 アイテム名

Copyright (c) 2011 ToofectArts. All right reserved.