Performance Einschränkung - wodurch?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

MisterMaboo

Betreff: Performance Einschränkung - wodurch?

BeitragDo, Jun 16, 2011 15:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ich weiß nicht so recht, wie ich mein problem schildern soll. irgendwo sitzt ein fehler der dazu führt, dass die fps immer wieder einbrechen. in dem projekt, eine art aufbauspiel, werden die figuren von einem ziel zum nächsten geschickt, bzw. das ziel wird immer wieder neu positioniert, je nachdem wohin die figur gerade unterwegs sein soll. wenn im verlauf des spiels mehr gebäude, bzw. immer mehr figuren auftauchen, brechen die fps teilweise ein. ich hab stundenlang nach dem problem gesucht und komm einfach nicht drauf.

ich habe im moment folgende vermutungen und würde zu ihnen gerne mal eure meinung hören:

# bei der bewegung der figuren ( wenn besonders viele figuren unterwegs sind [ sie können auch in ihren häusern verweilen ] sind am häufigsten einbrüche in der performance auszumachen ) verwende ich die befehleCode: [AUSKLAPPEN]
If Not Animating(e1) Then ...
If EntityDistance(e2,e3) Then ...
Man is the information he carries

GearTechDE

ehemals 'KillerJo96'

BeitragDo, Jun 16, 2011 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, zu deinem Beispiel kann ich dir nicht helfen. aber dadurch das du anscheinend viele Objekte lädst, wird das einfach zu viel. baue es doch mal so auf, das nur die Objekte geladen werden die du gerade benötigst. wenn du sie gerade nicht benötigst, kannst du sie mit FreeEntity aus deinem Speicher löschen.

beachte ausserdem, das du die Objekte nicht in der Main Loop lädst. das würde auch dazu führen, das die fps sich schlimm verhält.

da ich ein Anfänger bin, hoffe ich, das ich dir ein wenig hhelfen konnte.

Lg Killerjo96
Mit freundlichen Grüßen: GearTechDE

Xeres

Moderator

BeitragDo, Jun 16, 2011 16:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Um wie viele Figuren geht es denn? Ohne konkreten Code kann man nur sagen: Du machst zu viel. Z.B. Entfernungsmessungen - müssen die jeden Frame ausgeführt werden? Versuche erst simple, schnelle Bedingungen bevor du rechenintensive Operationen ausführst.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

Tigerass

BeitragDo, Jun 16, 2011 16:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du eine Komplexe KI? Ist es nötig bei jedem Framedurchlauf die ganze KI neu zu berechnen?
Du kannst z.B. bei jedem Frame ein viertel der KI Berechnen, deine leute in vier Teile Aufteilen.
Lädst du irgendwelche Models oder Grafiken während dem Spiel mit LoadMesh?
(CopyEntity oder CopyMesh würde ich verwenden)

Ich denke der Hauptgrund warum es Leistungseinbrüche hat liegt bei deiner KI.

Lg Tigerass

ToeB

BeitragDo, Jun 16, 2011 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht reicht es aus wenn du am anfang der Bewegung die Entfernung misst bzw. die Richtung und dann den Character bewegst ?

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

tft

BeitragDo, Jun 16, 2011 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

EntityDistance() ist unter gewissen Umständen ein Performance Killer. Aber ohne den Code lässt sich wahrlich nur schwer was dazu sagen.... nur ein beispiel. 80 Objecte die sich bewegen ........ wenn du die Entfernungs- berechnung jeden Frame und für jedes object machst kommen 6400 Berechnungen zustande wenn du nicht im vorfeld eingrennst ob und welche Objecte überhaubt diese Berechnung benötigen.

Also ... code muss her Smile

Gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

MisterMaboo

BeitragDo, Jun 16, 2011 17:36
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist denn hier passiert, ich wollte das so gar nicht abschicken?! die schilderung war nicht vollständig und ich hatte mir vorgenommen doch lieber noch selber rumzuprobieren, bevor ich euch um hilfe bitte. irgendwie hab ichs dann wohl versehentlich doch gesendet.

wie auch immer, ich mach weiter;

ich habe versucht, entitydistance durch eine simple rechung ( mittels entityX() ) zu ersetzen. das hat gezeigt, dass entitydistance die probleme nicht verursacht. ich bin zwar absolut ratlos, was das problem sonst verursachen könnte, aber es muss wohl an mir ( programmierfehler ) liegen und nicht an der geschwindigkeit irgendeiner funktion.

résumé: ich entschuldige mich für den unabsichtlichen post und bedanke mich für die trotzdem wieder vorhandene hilfsbereitschaft. außerdem werde ich in zukünftigen projekten die tips in bezug auf weitere einschränkung vor komplizierten abfragen berücksichtigen. kommt nicht wieder vor!
Man is the information he carries

tft

BeitragDo, Jun 16, 2011 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

du musst dich doch nicht entschuldigen ......... es kann auch ein einfache logisches Problem sein. Solltest du nicht weiter kommen frag nur Smile

Gruss TFT
TFT
https://www.sourcemagic.ch
Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group