Nichtgewollte Striche im "Game"

Hallo,
Ich habe mir zu übungszwecken ein kleines Game geschrieben. Doch manchmal tauchen dort blaue Striche im Screen auf. Ich hoffe jmd hat eine Idee woher der Fehler kommen könnte… oder jmd hatte auch mal ein ehnliches Problem! Danke schonmal im Voraus :slight_smile:

Mein Game ist ehnlich aufgebaut wie das im Tutorial von Quaxli.

Ich habe versucht eine Screenshot von dem Problem zu machen…hat aber nicht gefunzt ^^
Ich male das Problem mal in einen normalen Screenshot rein also nicht wundern :smiley:
und generell, mein Game hat immoment nur Pseudo Grafiken :wink:

könnte das vielleicht an deinem Bildschirm liegen?
Einer von meinen hier auf der arbeit hat auch so Striche, aber in hellgelb.

Wie malst du denn die Tiles? Wenn die z.B. skaliert gezeichnet werden kann es bei bestimmten Skalierungen vorkommen, dass die nicht perfekt aneinanderpassen…

Also wenn sich der Player bewegt bewegt er seine “View” und jenachdem welches Object(also auch Tile) sich in der View befindet wird dann gezeichnet. Es wird aber nicht an seinen x und y Koordinaten gezeichnet sondern an x - view.x (also - wieweit sich die View vom Nullpunkt entfernt hat), das gleiche auch mit y.
Am Anfang werden halt so viele Tiles erstellt bis die Map voll ist…

Skaliert wird da eig nichts !

Edit:
An meinem Bildschirm liegts glaube ich auch nicht, denn am Anfang des Games (als gerade mal der Player da war) ging alles ohnr Striche.

Auch wenn ich gerade GAR keine Idee habe: Warum hat das mit dem Screenshot nicht funktioniert? (Notfalls “Print Screen” drücken und dann in Paint “Einfügen”, sollte ja immer gehen).

Vermutlich wird der Bildschirm ständig neu aufgebaut und er hat den falschen Frame erwischt?

Mehr Informationen könnten da helfen, wie eben ob die Striche nur kurz Aufflackern (z.B. während des scrollens) oder ob es situationen gibt, wo sie bleiben… und eben, wie sie genau aussehen.

Die Striche flackern meist nur kurz auf (trotzdem stören sie extrem!), also bleiben sie nie sehr lange da^^
Am häufigsten tritt der Fehler beim bewegen des Player’s auf(vorallem beim bewegen nach links).
Ich werde Morgen nochmal versuchen einen Screenshot von dem Problem zu machen…das schwere ist nur den richtigen Augenblick zu erwischen :smiley:

Soo hab jetzt doch noch ein par Screen’s machen können …

Wenn du das Spiel hochladen würdest könnte ich morgen mal testen ob das bei mir auch so ist. (oder jemand anderes)

Dann lads doch mal hoch. (die screens)

Bei Tiles sind solche Grafikfehler fast immer Rundungsfehler.
Gibst du die Koordinaten z.B. in float an kann es leicht passieren, dass irgendwo ein Nachkommateil abgeschnitten wird und an beiden “Seiten” der Kante abgerundet wird. Schon fehlt ein Pixel an der betreffenden Stelle. (Ein Tile ist dann ein Pixel kürzer, bzw ein Tile wird einen Pixel zu weit Rechts gezeichnet).

Gruß

Komisch ich hatte die Screen’s eig hochgeladen :smiley:
Dann lade ich sie halt nochmal hoch.
Das Game kommt später die jar Datei will gerade nicht funktionierenn:(

Edit:

@ firephoenix Danke werde nochmal schauen ob es daran liegt.
achso was ich noch sagen wollte…wenn ich die fps so ca. auf 30 setze tritt der Fehler seltener aus ! dafür läuft der Rest nocht ganz so toll :frowning:

Schau dir doch mal dieses Video an:


Darin wird ein ähnliches Phänomen, sowie Algorithmen zur Lösung des Problems vorgestellt.

Ohne das Video gesehen zu haben: Ich würde hier nicht auf ein Double-Buffering-Problem tippen (vor allem erledigt sich das bei Swing ja automatisch). Aber ohne Code kann man nur schon SEHR unfundiert rum-raten…

Danke für das Video werde ich mir anschauen!
Okay ICH versuche es nochmal mit der jar Datei…
Also die jar Datei funzt immer noch nicht :frowning:
aber es geht ja auch eher um den Code.
Also in Eclipse funzt alles aber die jar läd die Sourcedateien einfach nicht obwohl sie in der jar sind.
also nicht wundern wenn die jar nicht funzt !!
Achso vlt klappts ja bei euch dann müsst ihr ENTER drücken um zu starten :wink: Aber da er die Sourcedateien nicht läd dürftet ihr nur einen Bluescreen sehen :frowning:

Da ich Java Einsteiger bin und das mein erstes Game ist sind die Sachen die ich mir da zusammengebastelt habe vlt nicht so das idealste …

In der Jar sind nur class Dateien … Ich könnte sie jetzt zwar decompilieren, aber das ist mir zuviel Arbeit. Bitte packe die Java-Dateien in ein Zip und lad es hoch, dann können wir es uns anschauen.

Ok mach ich :wink:
Im Anhang einmal die .java Dateien und die Sourceordner pics&Map.

So habe mir den Code angeschaut und was ich bis jetzt auf die schnelle herausgefunden habe:
Du updatest die Position des Schiffes alle 10 ms, um alles zu zeichnen werden bei mir ungefähr 20 ms benötigt. Das Problem was dabei entsteht: Während du es gerade zeichnest, werden die Positionen der Sprites verändert und dadurch kommt die Lücke ab und zu zustande. Und zwar logsicherweise nur wenn man in Richtung Nord oder Westen fährt.
Problem Nummer 2 ist das repaint(). Das sagt Java nur, hey wenn du mal wieder Zeit hast, dann male neu. Die paintComponent(Graphics g)-Methode wird nicht zwangsläufig sofort aufgerufen. Ich empfehle dir die BufferStrategy. Eine Minitutorial findest du hier.

Danke für deine Antwort !!
Werde mir das Tut gleich mal anschauen.
Würde die BufferStrategy das Problem mit dem den Strichen beheben?
Denn es würde ja trotzdem zu Problem 1 kommen oder?
Naja ich schau mir erstmal das Tut an.

*** Edit ***

So jetzt tritt das Problem mit den Strichen nicht mehr auf :smiley: !!!
Dafür sind jz die fps von 90 -100 auf 40 -50 gesunken :frowning:
Achso und sobalt ich mit der Maus klicke hängt sich der KeyListener auf(ohne Exception), Oder der Mauslistener/KeyListener funzt erst garnicht(z. wenn ich den MausListener zum Frame „adde“).

@ Apo Danke erstmal für das Tut!!!
Aber was soll bei der render() Methode das Parameter gr?? hab ich irgentwie nicht verstanden, denn es wird glaube ich nicht gebraucht …

Im Anhang mein „neuer“ Code, vlt könnt ihr mir ja sagen warum die Listener nicht so funktionieren wie sie sollen und warum die Performence so im Keller ist.
Danke schonmal im Voraus :wink: !!