0

Box2Dを使用するiOSゲームがあります。デバッグモードで実行すると、すべて問題ありません。リリースモードで実行すると、すべてのゲームオブジェクトの速度が上がり、ゲームオブジェクトの質量が大きくなるか、そのようなもののように見えます。とても不思議です。

フレームレートは両方のバージョンでほぼ同じであるため、問題はありません。ゲーム内のすべては、とにかくフレームレートに依存しない必要があります。

XCodeのどのプロジェクト設定がこれを引き起こしている可能性があるかについてのアイデアはありますか?

4

1 に答える 1

3

デバッグで実行すると、コンパイラは最適化を行わないため、バイナリははるかに大きくなり、コードは多くの場合、役に立たない作業を行います。リリースでは、オプティマイザ(デフォルトは-Os)が実行され、コードを縮小するために積極的に検出します。これが、開発者がコードをテストするときに通常はデバッグではなくリリースを使用し、本当にlldbが必要な場合にのみデバッグに切り替える必要がある理由の1つです。

編集:それで、違いのためにここで関係しているかもしれないいくつかのことがあります。まず、Box2Dは含まれているプロジェクトですか、それともライブラリにリンクされていますか?最初の場合は、デバッグ構成とリリース構成の両方があることを確認してください。とBox2Dのビルド設定を見て、いずれかの構成で定義されているもの(つまり、-DSLOWが見つかる可能性があります)または設定される(またはフラグを設定しない)そのような定義ステートメントがあるかどうかを確認します。ああ、そしてデバッグ私は通常、Box2D(またはあなたのコードでさえ)が何らかの目的で使用するかもしれないDEBUG = 1(プリプロセッサセクションで)を定義します。

別のビルド設定が見つからない場合は、デバッグ構成で使用される値を実際に-O0から-O1、-O2、および= Osに変更することで、オプティマイザーが影響を及ぼしているかどうかを確認できます。同様に、リリース設定を-Osから-O0に変更できます。

デバッグ構成の「DEBUG」設定、リリースでのその他の定義、またはオプティマイザーのいずれかが理由であると推測します。デバッグとリリースを試してみると、何が問題なのかを理解できます。実際、リリース構成に(一時的に)DEBUG=1を追加することもできます。

于 2012-08-03T15:03:13.433 に答える