Per semplificare come rendere uniforme la velocità su tutti i pc scrivo un pseudocodice:

//si presuma che un tick cpu sia dato ogni millisecondo
int tempoDaAvvio = TickCPU();
int tempoNow;
double fps = (1.0 / 30.0) * 1000.0;

while( GiocoNonFinito() )
{
    tempoNow = TickCPU();
    mossa = InputUtente();
    GiocoMuovi( tempoNow - tempoDaAvvio, mossa );
    GiocoRedraw();
    if ( TickCPU() - tempoNow < fps )
        SleepMillisecond( (int) fps - (TickCPU() - tempoNow) );
}