Jeg er ved at læse en bog om spilprogrammering, den fortæller at jeg skal sørge for at holde min frame rate på max. 30 fps(frames per second ikke first person shooter), ved hjælp af at putte:
while((GetTickCount()-StartTime)<33)
I slutningen af mit message loop, StartTime bliver så i starten af MessageLoopet sat til GetTickCount().
Jeg kan godt se at man i multiplayer spil ikke kan have at den ene player har en frame rate på 75 fps og den anden har en på 20 fps, så hvis de begge holder <pil op> nede bliver det registreret 75 gange i sekundet hos player1 og 20 hos player2 så player1 går næsten 4 gange så langt. Hvordan kan man løse dette problem, ville det være smart bare at lade alle playere vente i slutningen af message loopet både på at "(GetTickCount()-StartTime)<33" bliver falsk og at alle playere er der, altså tvinge alle til at lægge på den frame rate som den player med langsomest frame rate har? Eller er der en anden god måde hvor man måske kan sørge for at alle ikke nødvendigvis skal køre langsomt?
Kunne man ikke også bare gemme fps i en variabel og så fx når <pil op> bliver trykket udføre noget lignende:
MoveForward(this,2.0f/this.fps);
Hvor prototypen er:
MoveForward(CPlayer player, float Distance);
???
Håber at der er nogle erfarne spilprogrammere der kender en god måde, for jeg kan ikke finde rundt i det her
PS: ved godt at jeg halvt brugte "Hungarian notation" i det sidste eksempel, men det var bare for at vise at player er en klasse.
[Redigeret d. 22/06-04 14:46:17 af Rasmus(KOEN)]