Meistgenutzte Auflösungen / most used ressolutions

Posted By: Meerkat

Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 12:39

Hallo,

ich wollte euch einmal fragen welche Auflösungen für ein Spiel eigentlich Sinn machen da ich da keine wirkliche Ahnung habe. Ich habe danach gegoogelt, aber wirklich was aktuelles find ich nicht, oder ich bin einfach zu blöd dafür. wink Meines Wissens nach sind doch

(4:3) 800x600, 1024x768, 1280x1024
(16:10) 1600x1200, 1900x1200
(16:9) 1920x1080

die meistgenutzten Auflösungen, oder? Hat da jemand eine Idee welche Auflösungen Sinn machen in ein Spiel einzubinden? Ich arbeite derzeit am Grafikmenü und bin dann fast fertig. Das is das einzige was mir noch Kopfschmerzen macht. laugh

MfG

Meerkat Laru


----------------------------------------------

Hello,

i want to ask you which ressoltion makes sense because i have no idea which of them i have to add to my game for options/graphics menu. I have googled, but i cannot find any new/good statistics, or i am stupid or something else. wink Well, my knowledge is the most ressolutions are


(4:3) 800x600, 1024x768, 1280x1024
(16:10) 1600x1200, 1900x1200
(16:9) 1920x1080.

Have anyone an idea which ressoltions makes sense in a game? I working currently on my grapfhics menu and i almost done with it. That's the only thing that makes me headache. laugh

Friendly greets

Meerkat Laru
Posted By: Espér

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 12:46

es gibt da keinen festen wert...
Erstell ne Option wo der Spieler selbst aussuchen kann - Feste Vorgaben sind nur unnütz und je nach Auflösung des Spielers Userunfreundlich..

Nutze am besten en Slider für oder Checkboxen.
Posted By: Rei_Ayanami

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 12:48

1280x720
1440x900
1680x1050

An sich einfach alles supporten, ist ja auch kein Problem, wenn man mehr als eine supported.
Posted By: Meerkat

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 13:04

Ich hab ja vor Buttons zu machen. Je Spalte isses dann das Bildformat. Aber ansich gibts da ja schon eine Menge Auflösungen. Dementsprechend viele Buttons würden es dann werden. Hab halt nur Angst ob der Bildschirm dann am Ende nicht etwas überfüllt ausschaut. Und wie man dieses Contex-Menü mit der Spalte da macht, da hab ich leider keine Ahnung von.
Posted By: Espér

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 13:19

so viele Auflösungen nun auch ned..
Biete eifnach die grundauflösungen an.. aspect wird ja automatisch gesetzt.
Aber auf ein 640x480 fenster bekomm ich locker sämtliche auflösungen aller Bildformate drauf + Buttons ^^"

Wo is das problem dabei?
Posted By: Meerkat

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 13:30

Verstehe ich richtig das ich also nicht den Video Aspect setzen darf damit er nicht das falsche Bildformat wählt? Das habe ich nämlich immer alles manuell gesetzt damit alles stimmte. Als Grundauflösungen kann ich im Prinzip ansehen bei video_mode von der Nummer 7 - 12?

Naja das Problem dabei ist ja unter anderem das ich sämtliche Panels mitskalieren und Positionieren muss. Deswegen erscheint mir das alles etwas heikel. ^^
Posted By: Rei_Ayanami

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 13:31

video_set ftw.

Und panel mitskalieren sollte doch kein Problem sein..?
Posted By: Espér

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 13:32

Also.. normal nimmt A8 den aspect deines PCs Automatisch.. sowie den von jedem anderen auch. Sicherlich kannst du den au manuell setzen.. z.B. um Auflösungen/Aspects von anderen PCs zu testen..
Posted By: Meerkat

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 13:37

Panel mitskalieren hatte ich damals 2 Wochen dran gearbeitet damit das funktionierte. Habe da die Kriese dran bekommen weil ich die entsprechende Rechnungsformel noch net raus hatte, und auch net wusste wie die Positionen neu gesetzt werden mussten. Den funktionierenden Grundcode habe ich ja jetzt. Muss halt nur alles auf die entsprechenden Auflösungen wieder optimieren. laugh

Ich probiers jetzt erstmal mit dem automatischen Aspect, danke euch.
Posted By: Uhrwerk

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 14:05

Hier findest Du detaillierte Hardware Informationen zu Leuten, die Steam verwenden. Das ist sicher ein guter Anhaltspunkt: http://store.steampowered.com/hwsurvey

Schau dort mal unter November 2011 - Primary Display Resolution.

Wenn Du 1920 x 1080, 1680 x 1050 und 1280 x 1024 hast Du bereits die Hälfte der Standardauflösungen abgegrast.
Posted By: Meerkat

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 14:17

Hrm stimmt. Danke für die Info. laugh
Posted By: Lukas

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 14:22

Ich würde aber in jedem Fall empfehlen, keine Feste Liste zu nehmen, sondern rauszufinden, welche Auflösungen das System unterstützt. Ich glaube dazu gab es sogar mal ein Beispiel in den Lite-C Contributions.
Posted By: Rondidon

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 15:41

Ja, ich habe sowas auch vor kurzem eingebaut. Ich mache das, indem ich eine Auflösungsliste erstelle und dann ein dynamisches Dropdown-Menü daraus forme, das genau so lang wie die Auflösungsliste ist (aber nicht unter 1024x768 geht).



Posted By: Rondidon

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 15:50

Hier mal der Code für die Auflösungsliste. Das Beispiel hier erstellt dir eine .TXT Datei mit allen verfügbaren Auflösungen > X-Auflösung 640.

Code:
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Funktion zum Auslesen der verfügbaren Auflösungen. Speichert diese in einer .txt ab

typedef struct _devicemode 
{ 
	char  dmDeviceName[32]; 
	WORD   dmSpecVersion; 
	WORD   dmDriverVersion; 
	WORD   dmSize; 
	WORD   dmDriverExtra; 
	DWORD  dmFields; 
	short dmOrientation;
	short dmPaperSize;
	short dmPaperLength;
	short dmPaperWidth;
	short dmScale; 
	short dmCopies; 
	short dmDefaultSource; 
	short dmPrintQuality; 
	short  dmColor; 
	short  dmDuplex; 
	short  dmYResolution; 
	short  dmTTOption; 
	short  dmCollate; 
	BYTE  dmFormName[32]; 
	WORD  dmLogPixels; 
	DWORD  dmBitsPerPel; 
	DWORD  dmPelsWidth; 
	DWORD  dmPelsHeight; 
	DWORD  dmDisplayFlags; 
	DWORD  dmDisplayFrequency; 
	DWORD  dmICMMethod;
	DWORD  dmICMIntent;
	DWORD  dmMediaType;
	DWORD  dmDitherType;
	DWORD  dmReserved1;
	DWORD  dmReserved2;
	DWORD  dmPanningWidth;
	DWORD  dmPanningHeight;
} SCRMODE; 
  
SCRMODE resolution;

//Table of resolution available
var Tab_x[29]={0};
var Tab_y[29]={0};


void get_screenres()
{	
		//create file with all resolution available
		
		//set all value at zero
		var i = 0;
		for (i=0; i<=29; i++)
		{
		   Tab_x[i] = 0;
		   Tab_y[i] = 0;
		}
		
		var n = 0;
		var e = 0;
		while(EnumDisplaySettings(NULL,n , &resolution)!=0)
		{
			var p =0;
			var VL_exist = 0;
			for (p=0; p<=29; p++)
			{
				if((Tab_x[p]==resolution.dmPelsWidth)&&(Tab_y[p]==resolution.dmPelsHeight))
				{
					VL_exist = 1;
				}
					
			}
			
			if(VL_exist==0)
			{
				Tab_x[e] = resolution.dmPelsWidth;
				Tab_y[e] = resolution.dmPelsHeight;
				e = e+1;
			}
			
			n = n + 1;
		}
		
		var VL_file_write_resolution = file_open_write("resolution.txt");
		if(VL_file_write_resolution!=0)
		{
			var l=0;
			var nummer=1;
			while(Tab_x[l]!=0)
			{
				if(Tab_x[l]>=640)
				{
					file_str_write(VL_file_write_resolution,"aufl_x");
					file_var_write(VL_file_write_resolution,nummer);
					file_var_write(VL_file_write_resolution,Tab_x[l]);
					file_str_write(VL_file_write_resolution,",");
	   			file_str_write(VL_file_write_resolution,"\r\n");
					file_str_write(VL_file_write_resolution,"aufl_y");
					file_var_write(VL_file_write_resolution,nummer);
					file_var_write(VL_file_write_resolution,Tab_y[l]);
					file_str_write(VL_file_write_resolution,",");
					file_str_write(VL_file_write_resolution,"\r\n");
					nummer++;
				}
				l++;
			}
			file_open_write(VL_file_write_resolution);
		}
		file_close(VL_file_write_resolution);	
}



Hiermit kannst du die TXT dann auslesen

Code:
var gvFileParserHandle;

function txt_read_var(STRING* szKey)
{
	file_find(gvFileParserHandle, szKey); // find parameter
	file_seek(gvFileParserHandle, 1, 1); // reset cursor	
	return(file_var_read(gvFileParserHandle)); // return the parameter
}



Und so mache ich das mit dem Dropdown-Menü.

Code:
if(dropdown_aufl_opened==0)
{
	dropdown_aufl_opened = 1;
	get_screenres();
	wait(1);		
	gvFileParserHandle = file_open_read("resolution.txt");
	
	aufl_x_1 = txt_read_var("aufl_x1");
	aufl_y_1 = txt_read_var("aufl_y1");
	if(aufl_x_1==0) {return;}
	aufl_dropdown1.pos_y = menu_dropdown_aufl.pos_y+28;
	aufl_dropdown1.pos_x = menu_dropdown_aufl.pos_x;
	set(aufl_dropdown1,SHOW);
	
	aufl_x_2 = txt_read_var("aufl_x2");
	aufl_y_2 = txt_read_var("aufl_y2");
	if(aufl_x_2==0) {return;}
	aufl_dropdown2.pos_y = menu_dropdown_aufl.pos_y+55;
	aufl_dropdown2.pos_x = menu_dropdown_aufl.pos_x;
	set(aufl_dropdown2,SHOW);

// ...

	file_close(gvFileParserHandle);
	return;
}



Wahrscheinlich ist das recht unelegant, aber es funktioniert genau wie es soll.
Posted By: Meerkat

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 16:33

Ich danke dir vielmals Rondidon. Damit hast du mir den Arsch gerettet! grin

Und was das unelegant angeht, egal wie der Code geschrieben ist, auf das Ergebnis kommt es an! laugh
Posted By: FBL

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 17:02

Nur kleine Randnotiz:

Es muss "< 29" sein, sonst hast du einen Arrayüberlauf.
Posted By: Rondidon

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/17/11 17:42

Stimmt. Danke für den Hinweis.
Posted By: Harry Potter

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/18/11 17:39

Ich würde bei der Auswahl der Auflösung nicht nur eine Untergrenze einbauen (z.B. Auflösung muss breiter sein als 640 Pixel), sondern auch eine Obergrenze (z.B. bis maximal 2560 Pixel).

Warum?
Ganz einfach, weil man nie weiß, welche Hardware die Zukunft bringen wird. Vielleicht gibt es irgendwann mal Auflösungen von 10.000 Pixel?! Und so manches Spiel würde dann vielleicht bei einer höheren Auflösung unspielbar werden.

Die Bildschirmauflösung hat nämlich auf mehrere Dinge eine Auswirkung:

1.) auf die Panels:
Hier gibt es drei verschiedene Vorgehensweisen:
a) Entweder man skaliert die Panels, sodass sie bei unterschiedlichen Bildschirmauflösungen immer die selbe Fläche am Bildschirm einnehmen. Man muss dabei aber bedenken, dass man dann auch die Schriftgröße skalieren muss, und alles was auf den Panels angezeigt wird (z.B. Icons). Diese Vorgehensweise hat außerdem den Nachteil, dass die Grafikqualität nicht gerade besser wird, wenn ein Panel skaliert wird. Je höher die Auflösung, desto pixeliger sieht das Panel dann aus.

b) Oder die Panels behalten die gleiche Größe, und werden nur anders am Bildschirm plaziert. Dadurch bleibt die Bildqualität der Panels gleich gut, jedoch werden die Panels immer kleiner, je größer die Bildschirmauflösung wird. Deshalb sollte man bei dieser Vorgehensweise auf jeden Fall die Bildschirmauflösung nach oben hin begrenzen, weil sonst die Panels (oder Icons, oder die Schrift) so klein werden könnten, dass sie nicht mehr deutlich erkennbar bzw. lesbar sind.

c) Die beste, aber aufwändigste Variante: man legt für verschiedene Bildschirmauflösungen auch verschiedene Panel-Grafiken an. Für Auflösungen von z.B. bis zu einer Breite von 1280 Pixel, verwendet man dann die Panels und Icons aus dem Grafik-Set A. Für Auflösungen ab 1280 Pixel verwendet man dann das Grafik-Set B. Für alle Zwischen-Auflösungen geht man so vor, wie unter Punkt b) beschrieben.


2.) auf Buttons:
Hier gilt generell das gleiche wie für die Panels. Jedoch sollte man bedenken, dass ein Spiel schnell unspielbar werden kann, wenn die Buttons immer die selbe Größe haben.
Ein 16x16-Pixel großer Icon-Button kann bei einer Auflösung von 1024x768 noch relativ einfach mit dem Mauszeiger getroffen werden.
Bei einer Auflösung von 2560 x 1440 Pixel wird das schon sehr mühsam sein, und man braucht eine absolut ruhige Hand dafür.
Bei noch höheren Auflösungen könnte es irgendwann dann gar nicht mehr möglich sein, dass man den Button trifft. Schon gar nicht in der Hitze eines Gefechtes. Das Spiel wird dadurch unspielbar.


3.) auf die Geschwindigkeit des Mauszeigers:
Vor allem wenn man eine eigene Maussteuerung im Spiel verwendet, hängt es stark von der Bildschirmauflösung ab, wie lange es dauert, um einen Mauszeiger(oder ähnliches) von Punkt A nach Punkt B zu bewegen.
Normalerweise macht man ja die Mausgeschwindigkeit einstellbar. Aber man sollte bedenken, dass selbst die Maximalgeschwindigkeit an ihre Grenzen stößt, wenn die Bildschirmauflösung sehr sehr groß wird. Also man sollte hier auf jeden Fall für die Berechnung der Mausgeschwindigkeit auch die Bildschirmauflösung berücksichtigen.


4.) auf die Qualität der Texturen:
Man sollte bedenken, dass auch die Texturen im Spiel immer unschärfer/matschiger werden, je höher die Bildschirmauflösung wird. Wenn man zum Beispiel in einem Shooter vor einer Hauswand steht, deren Textur 1024x1024 Pixel groß ist, wird das bei einer Bildschirmauflösung von 1024x768 super scharf aussehen. Bei einer Auflösung von 2560 x 1440 Pixel wird man aber die Pixel in der Textur deutlich erkennen können. Die Polygon-Kanten der Models werden dann deutlich und scharf zu sehen sein, während die Pixel der Textur immer verschwommener werden, je höher die Bildschirmauflösung wird.


Man sollte also immer überlegen, bis zu welcher Bildschirmauflösung noch eine Steigerung der Bildqualität des jeweiligen Spieles erreicht werden kann. Und ab einer noch höheren Auflösung, die dann eigentlich nur noch eine Verschlechterung des Bildes mit sich bringt, sollte man diese Auflösungen dann sperren.

Ist zumindest meine persönliche Meinung. wink
Posted By: Rondidon

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/18/11 17:45

Hört sich sehr sinnvoll an. Gute Tipps. Vielen Dank. Werde darüber mal nachdenken.
Posted By: Meerkat

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/18/11 17:47

Deine Meinung ist vollkommen richtig und sehr gut durchdacht Harry Potter. Das hat mir selbst nochmal gezeigt was das wichtige dabei ist, danke. laugh

Naja beim Skalieren von Panels skaliere ich von der höchst auflösenden Grafik sowieso immer nur runter, niemals rauf. Sonst wirds pixelig und hässlich. Dacht achte ich drauf. wink
Posted By: Superku

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/18/11 17:56

Was haltet ihr davon: Man erstellt einen isometrischen View und positioniert die Panels in hoher Qualität als Sprites im Level. Diese können natürlich auf jegliche Maus-Events reagieren, auch animiert sein usw., brauchen aber nur einmal für alle Auflösungen produziert, skaliert und positioniert zu werden.

Handelt es sich um ein in-game Menü oder HUD Panels, wird es natürlich schon etwas schwieriger. Dann sollte man wohl jenen View auf NOENT und NOWORLD setzen und die entsprechenden Sprites per .genius und .parent in diesem sichtbar machen und im camera View unterdrücken. Zudem müsste man, bspw. mit NOSKY, den isometrischen Panel-View über den eigentlichen rendern, was dann aber etwas langsam werden könnte.

Alternativ vllt. auch einfach als View-Entities, ich weiß aber nicht, ob die Maus-Events unterstützen? Zur Not könnte man die auch selbst programmieren.
Posted By: Harry Potter

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/18/11 19:04

Originally Posted By: Superku
Was haltet ihr davon: Man erstellt einen isometrischen View und positioniert die Panels in hoher Qualität als Sprites im Level. Diese können natürlich auf jegliche Maus-Events reagieren, auch animiert sein usw., brauchen aber nur einmal für alle Auflösungen produziert, skaliert und positioniert zu werden.

Du vergisst, dass bei den unterschiedlichen Auflösungen bzw. Bildschirmen das Seitenverhältnis nicht immer gleich ist (4:3, oder 16:9, oder 16:10).
Wenn das nicht so wäre, würde Deine Idee funktionieren. Aber so kann es vorkommen, dass bei manchen Monitoren ein Teil der Panels dann oben und unten abgeschnitten wird. Oder Du positionierst die Panels so, dass sie auf 16:9-Bildschirmen gut aussehen, dann hast Du aber auf 4:3-Bildschirmen oben und unten einen leeren Rand. wink
Posted By: Superku

Re: Meistgenutzte Auflösungen / most used ressolutions - 12/18/11 19:12

Hm stimmt, abgeschnitten werden dann zwar keine Panels/ Sprites, aber sie werden gestreckt/ gestaucht. Man müsste view.left/right/bottom/top dynamisch anpassen und die Sprites, zumindest in einer Koordinate, dynamisch platzieren. Das sollte aber auch kein Problem sein, denn man könnte bspw. den offset zur linken oder rechten View-Begrenzung in einem Skill speichern und die Objekte bei Laufzeit wie folgt positionieren:

if(sprite.skill1 < 0) // an linker Seite orientieren
sprite.y = view.left + sprite.skill2;
else sprite.y = view.right - sprite.skill2;
© 2023 lite-C Forums