アットウィキロゴ

スクリプト間共通データ一覧

このページの最終更新は10/03/16です

スクリプト間でやり取りできる共通データの一覧です。
共通データの追加・削除があった場合は必ず更新してください。

このページを更新した場合、「\ニコ弾幕プロジェクト\共通データ一覧.txt」も
同様に更新してください。(無い場合はこちらをDL)

スクリプト間共通データの一覧です。
共通データの追加・削除があった場合は必ず更新してください。
▼:共通データ空間名""に格納し、リプレイに保存するデータ つまりリプレイの再現に必須
▽:共通データ空間名"path"に格納し、外部ファイルに保存するデータ
★:通常プレイ時は外部ファイルから読み込み、リプレイ時はリプレイから読み込む、
  そして外部ファイルとリプレイの両方に保存しなければならないデータ
■:共通データ空間名"work"に格納するデータ 保存しない&リプレイに影響しない
  (リプレイ内で選択処理が再現可能な)作業用データ

■PlayerID

 型:real
 スクリプト内で自機選択を実現するための値です。
 0:未選択  タイトル及びメニュー画面では必ずこの値にすること
 1:霊夢+紫
 2:魔理沙+にとり
 3:早苗+諏訪子&神奈子
 4:咲夜+レミリア(Ex・Ph限定)

 0から各自機の値に変更するタイミングは、
 ステージが開始された瞬間です。

 自機動作を管理する部分で、PlayerIDの値を取得して、
 alternativeで自機ごとの動作を行うのが良いでしょう。

 値が0に変更された場合、自機側で起動したマイクロスレッドは
 全てreturnで終了させてください。
 オブジェクトの削除も忘れずに。

 ただし、自機撃墜中
 (自機側:OnMissed == true 敵側:OnPlayerMissed == true)
 に値を0にしないでください


■Difficulty

 型:real
 スタンダードステージでの難易度を示します
 0:Easy
 1:Normal
 2:Hard
 3:Lunatic

 難易度ごとに弾幕のスクリプトデータを用意しなくとも、
 Difficultyの値を取得して、値によって弾幕を変化させることが出来ます。

 例えば、難易度によって弾速が変化する場合は、

 let nanido = GetCommonDataDefault("Difficulty", 0);
 let speedA = [1, 2, 4, 7];
 Createshot01(x, y, speedA[nanido], angle, img, delay);

 といった実装が可能です。

 難易度による変更箇所が多い場合は、取得したDifficultyの値から、
 alternativeによる分岐を行うとよいでしょう。


▽EffectLevel

 型:real
 Optionで設定できるエフェクトのレベル設定です。
 0:全て無効。最も軽い設定
 1:
 2:
 3:フル描画(初期設定)

 この数値に応じて、ステージ・敵・弾スクリプト側でエフェクトの出現量を制限します。
 ただし、乱数が絡む場合は、EffectLevelの設定によってrand・rand_int関数の実行回数が
 変化しないように注意してください。(リプレイがずれる可能性があります。)

 ×悪い例
 let eLevel = GetCommonData("EffectLevel");
 if(EffectLevel > 1){RingEffect(x, y, rand(0, 360));}
 rand関数の実行回数が変わってしまいます。

 ○良い例
 let eLevel = GetCommonData("EffectLevel");
 let ran = rand(0, 360);
 if(EffectLevel > 1){RingEffect(x, y, ran);}
 rand関数の実行回数は、EffectLevelに関係なく常に一定です。


★PlayerStock

 型:real
 Optionで設定した初期残機数です。
 0:残機0 エクステンドしない限り1撃死
 1~7:開始時の残機を設定(初期値:2)

 リプレイを正しく再現するために、

 SaveCommonDataInReplayFile

 でリプレイデータに記録しなければなりません。
 リプレイ再現時は、Option設定ファイルではなく、リプレイに記録されたPlayerStockを

 LoadCommonDataFromReplayFile

 を用いてロードします。
 Optionメニューで残機数が変更された場合、Option設定保存後に、

 Retry;

 でスクリプトをリスタートする必要があります。


★ExtraFlag

 型:boolean
 Extraステージに挑戦できる状態かを記録します。
 リプレイを正しく再現するために、

 SaveCommonDataInReplayFile

 でリプレイデータに記録しなければなりません。
 リプレイ再現時は、Extra挑戦権を記録するファイルではなく、リプレイに記録されたExtraFlagを

 LoadCommonDataFromReplayFile

 を用いてロードします。


★PhantasmFlag

 型:boolean
 Phantasmステージに挑戦できる状態かを記録します。
 リプレイを正しく再現するために、

 SaveCommonDataInReplayFile

 でリプレイデータに記録しなければなりません。
 リプレイ再現時は、Extra挑戦権を記録するファイルではなく、リプレイに記録されたExtraFlagを

 LoadCommonDataFromReplayFile

 を用いてロードします。


■RootDir

 型:String
 コアスクリプトである「ニコ弾幕プロジェクト.txt」での

 GetCurrentScriptDirectory

 の返り値を記録する。
 コアスクリプトおよびコアスクリプトのインクルードされるスクリプトと、
 下のフォルダにある敵スクリプトではGetCurrentScriptDirectoryの値が変化するため、
 この共通データを読み込むことで、敵スクリプトからライブラリ・画像・効果音・BGM等の
 ファイルへのアクセスを行いやすくします。

 stage#フォルダ内にある、ステージ単体テスト用のスクリプトでは以下のようにしておきましょう
 let Csd = GetCurrentScriptDirectory;
 let root = GetCommonDataDefault("RootDir",Csd ~ "..\..\");


追加・変更 履歴

09/09/08 -->10/01/20加筆修正
SaveCommonDataInReplayFileEx LoadCommonDataFromReplayFileEx 関数は使用できないので、SaveCommonDataInReplayFile LoadCommonDataFromReplayFile 関数を使用します。
そのためリプレイに保存するデータは必ず""の共通空間に保存してください。弾幕風のSetCommonData関数やgetCommonData関数がこれに当たります。また、SetCommonDataEx("",)やGetCommonDataEx("",)など""の名前を指定して大丈夫といえば大丈夫です。
逆にリプレイに保存しない共通データはSaveCommonDataEx関数を用いて保存を行うため、共通空間名を新たに作成して作業を行います。--->10/01/20内容に続く

10/01/20
共通データ空間名ですが、恐らく大半の方はあまり気にしなくて大丈夫だとは思われますが、とりあえず役割を書かせて頂くと。
"" ・・・ 既定の空間で、最初から作成されています。 リプレイデータに持っていく共通データは必ずここに!
"path" ・・・ ゲーム起動時やゲーム終了時に外部ファイルに保存したり、逆に外部ファイルから読み込む共通データの空間です。EX挑戦可能フラグPH挑戦可能フラグ等、プレイ状況に応じて常に変化する共通データはここに格納します。(プレイ状況も保存や引継ぎが必要であればここです)
"work" ・・・ 保存を行わない共通データを格納する場所です。""がリプレイ用で使ってしまうので、作業用共通データはこの空間で管理しています。
統括すると、一番確実にデータを取得できるのは""の空間です。なので通常は気にしなくて大丈夫です。また、ステージスクリプトの方でも必要なデータは""と"path"空間の両方に設置します。

10/01/24
記述の更新を行いました。

タグ:

+ タグ編集
  • タグ:
最終更新:2010年03月16日 17:26