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

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

ゲーム開発

 先日現代美術家の方とお話をする機会があって色々と伺ってきました。

 どうやってそのアイデアを得るのかなと気になっていたのですが、資料の集め方について伺ってみたところ、Ipad(指紋認証あるやつ)を取り出し見せてくださったのですが・・・


 「テレビでいいものが映ったらこれで撮る。」


 ・・・えっ??


 そんなのでいいのかと驚きました。結構有名な方で美術館で個展とかされています。そんな人でもテレビの映像を撮影して使っているとは思ってもいませんでした。勝手なイメージですが、著名な人はわざわざそういう写真を取れるところまで出向いたりお金をかけて資料を集めているもんだと・・・

 しかし、そうやって得たた資料をもとに作られた作品が20万円前後で売買されているわけです。この部分をどう捉えるかは差が出てくるでしょうね。

 以前の僕だったら、「高く売るためには経費をかけなければいけない」のような盲信がありましたので、やたらお金をかけて資料を集めたり展示会に出向いていました。今はそんなことを思っていませんが、著名な作家さんは違うだろうと思いこんでいました。



 もちろん、この手法が全てというわけではないでしょう。しかし、作品を作るにおいてヒントをどこから得るか、それは限りなく自由であるということがわかりました。

 そういえば以前も絵の先生から同じこと言われましたね。日常の風景からヒントを見つけていこう、と。植物とか家の壁とか観てると案外きれいだったりします。写真をとってPhotoshopで加工するだけでなかなかの素材になりますからね。そういえば我々のようなデジタル作家にとっては資料にするまでもなくそれ自体を利用できてしまうのでより楽チンですね。



 ボスの状態遷移が複雑になりすぎってなかなか新しいものを作れなかったのですが、ステートパターンなる書き方を実践して見た結果、とてもわかり易いコードになりました。

  
・ステートパターンとは

 状態遷移を簡単に実装するデザインパターンです。switch文の各caseを各クラスに分割すると考えていただければよいかと思います。
  
 こちらのサイトを参考にしました。 
 東京工業大学デジタル創作同好会


 いままではボスクラスに以下のように状態遷移を書いていました。

 switchi(var){

case 1: 攻撃パターン1
case 2: 攻撃パターン2
case 3: 攻撃パターン3
}



 しかし、これだと各攻撃パターンを制御する変数をボスクラスに持たせないといけません。その結果生じる問題点が以下の項目です。
  1. 変数が増えすぎてわかりにくい
  2. 想定外に値が変わってしまう


しかし、ステートパターンを使うと以下のようにクラス・シートを分割、することができます。

  • class 攻撃パターン1を含むクラス{}
  • class 攻撃パターン2を含むクラス{}
  • class 攻撃パターン3を含むクラス{}

こうすることで識別子が同じ変数を使えるようになり、変数の管理も簡単になります。その結果、攻撃パターン作成に専念できるようになりました。



・ステートパターンを実装した意義
 開発の簡略化です。ゲームが複雑になるに連れてコードも複雑になっていきます。するとシステムを管理することに主眼が言ってしまい、肝心なゲーム性に割く時間がなくなってしまいます。
 大別するとゲームはシステムとコンテンツに分けられます。ゲームをストレスなく進めるためにはシステムの洗練さが、没入するためにはコンテンツの充実が必要です。ステートパターンによって開発をシステム作成とコンテンツ作成を分割することができます。両者の結合性が高すぎるとコンテンツをつくることでシステムに影響を与えてしまうかもしれません。それを防ぐためにもステートパターンはよいかと思います。



 弾幕STGの醍醐味とも言われる処理落ちを擬似的に実装しました。
 
 

  


 以前ツイートしたように画面内のオブジェクトが一定数を超えるとFPSが下がる仕組みになっています。

 ポイントは弾数ではなくオブジェクト数という点です。つまり自分が発射した弾、それにともなうエフェクトも対象に含まれます。怒首領蜂大復活では自身のショット数を増やすことで意図的に処理落ちをさせるというテクニックが存在します。それと同じような挙動になりました。

 CAVEシューティングに馴染みの薄い人はこのテクニックには抵抗があるようですね。以前、友人にその話をしたところ”邪道”と言われてしまいましたorz。とはいえ上級者も普通に使っているのでOKです。


・実装のメリット

 とにかく面白いです。ゲームの処理自体が遅くなることで自身が覚醒しているような感覚になります。人は覚醒すると時間をゆっくりと感じるようになるんですね。走馬灯がまさにそれです。より一層 ”俺つえええええ” を体感できるようになります。
 もう一つ開発者側としても難しい弾幕を作りやすくなります。高速高密度の弾はプレイヤーの心を折ってしまいますが、低速化することでなんとかなるかも、という印象を与えることができます。実際、私も処理落ちがなければ諦めてたゲームがたくさんありますしね。



・疑似処理落ちが面白いゲーム

Eden’s Aegis 


同人ゲーで疑似処理落ち実装してるのこのゲーム以外知らない。もしあったら教えて下さい。

怒首領蜂大復活


意図的な処理落ちについてちゃんたけさんが明言してます。動画はアーケードなので本当の処理落ちですが、steam版は疑似処理落ち仕様です。

キャプチャ


 こんな感じでテキストファイルに会話内容を書いておきます。

 先頭の数字:フォント、キャラクターの指定 
 2番の数字:ポーズの指定

 先頭の数字でキャラクターを指定し、2番めの数字でそのキャラクターのポーズを指定します。


 
ついでに文字を一文字ずつ表示できるようになりました。こんな機能はなくてもいいのですが、こういう本筋とは関係ないところこそが遊びなんですよね。昨今のデザインを見ると細かいところでモーションするものが多いです。また、テキストファイルで読み込んだ文が終わると自動で次の段階に入ります。



・なぜする必要があったか

前作までは会話とポーズ・フォントを一つづつ指定してswitch文で遷移させていました。しかしそのやり方だと途中で挿入する場合すべて修正しなければいけません。今後の開発効率を考えると何らかの修正が必要でした。次に、英語版を作成するという理由が挙げられます。コンフィグから言語設定できるようにします。その際に引数によって読み込むファイルを変えるようにして英語版に対応したいと考えたからです。まとめると開発効率を上げるため、ですね。





・3のテクニカルシュート演出が決まりました。




2と大きく変わってはいないのですがなかなかいいと思います。

演出時に流れる文字は stay or progressと書いてあります。普通は”行くか戻るか”と表現されることが多いですが、時の流れを戻すというのは実際のところ不可能ですからね。往くか留まるか、をキーワードにしました。

テクニカルシュートに続くシリーズを象徴するキーワードになってくれるかな。



・戦闘前の掛け声として




 ギルティギアのこれが好きでね。このシリーズが登場する以前は戦闘前掛け声といえばREADY GO、が定番だったわけです。それが HEAVEN OR HELL となりかっこいい!と思ったものです。ちなみに戦闘終了時にSLASHとカット・インするのですがその部分もTCストライカーズでオマージュしています。 


・ステージクリアカット・イン

 


 2まではシームレスにステージ移行していました。今作は一般的なSTGと同様リザルト画面を設けます。演出というよりも内部的(ローディング)な理由なんですけどね。絵はもちろんテスト用です。
 リザルト絵はステージごとに変えたいのですが、めちゃくちゃ労力掛かりそうです。なので、一部外注しようかと考えています。絵は自分で描くのでこの画面に合う構図(ラフ)を誰かに考えてもらいたいです。ココナラでリクエストすれば受けてくれる人見つかるかな。一枚あたり1000〜2000円でいけると思うが。






↑このページのトップヘ