Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

01.11.2004, 18:48

framerate ordentlich begrenzen

hi,

hat jemand ne idee wie man am schlauesten die framerate
auf z.b. 60 begrenzt? alles was ich bis jetzt probiert hab
(unteranderem ein beitrag aus'm forum) war eher etwas ruckelig.

meine andere idee wär gewesen bewegungsvektoren und der gleichen
einfach dynamisch der framerate anzupassen. dann hab ich
halt oft sowas wie speed/fps stehn.....
was is denn schlauer?


grß 23h

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

2

01.11.2004, 18:52

VSync :)

3

01.11.2004, 19:06

bringts aber auch nicht wirklich, hat schließlich jeder ne andere
vsync-rate, je nach monitor.
tft-leuts werden wahrscheinlich 60 haben aber crt-user
mehr....

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

4

01.11.2004, 22:02

Zitat

hat jemand ne idee wie man am schlauesten die framerate
auf z.b. 60 begrenzt? alles was ich bis jetzt probiert hab
(unteranderem ein beitrag aus'm forum) war eher etwas ruckelig.

meine andere idee wär gewesen bewegungsvektoren und der gleichen
einfach dynamisch der framerate anzupassen. dann hab ich
halt oft sowas wie speed/fps stehn.....

Ähm lese ich das richtig? Und was wäre mit den armen Leuten, die nur 30 fps hinbekommen, bei deiner Lösung hätten die nciht viel Spass. Natürlich muss du in jede Bewegung in deinem SPiel den faktor Zeit dynamisch einspielen lassen. (siehe Buch von david)

5

02.11.2004, 06:49

wo genau siehst du da ein problem bei 30 fps?
was meisnt du mit faktor zeit?
etwas sowas

Quellcode

1
2
if (GetTickCount() - lastTime > xxx){
}


gruß 23h

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

6

02.11.2004, 11:05

man misst die zeit, welche das spiel für einen "durchlauf" benötigt und lässt diese in die bewegungen einfließen. sprich: läuft das spiel mit viel fps werden die objekte pro frame weniger bewegt, als wenn die framerate niedriger ist...
dadurch läuft das spiel auf allen rechnern gleichschnell.....

7

02.11.2004, 14:03

Als nächstes sollte die Zeit zwischen n Frames Interpoliert werden. Dann sind die Bewegungen noch flüssiger.

Bei starken wechsel zwischen Hohen und niedrigen FPS kann es trotz Zeitanpassung zu rucklern kommen. Die lassen sich mittels einfacher Liniearer Interpolation recht gut beseitigen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

8

02.11.2004, 17:49

hm okay aber wie mess ich am geschicktesten die zeit?
welche funktion könnt ihr empfehlen bzw. welche misst in der kleinsten
einheit?

gruß 23h

9

02.11.2004, 18:15

Wie wärs damit:

C-/C++-Quelltext

1
2
3
4
QueryPerformanceCounter((LARGE_INTEGER*)&currentFrame);                               
   
QueryPerformanceFrequency((LARGE_INTEGER*)&freq);
   

10

02.11.2004, 18:53

könnt mir mal jemand kompletten beispielcode
liefern?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
QueryPerformanceCounter(&nframeTime);
GAME::fps = (float)(freq.QuadPart/(nframeTime.QuadPart - lframeTime.QuadPart));
lframeTime = nframeTime;
sumfps += GAME::fps;
numfps += 1.0f;
if (numfps == 12.0f){
    GAME::fps = sumfps/12.0f;
    numfps = 0.0f;
    sumfps = 0.0f;
}
if (GAME::fps <= 0.0f)GAME::fps = 60.0f;


mit obrigem code hab ich alle sekunde etwa einmal einen
totalausfall mit >3000 fps statt 60.
kein plan was ich falsch mach ehrlich.

gruß 23h

Werbeanzeige