シューティング覚書

■シューティング覚書

■弾の適当な分類
http://www.geocities.co.jp/Playtown-Bingo/2079/bullet.html



■敵の軌道



斜め

Uターン
自機に向かって一直線に体当たり
ホーミング
壁に沿って

敵の出現位置


後ろ



■敵の編成

縦一列
横一列
ばらばら
規則正しく?



■敵が画面上に出てすぐ死なないように

敵をばらばらの位置にたくさん出す
敵を一度にたくさん出す
出現してすぐは移動速度が速い
硬い敵を出す
後方や壁の後ろなどの自機の攻撃が当たらないところから出す



■敵の位置を事前に教える方法

画面内にマーカー
画面外にレーダー
敵の影が背景を移動



■ロックオンホーミングレーザー

レイシリーズのロックオンホーミングレーザーをまとめずに単発で


ボタンを押したら、ロックオン当たり判定を作成
それと敵と当たり判定
当たりならホーミングレーザーのnew
敵のアドレスを渡す
敵はホーミングレーザーのアドレスをもらう
当たり判定はレーザーから敵のアドレスをたどって、ロックオンした敵だけと行う


雑魚敵はロックオンされるスロットが1つ
2つ目がロックオンされてもロックオン当たり判定の時にスロットを調べて1つ目がnullじゃなかったらnewしない


ボスキャラなんかはロックオンされるスロットが複数
とはいってもすぐホーミングレーザーが当たるのでそんな何個もスロットはいらないだろう


ホーミングレーザーは敵のアドレスから敵の座標を調べて進行角度調整


敵が死んだ、or画面外に出たら敵が持ってるホーミングレーザーのアドレスをたどってホーミングレザーが持ってる敵のアドレスをnull


ホーミングレーザーが敵に当たった、or画面外に出たら敵が持ってる…



■リターン

狙い
避け
パターン化、弾幕。        パズル的な楽しみ、抜けたときの開放感、達成感
ルーチンワーク?。        パターン化のような能動的なものではなくもっとルール内でのルーチンワーク的なもの
パズル要素。           パズル的な楽しみ
一度に沢山の破壊、爆発、リズム。 爽快感
音楽、敵、弾のスピード。     爽快感、スピード感
1ミス制。             緊張感



■狙いと避け

狙い重視
1wayワイド
単発
画面内において発射される弾数を制限


避け重視
セミオート連射
オート連射



STG+音楽

1キーゲーム*リズム


太鼓の達人やって思うのだが、重要なのは音程とかよりもリズムではないか?
リズムがしっかりしていれば他はそれほど重要でないのではないか?
1アクション(ボタンを押して敵を倒す)に対する評価(破壊音、爆発など)をしっかりやって、リズムで色をつけて。
音楽系を目指すなら、ワイド、オート連射は駄目だと思う。避け重視でどうやって音楽表現をするのか?かすると音が出る?
イクラのロックオンホーミングレーザーを単発で行うのはどうか?
これだとショットボタンを押す、自機の横軸以外に、縦軸も固定が可能になる。ただ打ち込み感が減りそうだ。



■トランス

「めくるめき」の芸術工学 (神戸芸術工科大学レクチャーシリーズ)を参考に



■評価関数

数量化
因子分析
主成分分析


数量化して、ベクトルにして、大きさと角度(相関)をもとめて、もっともらしい要素をあてはめてとかそういう話。


トップダウンではなくボトムアップで。STGを作るという意識はなく、いかに快感を得るか?



■processing

processing的な表現。
processing+音ゲー+遺伝的プログラム+STGあたりが理想か。
ただ、processing的な動く表現は敵をたくさん出す必要があり、音ゲーは必要最小限って感じがするので無理か。


processing
http://processing.org/



■未編集

■注視点、攻撃ポイント

敵をまとめて倒せるようなポイントを
プレイヤーに楽させて、リスクを少なく、リターンを多く


注視点、攻撃ポイントを少なく
自機で1つ
敵で一つ、距離が離れている場合は複数
照準で一つ
自機と敵が接近すると一つ



■距離

リスクに応じた、敵との最適な距離
むやみに接近してもリスクがただ増えるだけ
敵の攻撃する瞬間がわかるような工夫を
そうすれば接近が可能



■射軸

リスクの高い正面に行かないと、リターンは得られない。
そのリスクとリターンの関係が重要ということか?
正面がリスクが高くないと意味がないのか?
リスクが高すぎても意味がないだろうし



■シーン構成

繰り返しとコントラスト
音楽といっしょ
リスク、リターン論よりもシーン構成のほうが重要じゃないかとも思ったが、敵の出現位置なんかは、結構いい加減っぽくて、十分な敵の量があれば、左右にいったりきたりしたり、左右両方からいっしょに出したりともうよくわからん。

極小ザコ、8分音符
小ザコ、4分音符
中ザコ、1小節
1小節をひとまとまりとする。



■撃ち込み感

パーティクル、音、破壊までの時間、ボタン連打



■ボタン

ミサイルの発射ボタン、自爆スイッチ、火災報知機
のようなワクワク感は?
押すとすごいことが起きるという期待感と
押してはいけないというタブー



■パターン化

弾幕系のボス戦を除いて、というか弾幕系の道中などは、
敵弾の種類、数が多すぎてパターン化が難しい。
アドリブの余地が大きすぎて、どうすればよいかがわかりにくい。


最初から倒しきることのできない量の
敵を出し、どれを倒すか、倒さないで残しておくか、
どうやって生き延びるか、パターン化するか
というのは面白いのだろうか?


要素が増えるほど、何がどう影響しているのかわかりづらい



■理想

ボタンを押すと面白い、弾が出ると面白い、
狙って、敵に当てて、倒して、爆発して、
避けて、くらって面白い。



■触手シューはなんとかならんのか

R-type
フォース、有線で伸ばす、スコアを貯めてレベルアップ、敵の捕食、キャプチャー



■グラフィック


歯車
ワイヤフレーム
ゴシック風
幾何学模様
アイコン風
茶色
サイケデリック
毛糸が伸びて絵を描くようなムービー



■特徴的なボス

ヘビ
カニ
斑鳩3面、4面
2機
巨大戦艦



■システム等

■キャラクター

連射
単発、狙い(斑鳩
弾数制限、連射制限
ため撃ち、波動砲

接近戦による攻撃力(3wayの根元を当てるとか、普通に根元のダメージが高いとか)、スコアの上昇
ホーミング
ロックオン、ホーミングレーザー
アンカー+ぶん投げ


ボム(緊急回避用、攻撃用)
自爆


バリア(ダライアス
シールド(グラディウス
属性、敵弾吸収、解放(斑鳩
リフレクトフォース(ギカウィング)
バリア+攻撃強化(五月雨)


敵の捕獲(ダライアス


フォース(R-type)
ビット(R-type)
オプション(グラディウス
装備、ポッド(イメージファイト
パワーアップ(グラディウス
レベルアップ(サイヴァリア


かすり(サイヴァリア


変速(イメージファイト


エクステンド



■敵


ライバル機


コア、オプション(破壊可能、破壊不可)


弱点(他の部分は壁として)、発狂、撃ち返し


敵の破壊、爆風による敵弾の消去


自機の接近による弾封じ



■その他

その場復活、チェックポイントまで戻る、パワーアップが初期化、ある程度リカバリ
360度
慣性
早回し
難度制御
ステージ選択、プレイによるステージ内容の変更
パズル要素(斑鳩
アクション要素(参考、コントラ超魔界村
アクション要素(参考、ゼルダ奇々怪界
レース要素(ほんとに参考、F-zeroマリオカート
音ゲー要素(ほんとに参考、ビートマニアポップンミュージック
スポーツ要素(参考、テニス)
ピンボールブロック崩し要素
スロー、ブースター、(エスプガルーダクラウドフォビア)敵弾、敵のスピードの増減


狙い
撃つ
避け


爆発
音楽
スピード感、リズム
パターン化
パズル要素
ルール内でのルーチンワーク的行動


弾幕



■各種プロパティ

■弾

サイズ、特に大きなものなど
スピード
破壊可能かどうか
線分レーザーの場合リストにして繋げる
nフレーム後に、炸裂
移動パターン



■移動パターン

直進
左右いったりきたり
ホーミング性能(弱、強)
2次関数
円状
nフレーム後停止
nフレーム後180度方向転換
nフレーム後自機に向かって
nフレーム後に、移動方向変化
画面枠、壁にて移動方向変化



■弾の編隊のパターン

STGを想定、呼び名は適当


縦一列(基本)
横一列(例外)
V字弾
nWay(奇数、偶数)
ワインダー 2wayを弾の撃つ頻度を極端に高くしたものを左右に揺らす
平行弾 2発を平行に
速度違い弾 最初の弾は遅く、後の弾は速く、鞭をしならせる感じで
ランダムばらまき 前方にランダムに複数
全方位弾 円状に等角度で按分orランダムばらまき。頻度は1回or複数回。複数回の場合角度は固定or左右回転。頻度を高くするとワインダーっぽく
レーザー 直線、線分。線分の場合、直進、自機の位置で直角に曲がる、自機に向かって曲がる、壁で屈折する
8の字弾 一度全方位に発射の後、nフレーム後、自機に向けて方向変化



■敵

弾を撃つ頻度
狙いのつけ方
弾、弾の編隊のパターン
サイズ
スピード
破壊可能かどうか
移動パターン
パーツの有無、場所
破壊された後炸裂



遺伝的アルゴリズムSTG

別に遺伝的アルゴリズムにしなくても、変数をランダムにして保存できるようにすればいいだけだけど。
遺伝子とするのは、編隊、パーツ付敵、ステージあたり。
評価関数はプレイヤーが実際にプレイして、点数をつける。
本当は数式で出したい。


構成

ステージ

シーン、オブジェクトコントローラ

敵の編隊

パーツ付敵



(弾の編隊)(関数で)


それぞれの段階で個別に評価できるようにする?


敵の移動パターンはオブジェクトコントローラが持つ?


編隊、パーツ付敵は5*5のマスのどこに敵を配置するかということをランダムで決める? 
パーツ付敵の場合はコアとパーツ。コアの大きさなんかも考慮。
場所の重複可能。


それぞれ適応度と遺伝子の構成をファイルに書き出す。
ファイルの頭にf(fix)とか付けたら消えない、とかしようと思ったが、
ファイル名を変えるのはまずい。



■昔と弾幕の比較

      昔   弾幕
画面    小   大
敵との距離 近   遠
弾速    速   遅
弾数、頻度 少   多
当たり判定 大   小



■狙いについて

正確に狙う
正確に狙う+ランダムで角度を増減
角度制限、最初から64度分割だけとか
先読み
一定時間自機を追って、時間になったら撃つ
狙いが定まるまで撃たない



■移動について

ただの移動が面白くない。


避けが伴っていれば避けの面白さがあるのだが。
もしくは敵を撃つと撃ち返しなどがあって弾を撃てない、などの事情により敵を誘導しつつ弾を撃たず移動なんかもちょっとスリルがあってよい。
もしくは高速スクロールで移動する壁を避けるとか。


移動自体が面白いのは、マリオの無敵状態、ソニック・ザ・ヘッジホッグ、レースものあたりであろうか。どれもスピードがあり、敵は考慮しなくても良い状態、ただし壁などは影響を受けるといった感じか。


他、モーションブラー、慣性あたり?



音ゲー要素もの

狙い、爆発などはビートマニア等の音ゲーのどのボタンを押すか、それに応じて音が出るといったことにも通じるものがあるのではないか?


そこで、敵の攻撃前の一瞬、弱点が光る、開いて大ダメージを与えることができるとか、コンボがつながってスコアがたくさんとかはどうか?


小ザコはノーマル、単発で


中ザコは弱点にため撃ちで


弾数制限?連射制限?オーバーヒート?
斑鳩の初弾によるかせぎみたいに


押しっぱなしで連射(ため撃ちではない)ではなく、普通の連打でもある程度制限をかけないと押しっぱなしで連射が連打に変わるだけであまり意味がない。


ただ押しっぱなしで連射がないとボス戦がきついのでは?
弱点+小ザコでOK?


弱点が開く前の攻撃は、弱点の正面にいて上下移動で避けれるようなものがよい?



■潜水艦もの
 
サブマリンハンター鯱
unterwater unit


360度もの2Dでソナー、魚雷各種、デコイなんかを実装したものをつくれないか?


対戦
もしくはステージ構成にある程度ランダム要素、またはパターンをいくつか用意する。
移動に弱い慣性をつけてやれば、移動を止めても少しは動きパッシブソナーにひっかからずに動くことができる。これで、有線魚雷などを回避できる?


ソナー
パッシブソナーは目標が発する音を聞くやつ。範囲が狭い、敵が動かないと意味がない
アクティブソナーは探知音を発し反射したものを受信するやつ。範囲が広いが、自分の場所が相手に知られる、かつ相手のほうが早く知る


魚雷
ホーミングなし、まっすぐ
パッシブホーミング
アクティブ・ホーミング
有線誘導


特殊
機雷
デコイ・ノイズメーカー
対抗魚雷


キャラクター化?
ノーマル
機雷系
スピード系
索敵系



■イエティ(仮)

360度もの?
雪玉(小)、雪球(大)でもって敵を倒す。
(大)は移動して大きくする。また、壁としても使用可能。
とまで考えたが、ボタンをどうするかとかいろいろ問題が。



■全方位シューティングの照準について

その1 普通に十字キーに併せて移動、照準
その2 マーカー、ボタンを押している間のみマーカーを十字キーで操作可能
その3 マーカー(ゼロガンナー2)
その4 左右回転、前進
その5 その3とその4の併せ技
その6 過去のキー入力を見て、加算累積
その7 十字キーで移動、マウスで照準
その8 十字キーでマーカーを動かす、前進、スライド


その8についての捕捉説明
十字キーでマーカーを移動
マーカーは自機の周辺(四角or円)に移動範囲を限定
1ボタンでマーカーの方向に照準を合わせる、および移動
2ボタンでマーカーの方向に移動、照準は変わらない



■ボイドとライフゲームを足して2で割ったもの

bugtro
http://www.pouet.net/prod.php?which=16343
に触発されて似たようなものを作りたくなった。
ボイド(群れのシュミレーション)とライフゲームと絡めて何か作れないか?


マスは廃止。
周囲(円)何ドットに仲間がいれば分裂?
少なかったり、多すぎたら死亡?
それとも生成、死亡はいらない?


群がある数になったら行動パターンが変化?
集まったり、散り散りになったり。
群れとしての数の数え方はどうやる?
各個体それぞれの視覚の範囲で数える?
そうすると群れの中心にいる個体は多く数え、
端にいる個体は少なく数えることになる。
大丈夫か?


ただ群れよりもある特定の形をとったり(円周、円、線とか)
崩れたりするのが面白いか?どうやればいいのか?
もはやボイドは関係なくなってる。


3種ぐらい作る。
種の違えば、それらより影響を受けない。
そうすれば群れと群れがぶつかって
逆方向に通り抜けるような表現も可能か。
または、攻撃的、回避的。


できればリセットボタン以外にマウスかキーボードで何か
動的に影響を与えることも可能にしたい。
個体を引っ張ったりとか、生成、消滅。



■プログラム
■関数へのポインタの配列
関数へのポインタのポインタ
を利用すれば関数を配列、リストにして保持できる。