Showtime
2003-11-22 21:37:26 UTC
Hola. Antes que nada, disculpas por el off-topic. Tengo una duda y no sabía
dónde plantearla.
Estoy haciendo un jueguillo en C, y forzosamente debe compilar en Borland
C++ 3.1 (antediluviano) y para DOS puro. El problema que tengo es que no sé
si existe un método más o menos estándar para lograr que el juego vaya a la
misma velocidad en un 486 que en un Pentium 4.
¿Debo usar timers? Los timers de BC++ 3.1 se basan en el timer de la BIOS,
que salta cada 55 ms, con lo que lo máximo que se consiguen son 18,2 FPS.
Supongo que podría dar dos pasadas al bucle del juego por cada tick del
timer, con lo que se doblarían. Creo que se también se puede reprogramar el
timer, aunque he leído que no es muy recomendable.
La función delay tiene una precisión de 1 milisegundo, pero no es una buena
opción porque dependiendo de la máquina los cálculos del juego se
ejecutarían más o menos rápido, con lo que seguiría siendo dependiente de la
máquina.
También supongo que podría usarse algo como
contador=0
while (!fin_juego)
{
contador++;
if (contador==5000)
{
//actualizar juego
contador=0;
}
}
Donde el valor "5000" en el ejemplo sería variable y se estimaría de algún
modo.
Agradecería cualquier ayuda sobre cuál es la mejor opción a usar.
saludos y gracias de antemano
dónde plantearla.
Estoy haciendo un jueguillo en C, y forzosamente debe compilar en Borland
C++ 3.1 (antediluviano) y para DOS puro. El problema que tengo es que no sé
si existe un método más o menos estándar para lograr que el juego vaya a la
misma velocidad en un 486 que en un Pentium 4.
¿Debo usar timers? Los timers de BC++ 3.1 se basan en el timer de la BIOS,
que salta cada 55 ms, con lo que lo máximo que se consiguen son 18,2 FPS.
Supongo que podría dar dos pasadas al bucle del juego por cada tick del
timer, con lo que se doblarían. Creo que se también se puede reprogramar el
timer, aunque he leído que no es muy recomendable.
La función delay tiene una precisión de 1 milisegundo, pero no es una buena
opción porque dependiendo de la máquina los cálculos del juego se
ejecutarían más o menos rápido, con lo que seguiría siendo dependiente de la
máquina.
También supongo que podría usarse algo como
contador=0
while (!fin_juego)
{
contador++;
if (contador==5000)
{
//actualizar juego
contador=0;
}
}
Donde el valor "5000" en el ejemplo sería variable y se estimaría de algún
modo.
Agradecería cualquier ayuda sobre cuál es la mejor opción a usar.
saludos y gracias de antemano