) pero no se si es una manera correcta, es decir si los FPS que me esta presentado son los reales, he investigado pero no me queda muy claro, ademas si es posible me gustaria que me dijeran si la manera en que estoy limitando los FPS (si es que mi manera de calcularlos es correcta
) esta bien implementada.while(corriendo)
{
timeNow = SDL_GetTicks(); //para el calculo de los fps
fpsNow,fpsPrev = SDL_GetTicks(); //para limitar los fps
....
lectura de controles;
calculo de posiciones;
calculo de colisiones;
bliteo en buffer;
imprimir variable fps;
determinar si se ha terminado el juego;
flip a pantalla;
//calculo fps
if( timeNow - timePrev > 1000 )
{
timePrev = timeNow;
fps = temp;
temp=0.0;
}
//frame lock
while(fpsNow - fpsPrev < 25)
{
fpsNow = SDL_GetTicks();
}
temp++;
}Meeths escribió:Una forma rápida aunque no 100% precisa (porque también influyen otras cosas), es la de 1/DeltaT, donde DeltaT es la diferencia en segundos(con decimales, bien float, fixed o double) entre un frame y otro.
Para qué necesitas exactamente la limitación de frames?
), pero luego de terminarlo quiero portarlo a PC, y como la diferencia de velocidades de procesador es tan amplia (entre PSP y las PC modernas), prefiero configurar todos los valores a un framerate especifico; para luego no tener que estar cambiando valores cuando este haciendo el port y asi tener ambas versiones lo mas parecidas posibles (creo que eso es lo que se hace en este tipo de casos no???). DeltaTMax = 1 / FPSDeseados
DeltaTAcumulada += DeltaT
while(DeltaTAcumulada > DeltaTMax)
{
DeltaTAcumulada -= DeltaTMax
...
ActualizaTusCosas(DetaTMax)
}

, o sea el concepto lo tengo claro, lo que no pillo es como puedo implementarlo en el juego, a ver, lo que deberia hacer es calcular el tiempo entre un frame y otro y poner una condicion, suponiendo, de que si ha pasado medio segundo (o la cantidad apropiada segun vaya probando) se mueva X cantidad de pixeles??? supongo que haciendo algo asi no tendria que hacerle un delay al ciclo, verdad??? pero que pasa con el calculo de colisiones, le hago lo mismo o dejo que se calculen de todas formas???
, ademas la experiencia previa que tengo sobre programar juegos es de un ide de esos que hacen casi todo por ti. En lugar de mover tus objetos en una cantidad fija de desplazamiento, usa la fórmula velocidad*tiempo, donde el tiempo ya lo has obtenido (DeltaT), y la velocidad la pones tú segun lo que quieras hacer