Fullscreen langsamer als Window Mode

Titanpharao

Bekanntes Mitglied
Hallo liebes Forum,

ich wollte gerade für mein Java Spiel IMoY Wujinyou vielleicht kennen es noch ein paar Leute, einen FullScreen Modus einbauen.

Soweit so gut ... klappt auch, ok die JDialogs machen noch ein paar Probleme, aber die kann ich weg machen denke ich.

Z.z. gibt es eigentlich nur zwei Probleme, das eine ist wohl von mir verursacht, das andere verstehe ich nicht :D

1. Wenn ich das Spiel minimiere, sind viele Texturen weg. Das sind alle meine VolatileImage Texturen. Ich habe schon gelesen, das man diese "reloaden" muss oder so ähnlich ... nur hatte ich das im Fenster Modus glücklicherweise nicht gebraucht :D habe sie nur als diese geladen, da sie schneller sind ... denke ich :p
Es fehlen auch ein paar VolatileImage Texturen wärend des Spiels schon, was noch komischer ist.

2. Das Hauptproblem ist aber die Performance! Da das ganze Spiel auf Events bassiert, kann ich keine FPS messen, aber es läuft einfach nur Sch****! Richtig langsam, teilweise "normal" dann wenn ich das Fenster beim laufen öffne und schließe ruckelt sich das Programm einen ab. Auch in Kämpfen mit Monstern ist es schrecklich langsam. Kann es sein, das durch den Fullscreen-Mode alle Buffering Strategien ausgeschalten wurden? Ich denke das Spiel passt eh nicht auf diesen Modus, aber viele Leute haben einen großen Monitor und wollen nicht so ein kleines Fenster :)

Hier mal der Code, wie ich es erzeuge. Jemand eine Idee warum es soooo lahm ist?

Danke für die Anworten.

Code:
	public boolean switchToFullScreen(boolean fullScreenOn){
		boolean isFullScreen=device.isFullScreenSupported();
		setUndecorated(isFullScreen);
		if(isFullScreen){
			device.setFullScreenWindow(this);
	        DisplayMode dm = new DisplayMode(720,576,32,60);
	        try{
	        	device.setDisplayMode(dm);
			}catch(Exception e){
				isFullScreen=false;
			}
			validate();
		}
		return isFullScreen;
	}
 

Empire Phoenix

Top Contributor
DisplayMode dm = new DisplayMode(720,576,32,60);

Evtl unterstützt die Hardware diese auflösung nicht nativ und emuliert? versuch einfach mal ne standart auflösung mit schwarzem rand zum vergleich.
 

Titanpharao

Bekanntes Mitglied
War eine Idee Wert, bringt aber nichts. Es läuft halt im allgemein etwas langsamer und wenn man die Spiel Menu's öffnet, und dabei läuft ruckelt es soo stark, wo es im Window gar nicht ruckelt und absolut flüssig läuft ...
 

Titanpharao

Bekanntes Mitglied
Ok ich habe das Problem jetzt lokalisiert.

Es liegt an den VolatileImages im FullScreen Modus :S Jetzt bin ich leider etwas verwirrt ... dachte die sind "schneller" :(

Oder ich wende sie falsch an. Ich lade mir eigentlich ein Bild in ein VolatileImage und Graphics.draw es dann auf ein JPanel.

Dieses ist im Fenster Modus schnell, aber im Fullscreen doppelt so langsam.
Eigentlich sollte das zeichnen der Welt gar keine Zeit benötigen, so wie im Fenster Modus, aber im Fullscreen brauch es überall länger, auch via BufferedImages auch wenn es da nur eine Steigerung von 202 auf 276 ist es trotzdem 25% langsamer. Liegt es einfach daran, das jetzt "1440x900" anstelle von 576x576 gerendert werden? Obwohl meine Settings ja 720x576 sagen :S

Hier hat jemand ein ähnliches Problem, kann nur die Lösung nicht richtig deuten bzw ist keine angegeben ... Drawing VolatileImages is slower in fullscreen mode?
 

Eldorado

Bekanntes Mitglied
Offtopic: Warum kann man das Spiel eigentlich nur über eine exe starten? Mir würde als Linuxer eine jar-Datei wesentlich besser gefallen :) Oder finde ich die jar-Datei einfach nicht?
 

Eldorado

Bekanntes Mitglied
Das wäre für mich dann vielleicht schön, aber ich glaube damit wäre mein PC nicht glücklich und deswegen wäre ich dann auch wieder nicht zufrieden ;)

Edit: Ok, dachte das wäre nur ein Scherz gewesen. Dachte eigentlich exe und jar sind unterschiedlich aufgebaut...aber diesmal wohl nicht :D
 
Zuletzt bearbeitet:

Titanpharao

Bekanntes Mitglied
Nein das ist eine Gewrappte Exe um die normalos nicht abzuschrecken :p Jars machen manchmal mit andern programmen Probleme. Nokia irgendwas z.B.

Aber schön das du es somit starten kannst :D Hinterlasse doch ein Comment im Forum ^_^


Nagut dann arbeite ich mal weiter am neuen Release für morgen.
 

Titanpharao

Bekanntes Mitglied
So der Release ist draußen, update News gibts auf der News Seite ...

Habs jetzt mit Fullscreen raus gebracht, aber so richtig glücklich hat er mich nicht gemacht.
Habe alle VolatileImages durch normale Images wieder ersetzt, aber es läuft immer noch ~25-50% schlechter als im Fenster :S
 

Antoras

Top Contributor
Hab zwar keine Ahnung wo der Fehler sein könnte, aber vllt. bringt es was wenn du ein KSKB baust. Dann sieht man vllt. ob du einen groben Schnitzer im Codeaufbau hast.
 

Titanpharao

Bekanntes Mitglied
Naja, das mit dem KSKB wird nicht viel bringen ... der Code ist eh viel zu groß dafür.

Aber ich weis genau, das der Repaint Befehl der "Welt" am längsten dauert. Im Fenster Modus 0ms und im Vollbild schwankend zwischen 3-10ms! pro aufruf! Brauch dern ImageObserver für Fullscreen oder sowas ... da is doch was faul :(
 

Titanpharao

Bekanntes Mitglied
Das wäre ja kein 576x576 Pixel @ 22" Monitor Fullscreen.

Das Fenster wird ja gescretscht auf die "hohe" Auflösung des Monitors, wenn man ein altes 2D in 640x480 spielen würde.

Darum gings mir aber ... sonst könnte man eh Fenster lassen, ist eh mehr für Schule & langweilige Arbeitstage gedacht ^.-
 

Tokolosh

Mitglied
Hallo, ich habe ein vergleichbares Problem. Im Fenstermodus läuft es schnell genug, aber sobald ich im Vollbild bin kommt es mir vor als ob immer wieder einige wenige Frames übersprungen werden bzw. merkt man eben das stehenbleiben des Sprites. Zwar nur kurz, aber bemerkbar. Besonders bei Standanimationen. Wie hast du das Problem genau gelöst?????
 

Titanpharao

Bekanntes Mitglied
Ebene noch gar nicht ... benutzt dein Spiel Aktiv oder Passiv Rendering? Meins passiv, weis nicht ob es damit zusammenhängt, kanns aber eigentlich nicht, da der "Repaint" aufruf, die Zeit verfrisst und da kann ich ja nichts mehr machen ...
 

Ähnliche Java Themen


Oben