Laufzeitoptimierung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Eingeproggt

Betreff: Laufzeitoptimierung

BeitragFr, März 02, 2007 18:42
Antworten mit Zitat
Benutzer-Profile anzeigen
So. Jetzt hab ich ein super Spiel (naja, alles ist relativ^^) welches leider trotz Delay (Wartezeit auf fps und aktuelle Auslastung abgestimmt) 100% CPu Auslastung hervorruft. Also der Computer hat keine Zeit mehr, sich auszuruhen.
Das ist natürlich ein schwerer Schlag, wenn man mein Spiel nur auf Superrechnern spielen kann.
Also mal frei gefragt: Wie mach ichs schneller?

(Debugmodus deaktivieren bringts schon ziemlich nur will ich noch Ressourcensparender sein.)
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9
 

Matthias

BeitragFr, März 02, 2007 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Du könntest zb. Dein Programm nur alle 35Millisecs() Updaten. Also 28Bilder in der Sekunde. Auserdem könntest du auch vorberechnen.
Oder zB auf Types verzichten den die sind um 2 1/4 mal langsamer wie Dim Felder.

Es wäre gut wenn man einen Code hätte dann könte mann noch etwas Optiemieren

Eingeproggt

BeitragFr, März 02, 2007 19:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke,

die Sache mit den Types schau ich mir an.
Meine Probleme entstehen tatsächlich durch die hohe fps-Zahl, aber die will ich so haben (50 ist doch nicht zu viel, oder?)
Und die Sache mit dem Code... Ich glaub nicht, dass sich einer von euch meine 365 Zeilen anschaut, um Speedbremsen zu finden.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

StepTiger

BeitragFr, März 02, 2007 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Muahaha. 50FPS sind NICHTS.
Mach mal 60 und nimm Flip 0 und einen ordentlichen Frame-Limiter.

Dadurch entsteht es sicher nicht, sondern eher durch das V-Wait bei Flip.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Matthias

BeitragFr, März 02, 2007 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Dieser Code Stelt 28Bilder in der Sekunde zur verfügung. Alles was unter 25Bilder in der Sekunde liegt nimmt das Auge als Einzelbilder war (Es Ruckt)

Code: [AUSKLAPPEN]

Global Instanz
setbuffer backbuffer()
Repeat:
   if Millisecs()>SpielTimer+35 then 
     SpielTimer=Millisecs()
     Drawimage Pfeil,MouseX(),MouseY()
     flip
  end if
UpdateGame()
until keydown(1)=1
end




function UpdateGame()
select Instanz

case 0:MausSteuerung();"Beispiel-Functionen"
case 1:CameraSteuerung()
case 2:BaumSetzen

end select

Instanz=(Instanz+1) Mod 30
end function




Ich selbst benutze gerne dieses ZeitManagment.
 

Todeskop

BeitragFr, März 02, 2007 21:24
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm Eingeproggt ich arbeite gerade an einen 3d shooter und versuche (bei aktuell 2400 zeilen) einen fpswert von 150fps zu erreichen(als minimum)..........
aber iner blitzbase steht auch noch ein text für laufzeitoptimierung.
aber ich rate die als muss an vsync abzuschalten.Achso und ist es 2d oder 3d wenn es 2d ist und plots oder so benutzt werden ist ja klar durch writepixelfast ersetzten oder gegebenenfalls hectics draw3d nehmen(das bringts wirklich) wenns 3d ist würde ich gucken das du huds nicht mit bildern nach renderworld sondern mit sprites machst und nach terrain gucken sobald du ein terrain(>256) erstellst wirds nämlich verdammt ruckelig.zudem würde ich bei spheres anstatt 32 oder so 14 facetten nehmen man sieht sowieso keinen großen unterschied.achja wie siehts mit modellen oder so auch sind die high oder lowpoly?Und ich würde noch ne fps bremse einbauen,steht aber auch inner blitzbase(ist dafür gut das du es überall ca. gleich hast).Und zu guter letzt noch anstatt goto oder gosub functionen nehmen.
Hoffe hab geholfen MFG Todeskop

FireballFlame

BeitragSa, März 03, 2007 3:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, 25 und 150 fps ist irgendwie beides nicht allzu sinnvoll.
25fps sind keineswegs flüssig. Mag vielleicht im Kino so sein, aber da haben ja auch die Bilder schon Unschärfe und so. Und du brauchst nur mal nen Ego-Shooter auf 25fps zu spielen, dann merkst du das ^^
150fps sind aber auch nicht nötig! Und schon gar nicht als "Minimum"!

Der normale Richtwert sind 60fps. Das ist völlig flüssig und sogut wie gar nicht von nochmehr zu unterscheiden. Mit eingeschaltetem VSync kommt mein PC auch genau auf 60fps. Wird wohl seine Gründe haben. Meint ihr vielleichtm dass man mit VSync nicht flüssig spielen kann? *lol*


Todeskop hat Folgendes geschrieben:
goto oder gosub functionen nehmen.

Wenn du schon so speedversessen bist ( Wink ): GoSub ist schneller als Function! Aber mit der Übersichtlichkeit muss man dann wirklich aufpassen.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit
 

Todeskop

BeitragSa, März 03, 2007 8:02
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ok ich gebe zu das mit dem "minimun" war übertrieben aber ich schaffe diesen wert noch immoment und dann werde ich den auch nutzen aber wenn ich es "veröffentliche" werde ich eine fps-bremse von 100 einbauen.
ach und noch zu gosub, tut mir leid ich dachte alles was mit g anfängt wäre böse...ich dachte ich hätte es ihrgentwo gehört aber gut dann hab ich wieder dazugelernt *g* MFG Todeskop

BladeRunner

Moderator

BeitragSa, März 03, 2007 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Goto und gosub springen bei der Ausführung nur im Code herum, versetzen also den Program Counter. Das kostet einen Taktzyklus Zeit und fertig.Der Aufruf von Funktionen führt dazu das Variablen hin und hergeschoben werden, die Rücksprungadresse auf den Stack gelegt wird und so weiter. Daher sind Funktionen (je nach Umfang) in der Regel etwas langsamer.
ABER: Es gibt mehr als genug Stellen an denen man wesentlich effektiver Zeit einsparen kann, und die Funktion hält den Code sauber und leichter bearbeitbar. Daher würde ich nur als Notbremse darauf verzichten.

Auf Types zu verzichten halte ich auch nur bedingt für sinnvoll. Es gibt Dinge für die ist ein Type einfach wesentlich besser geeignet als ein Array.
Wenn es um gezielte Zugriffe geht hat das array einen deutlichen Vorteil - man denke an Maps- aber hier wäre ein Type eh der falsche Weg.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Eingeproggt

BeitragSa, März 03, 2007 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich fasse mal zusammen, damit ich auch nichts falsch versteh:

fps auf 60 beschränken (mit Flip 0 und einem "Frame-Limiter" (das muss mir noch jemand erklären Embarassed ))
Auf Types verzichten (wo es Sinn macht). Also bei mir bin ich mir nicht sicher. Ich hab 2 Types, die aus je 3 Felder bestehen (x,y,timer). Macht es in diesem Fall Sinn?
Auf 2D-Befehle wie Plot verzichten. (in meinem Fall verwende ich Rect und Oval, hab mir hectics Draw3D angeschaut, hat aber nicht recht hingehauen)
Goto und Gosub sind schneller, aber ich werde ein bisschen was für meine Übersichtlichkeit opfern.
Debugmodus ausschalten
Etliche Befehle müssen nicht in der schleife angewandt werden (wie MidHandle)
Zwischen Buffern hin-und herwechseln, sie dabei auch noch zu locken / unlocken verbraucht ressourcen

Bitte korrigieren, wenn ich mich vertan haben sollt.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

StepTiger

BeitragSa, März 03, 2007 17:43
Antworten mit Zitat
Benutzer-Profile anzeigen
locken und unlocken ist durchaus sinnvoll, sofern man es richtig macht.

@Matthias:
Dein Code ist, verzeih mir den Ton, absoluter Müll.
Der reizt den Computer bis aufs letzte aus.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Mashed Crashed

BeitragSa, März 03, 2007 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Moinmoin, wo nun grade die rede von FPS_Limiternist, du (Steptiger) hattest mal einen ganz guten hier gepostet (siehe ersten Code https://www.blitzforum.de/foru...amelimiter

Bei einer Anwendung von mir klappt das Perfekt,(nicht Vollbildmodus) nur nun bin ich dabei n kleinen rpg zumachen (Vollbildmodus), auch hier hab ich den mit maximal 45 fps eingebaut,doch hab ich kontinuierlich 60 FPS.

Bei dir im Beispiel steht " Flip 0 " , gut hab ich gemacht, Bumms hatte ich dauer haft werte um 350-365 (mit fraps ermittelt). Ich weiß net was ich falsch mache.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group