トップページ > 記事閲覧
MV1CollCheck...のバグ(?)
名前:ゆゆ 日時: 2017/05/31 18:18

お久しぶりです。 この前は本当にお世話になりました!! 管理人さんの対応に大変感謝しています! ---------- 最近、ゲーム制作を再開したのですが、 Dxライブラリのバグなのかも... と思うものが出てきたので質問します。 MV1CollCheck_Sphereという関数です。 モデルと球の衝突判定をこの関数でやっていたのですか、 58~60FPSくらいで動いていたのが、 あるとき突然1フレーム1~2秒くらいのスピードになり 衝突判定もされなくなる、ということが発生しました。 自分のプログラムのせいかなと思って試したりしてみましたが、 心当たりがある場所はなく、どこを直しても直らず... (見落としの可能性は一応あるかもしれないですが...) いろいろ試したのでその詳細を記載します▼ 細かい数字フレームなど については気になさらなくて大丈夫です。 試行ごとの数字の増減が重要かもしれません... バグの詳細です-------------------------------------▼ プログラムの内容------------- モデルは5452ポリゴン、全て三角ポリゴン 設定は MV1SetUpCollInfo(モデルハンドル,-1,8,8,8) 衝突判定の関数 MV1CollCheck_Sphere3つ (MV1CollCheck_Line1つ→一応、どの試行でも接触しています) 試行--------------------------------------------- 試行1:ただひたすらモデルに球(2つ)をぶつけ続けてみる 結果→開始11773フレームで発生(衝突していなかった時間もある) --------------------------------------------- 試行2:衝突の時間を減らしてみる 結果→開始13248フレームで発生(試行1より長くなった) --------------------------------------------- 試行3:球3つをモデルにぶつけ続けてみる 結果→開始8954フレームで発生(衝突していなかった時間もある) (試行1より短くなった) --------------------------------------------- 試行4:MV1CollCheck_Sphereの関数を一つ減らし、球2つをぶつけ続けてみる →関数の数は2つ 結果→開始13061フレームで発生 (試行1より長くなった(不明)) --------------------------------------------- 試行5:Mv1CollCheck_Sphereの関数を12個くらいに増やし、全部衝突させ続けてみる 結果→開始2000フレームくらいで発生(すごく短くなった) --------------------------------------------- 試行6:さらに関数の数を増やして28個くらいにして、全部衝突させ続けてみる 結果→開始1400フレームくらいで発生(もっと短くなった) --------------------------------------------- 試行7:さらに増やして、45個くらいにして全部衝突させ続けてみる 結果→開始800フレームくらいで発生(さらに短くなった) --------------------------------------------- ---------------------------------------------------------▲ このような結果になりました。 衝突後は交点を求めたりしているのですが、消しても変わらず発生しました。 また、線の衝突も消しても発生しました。 MV1CollCheck_Sphere関数を全部消すと、発生しませんでした。 また、全く衝突しない場合は関数が45個くらいあっても発生しませんでした。 バグは以下の通りです------------▼ それまでは軽いのですが、 →衝突していたら突然、プログラムが重くなって、判定がなくなる (今まで落ちなかったのに、急にすり抜けて落ちて行く) また、試行の際、 MV1CollCheck_Sphereが増えるほど重くなる傾向がありました。 →試行1の時は1フレーム1秒ほどの重さ →試行7では1フレーム15秒ほどの重さ ちなみに、バグが発生するまでは、どの試行も55~60FPSくらいです。 -------------------------------------------▲ 一度、管理人さんの方でご確認いただけないでしょうか...? もしかしたらこちらのミスかもしれないですが... お手数をおかけしますが、よろしくお願い致します。
メンテ

Page: 1 |

Re: MV1CollCheck...のバグ(?) ( No.1 )
名前:管理人 日時:2017/06/01 03:05

MV1CollCheck_Sphere を呼び続けると必ず発生するということですね… 思い当たることとしまして、MV1CollCheck_Sphere の戻り値の MV1_COLL_RESULT_POLY_DIM は 不要になったら関数 MV1CollResultPolyDimTerminate の引数にして呼び出し、後始末をする必要があるのですが それは行われていますでしょうか? その処理を行わなかった場合、使用メモリ量がどんどん増えて、やがて空きメモリが無くなり MV1CollCheck_Sphere が正しく動作しなくなるので、本件のご報告のような状態になると思います よろしければご確認ください m(_ _)m
メンテ
Re: MV1CollCheck...のバグ(?) ( No.2 )
名前:ゆゆ(解決) 日時:2017/06/01 05:20

申し訳ございません...!!! かなり、うっかりしていました.... 衝突判定の削除をしていませんでした... 無事解決しました... ありがとうございます 気をつけます..
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存