Performance verbesserung?
-
100 Meshes pro Schiff ... wieviele Triangles macht das?
-
1. Besteht die Möglichkeit alle Lichtquellen zu deaktivieren und dann (nochmal) die Performance zu testen?
2. Wie viele FPS hast du, wenn du niemand schießt ?
3. Wie oft wird folgende Funktion aufgerufen ?
Idee beim "Feuern auf ein Ziel" werden unter den 24 Waffen mittels Collisiondetection die ersten 8 ausgewählt welche nach einer Rotation des Waffenturmes und dem Anpassen des Abschusswinkels des Waffenexzenters, nicht das eigene Schiff treffen, die andern Waffen werden zurück in den urzustand gesetzt und die entsprechenden Billboards, IndexedTriangleLists werden auf visible = false gesetzt.
-
Im moment besteht die Szene aus Acht gleichen Schiffsmeshes(bzw der genannten Klasse), Eines davon rotiert um die eigene Achse (war nötig um die Zielausrichtung der Waffen und Collisionsdetection zu testen) die anderen stehen dumm in der gegend rum beim Feuern.
Ich benutze gerade GProf (als Plugin für Code::Blocks) um die Resourcenfresser zu identifizieren.
*~~~~~*
@nurf
zu 1) Jain, in der aktuellen Rohversion kann ich die nur visible false setzen, werde dies aber heute zewecks Performance tests noch Umbauen.zu 2) mit DirectX 9.c sind es 28-30FPS wenn ich alles laufen lasse bleiben die 28 FPS nur beim Feuern ansich (also wenn die Laser wirklich gerednert werden müssen (keinen der Fallunterscheidungen warum sie nicht gerendert werden sollten eintrifft) geht es auf 23-25 FPS runter wenn alle Schiffe sich im Sichtfeld der Kammera befinden., scrolle ich näher ran so das nicht alle Schiffe gerendert werden gehts auf ca 55-60 FPS für das eine chiff im shichtfeld hoch ANMERKUNG: Niemand schiesst ist unter der Premisse das alles was die Laser betrifft auf visible=false gesetzt ist und weder Zielausrichtung noch Collisiondetection noch sonstetwas in der Render Funktion durchlaufen wird was mit den Waffen zu tun hat!
zu 3) Wie oft könnte ich nur schätzen und ist auch abhängig davon wie oft während eine schusssequenz die Waffe gewechselt werden muss, da alles
Unterteilt ist und ich zur Optimierung schon diverse Fallunterscheidungen gemacht habe.. aber ich habe einen Flowchart erstellt falls du mal drüberschauen möchtest:
http://www.bilder-hochladen.net/files/big/43qm-5i.png*~~~~~*
@padreigh ca. 498536 bei einer szene mit 8 Feuernden Schiffen = 62317 Triangles für die Mesh´s/ pro schiff, wenn die Laser schiessen sind es etwas mehr mit der Skybox drumrum und einer Gaswolke sind es 506686 bis 506908 Triangles(differenz endsteht durch die feuernden Laser).
*****Denkst du die Mesh´s ansich (also die gezeichneten Triangles) sind der Overkill?
*****Sollte ich an den Mesh´s anfangen zu Optimieren?.
*****Ich benutze derzeit Blender und Exportiere nach .obj, das hier http://irrlicht.sourceforge.net/features.html#supportedformats wäre eine Liste der von Irrlicht unterstützen Formate, die hier wäre von das selbe von Blender http://www.blender.org/download/python-scripts/import-export/ .**EDIT:
1 SchiffsMesh je 2808 Triangles = 2808 Triangles
24 WaffenTurmMesh je 2268 Triangles = 54432 Triangles
24 WaffenExcenterMesh je 232 Triangles = 5568 TrianglesGenau sind es 62808 Triangles...
aua aua, ich glaub da war er wieder der Moment der Erkentniss, ich werde ASAP mal den Waffenturm überarbeiten :), danke für den Tritt vor das Schienbein
Brett vor dem Kopf ist gerad abgefallen.***~~~~~*
@Eisflamme Nein habe ich nicht da ich momentan alles alleine mache wäre mir das zu viel Stress

*~~~~~*
**Ich werde nochmal weiter mit GProf testen, vor allem was beim Raus und Reinzoomen passiert, anscheinend verbrauchen Momentan 2-3 Funktionen der Irrlicht API den Hauptteil der Zeit die nicht für das rendern der Modelle Ansich abfällt.
GProf sagt mir hier das die RenderFunktion ca 39% der Zeit frisst im Verhältnis 0.09 Self zu 0.05 Children.Des weiteren werde ich mal testen wie es ausschaut wenn ich die LaserNodes erstelle/remove wobei ich mir fast sicher bin das es ein schlechteres Ergebniss bringen wird.
Danke für eure bisherige Hilfe ich bin auf weiter Antworten gespannt.
**
-
Triangle reduzieren? Ja denke ich.
Hintergrund: 2 Semester IntelligentGame-Design-Seminar mit genau dieser Toolchain. Blender für Modelle, Irrlicht als 3d Engine. Idee war eine Dorfsimulation die ihre Umgebung erforschen und ihr Dorf ausbauen soll (KI-Gesteuert). Eine Mischung aus "Black&White" und "Dungeonkeeper". Unsere Individuen waren Kugeln mit nem Zipfel obendran die durch die Gegend hüpften ... ich war Teil des Modelteams .. wir haben erst ganz detailliert gemodelt (Blender). Erfolg: miese Frameraten sobald mehrere Dollops durch die mit Baumwachsalgos (tons of triangles) kreierte Vegetation hüpften. Die Dollops stark vereinfacht und mehr mit Texturen gearbeitet, die Landschaft auf auf BillboardTrees/Büsche umgestellt und schwupps wars performant(er) - wenngleich auch nicht mehr so hübsch.
Hab grad mal geschaut ob ich noch Code oder n Film davon rumfliegen hab, leider Fehlanzeige

-
Ich hab oben gerade nochmal was gepostet
(unter deinem @ und EDIT...)Der oben genannte Waffenturm der wohl der brecher schlechthin ist, besteht eigentlich nur aus einer Kugel (UV-Sphere mit 32 Segments & 32 Rings) welche einen 5 Segment breiten und halb um die Kugel gehenden einschnitt für den beweglichen Waffenexcenter hat an dem unternrum einen Cylinder mit 32 Vertices gemerged ist... Segmente+Rings der Sphere und Vertices des Cylinders Verringern oder wozu würdest du mir Raten?
mfg
-
WeakPeak schrieb:
@padreigh ca. 498536 bei einer szene mit 8 Feuernden Schiffen = 62317 Triangles für die Mesh´s/ pro schiff, wenn die Laser schiessen sind es etwas mehr mit der Skybox drumrum und einer Gaswolke sind es 506686 bis 506908 Triangles(differenz endsteht durch die feuernden Laser).
Jetzt solltest du uns nur noch wissen lassen was für eine Grafik-Karte du besitzt/benutzt.
Bei meiner Grafik-Karte beginnt das Performance-Loch irgendwo zwischen 1.5-2 Mio Faces pro Scene ( mit OGRE gemessen ).
Von daher ist die Graka ein nicht unerheblicher Faktor.
500k Tris sind meiner Ansicht nach nichts Verwerfliches heutzutage. Polygon-Sparen ist natürlich immer empfohlen.
-
@nurf
Ja schon aber ich möchte das das Spiel schon recht Praxistauglich ist und in der Praxis haben auch so manche Gamer schon mal nicht die Top Hardware.Ich benutze übrigens eine OnBoard GPU von NVidia (GeForce 7100 http://www.nvidia.com/page/geforce_7100.html ) und möchte die schon ziemlich ans untere ende des Mittelfeldes der in Frage endgültigen Nutzer setzen.
Übrigens habe ich damals auch Ogre in betracht gezogen mich dann aber doch für Irrlicht entschieden, ein vergleich wäre wenn ich was weiter bin mal nicht schlecht...
**~~~~~~**
Ich babe den Waffenturm und auch den Waffenexcenter mal überarbeitet und komme nun bei der selben szene wo vorher 23-30FPS drin waren nun auf 45-50FPS unter DirectX 9.c, wenn ich soweit reinzoome das nur 1 Schiff gerendert wird, komme ich auf annähernd 70FPS.
Ich werde als nächestes wie gesagt mehre Testläufe die entwas Länger dauern mit GProf unternehmen um den Unterschied zwischen reingezoomt und rausgezoomt zu sehen, ausserdem überlege ich mir ob es Sinnvoll ist die Rotation der Waffen ab einer bestimmten Entfernung zu Kammera überhaupt Rendern zu lassen, ich teste das später mal durch... Irgendwann heute oder Morgen werde ich auch noch das Mesh des Schiffes Ansich mal reduzieren, aktuell bin ich bei der gesammten Szene auf ca. 70000 Triangles bei 8 Schiffsmodellen runter.
Aber man muss auch bedenken im Moment fliegt da noch kein Schiff, die Gaswolke ist noch nicht Animiert, Teilnahmslose Objekte (Dekoration des Schlachtfeldes) sowie Raumstationen und Strukturen fehlen noch, ggf. werde ich mir für den Antrieb der Schiffe etwas anderes einfallen lassen als ein Partikelsystem mit 600 teilchen pro Sekunde.
Ich melde mich mit weiteren Fort oder Rückschritten wieder
und bin weiterhin für alles offen.**
AHJA eine Frage noch ist es Normal das DircetX die an die .obj Dateien gebundenen Texturen anders anordnet als OpenGL?
**
Grüsse
-
WeakPeak schrieb:
@nurf
Ja schon aber ich möchte das das Spiel schon recht Praxistauglich ist und in der Praxis haben auch so manche Gamer schon mal nicht die Top Hardware.Ich benutze übrigens eine OnBoard GPU von NVidia (GeForce 7100 http://www.nvidia.com/page/geforce_7100.html ) und möchte die schon ziemlich ans untere ende des Mittelfeldes der in Frage endgültigen Nutzer setzen.
Ich möchte dir jetzt nicht zu Nahe treten, aber Geforce 7100 ist schon eher unteres Low-End.
Dafür ist die Framerate schon in Ordnung !
Ohne mich jetzt zu weit aus dem Fenster zu lehnen würde ich mal überschlagen, das mit aktueller Hardware ein Faktor 10x-15x in der FPS praktisch möglich ist.
Also reichlich Reserven für grafischen Schnick-Schnack.Was mich noch interessieren würde, für welches Projekt du arbeitest.
Ich kenne im deutschsprachigen Raum nicht sehr viele Weltraum-Games.
-
Du trittst mir nicht zu Nahe, ich weiss selber das die GeForce nicht gerade UpToDate ist aber das ist auch nicht schlimm, ich fänds schlimmer wenn ich ein Spiel auf einer Top Grafikkarte Coden würde und nur 10 % der interessenten ordentliche FPS hätten.
Danke für den Hinweis, sobald ich mal den Code etwas aufgeräumt habe schiebe ich die .exe mal rüber auf nen anderen PC mit einer besseren Grafikkarte und Teste dort mal.
Ich arbeite in keinem Projekt-Team, ich arbeite alleine an dem ganzen, es ist keine Hobbyarbeit ich erwarte schon ein fertiges Produkt herzustellen.
Ziel ist es ein MMORPG herzustellen welches von der Bedienbarkeit, Steuerung und dem Look und Feel her von EVE-Online Inspiriert ist jedoch einen etwas anderen Content und andere Gewichtung hat.
Also die Ansprüche die ich an meine Arbeit stelle sind schon recht Hoch.
Wir hatten übrigens schonmal hier im Forum miteinander geschrieben, wenn ich mich recht entsinne baut Ihr eine Gameengine um OGRE und seid auch an dem Genre WeltraumGame Interessiert.Grüsse
-
Hoffe es war nicht zu feste vors Schienenbein
Das der Turm genausoviele Triangles hat wie das Schiff aber dafür vermutlich mal 1/80 der Größe ist nett
das hast du ja schon geändert. Wir haben 2007 nur openGL genutzt, keine Ahnung wie sich DirectX da verhält.
Son paar Sachen die du vermutlich schon weisst:
- Meshes sollten geschlossen sein ('watertight') das Erleichtert Backfaceculling und Normalenberechnung
- vor dem Export einmal doppelte Vertices entfernen, Transformationen anwenden und Normalen neu berechnen Lassen kann helfen
- wenn du "große" Distanzen darstellst mag es hilfreich sein jedes Objekt in mehreren Detailstufen zu modeln und je nach Entfernung ein anderes Model anzuzeigen (500000,50000,5000 Triangles)So rein von der Logik der Waffentürme wäre eine 3/4kugel auf Cylinder mit 180-210° Senkrechtem Schlitz logischer
.. um die Senkrechte drehen und den Lauf hoch/runter (Polarkoords) ... damit kommt man schnell überall hin und man braucht weniger Türme 
viel Erfolg beim Entwickeln

-
padreigh schrieb:
Wir haben 2007 nur openGL genutzt, keine Ahnung wie sich DirectX da verhält.
ein wenig, nicht wirklich viel zumindest bei DX9
padreigh schrieb:
Son paar Sachen die du vermutlich schon weisst:
- Meshes sollten geschlossen sein ('watertight') das Erleichtert Backfaceculling und Normalenberechnung
- vor dem Export einmal doppelte Vertices entfernen, Transformationen anwenden und Normalen neu berechnen Lassen kann helfen
- wenn du "große" Distanzen darstellst mag es hilfreich sein jedes Objekt in mehreren Detailstufen zu modeln und je nach Entfernung ein anderes Model anzuzeigen (500000,50000,5000 Triangles)Danke für den Zweiten und dritten Tipp werd ich berücksichtigen, habe die den Waffenturm nun aus einer uv sphere mit 7 Ringen und 8 Segmenten gemacht, allerdings ist diese untenrum abgeschnitten, sieht aus wie ein Helm mit Schlitz drin, erfordert es mehr rechenaufwand wenn das Mesh offen ist?
padreigh schrieb:
So rein von der Logik der Waffentürme wäre eine 3/4kugel auf Cylinder mit 180-210° Senkrechtem Schlitz logischer
.. um die Senkrechte drehen und den Lauf hoch/runter (Polarkoords) ... damit kommt man schnell überall hin und man braucht weniger Türme 
viel Erfolg beim Entwickeln

Naja so ungefähr hab ich das auch 180° Schlitz mit "Waffenscheibe" (Cylinder mit extrudet Waffenrohr).
Danke für deine Tipps;)
Edit: falls es interessiert:
http://www.bilder-hochladen.net/files/big/43qm-5j.png
http://www.bilder-hochladen.net/files/big/43qm-5k.pngIch weiss am Texturieren muss ich noch arbeiten

-
http://www.bilder-hochladen.net/files/big/43qm-5j.png
http://www.bilder-hochladen.net/files/big/43qm-5k.pngAmarr Victor!
-
Scorcher24 schrieb:
http://www.bilder-hochladen.net/files/big/43qm-5j.png
http://www.bilder-hochladen.net/files/big/43qm-5k.pngAmarr Victor!
Hrhr, ja aber das Schiffsmodell, man mags kaum glauben, ist tatäschlich in Blender gemodelt und nicht aus Eve extrahiert(müsse man eigentlich auch erkennen, aber die ähnlichkeit ist da Ja. Ich werd für das engültige Spiel allerdings wohl mehr einfallsreichtum mit einfliessen lassen und komplett andere Modelle erstellen;).
Grüsse, freut mich hier jemand zu treffen der das Spiel kennt.
-
@nurf nochmal, auf einer Radeon 4870 verdoppeln zwischen 75 und 90 FPS, bei OpenGL sogar mehr.
mfg
-
WeakPeak schrieb:
Scorcher24 schrieb:
http://www.bilder-hochladen.net/files/big/43qm-5j.png
http://www.bilder-hochladen.net/files/big/43qm-5k.pngAmarr Victor!
Hrhr, ja aber das Schiffsmodell, man mags kaum glauben, ist tatäschlich in Blender gemodelt und nicht aus Eve extrahiert(müsse man eigentlich auch erkennen, aber die ähnlichkeit ist da Ja. Ich werd für das engültige Spiel allerdings wohl mehr einfallsreichtum mit einfliessen lassen und komplett andere Modelle erstellen;).
Grüsse, freut mich hier jemand zu treffen der das Spiel kennt.
Bin selbst Eve Spieler. CCP ftw.
http://www.youtube.com/watch?v=VgvM7av1o1QFalls Du gute Skyboxen brauchst, oder eher Spaceboxen, hrhr, empfehle ich dieses Programm:
http://alexcpeterson.com/spacescape
Damit kann man ziemlich eindrucksvolle Spaceboxen generieren.
-
Wow. Also bei der vor dir angegeben Anzahl von Triangles hätte ich jetzt schon etwas "mehr" erwartet. Ich meine, das hier lässt sich doch bei allem Respekt ganz sicher in einem Bruchteil der Triangles realisieren. Gute Texturen sind da auf jeden Fall wichtiger für die Optik erstmal. Wie wär's außerdem mit unterschiedlichen Modellauflösungen je nach Nähe zum Objekt? Ein Modell, dass von Nahem 10.000 Triangles haben sollte, kann von weiter weg erheblich gestutzt werden und das sieht der Typ hinterm Bildschirm dann eh nicht mehr.
-
WeakPeak schrieb:
erfordert es mehr Rechenaufwand wenn das Mesh offen ist?
Wenn du deine Objekte nicht auch innen texturierst kannst du bei nur watertight objects das Rendering der Innenseite komplett deaktivieren da - wenn kein Wasser rausläuft - auch kein Blick reinkommt (transp. mal aussen vor). Im prinzip muss der Renderer dann nur noch schaun ob die Ebenennormale in Richtung Viewer "guckt", wenn nicht, Triangle->Tonne, nich rendern, schneller. Ich bastel mal n Turn und schick dir den.
nette Bilder
