「弾を発射」で同時に複数の弾を射出しようとしたところ、4発ほど同時に発射すると発射時に一瞬ガクっと動作が重くなってしまいます。できれば8発ほど同時に撃ちたいのですが、なるべく軽くする方法ってあるんでしょうか?
ちなみに現状はテンプレートの「弾」に画像等を設定しただけで、特別な動きはさせていません。
「弾を発射」で同時に複数の弾を射出しようとしたところ、4発ほど同時に発射すると発射時に一瞬ガクっと動作が重くなってしまいます。できれば8発ほど同時に撃ちたいのですが、なるべく軽くする方法ってあるんでしょうか?
ちなみに現状はテンプレートの「弾」に画像等を設定しただけで、特別な動きはさせていません。
こちらはゲーム開発でよくあることなのですが、
生成処理を同時に行うとどうしても負荷がかかるため一瞬処理が重くなります。
よくある解決方法としては、画面外の見えないところに弾を常にストックしておき、撃つ瞬間に手元にテレポートさせるという方法ですが、ちょっと面倒ですよね。
こちらに関しては機能要望はあげておりましていつかは実装される・・・はずです。
現時点でできそうなこととしては、
そうでしたか・・・アクツクMVで同じ動作は普通にできてたので、正直開発ツールとしてはかなり微妙ですね・・・。
というか、当たり前ですけど弾撃ってくる敵を数匹並べるとガックガクになりますね・・・。これもどうしようもないんでしょうか、ちょっとこのままだと使い物になりません・・・。
手元でやっている感じでは数匹並べて4発ずつ弾を撃つくらいであればそれほど処理落ちしていませんが・・・よければ一度プロジェクトを見せていただくことはできますか?
素材の再配布に抵触しそうなので、画像塗りつぶしたもので良ければ・・・判定可視化してあるので雰囲気はつかめるかと。
ありがとうございます!チェックさせていただきます。
こちら確認させていただきました。
最初は動作しており徐々に重くなっていくので確認したところ、
「弾を削除」していないので無限にノードが増えて処理落ちが発生しているようです。
オブジェクト妖精弾のベース設定でカメラ外に出たら消滅をオンにしていただくと
生成時にわずかにカクつきますが致命的な重さにはなりません。
あ、いえ、弾を削除するのはまだ追加してないだけで把握しているんですが、弾を撃った瞬間のカクつきですね。
そちらで発生していないなら、単純にマシンスペックですかね・・・一応ゲーミングPCですがハイスペックって程でもないので・・・。
どうなんでしょう・・・画像を塗りつぶしていただいたので処理が減っているのかも・・・
こちらも会社用のグラボすらつんでない普通のPCなので別にハイスペックというわけでもないのですが・・・
下部のデバッガーメニューのモニタータブでFPSやPhisicsProcess等をモニタリングできるので何が原因で処理落ちしているのか色々追加してみればわかるかもしれません。
ちなみにXキーを素早く二度押すと弾が8発出るんですが、こちらの出た瞬間のカクつきはありますか?
ご期待に添えず申し訳ございません。
うーん・・・ここがゲームのキモなので妥協案もちょっと厳しいかな・・・。ここでカクついてるようでは敵とか実装したらもっと重くなりそうですしね・・・。
ここで問題になっているのは「生成時の重さ」とはいえ、敵を実装すると敵もちょっとずつプロセスメモリを食うので重くなるのは否めないですね・・・
開発にも確認をしましたが根本解決は軽量弾オブジェクトが実現できるまで難しそうですので、
大変申し訳無いのですがこのスタイルの作品は前作で制作頂くかお待ちいただくしかなさそうです。
でも弾が軽量化されたとしても、結局敵が4体同時に出たら処理落ちするんですよね・・・。開発ツールとしてはかなり厳しいですね・・・。
4体同時生成くらいではおちないか一瞬ひっかかる程度かと思います。
10体ほど同時に生成する処理をすると処理落ちする可能性はありますね。
どのようなゲームを作るかにもよりますが、重いのは生成処理ですので、スクロール進行型であればすでに配置されているものでしょうし、敵であれば有効化/無効化等を使っても良いのでそこまで通常は重くはならないです。
一方でランダムで敵を10体動時に生成したい!等が難しいのは事実ですね。それこそ事前にどこか別の場所で生成しておいてテレポートする処理等を作ることになるかと思います。
横から失礼します。
ゴドーエンジン自体は、弾だけでなく、敵キャラクターが何十体・何百体とワラワラ襲ってくる様なアクションゲームは製作可能なのでしょうか?
正直、多少古くても昨今のPCで、しかも2Dゲームでワラワラゲームが作れないというのはさすがに残念・・と感じてしまいます。(東方さんの作品などはすごく低スペックでも動きますよね)
見た目のグラフィカルな演出の派手さも良いですが、やはり作り手としてゲームのエンジンに望みたいのは、圧倒的な軽さです。そしてつづくのが作りやすさ・わかりやすさ。アクツクMVで勉強した知識を活かせる環境の続編。グラフィカルな部分は正直最後の方です・・。あくまで個人的にはですが。
何ヶ月もワクワクして心待ちにした続編なので、本当に神ツールになることを期待しています!
ですねえ、Komeさんもコメントしてくださってますが、開発ツールに求める者はまずは軽さですね。それが制作の幅、作れるゲームの幅に直結しますから。
>4体同時生成くらいではおちないか一瞬ひっかかる程度かと思います。
>スクロール進行型であればすでに配置されているものでしょうし
正直個人的には、この辺から認識の甘さがにじみ出ているように感じてしまいます。一瞬ひっかかる「程度」って・・・頻繁に一瞬引っかかるようなら、それはもうアクションゲームとしては落第と言って良いです。引っかかったせいで穴に落ちて死んだら全部パーですからね。
スクロール型なら・・・というのも全然答えになってません。例えば広い範囲攻撃のレーザーで飛び道具を撃ってくる同種の敵をまとめて攻撃、全部の敵が同じタイミングでやられモーションを取った場合、次からは全部の敵が同じタイミングで飛び道具を撃ってくるわけですよね。この場合、敵が撃ってくるたびに処理落ちするゲームになってしまいます。そういうある程度レアなケースを除いても、同時に弾を撃たせたいシチュエーションなんて無数にあると思います、砲台とか。
これが「10個同時に生成したら・・・」とかならまだわからなくはないです。でも4個ですからね。カービィに出てくるワドルドゥはビーム攻撃でいくつかの弾を振り回しますが、これ4個以上だと実装できませんから。一般的なゲームでも実装が厳しい仕様が頻出するレベルだと思いますよ。
そういうことじゃないんだよというのは承知の上で回答をさせていただきますが、
ひっかかる程度と記載させていただきましたが、4発発射で発生する処理落ちは通常体感できない58~59FPSの処理落ちですのであまり問題にはなりません。それでも毎回発生すると目につくとは思いますし落ちないに越したことはないのは間違いありません。
明白に処理落ちが発生するのは8個同時生成くらいからかと思われますが、それでも多くはないのは間違いないでしょう。
この生成処理が重い理由は弾のオブジェクトのベースが高度な物理処理を実行するCharacterBody2Dを使用しているためで、問題としては認識しているため前述の通り修正を予定しています。
しかし、そんな状態でリリースするのは認識が甘い、というのも正しいご指摘だと思いますし、かなりプロジェクトをつくりこんでいただいているのが見て取れますのでご怒りももっともかと思います。
ご期待に添えず誠に申し訳ございません。
なお、ワドルドゥについてはすべてを別々の弾で処理する必要なく、1つの弾で攻撃判定やスプライトをアニメーションさせれば処理可能なためこれに関しては実現可能です。
Godot Engine自体では可能なのですが、その場合はベースのノードをACTION GAME MAKERで使用しているCharacterBody2DではなくArea2D等の別のノードをベースとする必要があります。
Area2D等にはキャラクターを動かす処理は入っていないため、すべてを自分で組む必要があり、かつ沢山出現しても良いように処理を最低限に減らして動作するようにする必要があります。
軽さに関してはまずはここでも問題になっている弾をArea2DやNode2Dとすることで弾幕ができるくらいに軽くすることを目指しています。オブジェクト(キャラクターや敵)でその処理ができるかはわかりませんしお約束もできませんが、できる限り皆さんのご期待に添えるようには開発を続けさせていただきます。