Avatar billede rthuls Nybegynder
07. juni 2004 - 00:36 Der er 5 kommentarer og
1 løsning

tid i spil - uafhængigt af cpu

Jeg er igang med at lave et simpelt racerspil. Til det formål har jeg har lavet en tæller som holder øje med hvor mange sekunder brugeren er om at fuldføre en omgang.

Problemet er at spillet køre hurtigtere på hurtige computere (sjovt nok), hvilket gør at brugere med hurtige computere kan gennemføre en omgang langt hurtigere end brugere med langsomme computere har mulighed for.

Jeg ville jo gerne have at spillet er lige fair for alle brugere, men hvordan kan det lade sig gøre? Kan man evt. måle på hvormange enterframes der er blevet brugt på en omgang? Har i andre gode ideer?
Avatar billede al_dair Nybegynder
07. juni 2004 - 00:54 #1
Stødte på den her for et stykke tid siden ..
Måske totalt irrelevant, men ..

http://www.were-here.com/content/templates/PrintTemplate.asp?articleid=116&zoneid=7
Avatar billede pyroman Nybegynder
07. juni 2004 - 10:37 #2
Du kan bruge dette smarte lille script der sikrer at farten bibeholdes uanset framerate - på langsomme computere vil grafikken bare hakke mere... men farten vil altid være den samme:

1. frame i _root:

var prefTime = 50;

var timescale;
var timer = getTimer();
this.onEnterFrame = function(){
  timescale = (getTimer()-_root.timer)/_root.prefTime; //Denne er vigtig!
  timer = getTimer();
}


"var prefTime = 50" er en variabel der angiver hvor mange millisekunder der skal gå på EN HEL bevægelse. Jeg viser lige brugen af det her:

var prefTime = 50;

var timescale;
var timer = getTimer();
var allTime = getTimer(); //start tid
this.onEnterFrame = function(){
  timescale = (getTimer()-_root.timer)/_root.prefTime;
  timer = getTimer();
  ting._x += 5*timescale; //Her er den ting der skal bevæges!
  if(ting._x > 500) trace(getTimer()-_root.allTime); //tjekker - udskriver tid i alt
}

Her har jeg et movieclip med navnet "ting", der uden mit script ville bevæge sig med en fart på 5 pixels til højre hvert frame... Denne fart ganger jeg så bare med tidsforholdet "timescale", hvis frameraten er meget lav vil det egentlige "skridt" måske ligge på over 5 pixels, hvis frameraten er høj vil det måske ligge på noget langt under 5, men så tager den også flere "skridt".
Alt det andet er en "tjekker" der tjekker hvornår mit movieclip er over x > 500, så udskriver den tiden siden den begyndte at bevæge sig. Så kan du prøve at justere frameraten, eller prøve på en hurtig og langsom computer, så skulle tiden gerne være den samme.

Og ikke mere roman-skriverier i dag :)
Avatar billede rthuls Nybegynder
09. juni 2004 - 13:07 #3
pyroman >> Det ser ud til at virke. Smider du et svar?
Avatar billede pyroman Nybegynder
09. juni 2004 - 13:58 #4
jepser!
Avatar billede pyroman Nybegynder
09. juni 2004 - 13:59 #5
hov - var sgu ikke så god til at ramme svar knappen... prøver igen ;)
Avatar billede rthuls Nybegynder
09. juni 2004 - 18:49 #6
hehe...tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester