Langsame Beschleunigung darstellen

Doopy

Mitglied
Hallo zusammen,

ich möchte bei meinem 2D-Spiel eine Bewegung möglicht flüssig beschleunigen lassen, sodass man gar nicht merkt dass sich die Geschwindigkeit ändert. Das Problem ist, dass ich ganzzahlige Werte(Pixel) für die Strecken pro Frame angeben muss, und dann merkt man deutlich den Sprung von einem Pixel pro Frame auf zwei. Versucht habe ich bereits die Framerate kontinuierlich zu steigern, doch das sah wirklich unschön aus(Ruckler).
Habt ihr evtl Tipps für mich?

MfG
 

eMmiE

Bekanntes Mitglied
Wenn es dein Spiel ist, dann würde ich die Schrittlänge auf doubles ändern und auch die Positionen, somit hast du dann mehr Schrittmöglichkeiten.
Du musst das eben vor dem Malen runden (-> (int)(zahl +0.5))

Eine andere, kompliziertere Methode ist es, dein Spiel Multithreaded zu machen (wenn es noch nicht ist)
Du hast dann einfach einen Hauptthread, der möglichst wenig Befehle ausführt und somit schnell bearbeiten kann. Eine Idee wäre vllt. auch ein repaint-Thread, der einfach nur malt, damit der Hauptthread nicht so belastet wird.

Lass dir auf jeden Fall mal die Berabeitungszeiten mithilfe von System.currentTimeMillis() ausgeben und schau, wo dein Programm am Längsten braucht

Gruß eMmiE

P.S.: Schöne Weihnachten
 

Doopy

Mitglied
Wenn ich die Schrittlänge in doubles angebe, und die dann anschließend runde habe ich dann aber immer noch die ganzzahligen Werte... Ich kann zwar angeben 1,4 Pixel pro Frame, gezeichnet werden dann aber immer noch 1/frame.

Mit dem zweiten Thread meinst du einen, der seine eigene Sleeptime hat die dann verändert werden kann? Aber wie steht das dann im Bezug zum Hauptthread? Kommt es nicht zu Komplikationen wenn zu unterschiedlichen Zeitpunkten gerechnet und gezeichnet wird?

MfG
 

eMmiE

Bekanntes Mitglied
Ja klar kannst du nicht 1,4 Pixel malen, aber wie sollst du das denn sonst machen?
Du kannst dir natürlich einen Monitor höherer uflösung kaufen und dann imer einen Pixel nach dem anderen laufen, aber das ändert eigentlich gar nichts am Prinzip...
Ein Bildschirm besteht aus Pixeln und du musst dich danach richten!:bae:

Wenn du jetzt aber doubles im Hintergrund benutzt, dann kannst du dem Nutzer viel eher suggerieren, dass sich die Spielfigur/wasauchimmer flüssig bewegt, weil der "Sprung" von 1 Pixel Schrittlänge zu 2 Pixel Schrittlänge usw. immer anders erscheint. bei 0.5 Schrittlänge schon nach 2 Schritten, bei 0.25 Schrittlänge nach 4 usw.

Eine andere Idee, die mir gerade kommt ist, dass man vllt. die Linien aufteilen sollte.
Wenn die Position (erstmal 1-D) sich zwischen Pixeln befindet, dann kann man ja den Pixel, der links von der Position ist mit einem Grauton, dessen Helligkeit der Entfernung der Position zu dem Pixel, wo er gemalt wird, entsprechend eingestellt ist, einfärben und suggeriert somit, dass sich die Linie ohne Rundung weiterbewegt. Das wird allerdings ein bisschen kompliziert umzusetzen ;)

Viel Spaß

Gruß eMmiE

P.S.: Frohen ersten Weihnachtsfeiertag
 

Doopy

Mitglied
Ja das mit den Pixeln hab ich ja genauso gemeint :p

Und das mit den double Koordinaten und Schrittlängen hab ich jez auch verstanden, hatte nur einen Denkfehler, die Variablen bleiben ja immer doubles und werden nur kurz vor dem Zeichnen gerundet.
Hab das mal ausprobiert und es sieht super aus, danke :)
Jetzt muss ich nur noch das repainten in einen separaten Thread verlagern...
Ich probiers mal und meld mich gleich :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Luk10 Langsame(re) Bewegungen / Animationen Spiele- und Multimedia-Programmierung 3
D Einfache Physik (Beschleunigung) Spiele- und Multimedia-Programmierung 6
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
K Messdaten in Echtzeit darstellen in OpenGL Spiele- und Multimedia-Programmierung 4
S Unixcode im Grafikfenster darstellen Spiele- und Multimedia-Programmierung 3
Q Mehr objekte darstellen als Pixel vorhanden Spiele- und Multimedia-Programmierung 6
T Bilder Elegant darstellen... Spiele- und Multimedia-Programmierung 7
M JOGL Cubus mit Rand darstellen Spiele- und Multimedia-Programmierung 3
L Audiodatei analysieren und visuell darstellen Spiele- und Multimedia-Programmierung 3
J virtuellen Framebuffer darstellen Spiele- und Multimedia-Programmierung 2
StrikeTom Schwerkraft mit festen objekten darstellen Spiele- und Multimedia-Programmierung 27
A bilder performant und unhässlich skalliert darstellen? Spiele- und Multimedia-Programmierung 10
T Spiel möglichst einfach Darstellen Spiele- und Multimedia-Programmierung 2
O Graphen darstellen - Fertige Frameworks ? Spiele- und Multimedia-Programmierung 3
A Visuell darstellen ob Server verfügbar Spiele- und Multimedia-Programmierung 2
H zB Punkte darstellen und mit einer Linier verbinden Spiele- und Multimedia-Programmierung 5
N Kartenformate, Diagrammformate mit JavaXX? darstellen Spiele- und Multimedia-Programmierung 2
A Bild im Raum darstellen (Texture2D) Spiele- und Multimedia-Programmierung 4
S 3D Objekte ohne Java3D darstellen? Spiele- und Multimedia-Programmierung 10
B grafen darstellen in java Spiele- und Multimedia-Programmierung 4
T Kameradrehung darstellen Spiele- und Multimedia-Programmierung 19
B Einfache Animationen darstellen Spiele- und Multimedia-Programmierung 12
T [jogl] ein einfaches Dreieck darstellen Spiele- und Multimedia-Programmierung 3
S 3D Objekt erstellen und darstellen Spiele- und Multimedia-Programmierung 4
A 3D Gegenstand in einem 2D Koordinatensystem darstellen. Spiele- und Multimedia-Programmierung 3
T Gekachelte Bilder darstellen Spiele- und Multimedia-Programmierung 2

Ähnliche Java Themen


Oben