Spiel = langsam³

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

AMD

Betreff: Spiel = langsam³

BeitragDo, Okt 25, 2007 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
hi

ich glaub von solchen threads gibts schon mehrere wo von "FPS-Einbrüchen" die Rede ist, hab aber i-wie keinen weiter gefunden außer eben in der FAQ-Sektion aber ich glaub net das des was gegen mein problem ist :/.

1.Problem:
Was mich ja richtig geschockt hat war als ich heute merkte das wenn ich vor nem Baum steh sind die FPS ca.90 aber wenn ich dann nach vorne drück sinken die FPS gewaltig auf ca.66 FPS.

Ist das normal?
des hab ich so mit der steuerung gemacht:

Code: [AUSKLAPPEN]
If KeyDown(200) MoveEntity camera,0,0,2


2.Problem:
Wenn ich mich meinem Gegner nähere fängt ja mein gegner an die KI durch zu führen und plötzlich bekomm ich FPS-Einbrüche auf ca.45FPS-35FPS.

Worauf sollte ich da vll besonders achten?

Danke jetzt schon mal für jede hilfe
MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

ChristianK

BeitragDo, Okt 25, 2007 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
*in AMD's Signatur schau*
Dein Rechner schafft nur 90 FPS bei einem Baum? oO

Ich hatte mal das Problem, dass bei vielen Polygonen das Picking sehr viel Leistung gekostet hat, je nachdem, an welcher Position die Kamera platziert war.
Zeig doch mal etwas von deinem Code oder sag die Anzahl der Polygone in den Meshes. Vielleicht hilft das weiter.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

AMD

BeitragDo, Okt 25, 2007 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ähm insgesamt sinns 5000 Bäume^^ und ein Baum hat 1256 Polygone und ich hab aber auch schon "Trisrendered" in meinem Code damit nur das gerendert wird was die camera sieht.
und ich hab des jetzt auch bei nem baum in der nähe des gegners getestet also hat der gegner auch die KI gestartet nebenbei

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Dreamora

BeitragDo, Okt 25, 2007 22:45
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn deine bäume nicht single surface sind kannst du das vergessen.

Das wären 5000 Surfaces, das kann und wird nicht gehen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Tankbuster

BeitragDo, Okt 25, 2007 22:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
ähm insgesamt sinns 5000 Bäume^^ und ein Baum hat 1256 Polygone und ich hab aber auch schon "Trisrendered" in meinem Code damit nur das gerendert wird was die camera sieht.

Trisrendered gibt doch nur die Anzahl der gerenderten Triangels zurück, oder irre ich da ?!?
Wie willst du damit Bäume ausblenden? Benutz lieber HideEntity für alle Bäume die zu weit weg sind Wink

Und 5000 Bäume. Und jeder sicherlich noch jeder auf einem Surface. Das ist kein Wunder mein Freund^^
Twitter
Download Jewel Snake!
Windows|Android
 

AMD

BeitragDo, Okt 25, 2007 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Singel Surface?
Ist das wenn mehrere Bäume in einem Modell sind und wenn ich zum Beispiel 2 Bäume in einem Modell habe das ich nur noch 2500 Bäume laden muss?


@Tankbuster
ich ging nach dem sample von Trisrendered aus da is ja die camera und dann wird da n wert angezeigt und zwei dreiecke und ein dreieck sieht die camera und mal wieder nicht und dem entsprechend wird der wert auch wieder kleiner oder größer....

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Dreamora

BeitragDo, Okt 25, 2007 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Nutz bitte die Bordsuche.

Single Surface zu erklären übersteigt Anfänger Niveau bei weitem fürchte ich.

Aber nur zur Referenz: Bei etwa 1000 Surfaces ist Sense mit sinnvoll, das heisst, dass du dir da etwas sinnvolleres überlegen musst wie Mesh Clustering und dergleichen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Tankbuster

BeitragFr, Okt 26, 2007 12:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
@Tankbuster
ich ging nach dem sample von Trisrendered aus da is ja die camera und dann wird da n wert angezeigt und zwei dreiecke und ein dreieck sieht die camera und mal wieder nicht und dem entsprechend wird der wert auch wieder kleiner oder größer....

Genau! Der Wert wird kleiner, weil das eine Dreieck wahrscheinlich versteckt wird. Dadurch wird logischerweise nur das eine Dreieck gerendert, und nicht mehr beide Wink

Zitat:
Single Surface zu erklären übersteigt Anfänger Niveau bei weitem fürchte ich.

Hab ich mir ehrlich gesagt auch noch nie angeschaut. Deshalb kann ich das nicht so recht beurteilen. Aber ich dachte früher auch Bloom und Blur ist total schwer. Nachdem ich mich einen Tag nur damit beschäftigt hab konnte ich das problemlos. Es kommt eigentlich nur drauf an, ob man alles versteht, was in Tuts u.ä. beschrieben ist.
Twitter
Download Jewel Snake!
Windows|Android
 

Dreamora

BeitragFr, Okt 26, 2007 12:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Dafür gibts nur keine tutorials
Aber es gibt umzählige beispiele. Das elementare Grundlagenbeispiel wo Single Surface ein Muss ist sind Partikel Systeme.

Simpel gesagt: Du kombinierst die Objekte zonenabhängig, so dass zb in einem 100x100 gebiet nimmer 50 bäume einzeln stehen sondern ein mesh (addmesh lässt da grüssen Smile )


Die alternative dazu ist dann das was das kürzlich im englischen Forum gezeigte Foliage System macht: Clustering aber mit dynamischen Surfaces die angepasst werden je nach detail level etc.

Wenn du übrigens dichten wald willst ist das sinnvoller, denn dichter Wald erzwingt explizit LoD bei den Bäumen damit die, die weiter weg werden, auf möglichst wenige Polygone reduziert werden können ohne mies auszusehen.


Der Grund für das Single Surface oder low level surface handling ist übrigens der, dass jedes Surface einen Texture Switch erzwingt, was auf der Grafikkarte die etwas vom langsamsten ist (die langsamsten sind shader gebundene switches wie RT und shader opcode). Deswegen nutzt man single surface oder wenige surfaces um das zu optimieren.
In anderem zusammenhang spricht man dabei auch von Batching.


Hoffe das hilft dir.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

AMD

BeitragFr, Okt 26, 2007 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Simpel gesagt: Du kombinierst die Objekte zonenabhängig, so dass zb in einem 100x100 gebiet nimmer 50 bäume einzeln stehen sondern ein mesh (addmesh lässt da grüssen Smile )


bei mir kommt da net mal n richtiger ansatz zu stande Confused

Code: [AUSKLAPPEN]
Die alternative dazu ist dann das was das kürzlich im englischen Forum gezeigte Foliage System macht: Clustering aber mit dynamischen Surfaces die angepasst werden je nach detail level etc.


kann man des net auch ersetzen dadruch das die entfernten Bäume einfach gehided werden?
ach ja und um dieses sample zu finden wo muss ich da im Englisch Forum suchen? Im Code-Archiv?

Code: [AUSKLAPPEN]
Single Surface zu erklären übersteigt Anfänger Niveau bei weitem fürchte ich.


gibts vll net doch i-wo n sample wo ganz viele cubes z.b. erstellt werden aber die FPS trotzdem hoch sind?
oder kann mir einer sowas schnell schreiben oder is des doch soo viel aufwand?

Oder kann mir jemand vll genauer erleutern wie so etwas aufgebaut ist mit den dazugehörigen Befehlen?

bin dankbar für jede hilfe!

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Dreamora

BeitragFr, Okt 26, 2007 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Sample im englischen forum ist im ShowCase board und ist ein kommerzielles System.

Prinzipiell: wenn du schon meshes hast, mit AddMesh zusammen fügen.
Ansonsten mit den CreateMesh, CreateSurface, AddVertex, AddTriangle Befehlen.

ansonsten: schau dir die partikelsysteme oder gras / foliage systeme an die Single Surface sind (gibt davon einige mit source) und überleg dir wie du das mit den bäumen machen kannst. Ein fertiges Gratissystem oder auch nur beispiele dafür gibt es nicht. Da das LoD Handling auf möglichst effizientem Niveau keine simple Sache ist.


Hiding geht prinzipiell aber bringt nur bedingt was denn mehr als 40-50 kannst du dennoch nicht sichtbar haben auf einmal unter normalen bedingungen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

AMD

BeitragFr, Okt 26, 2007 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
also ich hab noch weng geforscht und gefunden Smile ich glaub sogar n ziemlich gutes Smile

ich hab es hier gefunden:
https://www.blitzforum.de/foru...hp?t=20181

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

cam=CreateCamera()

cube1 = CreatePivot() ; parent für all die multisurfacecubes
cube2 = CreateMesh() ; mesh für das einzelne cube-surface
surf = CreateSurface(cube2) ; surface für all die cubes

; ganz viele zufällig positionierte und gedrehte cubes erstellen
For i = 0 To 2000
   x = Rand(-20,20)
   y = Rand(-20,20)
   z = Rand(-20,20)
   
   c = CreateCube(cube1)
   PositionEntity c,x,y,z
   EntityColor c,255,200,200
   
   RotateEntity c,Rand(360),Rand(360),Rand(360)
   
   ;cube in das singlesurfacemesh reinkopieren
   AddToSurface(c,  surf,cube2)
   
Next


While Not KeyDown(1)
   
   If KeyDown(57) ; wenn leertaste gedrückt wird, wird das singlesurfacemesh gerendert, sonst werden viele surfaces gerendert
      HideEntity cube1
      ShowEntity cube2
   Else
      ShowEntity cube1
      HideEntity cube2
   EndIf
   
   TurnEntity cam,0,.1,0
   
   ms = MilliSecs()
   RenderWorld
   Text 0,0,"RenderTime: "+(MilliSecs()-ms)
   Flip
   
Wend

Function AddToSurface(mesh, surf,singlesurfaceentity)
   Local vert[2]
   For s = 1 To CountSurfaces(mesh)
      surface = GetSurface(mesh,s)     
      For i = 0 To  CountTriangles(surface)-1
         For i2 = 0 To 2
            oldvert = TriangleVertex(surface,i,i2)
            TFormPoint VertexX(surface,oldvert),VertexY(surface,oldvert),VertexZ(surface,oldvert), mesh,singlesurfaceentity
            vert[i2] = AddVertex(surf,TFormedX(),TFormedY(),TFormedZ(),VertexU(surface,oldvert),VertexV(surface,oldvert))
         Next
         AddTriangle(surf, vert[0], vert[1], vert[2])
      Next
   Next
End Function


ich glaube mit dem sample lässt sich einiges anfangen hoff ich.
Aber meine erste frage gleich:
warum bringt mir der Compiler ne fehlermeldung ab 1900 Cubes?

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Tankbuster

BeitragFr, Okt 26, 2007 18:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Was für ne Fehlermeldung kommt denn ?? 0.o Bei mir gehts problemlos. Sicherlich ein Hardware-Prob
Twitter
Download Jewel Snake!
Windows|Android
 

AMD

BeitragFr, Okt 26, 2007 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
ab 2000 Cubes "Memory Acces Violation" bei Renderworld

ach ja aber erst wenn man leertaste drückt!
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341

Tankbuster

BeitragFr, Okt 26, 2007 18:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
wenn leertaste gedrückt wird, wird das singlesurfacemesh gerendert, sonst werden viele surfaces gerendert

Das sollte alles klären. Vielleicht wurde die maximale Zahl der Verticles auf dem Surface überschritten Confused Frag mich aber nicht wo diese Zahl liegt. Ich weiß nur, das das Surface begrenzt ist!
Twitter
Download Jewel Snake!
Windows|Android
 

AMD

BeitragFr, Okt 26, 2007 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm anscheinend kann man i-wie zwischen etwas wählen.

For i2 = 0 To 2

AddTriangle(surf, vert[0], vert[1], vert[2])

wenn ich z.b. die 2 zu einer 1 mach dann kann ich mehrere mesh nehmen aber net wirklich viel mehr...

ich werds auf jeden fall weiter untersuchen ....

MfG
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Dreamora

BeitragFr, Okt 26, 2007 19:17
Antworten mit Zitat
Benutzer-Profile anzeigen
64535 ist die Maximale Anzahl Polygone und Vertices in einem Mesh.

Auf älteren Karten (GF4 MX zb) ist die Polygonzahl sogar nur 32767 maximal.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

AMD

BeitragFr, Okt 26, 2007 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
sorry wenn ich nerve aber was willst du mir damit sagen?

das es an der Grafik-karte liegt oder das es schon in BB so eingebaut ist das ein mesh so viele polygone haben darf?

MfG

Edit:
ups ich hätte vll mal zu ende lesen solln bei dem link den ich oben gepostet habe.
da wurde ja deutlich gemacht das man nicht höher machen kann Sad ....
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

AMD

BeitragDi, Okt 30, 2007 1:16
Antworten mit Zitat
Benutzer-Profile anzeigen
hi
da ja hier davon die Rede war das es ein maximum an triangles pro sufaces gibt hab ich mir gedacht mach ich halt einfach noch nen surface^^

geht des überhaupt?

und ja ich weiß jetzt langsam mal des des net leicht is Sad aber ich muss jetzt endlich mal an unserem game weiter proggen...

also hab ich einfach mal versucht noch nen surface für die cubes zu erstellen.
des hab ich so probiert:

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Global fpsrate, loops, fpstime

cam=CreateCamera()
PositionEntity cam,1,5,1

cube1 = CreatePivot() ; parent für all die multisurfacecubes
cube2 = CreateCube() ; mesh für das einzelne cube-surface
surf = CreateSurface(cube2) ; surface für all die cubes
surf1 = CreateSurface(cube2);--- Hier hab ich den 2ten Surface erstellt

; ganz viele zufällig positionierte und gedrehte cubes erstellen
For i = 0 To 1219
   x = Rand(-20,200)
   y = 0
   z = Rand(-20,200)
   
   c = CreateCube(cube1)
   PositionEntity c,x,y,z
   ScaleEntity c,1,1,1
   EntityColor c,255,200,200

 
   ;cube in das singlesurfacemesh reinkopieren
   AddToSurface(c,  surf,surf1,cube2);---- Hier hab ich den 2ten Surface mit reinkopiert
   
Next

   boden = CreateMesh()
   EntityColor boden,20,70,255
   PositionEntity boden,-20,-2,-20
   ScaleEntity boden,200,1,200

AddMesh c,boden

While Not KeyDown(1)

RotateEntity c,0,1,0

RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0
MoveMouse 512,384

If KeyDown(200) MoveEntity cam,0,0,0.1
If KeyDown(208) MoveEntity cam,0,0,-0.1
   
   If KeyDown(57) ; wenn leertaste gedrückt wird, wird das singlesurfacemesh gerendert, sonst werden viele surfaces gerendert
      ShowEntity cube2
      HideEntity cube1
   Else
      ShowEntity cube1
      HideEntity cube2
   EndIf
   
   
   ms = MilliSecs()
   RenderWorld
   Text 0,0,"RenderTime: "+(MilliSecs()-ms)
   Text 0,10,"FPS: "+fps()
   Text 0,20,"Mesh-CountSurfaces: "+CountSurfaces(c)
   Flip 0
   
Wend

Function AddToSurface(mesh, surf,surf1,singlesurfaceentity);---- hier hab ich den auch mit rein
   Local vert[2]
   For s = 1 To CountSurfaces(mesh)
      surface = GetSurface(Mesh,s)     
      For i = 0 To  CountTriangles(surface)-1
         For i2 = 0 To 2
            oldvert = TriangleVertex(surface,i,i2)
            TFormPoint VertexX(surface,oldvert),VertexY(surface,oldvert),VertexZ(surface,oldvert), Mesh,singlesurfaceentity
            vert[i2] = AddVertex(surf,TFormedX(),TFormedY(),TFormedZ(),VertexU(surface,oldvert),VertexV(surface,oldvert));--- da hier ja was von "Surf" steht hab ich
            vert[i2] = AddVertex(surf,TFormedX(),TFormedY(),TFormedZ(),VertexU(surface,oldvert),VertexV(surface,oldvert));---- hier des kopiert und Surf1 draus gemacht
         Next
         AddTriangle(surf, vert[0], vert[1], vert[2])
      Next
   Next
End Function

Function fps()
loops = loops+1
If MilliSecs() - fpstime > 1000 Then
      fpsrate = loops
      loops = 0
      fpstime = MilliSecs()
End If
Return fpsrate

End Function


aber dann kommt ne fehlermeldung wenn man die leertaste drückt obwohl ja noch gar net soo viele cubes erstellt worden sind. "Memory Acces violation"
Das Leben ist ein scheiß Spiel hat aber eine saugute Grafik!
PC:
AMD 5200 X2(2x2,6Ghz), 250GB Festplatte, 2048MB Arbeitsspeicher, Nvidia 9800 GTX mit 512MB.....
Bildschrim mit 22 Zoll und 5msk Übertragungszeit......
Mein BaumMap Tutorial:
http://www.blitzforum.de/forum...hp?t=26341
 

Dreamora

BeitragDi, Okt 30, 2007 1:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch ne surface interessiert niemanden.
Wie ich geschrieben habe ist die Beschränkung PRO MESH nicht pro Surface.
Da Meshes a Block an die Grafikkarte gehen, nicht Surfaces, zählt die Gesamtzahl des Polygone und Triangle des Meshes. Surfaces sind nur dazu da um einem Block von Geometriedaten mehrere Texturen/Materialien zuweisen zu können.

Alles in allem solltest sowieso nicht soviele Polygone in ein Objekt reinhauen. Der Grund ist simpel: Ist nur der kleinste teil des Mesh Boundingvolumes im Viewfrustrum wird das gesamte Mesh gerendert! Egal ob im Sichtbereich oder nicht.
Kannst dir vorstellen wie dumm die Idee dann ist, wenn man es fröhlich bis zum Maximum zupflastert.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group