DJ R-techがFL studio でサイケやテクノを作る

主にテクノ、テック・ハウスを作成しています。名古屋を中心に活動しています。トラックメイカーが主ですがたまにDJ。クラブ・ミュージックに興味を持った方々のお役に立てるブログを運営しています。

会話シーン実装

 難関だった会話シーンの実装ができました。



 絵の出現タイミングは今後調整します。理想的には
  1. ゲーム中にボスキャラ出現
  2. 立ち絵出現
  3. 会話
  4. 立ち絵消滅
  5. 数秒待ってボス戦スタート
  6. ボス専用BGMプレイ 

 ゲームレイヤーと会話レイヤーの関係をどうするのかがなかなかわからず手間がかかりました。

 .掘璽鹽佻浸に全てのレイヤーを登録する。 ▲押璽爐凌聞堙戮上がった時点で会話レイヤーにオブジェクトを登録する。2駭辰終了したらオブジェクトを破棄する(会話レイヤーは破棄しない)。


 という手順を取りました。もっとおしゃれなコーディングはあるかもしれませんが原始的なものにしてあります。



 ついでにパワーアップを実装しました。パワー250ごとにショット数が増えます。またボムを使うとパワーが250減ります。東方風神録と同じ形式を採用しました。
 また、ステージ遷移も実装することができました。ステージごとにシーンを用意し、ステージをまたぐ変数をstatic化してあります。変数のstatic化はあまり推奨されないようでどうしようか悩みましたが、STGは程度ならstatic変数も少ないので問題無いでしょう。

 static化した変数
  • パワー
  • 残機
  • スコア
  
Altseedを使用しています
http://altseed.github.io/ 

Technical Shoot実装に向けて


 前回のポーズ絵にオブジェを追加しエフェクトを加えました。

AltirTS

 だいぶ攻撃っぽくなりましたね。


 次に攻撃時の特殊背景です。こちらはフォトショップの散布機能を使って簡単にできました。
AltirBack


 これらを合成します。




 ここまでできた時点で ”ついにここまできたか!” とワクワクしてきました。東方のように魅力的なキャラクターになると思います。さらにキャラクター固有のテーマ曲が加わるので一層キャラクターを立体的に感じ取れるはずです。


 まだ思った通りの動きになっていないので調整が必要です。
  • カットインがフェードアウトする時点でプレイヤーもフェードアウトしてしまう。
  • 消えたのにまた出てきてしまう。
  • カットイン効果音をつけたい。
  • 弾幕名をカットインしたい。

 素材を作ったけどコーディングしていないものが少々ありますのでそっちを片付けましょう。



Altseedを使用しています
http://altseed.github.io/
 

コミケ申し込みました

サクカC91

 急遽申し込みましたw出展するつもりはなかったのですが、ツイッターやフェイスブックでみなさんの楽しそうな姿を見ていたら行きたくなってしまいました。申し込みセットの頒布も終了していたのでもう無理かな―と思いましたが、ネットを駆使してなんとか登録を完了しました。登録料とシステム料で12000円かかってしまったのは痛いですがorz


 サークルカットも急ごしらえです。自主作成ゲームで出展するサークルのカットをみたことがないのでどう書けばいいのかもわかりません。最低限必要な情報と様式に合わせただけです。

 
 ただ、例大祭を経験しているので気が楽ですね。場所や当日の雰囲気、事前準備は把握しています。前回は人が来てくれるか、完成させることができるかという点が不安でした。今回は完成(多分できると思いますが)しなくても、できたところまでで体験版として頒布することもできますし、人が来る来ないかはたいして重要ではないです(CD-Rなので作成経費は1000円未満)。

 うーん、もちろん感想はほしいですが、どちらにせよ8作目までは構想があるのでどういわれようが作るでしょう。このTCストライカーズシリーズは陽の目を浴びるまでやるつもりです。
 


 コミケ自体に関する不安はありません。会場までの足、経費が気がかりです。



 また、申込時に
  • 前回、前々回の申込番号
  • 前回、前々回の頒布内容・成果
 を入力させられました。やはり、実績が抽選を左右するようです。自主作成ゲームは申込者のうち25%が落ちます。私は最も条件が悪いグループです。落ちる可能性の方が高いです。

 

TECNICAL SHOOT ポーズ絵

 ボス戦の段階のうち特別な攻撃をする段階を本作ではTechnical Shootと呼びます。ボスが趣向を凝らした弾攻撃という意味です。要はスペルカードです。その際の演出としてキャラクターカットイン、特殊背景を実装しようと考えています。要はスペルカードです。
 

 ということで1面ボス、アルティルの攻撃ポーズを描きました。AltirTS
 ・・・・・・

 ポーズは気に入ってるんですが、塗りがあんまりな・・・線画を太く漫画チックにしたのですが、それに濃い塗をしてしまうとあんまり合わないですね。 一作目はプロトタイプとして画風は統一せずにいろんな書き方になると思います。次は水彩画風に塗ってみます。


 おっと、パズドラ風にエフェクトを入れればいいのかも!

 
Altseedを使用しています
http://altseed.github.io/ 

HPタンクシステム実装

念願だったHPタンクシステムを実装しました。私が勝手にそう読んでいるだけですが(❀╹◡╹)

 
 現在のシューティングゲームではボスのHPに応じて攻撃パターンが変化するものがほとんどです。様々な言語のチュートリアルサイトでその実装方法が掲載されています。しかしその全て(私が見た中では)が初期HPに対する割合で変化させるものでした。

 初期HPの80%〜100%の間 攻撃パターン1
 初期HPの60%〜 80%の間 攻撃パターン2
 ・・・
・・・

 これが基本的な手法ですが、後から攻撃パターンの持続時間を変更したくなった時に全部の数値を替えなければいけません。


 なので、各段階ごとにHPが設定されており、その段階のHPが0になった時点で次の段階に移る、というシステムがどうしても欲しかったのです。大きな格納容器とそこに流し込む液体を保存するポリタンクのようなイメージです。

 
hptank


 まあ、東方と一緒ですけど・・・


段階を管理するために int phase 
HPを格納する変数として int hptank
段階ごとのHP int[ ]  hp    
 と3つ変数を用意しました。


  switch (phase)
            {
                case 1:
                    if (hp[phase] > 0)
                    {
                        hptank = hp[phase];
                        hp[phase] = 0;
                    }
                    else if (hptank <= 0) phase++;
                    break;

                case 2:
                    if (hp[phase] > 0)
                    {
                        hptank = hp[phase];
                        hp[phase] = 0;
                    }
                    else if (hptank <= 0) phase++;
                    break;

                case 3:
                    if (hp[phase] > 0)
                    {
                        hptank = hp[phase];
                        hp[phase] = 0;
                    }
                    else if (hptank <= 0) phase++;
                    break;

                case 4:
                    if (hp[phase] > 0)
                    {
                        hptank = hp[phase];
                        hp[phase] = 0;
                    }
                    else if (hptank <= 0) phase++;
                    break;

                case 5:
                    Engine.Sound.Play(SE.bossexplosion);
                    Dispose();
                    break;
            } 


 これによってHPの管理と段階ごとの攻撃パターンの管理をわけることができました。

 
 switch (phase)
            {
                case 1:
                   
                    break;

                case 2:
              
                    break;

                case 3:
                   
                    break;

                case 4:
                 
                    break;
            } 

 
 各段階ごとに攻撃パターンを記述すればOKです。このおかげでテキストがずいぶん見やすくなりました。視認性は開発スピードに大きく影響します。


Altseedを使用しています
http://altseed.github.io/