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

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

ゲーム開発

 そろそろステージを作る意欲が湧いてきました。

 
 シューティングはほとんどのゲームで難易度(ディフィカルティ)選択があります。東方でいうとeasy,normal ,hard,lunaticの4段階です。最も難しい難易度から作るのが鉄則です。

 ただ、実際作り始めるまでなぜそうなのかがわかっていませんでした。今回、私が気づいたことを記述したいと思います。


 
 1.ゲームは60分の1秒毎に動く


 最大の理由はこれだと思います。60分の1秒(以下1フレーム)を基準としてゲームは作成されています。これはディスプレイの描画速度が1フレームとして作られているからです。
 コードを記述する際もUpdate()関数は1フレーム毎に更新されます。もし更新速度を遅くするのならば、余計なコードを記述しなければなりません。


 例えば、1 フレームごとに弾を撃つコードは

update()
{
  弾を撃つコード
}

 でおkです。実際に1フレームごとに発射していたら途切れ目がなくなってしまいますが・・・


 
 次に60フレームごとに弾を撃つコードを記述します。


update()
{
  if(count%60==0)弾を撃つコード
}  



 このようにif文を使って、実行される間隔を大きくすることができます。 最高難度のコードを上のようにしておけば、難易度に応じて発射間隔をを下げてやることで各ディフィカルティを作ることができます。


 難易度選択を一般化し

update()
{
     if(count%difficulty==0)弾を撃つコード
}


 変数difficultyを hard:10,normal=20,easy:30としてやれば簡単になるほど発射間隔が下がります。

 

システム面における重要な変更をしました。

 まずは今までstage1としていたクラスを抽象化しstageというクラスを設けました。今後はstageクラスを継承しstage1,stage2、、、、と作っていきます。これにより、各ステージの記述を大幅に減らすことができ管理も簡単になりました。具体的に366行のコードを280行まで減らしました。



 blod1


 次にBossクラスも抽象化します。

 blog2
 

 今後はBossクラスを継承し、各ステージの中ボス、ボスを個別にクラス化します。こちらも管理が簡略化され作成しやすくなりました。
  

 
 ここまでで”折り返し地点だなー” と感じました。ゲーム全体のフレームが完成し(まだ修正するでしょうが)中身を作っていく段階に入ったからです。ついに弾幕を作リ始めることができます。各キャラクター特有の弾幕と、キャラクターを引き立たせるためのステージ・音楽を作り込んでいきます。TCストライカーズがらしさを獲得するのです。


 ”東方との差別化はもっとクオリティを上げてから”、と思ってましたが、自然と特徴が出てきますね。ゲームである以上、二者択一の技法が多数あります。神主が選択しなかった技法を取り入れるだけで、かなり違うゲームになるようです。


 
 私自身が、作成スピードに驚いています。しばらくゲーム以外の用事をしてからコンテンツ作成に取り掛かる予定です。
 


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








 

 本作品の根幹となるシステムです。

   



 ノーミス・ノーボム・規定時間内に攻略すると評価点3をもらえます。そこから以下のように減点されます。
 
  • 既定時間をオーバー -1点
  • ボムを使用     -2点
  • 被弾        -3点


 テクニカルシュートごとにこの評価があり、累積します。例えば、テクニカルシュート1で評価点3、テクニカルシュート2で評価点1だった場合、累積評価点は4となります。





 そして、ステージクリアー時にアンセムボーナスという特別なボーナスが加算されます。
 
 アンセムボーナスの計算方法は以下のとおりです



ステージ中で取得したパワー × 定数 × 累積評価点




 ステージクリア時に獲得できる3つのボーナス(クリアーボーナス、ノーボムボーナス、アンセムボーナス)のうちずば抜けて高い点数になっています。

 評価点はステージごとに清算され、次ステージではまた0になります。パワーを沢山稼ぐこと、テクニカルシュートを高評価で攻略することがハイスコアの鍵となります。本作はプレイヤーがパワーアイテムと接触してもアイテムは消滅しません。接触し続けることでパワーを上昇させ続けることができます。


 このシステムはとてもわくわくします(❀╹◡╹)東方に無い、独自のシステムになります、たぶん。よりスピードを重視したゲームになってきましたね。早く倒すよりグレイズしたほうがスコアを稼げるというのはどうも納得できません。早く、正確に攻略することがハイスコアになるように整えていきたいです。




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




 

 難関だったポーズを実装することができました。




 今回の実装は
  • スコア-クリアボーナス
  • スコア-テクニカルシュートボーナス
  • 勝利演出
  • ポーズ
  • ボスダメージエフェクト
  • ステータス表示

 です。大分ゲームらしくなってきましたね。フォント選択はゲームの雰囲気を大きく左右します。デジタルでかっこいいフォントを選びました。文字の表示形式がまだ不十分なので調べつつ洗練させたいと思います。


現在の課題
  • ボスクラスの抽象化
  • テクニカルシュート取得判定
  • ボス到着時に背景スクロール停止
  • アルティル、ドット絵アニメーション、アルファ化



Altseedを使用しています
http://altseed.github.io/
ボス破壊エフェクト:日陰者ピエールさん作成 
 

 念願のテクニカルシュート演出を実装しました。



 
 ボスの段階が上がると背景とカットインが入ります。まだ攻撃を作っていませんが、この段階がおわると背景も元に戻ります。だいたい通常攻撃と交互にこの演出が入ります。


 これから追加したいこと
  • テクニカルシュート終了時にボーナスを追加
  • テクニカルシュート終了時にリザルト画面を実装
  • ボス戦終了後に会話を実装
  • ステージリザルトを追加
  • テクニカルシュートネームのフォントをかっこよくする 


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

↑このページのトップヘ