2016-11-30 1 views
0

私はいつもゲームデザインに関して最適化が心配で、経験豊富なKivyユーザーにいくつかの懸念を尋ねる必要があります。Kivy - Hand-Helds(Android、IOSなど)用の最適化

どちらが本当に高速ですか?

あなたは、あなたのグラフィック命令をクラス属性に保存したとします。フレームごとに多数のグラフィックスを画面上で更新する予定ですが、キャンバスを追加したり取り除いたりしていない場合は、Ask_Updateが有効な選択肢のようです。

あなたは十分に周りのグラフィック部分を追加したり削除したりできます。キャンバスとキャンバスをクリアするだけの方がいいですか?

または

すべての除去または添加後にクリアを呼び出す方が良いでしょうか?それはちょうどクリアとキャンバスの尾の痛みのように思えるでしょう。グラフィックスを戻してください。

ベクター...

ベクターはどれくらい最適化されていますか?機能/方法は遅いプロセスですか?私が過去に3Dエンジンを使用していたのは、遅い呼び出しがあって、通常は数学的なものだったからです。

ハンドヘルドデバイスで実行されているゲームアプリケーションのフレームレートとは何ですか?

インスタンスを削除することについても不思議です。 kivyはインスタンスを削除する特別な呼び出しを持っていますか、または通常のdel呼び出し(クリーンアップ関数の実行後)とpythonガベージコレクションで十分ですか?

私はKivyのdos-and-dontsを知らなかったことを認識するために何かを開発したくないので、私は今研究しています。

答えて

0

キャンバスを消去するのは効率的ではありません。実際にすべてを削除しない限り、キャンバスを消去しないでください。

一般的にask_updateを呼び出す必要はありません。

Kivy's Vectorsは特に最適化されていませんが、リストを囲むだけのラッパーですが、おそらく実際には問題はありません。

フレームレートの目標は60fpsです。

Kivyで特に優れた性能を持つゲームエンジンの場合、KivEntを見ることができます。

+0

私はテストを行い、キャンバスをクリアしてもフレームレートが低下しないことが判明しました。 3Dエンジンの仕組みについて考えると、各フレームが新たに描画され、最後に描画されたフレームがクリアされます。キャンバスを消去して再描画するときも同じロジックが適用されます。あなたがしているのは、シーングラフを作成することです.GPUに描画する必要があるものを送り、次のフレームでは(デッドモンスターが削除されたように)描画される必要のないものは送信しません。キャンバスをクリアしないと、そこに最後のフレームの内容が残っているため、フレームレートのクラッシュが説明されます。 – chitondihk

+0

キャンバスをクリアしていないようですが、フレームごとに新しいものを追加したようです。そうしないで、既にキャンバスに追加されている既存のキャンバスオブジェクトを更新します。 – inclement

+0

オブジェクトを追加/削除する場合は、それらのオブジェクトを追加または削除してください。これを行うと、CPU上ですべてを再計算し、GPUに再び渡します。これはまさにあなたが起こりたくないことです。 – inclement

関連する問題