ページ 11

弾の消去による負荷軽減

Posted: 2011年8月20日(土) 21:12
by ume
現在でている敵の弾を、時間制限後に消去する時のことです。
弾の表示は弾ごとのフラグにより判定していて、消去時には0を入れています。

弾を2000発以上出している分には負荷なく動くのですが、
2000発を時間制限後、徐々に消していく際に重たくなってしまいます。

また、画面外にでると、弾が消えるようにも設定してあるのですが、
こちらの場合、弾が消える際に負荷なく消えていきます。

弾を消すプログラムはほぼ一緒なのですが、時間制限後だと負荷がでてしまいます。
どなたかご教授おねがいします。

Re: 弾の消去による負荷軽減

Posted: 2011年8月20日(土) 21:38
by ひよこ
ループを二つ作ってたりするとか。
ソースを見ないとわかりませんが、
for(i=0;i<弾最大数;i++)
//画面外の処理
for(i=0;i<弾最大数;i++)
//時間制限後処理
みたいになっているかもと思いました。

Re: 弾の消去による負荷軽減

Posted: 2011年8月20日(土) 21:39
by hjkl
時間制限版の方は画面外に弾がでてもすぐには消さないという事ですか?
2000個発射後も弾は発射され続けるんでしょうか?
だとしたら画面外を含めて弾の数が増えすぎて処理が重くなるとかじゃないでしょうか。

画面内の2000発を徐々に消していくのが遅いといことでしたら自分にはわかりません。すみません。
あと実際のソースコードを載せた方が回答を得られやすいと思います。

Re: 弾の消去による負荷軽減

Posted: 2011年8月20日(土) 21:55
by ume
レスありがとうございます!!

ひょこさんが指摘されているのが近かったかもしれません。

弾幕の表示する関数系列とは別の場所で、
弾幕の削除関数をつくっていたせいみたいです。

弾幕の削除関数を、弾幕表示関数内に記述することで無事負荷がなくなりました。

hiklさんへ、弾幕は2000発でその後追加の弾幕はありませんでした。
c言語ではなかったのでソースは載せていませんでした。ごめんなさい