STGのショットについて考える

ねに
記事: 4
登録日時: 11年前

STGのショットについて考える

投稿記事 by ねに » 11年前

考えた。
考えてる。考えながら日記を書いている。
日記じゃないなぁ。考えたことを羅列しておいてある感じ。
残しておけばまた後で読み返すこともあるでしょう。

日記があまり活性化してないのかなぁ。
あんまり頻繁に投稿してしまうとあまりよいことではないのかなぁ。
2、3日に一回くらいがいいのかもしれない。

けど、とりあえず投稿してしまうー。
しまうーかわいい。

初期状態では一回押すと一発出る。
二回押すと二発出る。
知ってる。

しかしショットの種類として 二発平行で飛んでく類のものがあったら
これ一発としてのカウントじゃなくて、二発のカウントなのな。
平行だから片方が敵にヒットしてももう片方は生きて、進め。な訳で。
あんまり深く考えずに二発平行に並んだショット絵を描いてたじゃないか。
これじゃただの当たり判定のでかい弾だ。

現状、ショットボタンが押されたときに一発分の空きがあるか確認して
射出しているのだけどこれじゃだめじゃんね。
二発同時に射出してるんだから二発分確認しないと。

スターソルジャー?は五方向に向けて弾撃ってた気がするけど、
そこまで撃たなくても何発分まで確保したらいいのだろう。

あれかな二次元配列にしたらいいのか?もしかして。
あんがい悪くない気もするぞ・・・?
ええと・・・?
それはそれでちがうか・・・?

二発以上同時に撃たれた瞬間だけが問題であり
それ以後は独立した弾だから
確認、確保のところだけでごちゃごちゃしたらいいだけか?

でもシングルショットだと画面内に10発撃ててたのに、
ダブルショットになったら二発x五組しか撃てないことになる、
五方向だと五発x二組しか撃てない。
それをどうこうするっていうのを考えるのがあれか、ぷろぐらむか。

ああ。
それはそれで後で考えるとして
ななめショット、これ斜め矩形になるのか。
こないだ当たり判定についてぐぐった時にチェックした。
めんどくさいやつだこれ。

しかもどこかで読んだあたり判定については、
過去の座標と現在の座標を線で結んだ中に、
敵がいたらそれは当たってたってことなので~

みたいなのも読んだことを思い出した。
共存させる問題なのか、どっちを選ぶかはあなた次第なあれなのか。

厳密なシューティングのつもりじゃないので、
弾も敵もでかいのでフレーム単位で見ても突き抜けそうに無い。
そんな気がしてるから別に良いような気がするんだけど、
そういう問題でも無い気もする。

敵側の当たり判定も中途半端で放置したのに、
これショット側の当たり判定もあれだなぁ。
結構大変だなぁ。

りっぷるレーザーみたいにどんどんでかくなっていくタイプとかもうお手上げじゃないか。
ん?多方向よりは楽か?単純にカウントもたせて、増えたら増えただけ育ててあげたらいいのか。

アバター
Nao
記事: 24
登録日時: 12年前

Re: STGのショットについて考える

投稿記事 by Nao » 11年前

日記についてですが、別に荒らしが目的でなければ毎日書いてもこんなに長いのを書いても問題はないと思います。
(ツイッターとごっちゃにしないように...)

[url=http://dixq.net/forum/blog.php?u=1182&b=4078]こんなに長いやつ。[/url
ねに さんが書きました: 二発以上同時に撃たれた瞬間だけが問題であり
それ以後は独立した弾だから
確認、確保のところだけでごちゃごちゃしたらいいだけか?

でもシングルショットだと画面内に10発撃ててたのに、
ダブルショットになったら二発x五組しか撃てないことになる、
五方向だと五発x二組しか撃てない。
それをどうこうするっていうのを考えるのがあれか、ぷろぐらむか。
画面内に10発以下しか(自機の)弾が存在してはいけないのは仕様ですか?
それは無くしてはいけないのでしょうか?
20発でも100発でもあったら良いと思うのですが...

無くしてはいけない仕様だというのなら、ショットの速度を上げるのもありだと思います。
いらない弾はさっさと画面外にだしてしまえばショットを継続的に撃てるようにできます。

ISLe
記事: 2650
登録日時: 14年前

Re: STGのショットについて考える

投稿記事 by ISLe » 11年前

二発平行で飛んでくショットがただの当たり判定のでかい弾というシューティングゲームはけっこう多いです。

せっかくなのでこの機会にリストを覚えてしまうのが良いのではないでしょうか。
弾だけじゃなく、敵キャラとか不確定数出てくるオブジェクトの管理が楽になると思いますよ。

ねに
記事: 4
登録日時: 11年前

Re: STGのショットについて考える

投稿記事 by ねに » 11年前

>>Naoさんへ
>20発でも100発でもあったら良いと思うのですが...
さすがに10発は少ないとしても
なんとなしに一回に射出される弾数の限界が見えていたような記憶があるのですよですよ。
この辺はゲーム性の問題なのかなー。
連打しすぎて目の前に敵が迫ってても撃てなくて死ぬ。という嫌な事件があったような。
普段シューティングやらないので妙に記憶が偏っているのかも。。。

東方もキャラは知ってても体験版一回やったっきりという状態ナノデスヨネー。
萃香さんかわいい。

ショットの速度。
ぜんぜん意識してなかったですわん。
ショットの方向と当たり判定の大小ししか考えてなかったです。
これも考えるべきかー。と。

>>ISLeさんへ
listですね!テンプレート!
STL!
vectorとの違いは双方向かどうか!
みたいな事はわかってるのですが、さてこれをどう有効利用するべきなのか。
vectorにも言える事ですが、こう、与えられた道具をどう使うと良いのかが思いつかないんですよねー。
経験不足なのかひらめきが足りないのか。
とりあえずいろいろ試してみます。
あとぐぐるです。

nil
記事: 428
登録日時: 13年前

Re: STGのショットについて考える

投稿記事 by nil » 11年前

>連打しすぎて目の前に敵が迫ってても撃てなくて死ぬ。
ものによりますが、ゼビウスのようなゲームであった場合それは割と致命的であるような気がします。
私がプレイヤーであれば、萎えてしまうこともあるかもしれません。
ものによりますが。

>vectorとの違いは双方向かどうか!
vectorも双方向です。

それぞれの特徴といえば
-list
+挿入・削除が速い。
+ランダムアクセスが苦手。

-vector
+挿入・削除が(listに比べて)遅い。
+[]演算子を使って直接要素を参照できる(ランダムアクセスが得意)。

といったところでしょうか。

ねに
記事: 4
登録日時: 11年前

Re: STGのショットについて考える

投稿記事 by ねに » 11年前

コメントありがとうございますー。

>ものによりますが、ゼビウスのようなゲームであった場合それは割と致命的であるような気がします。
おおう。ほんとシューティングやらないもんでなるほどー。
そういうもの という刷り込みがあったり。
脳内にあるうっすらとしたSTG像を作ってたりなもので。
一般的(?)なSTGの要件(?)調べたほうがよいのかもしれない・・・。

>>vectorとの違いは双方向かどうか!
>vectorも双方向です。
「!」までつけて堂々と間違った!
恥ずかしい!!

ISLe
記事: 2650
登録日時: 14年前

Re: STGのショットについて考える

投稿記事 by ISLe » 11年前

ゼビウスはメジャータイトルでもあって連射制限の代表格ではないでしょうかね。
ソルバルウの撃つザッパーは左右1セットで3発しか画面に存在できません。

この制限はプログラムの問題ではなくて、画面に表示できるスプライト数が少ないという当時のハードウェアの制約によるものです。
敵を表示できなくなってしまうので弾をたくさん表示することができないというわけです。


涼雅さんのおっしゃっている双方向というのはイテレートのことじゃないかと思いますが
vectorは配列とまったく同じに連続したメモリにオブジェクトが割り付けられます。
双方向リストではないです。

STLのlistじゃなくても良いのですが、リストを使うと空きを探すとか面倒な手間を省けます。
基本的に無制限で作っておいてあとから制限を付けるほうが簡単です。
ゲームの仕様とプログラムの仕様は分けて考えたほうが良いと思います。
最後に編集したユーザー ISLe on 2013年10月26日(土) 19:02 [ 編集 3 回目 ]

ねに
記事: 4
登録日時: 11年前

RE: STGのショットについて考える

投稿記事 by ねに » 11年前

>当時のハードウェアの制約によるものです。
そんな事情が・・・・。
と、いってもゼビウスってほとんど記憶にないんですけどね。
ただ、イメージが昔のファミコンとかゲーセンとかなので、そういうもんだと思い込んでたのが、
案外ハードの制限から来てるだけってのは多いのかもしれないです。

リストが不勉強すぎてむづかしいです。
うむむ。
試してみてわからなかったら質問掲示板で聞かせていただきたく。
その際はよろしくお願いいたします。てへ。

オフトピック
下記未実験なのに書いちゃいます。
よくないけどとりあえずメモ兼脳内整理もかねて。

リストはきっとスタックしていくもの。
たぶん自分の弾をショットボタンを押すたびにスタックしていって、
当たり判定処理等で最初から順に見てってリストだから
敵にあたったりしたららそこを削除する。
リストだから削除が早い。
という感じなのかしら。と。

弾の位置X,Yとかをどんどんスタックしてって
一個目の取出しがX
二個目の取り出しがY 
三個目は一個目二個目で読んだ弾の何かフラグ、
四個目はX、
五個目はY
ってやっていくのかなぁ。
なんか違う気がする。

あ、いや、この場合は三個ごとのループでそれぞれいったん違う変数に代入してごちゃごちゃやるのかな?
三個単位で処理するっていうのさえ間違えなければ問題ないのかな?

それともXY等の構造体ごとスタックできるのか。

なんかうすぼんやりと見えてきそうで見えない。
とりあえず後ほど実験してみよう。
なんかいろいろやりたいことがあっていっぱいっぱいになってきている。
あわわ。