# Java ATI Problem???



## radiac (30. Sep 2009)

Hallo,

ich hab hier ein Problem bei meinem Spiel...

Auf meinen Rechner läuft es flüssig mit 60 FPS / Monitor 60 Hz. Habe eine Gforce GTX 275.
Jetzt habe ich das Spiel auf dem PC meiner Freundin getestet.. und da läuft das Spiel auf 10 FPS bei einer ATI x800.

Das Spiel ist ein 2 D Spiel.
Und eigentlich sollte ein 2D Spiel doch auch auf so einer Grafikkarte laufen ohne Probleme...
Das Spiel läuft im moment mit der Auflösung 1024 x 768. Benutze den FullScreenExlusiveMode.

Auf anderen Systemen läuft das Spiel auch flüssig... nur auf ihres nicht... sie hat auch gegenüber anderen Systemen eine ATI Grafikkarte...

Kennst jemand dieses Problem??? Kann mir jemand Tipps geben um dieses evt. zu beheben?

Sie hat die neuste Version von Java drauf. Einen 2.2 GhZ Rechner mit 1 Gb Ram. WinXP. Die Grafiken wurden auf ein Minimum von Speicher reduziert. Es ist ein Scrollgame... und es wird auch nur der sichtbare Screen gezeichnet.
Als Vorlage diente Quaxlis Tutorial.

Die Tiles habe ich schon in verschiedenen Größen getestet...
Ich bin mit meinen Lösungsideen am Ende....

Was kann man noch tun???


Viele Grüße Radiac.


----------



## radiac (30. Sep 2009)

Okay, gleich mal eine Entdeckung die ich testen werde...

Es soll an der Javaversion 1.5 liegen...

Es gibt einen Treiber für ATI karten... den Catalyst 4.5.x...
der soll angeblich das Problem beheben.
Den werde ich jetzt mal testen...

wenn ich mehr weis... sag ich bescheid


----------



## radiac (30. Sep 2009)

Okay... hab folgendes getestet:

Einmal den neuen Treiber auf den ATI Pc (AGP)... kein Erfolg... immer 10 FPS...

Dann habe ich mal eine schlechtere Grafikkarte in mein System eingebaut... Gforce 7200 GS (PCI)... konstante 60 FPS... ohne treiber 42 FPS... das kann doch nicht war sein...

oder liegt das an den Rams??? ich hab 6 Gb und der ATI Rechner 1 Gb DDR-Ram...

1 Gb muss doch ausreichen...

ich weis echt nicht mehr weiter... shcließlich soll mein Spiel auch Ati Leuten Spass machen...


----------



## Heady86 (30. Sep 2009)

Kann es sein dass in den ATI Einstellungen irgendwo Antialiasing oder sowas ressourcenfressendes aktiviert ist? 

RAM dürfte sich eigentlich nicht allzu sehr auf die fps auswirken.


PS:


> ich hab 6 Ghz und der ATI Rechner 1 Ghz DDR-Ram


ich denke du meinst GB

Grüße


----------



## radiac (30. Sep 2009)

jo, hab ich werwechselt . Hatte schon im Catalyst-Center alle Einstellungen runtergeschraubt. War auch Antialiasing dabei. Aber trotzdem kein Erfolg.

Ich vermute, das irgendwie die Wiederholungsrate des Bildschirms, der ATi Treiber und Java sich nicht vertragen oder sich irgendwie gegenseitig blockieren.

Wie gesagt... bei Geforce Karten geht alles einwandfrei mit maximalen FPS.

Aber auch das Treiberproblem hat nicht geholfen...


----------



## Heady86 (1. Okt 2009)

Wie sieht es denn mit anderen Spielen auf dem ATI Pc aus (also ein 3D game oder sowas), ist da die Performance auch so schlecht? 
Das würd ich mal testen wenn du es noch nicht getan hast, evtl. ist auch am AGP Port was falsch eingestellt, da kann man meines Wissens ja auch was von 4x oder 8x usw einstellen ???:L

Grüße


----------



## radiac (1. Okt 2009)

Also Spiele wie Sims3 (niedrigste settings) oder Sims 2 lafuen da Prima... auch Gta San Andreas oder so läuft da anstandslos...

Ich dachte auch schon das evt. was mit den 2D settings nicht stimmt... AGP hat diese Karte nur 4x.

Und ich meine, mein Spiel kommt nun wirklich nicht an die Effizienz von Sims2 oder so dran  (leider) .

Der Rechner wurde auch vor ca. 2 Wochen frisch gemacht... alle Treiber, auch Mainboard Treiber drauf ect... 
Also 3D zeug, und Videos laufen einwandfrei... das dumme ist nur, das es keine 2 D Spiele mehr gibt die auf Xp laufen... ein SNES Emulator funktioniert aber auch drauf ohne ruckeln usw...
Ist schon ziemlich komisch...

Ich lass den Kopf jetzt nicht hängen und schreibe das Program trotzdem bis zum ende, und ignoriere mal das Problem an diesen Pc...

Und hoffe, das es beim Einzelfall bleibt.

Aber würde mich freuen, wenn jemand evt. das Problem kennt und evt. sogar eine Lösung parat hat.

Dennoch danke Heady86 für deine Hilfe .

Viele Grüße Radiac


----------



## Paddelpirat (1. Okt 2009)

Hi,

hast du schonmal diese Option beim Starten deines Programmes ausprobiert?

-Dsun.java2d.opengl=true

siehe:
System Properties for Java 2D(TM) Technology


----------



## EgonOlsen (1. Okt 2009)

Paddelpirat hat gesagt.:


> Hi,
> 
> hast du schonmal diese Option beim Starten deines Programmes ausprobiert?
> 
> -Dsun.java2d.opengl=true


-Dsun.java2d.d3d=false ist auch einen Versuch wert. Die neue Java2D-Pipeline auf Basis von D3D liefert gruselige Ergebnisse auf manchen AGP-Systemen.


----------



## radiac (2. Okt 2009)

Ausprobiert noch nicht. Mir geht jetzt aus der Dokumentation nicht hervor wie ich das anwenden soll.
Muss ich das in der Console von Java eingeben?
Oder beim ausführen von Java hinter der verknüpfung postieren?

Oder wie soll das eingebaut werden?

Hab das auch mal mit dem API Package probiert, aber :noe:.


Viele Grüße Radiac


----------



## Gastredner (2. Okt 2009)

[c]java -jar -Dsun.java2d.d3d=false Spiel.jar[/c] in der Konsole.


----------



## radiac (2. Okt 2009)

Bow ich bin dafür glaube ich zu blöd...

Wenn ich Java.exe öffne kommt eine "Art" Konsole genau 1 Sekunde lang und verschwindet dann wieder. Muss aber auch sagen, das ich mit der Konsole bisher nur in Netbeans gearbeitet habe.... Und dass das Spiel (die Jar) auf einem anderen COmputer nicht läuft und ich dort ja die einstellung testen muss, oder?

GIbts dazu ne kleine Anleitung mit Pfadangabe oder sowas? Wäre super .


----------



## Gastredner (2. Okt 2009)

Wieso java.exe?
Öffne die stinknormale Windows-Konsole ("Eingabeaufforderung", cmd im Ausführen-Dialog) und gib dort den obigen Aufruf ein.


----------



## Paddelpirat (2. Okt 2009)

Hmm, ich frag mich gerade, ob er bei -Dsun.java2d.d3d=false automatisch die opengl Hardware Acceleration benutzt wie bei -Dsun.java2d.opengl=true, oder dann doch versucht alles auf der CPU, also Softwareseitig zu berechnen... weiß das einer?


----------



## radiac (2. Okt 2009)

achsoooo! xD

Gibt ja auch ne Java Console soweit ich weis .
Ich muss jetzt erstmal weg. Wenn das nachher klappt, dann sag ich bescheid.


Danke erstmal für die Help .


----------



## EgonOlsen (2. Okt 2009)

Paddelpirat hat gesagt.:


> Hmm, ich frag mich gerade, ob er bei -Dsun.java2d.d3d=false automatisch die opengl Hardware Acceleration benutzt wie bei -Dsun.java2d.opengl=true, oder dann doch versucht alles auf der CPU, also Softwareseitig zu berechnen... weiß das einer?


Mit -Dsun.java2d.d3d=false benutzt Java die normale 2D-Pipeline, also die, die die Windows-GUI-Funktionen nutzt. Oder anders gesagt die, die bis Java 6 Update 10 sowieso default war.


----------



## radiac (2. Okt 2009)

Okay. Zum Teil funzt es mehr als gut... sogar fantastisch!!! von 11 FPS auf 140 muss ich sogar jetzt ne Sperre einproggn 

Jedoch funktioniert der Befehl nicht bei Vista. Ist das bei Vista Ultimate SP2 x64 schon geregelt? Oder muss ich da was anderes eingeben um auch auf die 140 FPS und mehr zu kommen.

Und ganz wichtig ist auch: Kann man das jetzt irgendwie in sein Programm eincoden, so das man das nicht ejdesmal beim Ausführen eingeben muss? Oder muss man das irgendwie bei der ausführbaren Datei anhängen???

Vielen Dank schonmal für den Zwischenerfolg .


----------



## Paddelpirat (2. Okt 2009)

Unter Vista sollte das eigentlich genauso funktionieren... würde mich wundern, wenn nicht. 
Du kannst dir ja zum Ausführen eine *.bat datei schreiben in der javaw -Dsunblablabla DeinProgrammName steht. Und dann klickst du zum starten darauf. Wenn du noch Consolen-Ausgaben haben möchtest das w weglassen bei javaw.


----------



## radiac (2. Okt 2009)

So dass das Programm von der bat file läd? Das klingt gut.

Aber unter vista bekomm ich den befehl nicht geladen. Er meint dann das "java" nicht gefunden wurde. habs mal groß, mal klein geschrieben... aber no chance... ich probier mal weiter 

Aber das mit der bat datei ist gut .


----------



## Paddelpirat (2. Okt 2009)

Hast du das bin Verzeichnis deiner Java-Installation in den Umgebungsvariablen eingetragen?

Start->Systemsteuerung->System->Erweiterte Systemeinstellungen->Umgebungsvariablen->Path

Dort sollte sowas mit drin stehen (neben anderen Pfaden): c:\Programme\Java\jdk1.6.0_13\bin;

Edit: Ansonsten kannst du den Pfad auch in der bat-datei eintragen:

c:\Programme\Java\jdk1.6.0_13\bin\java -Dsun.javablablalba DeinProgrammname

So sollte er java dann auf jeden Fall finden. Falls du Leerstellen im Pfad hast musst du den Pfad noch in Anführungszeichen setzen.


----------



## radiac (2. Okt 2009)

Hmm, genau das habe ich gerade gelesen  und schon ausprobiert... folgendes habe ich reingeschrieben...

%SystemRoot%\Programme(x86)\Java

das problem an der Sache ist, das die COnsole englische Pfadangaben will... jedoch ich sie im windows selber in deutsch habe...

somit ging das eben nicht...

versucht habe ich:

%SystemRoot%\Program Files(x86)\Java
%SystemRoot%\Program_Files(x86)\Java

usw... lehrzeichen werden ja normalerweise durch _ gesetzt, oder?

Werd das mal bis zum bin leiten... das hab ich noch nicht gemacht


----------



## radiac (2. Okt 2009)

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;
%SystemRoot%\Program Files(x86)\Java\jdk1.6.0_11\bin

geht immer noch nicht... das gleiche nur mit _ hab ich auch schon durch...


_______________________ UPDATE ________________________

Also der Pfad wird jetzt wenigstens gefunden... nur die letzte Zeile Spiel.jar kann er nicht finden... was ja logisch ist, da dieses File sich ja direkt auf c:\ befindet

reicht ein zeilenumbruch in der bat? oder muss man davor noch was setzen??? dann müsste es doch gehen


----------



## Paddelpirat (2. Okt 2009)

Program Files darfst du nicht durch Program_Files ersetzen, das geht schief. Also ich würd entweder den richtigen Pfad (mit Leerstellen) in die Umgebungsvariablen rein schreiben, oder du schreibst in deiner bat datei:

c:\progra~1\Java\bin\java -Djava ....

dabei ersetzt progra~1 dein Program Files(x86). Kann aber auch sein dass es progra~2 heißen muss, weil es bei dir ja wohl auch einen entsprechenden 64 bit ordner gibt. Hab hier nur Vista 32, deswegen hab ich die Probleme nicht ;-) Außerdem installier ich mein Java immer in einen Ordner ohne Leerstellen, das erspart mir oft das lästige rumdoktorn mit Pfaden :-D


Edit zu deinem Update: Wo meinst du einen Zeilenumbruch? Leg dein Jar-Archiv einfach dahin, wo auch deine bat-datei liegt.


----------



## radiac (2. Okt 2009)

Also alles manuell in die Console eingeben funktioniert.
Das mit den leerzeilen stimmt . Die kann ich aber einfach so reinmachen ohne das die konsole mosert.

Das alles klappt jetzt alles bis auf ein paar Handycaps bei vista 64 auch...

folgenes geht leider noch nicht:

Die Batfile die wie folgt aussieht:

c:\program files (x86)\Java\jdk1.6.0_11\bin\java -jar -Dsun.java2d.d3d=false Spiel.jar
c:\progra~1\Java\jdk1.6.0_11\bin\java -jar -Dsun.java2d.d3d=false Spiel.jar (2) auch nix 

Fehler daran ist, das er die am ende aufgeführte Jar file nicht findet...

gebe ich es so in die Konsole ein und habe die Jar im letzten angegebenen Pfadordner, so klappts .

Wie kann ich das machen, das 1. die Batfile klappt... und zum 2ten. Das ich nicht die Jar Files in das Javazeugs reinschieben muss???

Gibts da einen umbruchbefehl für eine neue zeile?
sowas wie > oder so ?


________ INFO __________________

Durch diese FPS Schübe ich hab jetzt 280 xD kann ich das Spiel sowas von verschönern, denn als ich voher dieses Problem hatte ging nicht mal ein Hud xD. Und dadurch das ich die Grafiken auf ein minimum perfekt angepasst hab... hab ich jetzt soviele Ressourcen frei... das ist einfach Klasse!!! Meine Zweifel an Java sind wie fort gefegt .


----------



## Paddelpirat (2. Okt 2009)

Versuchs mal mit:

c:\program files (x86)\Java\jdk1.6.0_11\bin\java -Dsun.java2d.d3d=false -jar Spiel.jar

Edit: bat- und jar-Datei sollten beide zusammen in irgendeinem beliebigen Ordner liegen.


----------



## radiac (2. Okt 2009)

hmm, leider auch nicht

File ist aber noch am gleichen fleck...

Die COnsole sieht man aber ganz kurz... das heisst ja, das sie auf jedenfall man anfängt...
Geht leider zu schnell wieder zu 

AHHH!

UPDATE:

Jetzt hab ich mal die bat file über die konsole gestartet:
folgendes kommt:
Konnte Befehl "c:\program" nicht finden... 

Da muss es auch wieder ein bestimmten befehl für geben xD nur hab ich keinen schimme r mehr... ich google mal


----------



## Paddelpirat (2. Okt 2009)

ruf mal unter start->Alle Programme->Zubehör die Eingabeaufforderung auf. Wechsel darin mit dem Befehl 
	
	
	
	





```
cd\
```
 in das Verzeichnis 
	
	
	
	





```
c:\
```
 und anschließend mit 
	
	
	
	





```
cd <Pfad>
```
 in dein Verzeichnis in dem die bat-Datei liegt und ruf sie anschließend auf. Dann solltest du auch die Fehlermeldung lesen können 

Edit: das liegt an der Leerstelle im Pfad ;-) Probier mal das "Program Files" durch progra~1 oder progra~2 zu ersetzen.


----------



## radiac (2. Okt 2009)

Volltreffer 

Folgendes musste eingegeben werden:

C:
progra~2\Java\jdk1.6.0_11\bin\java -Dsun.java2d.d3d=false -jar Spiel.jar


Jetzt ist nur noch das Problem zu lösen, wie er die Datei aus einem bestimmten Pfad startet... das denke ich mal geht auch wieder mit einer neuen Zeile... Test...

hmm... das mit der neuen Befehlszeile klappt zwar... aber dann ist der oberste befehl wieder weg, den ich vorher bei Java ausführen lassen habe.... *grübel*


----------



## radiac (2. Okt 2009)

Super Paddelpirat. Jetzt geht alles...

Auch der Pfad ist jetzt egal .

Die Datei habe ich einfach umbenannt in SPiel2.jar um zu testen ob er diese noch auswählt... war nicht der fall. Die Batchfile hat die Datei aus C: geladen

Jetzt geht alles einwandfrei!!!!

 :toll:

Vielen Dank für die Hilfe .

Auch an die anderen die Mitgewirkt haben oder es versucht haben!

Super Leute, Super Forum. Java For Ever!!! :applaus:


----------



## Paddelpirat (2. Okt 2009)

Was willst du denn genau machen mit den Pfaden? 

sowas?
Du hast einen Ordner in dem deine bat-Datei liegt und erstellst darin einen Ordner "test". Dann schreibst du in deiner bat-Datei:

C:\progra~2\Java\jdk1.6.0_11\bin\java -Dsun.java2d.d3d=false -jar test\Spiel.jar


----------



## Spacerat (2. Okt 2009)

Pfade mit Leerzeichen gehörten bei Windows schon immer in Ganterpranken (ich meine Anführungszeichen). Also [c]"C:\Program Files\Java\jdk1.6.0_11\bin\java.exe" -jar MyJar.jar[/c]statt[c]C:\Program Files\Java\jdk1.6.0_11\bin\java.exe -jar MyJar.jar[/c]


----------



## Paddelpirat (2. Okt 2009)

Kannst du mir noch den gefallen tuen und sagen, ob es framemäßig einen Unterschied gibt zwischen dem Parameter mit opengl=true und d3d=false?


----------



## radiac (2. Okt 2009)

also d3d belassen und openGL auf true? Kein Problem... ich mach mal ein Test... und hi @ spacerat .

_______________ EDIT_________________________________________

also wenn ich d3d=false mit opengl=true/oder false ersetze hab ich wieder die 60 fps... also das gleiche problem wie vorher.


----------



## EgonOlsen (2. Okt 2009)

Schön, dass das Abschalten der D3D-Pipeline so erfolgreich war. Schade, dass Sun diesen Müll per default aktiviert. Ich habe damals kurz vor dem Release von Downdate 10 mit dem zuständigen Entwickler diskutiert, aber der Mann war völlig beratungsresistent. Die scheinen dort solche Änderungen auch überhaupt nicht in der Breite zu testen. Wenn es auf zwei Rechnern schnell läuft, dann wird es schon überall gut sein...sieht man ja. Die Idee war wohl JavaFX damit zu mehr Performance zu verhelfen, um den aussichtslosen Kampf dieser Totgeburt gegen Flash und Silverlight zu erleichtern. Dafür müssen wir uns jetzt zum Teil mit dieser Performance aus dem Tal der Tränen rumärgern...und JavaFX liegt immer noch wie Blei im Toolregal.
Merkt man eigentlich, dass ich irgendwie kein Freund dieser Änderung bin...?


----------



## radiac (2. Okt 2009)

ähm... jetzt schon :lol:

Naja, schnell laufen ist so ne Sache xD. Was haben die denn dort für Testrechner?

Ich sitze hier ja schon an einer ziemlich guten Maschine...

Mein Spiel beinhaltete in meinen letzten Tests bevor ich alles mögliche versucht habe, die Performance aus dem Spiel zu "kloppen" eine 3000 x3000 Tilemap mit 20x20 Tiles...
Da waren die 60 FPS noch auf meiner Karte stabil... auch auf diverse andere Rechner...
Doch der Rechner meiner Freundin dankte das mit 11 FPS...
Das löste dann schon Panik in mir aus... besonders, weil das mein erstes Spiel ist .

Jedenfalls habe ich dann die 3000 x3000 Map auf 1700 x1800 eingeschrängt und die Farbanzahl auf stolze 100 Farben gedrückt.
Ergebnis... keine Anderung...
Mein FullScreenexclusiveMode lief am ende auf 800x600 und 16 bit...
Ergebnis auf dem fremdPC... 11 FPS...

als ich dann nicht mehr weiter wusste, habe ich das Problem erstmal hier geschildert und den FremdPC mit einer Ati x800 ignoriert...

Jedenfalls endstanden dann sogar an meinem PC mit einer Gforce GTX 750 und 4 KernProzessor und 6 GB Ram sogar probleme, als ich 3 kleine Huds einzeichnen lassen wollte... je Hud bekam ich dann Verluste von bis zu 20 FPS...
Am Ende waren es nur noch 10 FPS...

Ein Kollege, der Java skeptisch sieht xD... meinte dann so... Java halt...
Und als ich dann auch mit meinem Latein am Ende war... dachte ich schon er hat recht.

Ende vom Lied: Mit sowas kann sich Java bei anfänger entwickler wie mich ihre Kundschaft vertreiben xD.

Nur gut das mir Java lernmäßig so gut liegt . Sont wäre ich jetzt bei c# drin .

Naja, ins geheime hätte ich tortzdem weiter Versucht. Denn Ihr bekommt das ja auch hin Spiele zu bauen die groß sind und schön aussehen und zudem flüssig laufen. 

Is nur blöd, wenn man Betriebssystemabhängig denken muss wenn Java eigentlich unabhängig sein soll.


----------



## Paddelpirat (2. Okt 2009)

Die Geschichte mit dem d3d=false kenn ich auch noch von leeren JFrames, die mir angezeigt wurden, wenn ich ein Java-Programm auf einem Rechner mit ATI-Karte testen wollte. 
Allerdings mein ich dass dann halt die Hardwareunterstützung fehlt, bin mir da aber nicht sicher, daher der Test mit dem opengl=true. Hab leider gerade kein eigenes Programm um sowas mal auszuprobieren ^^. 

Aber freut mich, dass es jetzt klappt.

Edit: Danke für den Test, dann merk ich mir mal das d3d=false besser ist


----------



## radiac (2. Okt 2009)

Oh ja xD das ist echt der Hammer

Jetzt kann ich Nachts wieder schlafen und hab die Motivation Morgens um 7 mich vor meinen Rechner zu setzen und mein Spiel zu schreiben.

Ich hoffe es wird euch allen gefallen xD

Will aber noch nicht viel verraten. Aber zum Betatest seit ihr alle eingeladen... ich brauch jede Menge Spieler... 
Werd aber mindestens noch 2 Monate brauchen um was presentieren zu können, da es ein Multiplayerspiel wird und es mit client und Server laufen soll und ich mich in der Hinsicht schwer tue ;(


----------



## Spacerat (2. Okt 2009)

Nochmal was bissl OT. Ich wollte diese Optionen (d3d und opengl) nun als Standard-Optionen für java.exe festlegen. Es gab da doch mal 'ne Möglichkeit, wie man z.B. festlegen kann, das [c]dir[/c] stets als [c]dir -w[/c] oder [c]ping[/c] stets als[c]ping -c 4[/c] ausgeführt wird. Weis noch jemand wie das ging? Hab' schon verzweifelt gegoogeld.


----------



## EgonOlsen (2. Okt 2009)

Man muss zur Ehrenrettung schon noch erwähnen, dass manche Operationen (Skalierung, Transparenz...) mit der neuen Pipeline durchaus sehr schnell sind. Nur ist das eben nicht alles und vor allem ist das Verhalten zu stark von der Hardware abhängig. Aus der Diskussion damals ist immerhin ein Bugreport bei Sun entstanden, für den man voten kann...und wenn ich wüsste, wie man Text aus der Zwischenablage dieses Telefons kopiert, würde ich sogar einen Link darauf posten...


----------



## radiac (3. Okt 2009)

@ Spacerat:


Meinst du das anhängen von Befehlen nach einer Verknüpfung einer exe-file?
Zbs. um ein Programm in einer bestimmten Auflösung zu starten oder so?
Auch Parameter genannt, oder?

Sowas sähe dann so aus:

e:\Half-Life\hl.exe -game cstrike -console

so kenne ich das noch von früher von Spielen wie Counterstrike und so... eher um Mods zu verknüpfen ect...

Half_Life ist das Grundspiel und Counterstrike eben der Mod dazu.

Wenn ich falsch liege dann einfach vergessen .


----------



## Gastredner (3. Okt 2009)

Nein, er meint wohl eher ein Gegenstück zu den Aliases unter Linux, z. B. [c]alias ls=ls -la[/c].
Das scheint mit Windows-Bordmitteln leider nicht möglich zu sein.


----------



## EgonOlsen (4. Okt 2009)

Nachtrag: Hier ist der Bug: Bug ID: 6652116 D3D: SW->Accelerated surface blits are slower with the new pipeline


----------

