Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.01.2011, 13:34

Maßstab in openGL

Hallo zusammen,

kurz vorweg: Ich lese schon seit ein paar Wochen in diesem Forum mit und finde es sehr informativ und interessant.
Ich bin Fachinformatiker im Bereich Anwendungsentwicklung und habe beschlossen mich auch mal mit der Spieleprogrammierung zu beschäftigen (uns gehn die Spiele für LANs aus) ;-)

Ich benutze c++ und openGL.

Auf lange Zeit ist geplant ein Ego-Shooter MMO zu entwickeln (auch wenn ich bezweifle, dass es jemals fertig wird).
Für den Anfang habe ich mir einen normalen Netzwerk Shooter vorgenommen. Bis jetzt können sich mehrere Spieler in einem Raum bewegen und auf Ziele schießen (hmm... ist doch schon PvE, also doch gleich das MMO ^^). Außer openGL verwende ich keine Libs oder Engines. Die Kollisionsabfrage, Trefferberechnungen und die Netzwerkkommunikation habe ich selbst geschrieben.

Jetzt aber endlich zu meiner Frage: Meine Spielfigur ist erst mal ein Quader und hat eine Höhe von 1 (-0.5 bis +0.5). Jetzt habe ich einen Artikel zu Skybox gelesen und in diesem Artikel hatte die Skybox die Größe 1x1x1 (also genauso groß wie meine Figur).
Jetzt wollte ich mal wissen wie groß ihr eure Objekte in openGL gestaltet.
Ist 1x1x1 schon rießig? Muss ich meine Spielfigur kleiner machen? Bekomme ich Performanceprobleme wenn ich in diesem Maßstab weiter arbeite?

Gruß
crazyTron

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

2

14.01.2011, 13:42

Den Maßstab wählst du ganz alleine, Probleme wirst du allerhöchstens bei Extremwerten bekommen da die Genauigkeit dort abnehmen wird.

Du kannst 1 Welteinheit also ansehen wie du willst, zu empfehlen ist aber dies auf das metrische System zu legen, ala 1 Welteinheit = 1 Meter oder 1 Welteinheit 1 cm. Einigt euch im Team auf eins und dann können auch die Modeller vernünftige Ergebnisse abliefern ohne das alles neu skaliert werden muss.

Die grösse der Skybox mit der einer Spielfigur zu vergleichen ist recht schwierig denn je nach Einstellungen des Renderers kann selbst die 1x1x1 Skybox im Vergleich zu einer 1x1x1 Spielfigur riesig wirken, darüber wirst du im Lauf deiner Entwicklung des Spiels mehr erfahren. Zur Not und für den Anfang kannst du die Skybox auch einfach um einiges grösser machen ;)

mfg Mark

3

14.01.2011, 16:02

Also angenommen ich habe zwei leere Szenen. In der einen ist ein 1x1x1 würfel und in der anderen ein 100x100x100 Würfel. Währe Szene eins Performanceschonender? Sprich, hätte ich mit Szene eins höhere FPS?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

14.01.2011, 16:29

Macht keinen Unterschied (unter der Annahme dass die beiden Szenen entsprechend so skaliert sind dass das selbe Bild rauskommt). Wie groß die Zahlen sind mit denen sie rechnet ist der Grafikkarte grundsätzlich mal komplett egal. Macht es denn einen Unterschied ob man 42 + 3 oder 1234 + 4321 rechnet? Für nen Menschen vielleicht aber für einen Computer nicht.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (14.01.2011, 16:35)


drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

5

14.01.2011, 17:57

Man sollte schon vernünftige Werte nehmen. Sonst kann es zu Problemen kommen. 4294967294 + 4294967294 ergibt für Mensch und Computer nicht unbedingt das gleiche Ergebnis.. ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

14.01.2011, 18:00

Ich denke von einem Fachinformatiker kann man erwarten dass ihm das klar ist ;)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

14.01.2011, 18:06

Ich weiss ja nicht wie weit er ist. Im übrigen gibt es ja auch noch bei weitem weniger offensichtlichere Probleme. Vor allem wenn es um floating Point geht.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

14.01.2011, 18:13

Natürlich kommen Genauigkeitsfragen und was nicht noch alles ins Spiel, Mark hat ja schon darauf hingewiesen. Für die Performance ist das aber im Allgemeinen mal alles irrelevant...

9

14.01.2011, 19:16

danke für die schnellen Antworten :D
Im Programmieren bin ich fit. Ich programmiere zwar hauptsächlich in Java, aber meine c++ Kenntnisse sind auch solide.
Wenn das spiel mal in einen testbaren Zustand kommt stell ich es hier vor ^^

botlin

Treue Seele

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

10

15.01.2011, 08:55

Es ist eigentlich egal wie groß du Skybox machst was die Performance betrifft. Wichtiger ist in diesem Fall aus Wieviel 3 Ecken diese Besteht. Denn die Anzahl der Dreiecke wirkt sich schon auf die Performance aus.
Mal ein kleiner Richtwert: Ich habe mal einen Algoryhtmus geschrieben der mir ca 650.000 Dreiecke mit einer Framerate von um die 80 FPS gezeichnet hat.(Grafikkarte war ne nvidea FX1400) Aber für solche Mengen brauchst du bessere Lösungen als jedes Dreieck einzeln zwischen Begin und End zu zeichnen.
zB: glDrawArrays oder DrawElements oder aber auch die VBO's. Mit letzteren habe ich allerdings noch nicht gearbeitet. Sollen aber wohl noch n bisschen schneller sein als die anderen beiden.
Da musste einfach n bisschen experimentieren.

Werbeanzeige