ローカルにDL&解凍して、「サンプルSTG(VER.0.10)」フォルダを
「ShootingGameBuilder/samples」フォルダに移動した上で
「サンプルSTG(VER.0.10).sbd」を起動して下さい。
(サンプルSEとBGMを使用しています)
※最低限、スコアアタック作品と呼べるものになったので、一旦完成とします
・自機の性能を調整 Bボタンで低速移動を追加(UI表示追加)
・スコアシステムを追加(早期破壊でスコア倍率アップ)
・大型敵にHPゲージを追加 敵02(ピンク色)の追加
・オートデモの追加
・視認性を考慮して、キャラクタの表示優先を調整
(倍率表示>敵弾>自機>敵02>敵01>大型敵>爆発)
・ランキング画面で、リプレイの存在しない項目で決定を押した際
フリーズしていたのを修正(バグ修正)
・敵の出現位置が完全ランダムだったのを半ランダムに調整
・自機の当たり判定を追加(オプションで切換可)
・インターフェイス情報量をオプションで変更可
・ゲームプレイ中、セレクトボタンを押した時「RESET」表記を追加
・アイコン・スプラッシュ画像(起動画面)を追加
●「①保存されるシステム変数」と「②コンフィグ変数(カスタム)」の違い
共に「保存される変数」という意味では同じですが
①はリプレイ再生時に再現される変数
②はリプレイ再生時に影響のない変数(コンフィグ用途)
という違いがあります。
コンフィグ変数(カスタム)は「0~9」で10種使用可能です。
(今回はオプション項目「自機の当たり判定」でコンフィグ変数を使用しました)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※以下はサンプルSTGのソースを解析しつつ参照下さい
(大事な部分のみ解説しています。詳細はソースを確認下さい)
●敵(継承スクリプト)(スクリプト)
(タスク10)防御ヒット
ショットが当たった時のSEと明滅
全ての敵キャラクタに「継承スクリプト」を登録する事で
共通のタスク(今回の場合、防御ヒット処理)を纏める事が可能
●敵(制御追加)(スクリプト)
・「敵の表示数」の書き換え
・「敵の総数」の書き換え
・スコア倍率カウント(時間経過で倍率ダウン)
・スコア倍率カウントの表示
・敵破壊時、倍率込でスコアに加算
の処理を担当。
敵キャラクタに「敵(制御追加)」を「子生成」
「制御.信号送信(シグナル)」を使って
「スコア・敵の数・カウント数・開始判定」を子に送信
全ての敵キャラクタに「敵(制御追加)」を「子生成」して
必要な情報をシグナル受送信する事で、共通の処理を纏める事が可能
●ゲージ01(スプライト)
今回は「UVスクロール」を使って
そのまま表示→HPゲージ100%
右方向にスクロール→HPゲージ現象(50ドットでHPゲージ0%)
となるよう画像を作成
(スケールを使う、パターンを使う等、HPゲージを表現する方法は複数あります)
●敵(HPゲージ)(キャラクタ)
☑色を親に同期しない
敵キャラ明滅時、HPゲージがつられて明滅しないようにする
☑親の描画優先に影響を与えない(カスタム編集→初期優先「上空」)
UIなので、HPゲージの表示優先を一番上(自機や弾より上)にする
●敵(HPゲージ)(スクリプト)
「大型敵」に「敵(HPゲージ)」を子生成
「最大HP」と「HP(毎フレーム)」を、子「敵(HPゲージ)」に送信
取得した最大HPとHPから、現在のHPの%を計算
現在のHPの%を元に、UVスクロールのU値を利用して表示
●敵02(スクリプト)
他の敵キャラと違い、画面外に逃げていくタイプの為
「(タスク02)消滅管理」を追加
●弾幕01(早→遅)(弾幕)
敵02の攻撃に使用
初弾の角度をキープしつつ、速度の異なる弾を連続で発射等
「攻撃.ショット」とは異なる設定で敵弾が作成可能
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●「オートデモ」について
StgBuilderの標準機能の中に「オートデモ」がある
(タイトルで●●秒間、放置するとデモ開始)
・「オートデモ」の使い方
ゲーム設定→オートデモ ☑オートデモを使用する(☑を入れる)
リプレイファイル「replay****.bin」を
sbdファイル(●●.sbd)直下に移動
「demo00.bin」にリネームすると、「オートデモ」として参照される
(連番で複数登録すると、順番に再生される)
今回のサンプルソースの場合
「タイトル画面」と「自機選択画面」を「タイトル」上で表示している為
標準機能をそのまま使うと「自機選択画面」でも「オートデモ」に遷移してしまう
「タイトル画面」のみで遷移させたい場合、スクリプトで遷移条件を自作する
・「オートデモ」の手動管理
ゲーム設定→オートデモ ☐オートデモを使用する(☑を外す)
(「デモ再生時間」はここで設定したものが使われる)
●タイトル画面(スクリプト)
(タスク01)オートデモ(キャンセル
・上下左右、決定キャンセルの入力があった場合、タスク02を再起動
(タスク02)オートデモ(遷移
・一定時間後、オートデモに遷移(再起動で時間リセット)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●アイコン・スプラッシュ用画像の登録(ついでにゲーム設定→システムの説明)
①②③⑤については上記の通り
④スプラッシュ画像=アプリ起動時に出る画像(未登録時はStgBuilderロゴ表示)
⑥⑦キャラクタの最大数を指定(最大10000)
表示されないと支障をきたすもの(システムやボスなど)は重要キャラクタ
表示されなくても支障がないもの(爆発エフェクト等)は通常キャラクタ
に(キャラクタ設定のフラグ管理で)分類しておくと安心
⑧BGM再生バッファサイズ
16384(最小)~65536(最大)
BGM再生時にゲームが一瞬止まる場合、数値を下げると解決するようです
(数値が高い方が同期ズレが発生しにくくなるようです)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●「システム変数」を読み取り、書き込みしているスクリプトを追跡する方法
・デバッグウインドウで、調べたい変数の上で右クリック
ウォッチポイント→読み取り・書き込み・両方 から選択
・タブを「ログ」に変更 ☑ログ有効 ☑ウォッチ有効
↑の画像の場合、「《システム03》自機セレクト数」を
「●●自機セレクト画面」の(タスク0)が、「0~2」の値に
書き換えている事が分かります。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●防御・攻撃の判定について
キャラクタ編集→メイン→種類の項目で
「自機」「敵(空中物)」「対空対地攻撃」等
使用したい種類が選択できます。これはプリセットの一種で
そのまま使用する事もできますが、「カスタム編集」を選択すると
「攻撃側」「防御側」(表示優先)の確認とカスタムが可能になり
自由に判定を組む事が出来ます。
例えば、プリセットを確認すると
「自機」 → 攻撃側 ☑アイテム
「アイテム」→ 防御側 ☑アイテム
となっており、
「自機」の攻撃判定で、「アイテム」にダメージを与える
仕組になっている事が分かります。
「敵弾(ノーマル)」 → 攻撃側 ☑自機
これは自機に対して攻撃判定がある事を示しており
「敵弾(ノーマル)」 → 防御側 ☑敵弾(ノーマル)
「ボンバー」 → 攻撃側 ☑敵弾(ノーマル)
「ボンバー」の攻撃判定で、「敵弾(ノーマル)」に
ダメージを与える仕組になっています。
例えば、作品によっては、自機のオプションが
敵弾を消したり消さなかったりしますが
「攻撃側」と「防御側」の判定の設定次第なので
思い通りの判定が発生しない場合は
「カスタム編集」で判定の☑を確認・調整してみましょう。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●処理負荷の軽減について
(スプライト編集)
・大量に表示されるオブジェクトは、パターンリスト上で
上下左右の余白をなるべくカットする事で、表示負荷を下げられる
・「☑当たり判定の細分化」は、回転させるオブジェクトに
当たり判定を追従させる為の機能なので、
「当たり判定が正方形のままで良い場合」
「キャラクターを回転させない場合」は☑を外した方が軽い
(キャラクタ編集)
・「☑描画を最適化」に☑を入れる事で
エフェクト等、一部機能は使えなくなるが負荷は下がる筈
(64bit版で仕様が少し変わったので要検証)
・エフェクト機能使用時、ラスター未使用の場合は分割数を「1×1」にする
ラスターX・Y片側のみ使用の場合、不要な方の分割数は「1」にする
・「物理演算」は処理が重いので、必要な所のみ使用する
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●エラーでSBDファイルが開けない時の対応法
・STEAM→StgBuilder→歯車マーク→プロパティ→ベータ
ベータの参加「なし→experimental」
ベータ版は常に新機能を試す事が出来ますが
ベータ版で保存したSBDファイルを安定板で開こうとすると
バージョンが下がる為、エラーメッセージが表示されます。
・StgBuilderの設定→エディタ設定
☑SBDファイルのバージョンチェックをしない
上記の設定でSBDファイルが開けるようになります。お試し下さい。
(※但しベータ版の新機能を使った箇所は欠損します)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
●制御.振動(スクリプト)
モーター0、モーター1に、各々0~100の強度が設定できます。
振動機能は他の機能とは違いシングルタスクなので
・時間差でモーター0を振動させた場合、重ならず上書きされる
(振動だけでなくフレーム数も上書きされる)
・モーター0とモーター1は別扱いなので重複可能
「振動用キャラ」を作成して、振動させたい時は、
「振動用キャラ」を発射すると、管理が楽そうです。
●編隊機能
敵の編隊を作る時に有用
敵ジェネレーター(敵を発射するキャラ)でも代用可能なので
得手不得手で使い分けると良さそう(デビルブレイドでは未使用)
●パス機能
敵をパス移動で有機的に動かしたい時に有用
直線移動は「直交座標」、曲線移動は「極座標」でも作成可能なので
用途に応じて使い分けると良さそう
パスの中でパス速度を設定する方法と
スクリプト内でパス速度を設定する方法の2種がある
(デビルブレイドでは1面ボスの曲線弾等で使用)
●その他機能
多関節・ブラー・物理演算など
他にも未使用の機能は沢山ありますが、
公式のサンプルデータなどを参考に、各自解析してみて下さい。