ローカルにDL&解凍して、「サンプルSTG(VER.0.02)」フォルダを
「ShootingGameBuilder/samples」フォルダに移動した上で
「サンプルSTG(VER.0.02).sbd」を起動して下さい。
(サンプルSEとBGMを使用しています)
●サンプルSTGのゲーム概要
・タイプの異なる3種の自機から選択
・タイマーが0になるとゲームクリア
・規定の時間内に沢山の敵を倒すとハイスコア
●ランキング機能の有効化
「メインステージ項目」から「タイトル項目」に戻す際
「制御.その他 タイトルへ遷移」を使用していましたが
「メインステージをALLクリア」(もしくはゲームオーバー)
がランキング保存条件の為
①「メインステージ枠」の一番下に「●終了」ステージを追加
②「●ステージクリア処理」の遷移先を「タイトル」から「●終了」に変更
③「●終了」ステージで「制御.ステージ遷移(指定なし)」を処理
の変更を加えました。
(「メインステージ枠」の一番下に登録されたステージをクリア時に
ALLクリア扱いになり、ランキングが保存されます)
●UI素材にフラグを追加
UI素材関連に「☑ゲーム外キャラ」フラグを追加しました。
「☑ゲーム外キャラ」フラグの効果
・メイン領域の外に配置が可能
・フリースクロールの影響を受けない
・画面振動やフェード処理等の影響を受けない
・表示優先が最も高い(ウインドウ枠よりも上)
・ウインドウ枠外に配置可能
●ランキング画面
・「ネームエントリー中か?」のフラグを利用して
ランキング保存時は左右の矢印とボタン入力機能をカット
・自機タイプ表記を「A~C」から「TYPE-A~C」に変更
今回の「サンプルSTG ver.0.02」では、自機の標準機能をなるべく使用せず
自前で自機の傾き・移動・攻撃を作成しています。
「プレイヤー編集」には沢山の設定項目があり
様々な攻撃パターンやパワーアップ方法などが簡単に設定可能な一方
想定外の処理は不得意と思われます。
例えば「デビルブレイド リブート」の場合
・集中ショット使用時のみ低速移動
・Bボタン単押し/長押しによる、ボム/ブーストの使い分け
・オプションによる操作方法のカスタム(チェンジ⇔ダイレクト 等)
等の要素を設定項目のみで作成するのは、恐らく不可能と思われます。
自機以外の要素でも
・背景の見た目を背景機能で作成していない
・敵の出現パターンに、ステージの時間軸配置を使用していない
・UI表示にレイアウト機能を使用していない
等々、本来の用途とは異なる作り方をしています。
「自機に限らず、使える標準機能は活用しつつ
標準機能では実現が難しそうな要素は自前スクリプトで何とかする」
(時にはStgBuilderの「仕様」を逆手に取る)
という「気づき」を得るきっかけ作りが、今回のサンプルの作成意図になります。
(設定項目を使った自機作成は「demo」の方が参考になると思います)
※速度優先で作った為、一部メモ(説明)にミス、不備があるかも
しれませんが、大目に見て下さい。
(最終的にゲームがちゃんと動けば問題ナシ)
使用するキャラクタやスクリプトが増えてくると
リストの中から目的のものを探すのが大変になります。
その際「カテゴリ」機能が役に立ちます。
「カテゴリ」横の「検索」機能を含めて活用しましょう。
例)
自機関連のキャラクタ編集(スクリプト編集)→カテゴリ編集
「ユーザー領域」に「自機カテゴリ」を作成して、☑を追加
カテゴリが「☑ALL」の時は全ての素材が表示されるが
カテゴリを「☑自機」に絞ると、自機素材のみ表示されるようになる
(「■■■」は、カテゴリの区分けに使用)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
※以下はサンプルSTGのソースを解析しつつ参照下さい
(大事な部分のみ解説しています。詳細はソースを確認下さい)
●メイン背景(背景)
・デビルブレイド同等、自機が左右に動いた際、
背景も左右に動く方式を採用したい場合に必要。
(メイン領域の幅が320に対して、実ゲーム画面の幅を360にする場合)
・チップサイズ×マップサイズで、幅が360になるよう調整する
●1~3面(ステージ)
・「背景優先設定」の一番下に「メイン背景」を設定
・メイン背景☑ ラップアラウンド☑ フリースクロール☑ に☑を入れる
・今回は描画不要なので、背景色を黒(0xFF000000)にする
(テクスチャが黒or透明の場合、設定不要)
・「スクロール速度」は、今回は爆発の移動方向として設定
●StgBuilderにおける自機の扱いについて
・メインステージに1体常時表示(「制御.消滅」は使用できない)
(オプション画面等、自機が不要なステージには「☑自機無効化」を使用する
・自機破壊時、表示OFF・画面外に移動等を使用して、表示上消えた事にする
●自機A~C(コンセプト)
A=標準
B=移動速度が速く、集中攻撃に特化
C=移動速度が遅く、ワイド攻撃に特化
●自機A~C(プレイヤー)
・本体設定→パターン設定→パターン番号
自機の傾きパターンを登録する項目 処理を自作する場合は未使用
・本体設定→移動速度設定
移動速度を登録する項目 処理を自作する場合は「0」
●自機A~C(キャラクタ)
☑自機自動アニメ禁止
傾きパターンを自作する場合は☑を入れる
☑自機コントロール
・プレイヤー編集で設定した移動速度で自機を操作する
・スクリーン外への移動を封じる
(死亡時・登場時はメイン領域外に移動しているので
スクリプト上でフラグ管理している)
●自機A~C(スクリプト)
(タスク1 初期設定)
・攻撃管理用キャラを子生成
1キャラあたりのタスク数には上限があるので
攻撃管理を分離する事でタスクを分散している
(今回のサンプルではタスクに余裕があるので、分離しなくても良い)
・シグナルを使って、攻撃可能状態を送信
(死亡~出現時・ステージクリア時など)
(タスク2 移動管理)
・上下左右の入力の組み合わせを数値化して、8方向の移動方向を指定
2の乗数を利用して、上=1 右=2 下=4 左=8 と定義
上+右は1+2=3 右+下は2+4=6 となる
・「移動.速度」を使って自機を移動させる
(タスク3 傾き管理)※傾きの多段階アニメを実装する方法
・右入力時→傾き計算+1 左入力時→傾き計算-1
傾き計算が0以外の時、1つづ0に戻す
傾き計算を-20~20で範囲設定
傾き計算の値をパターン用の数値に変換して、傾きパターンを指定する
●自機A~C(攻撃管理)(キャラクタ)
☑自動消滅しない
自機がメイン領域外にいる時、☑を入れないと消滅してしまうので注意
●自機A~C(攻撃管理)(スクリプト)
・攻撃可能時、ショットボタンで弾を発射
・「自機ショット数」を調べて、一定以下だった時に自機ショットを発射
(無尽蔵に撃ててもいい場合は不要)
●自機ショット(キャラクタ)
☑自動消滅しない
「自機ショット数」をカウントする場合
「消滅処理」をスクリプト側で設定する必要がある
●自機ショット(スクリプト)
・出現時に 自機ショット数+1
・消失時に 自機ショット数-1
(消失条件)
・画面外に出た場合(XY座標を調べて一定値を超えた時に判定)
・(タスク09 攻撃ヒット)敵に当たった場合
●爆発管理(スクリプト)
・自前で爆発表現をコントロールしたい場合は
設定→ゲーム設定→デフォルト設定 に「爆発」の項目は使用せず
敵破壊時に「●爆発管理」を発射するようにする
・PARAM値を使ってバリエーションを設定すると便利
(A=1(S) A=2(M) A=3(L))
●爆発(素材(キャラクタ)
☑背景に同期する
(本来は地上物を背景スクロールに同期させる時に使用するフラグ)
背景のスクロールに爆発が同期する場合は必要
(1面=下方向 2面=停止 3面=上方向に設定)
●爆発(素材(スクリプト)
(タスク1)時間で消失
パターンアニメ再生後に消失。時間の異なる2種をランダムで使用
パターンアニメはスプライトで登録したものを再生するだけでなく
直接パターン値を指定したり(自機の傾きのように)変数で管理する事も可能
●敵ジェネレーター(スクリプト)
・ステージの時間軸にキャラを配置せず、敵を発射するジェネレーターを
ステージに配置して、敵を出現させる事も可能
(デビルブレイドでは、ほぼ全ての敵をジェネレーターで設置しました)
・今回は敵の表示数を調べて、一定以下なら敵を発射するジェネレーターを作成
・3面では、20体に1体大型敵を出現させるようジェネレーターを作成
●敵01(スクリプト)
・敵ジェネレーターが発射する敵キャラ
・出現時に 敵の表示数+1
・消失時に 敵の表示数-1
(消失条件)
タイマーが0の時(タスク01)・破壊時(タスク11)
・キャラクタ編集画面のスコアは使用せず、変数で指定
(キャラクタ編集画面でスコアを設定した場合、タイマー0の時の自爆処理で
スコアが加算できないので、自前でスコア加算処理を設定)
●大型敵01(キャラクタ)
・Z値オフセット=1
(敵01と重なった時、大きい敵は下に表示された方が視認性が良い)
●大型敵01(スクリプト)
・敵01の6体分として計算
(大きい敵が出現中、敵の出現数を下げる為に設定)
・破壊時、少し余韻を残して爆発する演出を追加
●UI表示・システム(スクリプト)
・スコア・残機・残機アイコン・敵の総数 を表示
※残機アイコンを自機タイプに合わせて変更する
オプションでUI表示を変更する
等の場合、レイアウト機能を使わず自前で並べる必要がある
・(タスク01)セレクトボタン長押しでリセット処理
・(タスク02)ハイスコア保存処理
※表示ついでにシステム処理も兼用
●タイマー(スクリプト)
・フレーム数を「秒.コンマ秒」表示に変換して表示
(PARAM_Aを利用して、タイマー初期値を配置時に設定)
・タイマーが0の時、「ステージクリア変数」を「1」に書き換え
「●ステージクリア処理」を発射
●ステージクリア処理(スクリプト)
自機ショット数・敵の表示数・ステージクリア・敵の総数など
次のステージに持ち越してはいけないシステム変数を初期化する
(初期化を忘れると、ALLプレイ時にバグが発生する)
●宇宙01(キャラクタ)
・キャラクタ編集→エフェクトで、全項目に☑
・横分割数は未使用なので1 縦分割数を40に設定
・3面はラスターYの方式を「頂点変形」に設定(スクリプトは共用)
●宇宙01(スクリプト)
PARAM_Aを利用して、ステージ別にラスターやカラーを設定
●フォント01・フォント01(等間隔)(スプライト)
「フォント01」→ 「パターンリスト1」の横幅=4 その他=8
「フォント01(等間隔)」→ 全ての文字の横幅=8
< ON >< OFF > 等の表記をスペースで揃えたい時は「フォント01」
スコアの桁数表示などで位置を固定したい時は「フォント01(等間隔)」
等の使い分けが可能
※「文字列の中心を基準にする」を使用する場合
横幅=奇数ドットだと(中心が0.5ドットになり)表示が乱れる事がある為
横幅=偶数ドットにしておいた方が良いようです。
・パターンリスト65以降の余白に
ランキングに表示したい文字列(TYPE-A~C)の画像を作成
●レイアウト(ランキング)→配置済みパーツ(ランキング)→詳細設定
「自機タイプ」の数値は、初期値(65)では「A~C」と表示されるが
数値をずらす事(96)で任意の文字列が表示可能(仕様を逆手に取った表現)
※「65」と入力すると「A」と表示されるのは
「ASCIIコード」を使った指定と思われます。
その他、ランキングに任意の情報(変数)を表示したい場合
「付加情報」を使用します。
①ランキングの詳細設定で「付加情報A~C」に☑
②スクリプト「変数.ローカル(ランキング 付加情報A~C)」に任意の変数を指定
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~