私はFarseerを使用して、 XNAを使用してゲームの1つを開発することに成功しました。ゲームはWindowsとWP7の魅力のように実行されます。私は現在、MonotouchとMonogameを使用してIOSにゲームを移植する作業を行っています。私は、MonotouchとMonogameに移植されたゲームの最初のバージョンでも、Farseerをコンパイルして使用しました。パフォーマンスを除いて、すべて正常に動作します。iPhoneデバイスでは、ゲームの実行速度が大幅に低下します。私はいくつかのコード調査を行いましたが、主なボトルネックはFarseerのようです。単一の固定具を取り付けた状態で5〜6体以上を管理する必要がある場合(円)、非常に遅くなります。
ドキュメントを読んで、Farseerを調整するために、Setting静的クラスから値を変更できることに気付きました。
パフォーマンス
エンジンを最大限に活用するには、以下のガイドラインに従ってください。
睡眠を有効 にする睡眠を使用すると、世界中に多数の体を置くことができます。また、ボディのスタック内の小さな動きがスタック内に広がらないため、エンジンの安定性を高めることができます。眠っている体は頭上がほとんどないので、それを有効にすることをお勧めします。
CCD 連続衝突検出を無効にすると、トンネリングは防止されますが、パフォーマンスが低下します。トンネリングに問題がない場合は、CCDを一度に無効にする必要があります。
位置と速度 の反復回数を最小限に抑える反復回数が多いと、パフォーマンスが犠牲になりますが、エンジンがより安定します。ゲームに合わせて値を微調整する必要があります。
悪いニュースは、そのクラスの値を変更しても何も起こらないように見えることです。私は次のように値を変更しようとしました:
EnableDiagnostics = false
VelocityIterations = 6
PositionIterations = 2
ContinuousPhysics = false
VelocityIterations = 1のように低い値でも試しましたが、何も変わらないようです。
パフォーマンスを向上させるために設定クラスの値をすでに変更している人はいますか?