de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 TomRichardson
TomRichardson
質問

Slick2Dのゲーム速度の変更

私はSwingを使ってゲームを作りました。それは少し信頼できませんでしたので、Slick2Dゲームエンジンを使って作り直し始めました。問題が発生しました。

ゲームの背景は、更新メソッドが呼び出されるたびに特定のピクセル数で画面を横切って移動します。これは、スピードアップとスローダウンを続けるので、バックグラウンドは非常に速く動き、その後は非常に遅くなり、変動し続けます。

私はバックグラウンドを動かす私の価値についてデルタ(リフレッシュレートを監視していると思う!)を試しましたが、これは私には正確な値を与えませんでしたので、バックグラウンドを左側にリセットすることができます右から左へ、左から1つは右に-800ピクセル)。

これを引き起こしていると私はどのようにそれを克服するのですか?

ありがとう

1 2011-10-27T22:51:40+00:00 1
プログラミング
game-engine
java
performance
slick2d
jefflunt
28日 10月 2011 в 1:31
2011-10-28T01:31:54+00:00
さらに
ソース
編集
#56793838

ここにいくつかの読者がいます( gamedev固有のStackExchangeサイトがあります)。

  • https://gamedev.stackexchange.com/questions/6825 /時間ベースの動き対フレームレートに基づく動き
  • https://gamedev.stackexchange.com/questions/1589 /固定時間ステップ対可変時間ステップ

これらの記事の中で最も重要な点の1つは、一定数以上のフレームではなく、一定の割合で物事が動くことです。フレームレートは予期せず変化する可能性があるため、時間ベースおよびフレームベースの動きは互いに等価ではありません。

ここにいくつかの説明があります...

したがって、お使いのコンピュータとOSはマルチスレッド化されているため、アプリケーションの外部で何が起きているのか、マシン全体の負荷は何か分かりません。このため、フルスクリーンモードであっても、CPUへの排他的アクセスは得られません。それは、物事がスピードアップして減速する理由の1つです。

Slick2Dのデルタの目的は、このスピードアップ/スローダウンに対処し、フレームレートを動的に変更できるようにして、知覚された動きが画面上で変化しないようにすることですあなたのマシンの負荷。デルタは、リフレッシュレート(一定)を監視するものではありません。 deltaは最後の update の呼び出しから経過したミリ秒数です。

So how do you use this delta properly? Let's say your background is supposed to move at a rate of 100px/sec. If the delta (on a given call to update) is 33 milliseconds, then the amount you should move your background on this update is 100*(33/1000.0) = 0.033 - so you would move your background by 0.033 pixels. This might seem weird, and you may wonder what the point is of moving <1 pixel, but stick with me.

まず、1000の代わりに1000.0で除算しなければならない理由は、浮動小数点数を与えるためにデルタの移動を必要するためです。

Slick2Dの2Dグラフィックスの要素は浮動小数点値を使って物の配置を追跡することに気付くでしょう。これは、デルタから0.033ピクセルだけ移動するよう指示された場合、0.033で移動する必要があります(0ではなく1ピクセルにする必要があります)。サブピクセルの動きは、フレームレートの増減を滑らかにするためにも重要です。なぜなら、いくつかのサブピクセルの動きに対する累積的な効果は、瞬間が正しければすべての小さな動きがピクセル全体に加わるからです。それは完全に滑らかであり、正しい全体的な移動率をもたらす。

あなたの画面はサブピクセル要素ではなく特定のピクセルに画像を変換するので、サブピクセルの動きをするかどうかは関係ありませんが、すべての動き追跡を浮動小数点に変換すると、観察している効果が大きく消えていることを確認してください。

11
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Roxana Elizabeth CASTILLO Avalos
登録済み 16時間前
2
Hideo Nakagawa
登録済み 1日前
3
Sergiy Tytarenko
登録済み 3日前
4
shoxrux azadov
登録済み 5日前
5
Koreets Koreytsev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属