# Spiel ruckelt auf neuem Rechner bzw. mit Java 6



## Quaxli (17. Mai 2007)

Gleich vorweg: Ich will nur ein paar Hinweise, in welcher Richtung ich suchen soll.

Ich habe mir vor einem halben Jahr einen neuen Rechner zugelegt (OS WinXP, Java-Version 6). Heute habe ich ein altes Java-Spielchen gestartet und mußte feststellen, daß es ruckelt wie blöd.
Ich bräuchte mal ein paar Ideen woran es liegen könnte. Entwickelt wurde es unter Win2k und Java 5. Könnte es an den Java-Versionen liegen? Wohl eher nicht, oder?  ???:L 
Auf dem alten Rechner, mit Win2k und Java5 lief es absolut problemlos.

Die Bewegung meiner Objekte steure ich prinzipiell abhängig von der Zeit, die seit dem letzten Loop vergangen ist (gemessen über System.nanoTime()). Der momentane Verdacht wäre, daß hier der Hund begraben ist. 

Wer's mal ausprobieren will:
JSeafox

Bin für jeden Hinweis dankbar.


----------



## Sanix (17. Mai 2007)

Ruckelt bei mir auch mit WXP Java5.


----------



## 0xdeadbeef (17. Mai 2007)

Bei mir läuft's eigentlich soweit flüssig - von gelegentlichen Rucklern abgesehen.
Laß mich raten: Du hat jetzt einen DualCore-Rechner und der alte Rechner war noch SingleCore.
Falls ja, solltest Du Dich mal nach entsprechenden Fixes umsehen. Von MS gab es mal einen entsprechenden DualCore-Patch und von AMD gibt es spezielle Prozessortreiber.
Kern des Problems ist, daß man für solch hohen zeitlichen Auflösungen die prozessorinternen Timestamps benutzt und daß die bei DualCores auseinanderdriften.
So gesehen ist es bei Spielen oft besser, lieber nur die ungenaueren Millisekundentimer zu benutzen, die von diesem Problem nicht betroffen sind.

Link zum AMD patch:
http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_871_13118,00.html

Microsoft Patch Info und Download
http://support.microsoft.com/?id=896256
http://www.amdzone.com/files/WinXPdualcorehotfix.exe


----------



## André Uhres (17. Mai 2007)

Läuft bei mir völlig reibungslos.
Java 6   
Windows XP SP2 Media Center Edition
Pentium D 2,8 GHz   
1Gb RAM


----------



## Quaxli (17. Mai 2007)

DoubleCore habe ich nicht. Aber den Tipp mit der Umstellung auf Millisekunden ist einen Versuch wert, denke ich. :toll:


----------



## Tobias (17. Mai 2007)

Ruckelt bei mir (Java 5 / AMD DualCore) kein bißchen.

mpG
Tobias


----------



## Gast (17. Mai 2007)

Läuft bei mir,
Java6 Vista, Athlon xp3000+ flüssig


----------



## mephi (17. Mai 2007)

läuft bei mir ebenfalls prima,
java6, xp, intel duo core 2ghz, 1,5gb ram


----------



## Beni (17. Mai 2007)

Ebenfalls flüssig.
Win XP, Java 6, 512 MB RAM, Centrino 1600 MHz  ???:L


----------



## 0xdeadbeef (17. Mai 2007)

Habe noch meinen Standardtip vergessen:
sleep() von unter 10ms vermeiden. Besser noch >= 20ms. Kleinere Zeiten können zu Problemen führen.

Nebenbei: ist das Absicht, daß die Torpedo nach vorne ("a") anders funktionieren als die nach oben? Wenn man nochmal "a" drückt, während der Torpedo schon unterwegs ist, explodiert er und ein neuer wird abgeschossen. Das ist zumindest bei denen nach oben nicht so.


----------



## Sanix (17. Mai 2007)

Sleeps von unter 20ms löse ich so, ist das Richtig?


```
//Wait some time
			do
			{
				Thread.yield();
			}
			while(System.currentTimeMillis() - startTime < Stage.PLAY_SPEED);
```


----------



## Tobias (17. Mai 2007)

Äh, ich kann mehrere horizontale Torpedos im Wasser haben... Aber mal ne ganz blöde Frage, was macht ihr gegen die von Flugzeugen abgeworfenen U-Waffen?

mpG
Tobias


----------



## 0xdeadbeef (17. Mai 2007)

Ok, ziehe alles zurück und behaupte das Gegenteil. In der Tat ist es so, daß die Torpedos sich gegenseitig zerstören, wenn man zu schnell zweimal hintereinander einen abschießt. Das ist aber bei den vertikalen auch so, mit ist es aber (warum auch immer) bei den horizontalen stärker aufgefallen. Eventuell ist es da auch wirklich ausgeprägter.
BTW: es wäre besser, wenn der Torpedo beim Drücken der Taste losgeschickt würde und nicht erst beim Loslassen.


----------



## Quaxli (18. Mai 2007)

Es scheint sich somit um ein Timer-Problem zu handeln. Denn eigentlich dürfte man die Torpedos nicht so schnell abschießen können, daß sie sich gegenseitig zerstören.

Danke für die Feedbacks!


----------

