Geschwindigkeitsnormalisierung
Übersicht

![]() |
maboxBetreff: Geschwindigkeitsnormalisierung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo, Ich habe früher schon einmal einen ähnlichen Thread aufgemacht und nach einem Code für Geschwindigkeitsnormalisierung gefragt. Ich habe einen Code und einige Ratschläge bekommen. Mittlerweile habe ich mehrere kleine Games usw. geschrieben bei denen ich den Code den ich damals bekommen hatte verwendet habe.
Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer BackBuffer() Ms = MilliSecs() While Not KeyHit (1) Timescale = MilliSecs() - Ms Ms = MilliSecs() Cls x=(x+1 + 0.01 *Timescale) Mod 640 Rect x,50,20,20 Flip Wend Leider musste ich gestern feststellen, dass die Games doch nicht auf allen PC's mit gleicher Geschwindigkeit laufen. Findet ihr den Fehler? Oder ist das Prinzip ganz falsch? Oder sollte ich doch lieber eine einfache Framebegrenzung einbauen obwohl man Frameunabhängig Programmieren soll? |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
warum soll man frameunabhängig programmieren??
mahen doch alle so! framelimiter rein und fertig is der lack! ![]() Ich nutzte auch nen Framelimiter, und funktioniert super und auf allen rechner gleichschnell! |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
maboxBetreff: KP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Weis ich auch nicht aber in der BlitzFAQ steht das ![]() |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Ich nutzte auch nen Framelimiter, und funktioniert super und auf allen rechner gleichschnell!
Nicht ganz! Frameunabhängig ist schon besser, denn wenn man nur 10 FPS hat (^^) und der Limiter ist auf 50, dann läuft trotzdem alles langsamer! ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie wär dann der beste ansatz um sowas optimal zu gestallten?? | ||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab die Schleifenzeit ausgerechnet, und dann alle Variablen erhöht*Schleifenzeit
Also.. Code: [AUSKLAPPEN] SchleifenZeit#=1
While xD=xD Startzeit#=MilliSecs() x#=x#+1*SchleifenZeit# SchleifenZeit# = (MilliSecs() - Startzeit#) Wend Es gibt aber noch andere Methoden.. |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
maboxBetreff: meine Frage |
![]() Antworten mit Zitat ![]() |
---|---|---|
So Ähnlich ist das in meinem Code doch auch aber es läuft trotzdem bei manchen rechnern zu schnell ![]() |
||
Fujitsu-Siemens Laptop, 2Ghz Intel Core2Duo Prozessor, 2GB Ram, 120GB Festplatte, ATI Mobility Radeon X1400, Windows Vista Ultimate
www.mausoft.de.tl Dönerfresser Homepage |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
Arbeite einfach mit createtimer und waittimer.
Für die meisten Projekte dürfte das komplett ausreichend sein. |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
waittimer bremst das system aus- es wartet auf den nächsten Tick und lässt daher wertvolle zeit abrauschen. Und wenn der Rechner ne lahme Gurke ist, funzt es auch nicht gescheit. Also Finger weg davon.
Eine Schleifenzeit als Faktor ist die beste Lösung. |
||
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 |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
aber das mit der Schleifenzeit berrechnen ist meistens ungenau. Was ist, wenn der PC gerade in der Zeit wo die Dauer einer schleife berrechnet wird laggt? Dann läuft das ganz spiel zu schnell.
Bei den meisten herkömmlichen Spielen, lässt sich ein schleifendurchlauf für einen Modernen PC in 1/60 sekunde abarbeiten. Nur bei größeren Projekten ist imho eine andere Technik notwendig. Gruß, Smily0412 |
||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist so nicht ganz richtig.
Wenn der PC eben da laggt, dann wird es eben da schneller laufen. Danach nicht mehr. Schleifenunabhängig programmierst du, indem du einen Richtwert hast und alle Veränderungen von Variablen mal Richtwert duch vergangene Zeit nimmst. Die andere Variante wäre das mehrmalige Durchlaufen der Hauptschleife. Kann eben kostbare Zeit kosten und ist ungenauer. Man könnte es auch hybrid machen, aber mir fällt nicht wirklich ein Beispiel ein, wo sich das lohnt. |
||
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Deine timescale -Variable fiel lediglich mit einer Beeinflussung von 1% zur Beschleunigung auf. So sollte es funktionieren: Code: [AUSKLAPPEN] Graphics 640,480,0,2
SetBuffer BackBuffer() ms%=MilliSecs() While Not KeyHit (1) msa=MilliSecs() timescale=msa-ms ms=msa If KeyDown(2) Delay 25 If KeyDown(3) Delay 50 If KeyDown(4) Delay 200 x=(x+(.1*timescale)) Mod 640 Rect x,50,20,20,1 Flip Cls Wend End Mit den Tasten 1,2 und 3 kannst du ein langsameren Rechner simulieren. Zu den anderen Beispielen mit CreateTimer, kann ich nur sagen: Wenn man es sich ganz einfach machen will, kann man es so machen. Die Nachteile wurden bereits erwähnt. Nachteil welches noch nicht erwähnt wurde, dass die meisten dann eine FPS auf 60 setzen, was bei meinem Monitor der in nahezu jeder Auflösung volle 100 schafft, echt lässtig ist, weil es dann eben zu einem Asyncromen Ablauf kommt und jede Bewegung irgendwie ruckelig aussieht. Eine Geschwindigkeitsscallierung mit MilliSecs ist nur dann ungenau, wenn man ein Programm mit Flip 0 betreibt, was eh Sinnlos ist. Alle die sich das Treibermässig ausschalten wissen überhaupt nicht, was die da tun. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ...
für mich hat sich eine Mischung aus beidem als gut ergeben. sodas die Scalirung der berwegung nur dann greift. Wenn die FPS unter 60 sinkt. Alles Darüber leufts mit frame bremse. |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, die Idee hatte ich auch. Nur würde ich dann die FPS auf max. 150 oder gar 200 setzen, denn wie ich bereits erwähnte, wird eine 60 FPS Bremse bei mir sehr unschön laufen, da mein Monitor zB noch bei der Auflösung von 1280x960 volle 100 FPS macht. Eine Abbremsung auf 60 FPS bedeutet: 2 Bilder, dann ein Stillstandbild, dann wieder zwei Bilder etc... Bei mir währen dann sogar 50 FPS besser, da es dann syncron zum 2:1 laufen kann.
Eine Abgrenzung auf ~150 FPS würde lediglich eine treiberseitige Freakeinstellung auf Flip 0 'verhindern', was zum ersten eh nichts bringt und zum weiteren nur mehr Strom frisst, die Hardware mehr belastet (mehr Hitze) und dadurch auch noch mehr Lärm durch Lüfter erzeugt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ...
ich teste vorher mit einem Leer Bild die Bildschirm FPS . Da würde dann bei einem Bildschirm mit 100 Herz eine FPS von 50 angelegt. Bei 75 bleibt es 75 , bei 80 wird 40 etc. Standbillder sind recht ätzend. ![]() |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
![]() |
Smily |
![]() Antworten mit Zitat ![]() |
---|---|---|
kann jetzt sein, dass ich da was falsch in erinnerung habe, aber ist es nicht so, das unser Auge sowiso nur maximal 60 FPS verarbeiten kann? | ||
Lesestoff:
gegen Softwarepatente | Netzzensur | brain.exe | Unabhängigkeitserklärung des Internets "Wir müssen die Rechte der Andersdenkenden selbst dann beachten, wenn sie Idioten oder schädlich sind. Wir müssen aufpassen. Wachsamkeit ist der Preis der Freiheit --- Keine Zensur!" stummi.org |
![]() |
tft |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi ....
darum getz hir eigentlich nicht. im übrigen habe ich gelernt das es 24 Bilder sind. Aber durch die Auf bewegung getrimmten aussenbereiche des Auges fällt einem das Flimmern bei Bildern <30 FPS je nach Alter noch auf. Dazu kommt noch das Darstellungs Problem des Monitors. Ohne Sysc geschiet es mitten im Bild. Das fällt sogar alten Opas noch auf. Und ein Standbild bei hohen FPS ist sogar noch äzender. |
||
TFT
https://www.sourcemagic.ch Monkey,HTML5,CSS3,W 10 64 Bit, 32 GB Ram, GTX Titan, W8 ist Müll !!!!!! |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Smily0412
Bei Aufnahmen, wo die Belichtungszeit komplett die ganze 1/60stel Sekunde aufzeichnet, ja. Ein Computerbild wie bei Spielen ist aber 1/unendlichstel Sekunde kurzer ''Belichtungszeit'', wo man es dann doch sehr viel stärker wahr nimmt. Bei 100 FPS bei mir, sieht es schon recht gut aus. Mein alter Monitor konnte aber 200 FPS Vollbilder machen, und es sah dort noch besser aus. Also gild das Argument nicht auf allen Gebieten. edit1: Aus diesem Grund wird bei Computer animierten Filmen mit Zwischensequenzen gearbeitet. Jedes Frame besteht aus mindestens vier Zwischensequenzen deren Bewegungsablauf zwsichen zwei ganzen Frames wieder gibt. Also eine art Motionblur. Das Bild wird zwar unschärfer, aber für das Auge sehr viel angenehmer zu betrachten beim abspielen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group