Project Anthem(TCストライカーズ)

ぷろじぇくとあんせむ公式サイトであり雑記ブログ。当サイトはリンクフリーです。

ゲーム開発

 念願のテクニカルシュート(TS)を実装しました。




 自画自賛ですがかっこいいですね。TS開始時のTSネーム、TSナンバーカットインが気に入ってます。両サイドから同タイミングで挿入するのが難しいです。いまのところ、ビルドを繰り返しながら合わせています。おそらく、計算すれば挿入時間を割り出せるのでしょうが。 


 またTSが始まるタイミングでボスが定位置に移動するようになりました。狙い弾の応用で定位置までのベクトルを算出しています。 また、移動方向によって表示する画像(ボスのドット)を替えています。

 void BOSS_MOVE()
        {
            if (Position.X > 380 || Position.X < 360 || Position.Y >= 210 || Position.Y < 190)
            {
                Vector2DF move = new Vector2DF();
                move = new Vector2DF(380, 200) - Position;
                move.Normalize();
                move.Length = 3;
                Position += move;
                if (Position.X < 370) Src = src[2];
                if (Position.X > 380) Src = src[3];
            }
            else Src = src[0];
        } 

 簡単そうだったのでトリだけはアニメーションにしました。

ErosedoriAnime



 10年以上ライブドアブログを使っていますが、初めてのGIF投稿です。

 
 EDGE2のアニメーション機能は使いやすいですね。昔のセル画のようにちょっと違う絵を描くのがとても簡単でした。オニオンスキン機能というのですが、面白いネーミングですね。 

 
 トリは羽の動きだけでそれなりに見えるので楽でしたが、人物になると髪のなびき方、服のひらひら感など不明なことが多すぎます。以前DLした東方ドットは移動時、静止時、ポーズ時それぞれに3枚ずつドット絵が用意されていました。本家東方プロジェクトはもっと使っているように思います。


 また、メインSLNが大きくなってきたので、ザコ敵のコーディングを別SLN(ザコSLN)で行うことにしました。ザコSLNは背景など不要な部分を削除し、ザコの挙動だけを残しました。こっちで書いたコードファイルをそのままコピーすることでメインSLNでも使えるようにします。 


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

AltirSet
 
 
 いやー、できました。ドット絵ソフトに触れたのも4ヶ月ぶりです。当時、相当苦労しながら描いたので”もうやりたくないなーと思ってました。あれから4ヶ月経て私がフォトショップに慣れたせいもあり割合使いこなせたと思います。
 
 とはいえやはり、アルファチャンネル非対応はつらいですね。アルファチャンネルを入れるためにフォトショップに移して作業をしなければいけないのですが、その場合EDGE2では背景を適当な色にして作業します。それをフォトショップで範囲選択しアルファチャンネル化するのですが、EDGE2は背景色を利用してアンチエイリアス処理をするんですね。そのため、範囲選択時に背景と別色であると認識されてしまい適切な範囲選択ができません。


  私自身、まだEDGE2を使いこなしていないため、この現象を回避する方法があるのかどうかまだ不明です。レイヤーを使えばなんとかなるのかな・・・。


 とにかく、これでボス移動時、攻撃時のドット絵ができました。今回はアニメーションを省きました。TCストライカーズ2ではアニメーションを実装し風が吹いている感じを出したいです。2はウィンディアが登場します。彼女の服や髪が風になびいている様子を是非とも表現したいのです。


 ボスに関して今後の作業
  • 通常、テクニカルシュート弾幕作成
  • 弾幕攻撃時のボス移動処理
  • 移動時の表示画像切り替え
 
 
Altseedを使用しています
http://altseed.github.io/ 



先日、Dr苫米地氏の音声ファイルを聞いていたところこんなことをおっしゃってました
 
 「抽象化ってのは、情報を減らすことね。港区(東京都)民っていうよりも東京都民の方が情報量すくないでしょ」 


 おっ、と耳が止まりました。今まで抽象化というと上位概念で捉えることと思っていました。もちろんそれで正解なのですが、抽象化の新たな面、というよりも抽象化の手続きを知ることができました。たしかに、概念を上げる時は情報を削ぎ落としていますものね。


 
 プログラミングにおいて抽象化は大変重要なキーワードです。オブジェクトを継承する際に、何を継承元に残し何を継承先で定義するか常々考えなければなりません。また、他人のコードを読む際に、核コードと装飾コードをより分けて解釈する必要があります。その際は不要と思われるコードを削除しつつ理解をすすめます。


 
 現代ではわからないことがあるとネットで検索すると思います。私が作っている2Dシューティングなどは適切な本が殆どないためネット講座を利用することが多いです。その際、個人のサイトにアクセスし掲載されているコードをコピーし、visual studioに貼り付けてビルドします。人によって書き方もことなるため、必要な情報(コード)
を抽出する必要があるのです。


 ここ2週間ほどレーザーの当たり判定を作成するためにコードの抽象化をつづけました。

 
 私が参考にしたレーザーサンプルは
  • 予告線表示
  • レーザー照射
  • 自機を狙ってレーザーが回転
  • レーザー消滅
 
 というとてもアクティブなものでした。しかし、私は当たり判定の仕方だけが知りたかったので、それ以外の部分を削ることにしました。その結果

  •   レーザー照射
 
 のみのコードに書き換えました。この”レーザー照射”も見た目を美しくするためのコードが含まれていたため、シンプルな一本線だけが出るコードに書き換えました。その結果、4行だけが当たり判定に必要ということがわかりました。その4行のコードを使い、自機が照射するレーザーの当たり判定を作ります。


 このように抽象化によって複雑な事柄を切り分けて理解することができます。この考え方を知ったおかげで最近はコーディングが早くなりました。とはいえコミケまであまり時間もないのでせっせとやっていきます。



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

 

 ステージを彩るのは様々なザコどもです。味のあるたくさんのザコどもがいるとゲームが面白くなります。昔のRPGなんてのはザコの種類多かったですよね。最近はデフォルメの色違い、ステータス違いばっかになってしまいました。こんな風に文句を言っていますが、作る側としては省エネ技法を導入せざるを得ません。


 今回のTCストライカーズ1では
  • 敵のデザインは1種類
  • 色違いを多用
  • 同じ敵でも場面によって異なる動きをする

 という方針で行きます。色違いを作るためには画像のRGBをいじってやるだけでOKです。


 
 それも踏まえてザコ敵が持つパラメーターをまとめます。
  • HP
  • 動き方
  • 弾の種類
  • 発射頻度
  • 発射開始時間
  • 発射終了時間
 
 このうち弾はクラスとして定義します。弾の持つパラメーターをまとめます。
  • 速度
  • 方向(自機狙い、自機狙いしない)
  • way、弾同士の間隔(角度)
 




EnemyBulletAiming(color,HP)
{

    発射間隔、開始時間、終了時間

 BulletAiming bulletaiming=new BulletAiming( velocity ,direct, way, angle);

    layerAddobject(buttet aiming);
  
}


 こんな感じになると思います。

 
 一匹だけでてくるということは少ないので、雑魚の動きごとクラスにするつもりです。



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

↑このページのトップヘ