Speedoptimierungsthread
Übersicht

![]() |
BmsBetreff: Speedoptimierungsthread |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi leute.
ich mach hier nen Speedoptimierungsthread auf, weil es doch bestimmt jeden mal auf den keks gehen wird: das prog läuft viel zu laaaaaangsam. schreibt hier eure tipps und tricks rein, um sein programm schneller zu machen. danke für alle beiträge. |
||
![]() |
Paul |
![]() Antworten mit Zitat ![]() |
---|---|---|
sachen wie
for I=1 to 1000 print "." Next vermeiden Kein Plot, sondern Writepixelfast Kein Text sondern Bitmapfont Paul |
||
Stratocaster black - Roland MicroCube
User posted image Girgl-World, wer's nich kennt, is' blöd! |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was ich grundsätzlich mache ist Werte, soweit benötigt und mehr als einmal pro Durchlauf abgefragt, zwischenspeichern:Code: [AUSKLAPPEN] mx=Mousex()
Das an den Anfabg der Hauptschleife und nebenbei ist auch ein wenig Tipparbeit gespart my=MouseY() mh=MouseHit(1) msecs=MilliSecs() ; KeyDown() sowie KeyHit() wenn mehr als einmal abgefragt ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
hot-bitGast |
![]() Antworten mit Zitat |
|
---|---|---|
HI....
Paragraph 1.) OPTIMIEREN... Paragraph 2.) testen Und wieder von vorne ... Toni |
||
- Zuletzt bearbeitet von hot-bit am Di, Nov 02, 2004 21:02, insgesamt einmal bearbeitet
Kekskiller |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tip: In der Onlinehilfe in die 2D-Tutorials einbiegen und auf Speedoptimierung klicken ![]() |
||
![]() |
Freeman |
![]() Antworten mit Zitat ![]() |
---|---|---|
flip 0 benutzen
nich alles tausendmal neu machen und abfragen. Bilder am Anfang laden nich wirklich produktiv ich weis. FrEeMaN |
||
![]() |
wunderkind |
![]() Antworten mit Zitat ![]() |
---|---|---|
Berechnungen aus dem Inneren von Schleifen so weit wie möglich heraushalten. Also besser...
Code: [AUSKLAPPEN] max = (value_1 + value_2) * 1024
For i = 0 To max .. .. Next ...als... Code: [AUSKLAPPEN] For i = 0 To (value_1 + value_2) * 1024
.. .. Next Noch deutlicher sichtbar wird der Zeitverlust, wenn man Funktionen ins Spiel bringt und in den Funktionen zeitaufwendige Aktionen stattfinden, die sich aber beim Durchlauf der Schleife nicht ändern und schon vorher hätte berechnet werden können. Code: [AUSKLAPPEN] For i = 0 To get_max()
.. .. Next Die Probleme steigern sich, je tiefer Rechenoperationen in Schleifen geschachtelt sind und damit für jeden Durchgang einer äußeren Schleife umsonst aufgerufen werden. |
||
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wozu Flip 0 ???
Das macht ein Spiel nur schneller, wenn es sowieso 100 FPS (oder 75 je nach dem) hat. Wenn es arschlangsam ist, bringt Flip 0 nix. Abgesehen davon verschlechtert sich (wenn auch für mich selten zu sehen) die Grafikqualität. Also immer schön Flip. Ohne 0. MfG |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
bei mir wäre flip 0 unspielbar... nicht benutzen... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
flip 0 bringt bei aktuellen Treibersettings nix.
Was man machen kann ist eine eigene "FPS basierende" renderroutine machen, so dass man selbst sagt wie häufig flip aufgerufen wird, unabhängig davon wieviel mal die Gamelogik wirklich durchläuft. Weil mit Flip 1 wird die Gamelogik nur unnötig ausgebremst ... ich vermeide es insofern wann immer möglich ( hab VSYNC ohnehin im Treiber deaktiviert ) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie gesagt: mach flip 0 und ich kann es nicht mehr spielen... | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora hat Folgendes geschrieben: flip 0 bringt bei aktuellen Treibersettings nix.
Wie meinst du das? Ich hab ja auch VSync in den Graka-Options deaktiviert, da ich ja einen TFT habe, aber das interessiert BB und jedes Spiel doch nicht. Der Unterschied ist bei mir mehr als deutlich und ich denke, bei jedem anderen auch. Und die Sache mit den zerrissenen Bildern bei Flip 0 hab ich auch schonmal deutlich sehen können. Meiner Meinung nach, sollte mal dem Spieler die Möglichkeit geben, VSync an- und ausschalten zu können und bei sehr schnellen Spielen sollte man eine Frame-Bremse einbauen, weil das Spiel sonst unspielbar ruckelt... Ansonsten heißt Speedoptimierung für mich: Den Code optimieren. Man sollte als Programmierer ein gewisses Verständnis dafür haben, wie die einzelnen Befehle nach der Compilierung tatsächlich verarbeitet werden, um den Code entsprechend zu gestalten. Und wenn man es nicht weiß, sollte man sich nicht scheuen, die Geschwindigkeit bei verschiedenen Befehlen und Kombinationen einfach zu testen... Gina. |
||
www.jk-spiele.de |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Gina: wenn du VSYNC deaktivierst und zwar fix und keine "ausgeschaltet, anwendung kann entscheiden", dann hat du bei Flip und Flip 0 das gleiche resultat.
wie erwähnt, ich nutze immer Flip 0, beschränke aber die anzahl flips pro sekunde durch den Programmcode. Ich sehe nicht ein, warum ich pro loop xyms warten sollte auf den sync wenn ich die game logik weiter laufen kann und einfach alle 16ms flip 0 aufrufe ... dadurch entsteht auch das berüchtigte TFT Flip problem net, welches dann die FPS auf 30 halbiert und dergleichen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
es wird nicht alle 16ms gewartet...
wenn du 10ms brauchst, um eine Grafik aufzubauen, dann wird nur restliche 6 sek. gewartet.... |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora hat Folgendes geschrieben: Gina: wenn du VSYNC deaktivierst und zwar fix und keine "ausgeschaltet, anwendung kann entscheiden", dann hat du bei Flip und Flip 0 das gleiche resultat.
Hmm, hab eigentlich fix ausgeschaltet ohne Wahl der Anwendung. Dann muss ich das nochmal kontrollieren, warum das bei mir anders war. Danke für die Erklärung. Vielleicht liegt es ja auch an meinem Treiber. Das mit den Millisecs() in Kombination mit Flip 0 werd ich auch mal testen. Klingt gut. Liebe Grüße, Gina. |
||
www.jk-spiele.de |
![]() |
regaa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Den Prozessor nicht unnötig belasten, wirklich nur das rechnen lassen was berechnet werden muss, zur Zeit, und nichts anderes.
BB-technisch, würd ich sagen, statt primitive rect , text oder oval Befehle drawimage, drawblock zu benutzen, halt vorher die Dinger in nen image laden. Und keine Programmanhaltenden Befehle in Realtime verwenden. Und keine Befehle benutzen die nichts taugen in realtime: text, plot,line . Und soviel wie möglich vorberechnen. |
||
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net |
![]() |
Bms |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kann man das noch vereinfachen?
Code: [AUSKLAPPEN] [...] For sp=br To 0 Step -1 For ze=ho To 0 Step -1 If lev(sp,ze)=1 Then DrawImage cube,x+sp*20-ze*20,y-sp*10-ze*25 Next Next [...] |
||
![]() |
Suco-XBetreff: ......... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm..Ich habe eigentlich immer mit Flip 0 und der Zeit gearbeitet.
Ging hier ohne Probleme. Um sicher zu gehen habe ich mal ein kleines Testgame gemacht. Wäre nett wenn ihr es testet und bescheid sagt wenn euch was negatives auffällt. Klappt es bei dem ein oder anderen nicht, müsste ich flott umdenken. www.sucox.art-fx.org/MillisecsTestgame.zip Bewegung mit Pfeiltasten, Schießen mit Space. Zwischen Flip 1 und 0 kann mit Enter gewechselt werden. EDIT Huh, da hat sich noch ne Zeile Code versteckt die da nicht reingehört. Dieser Version Testen. www.sucox.art-fx.org/MillisecsTestgame2.zip Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hätt ich nicht gedacht das das so ein Unterschied ist (im positiven Sinne). Ich habe bisher auch immer mit einfachem Flip und Framebegrenzung gearbeitet, aber das Testproggi von Suco hat mich reformiert. Läuft superflüssig ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
![]() |
Gina |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi, hab dein Testgame auch getestet.
Mit Flip 0 260 frames und mit flip 1 60. Alles super, keine Grafikaussetzer oder so. Hast du es so wie Dreamora gemacht? Wieviel ms hast du zugrunde gelegt? Gina. |
||
www.jk-spiele.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group