Движок для java script

Иван Ионов

Доброго времени суток, пишу движок на js не могу опредилиться, что лучше использовать рекурсивный setTimeout или setInterval, в чем разница я прекрасно понимаю. Помогите выбрать что лучше с технической точки зрения и есть ли смысл усложнять для слабой игры. Вот база для рекурсивного:
```
var lastTime,
fpsTime,
gamePause=false,
Arr_All_Object=[];

var Her1={Hz:function(){console.log('h1")};

Arr_All_Object.push(Her1);

function Start (){lastTime = Date.now(); gamePause=false; Main()};
function Pause (){gamePause=true};

function Main (){
lastTime=Date.now();

Fps(lastTime);

//body
if(Hz()==0){

Update (lastTime);}

};

function Hz (){
for(var i=0;i<Arr_All_Object.length;i++){
Arr_All_Object[i].Hz();
};
/*var n=0;//тест для загруженности кода
for (var i = 1150000; i > 0; i--) {
n++;
}*/
if(length==0) return 0;
};

function Update(lastTime){

var now=Date.now();
var dt=now-lastTime;

console.log(lastTime);
console.log(dt);

t=((1000/60)-dt);//вычесть время затраченное на выполнение кода
t<0 ? t=0 : true;
console.log(t);

if (gamePause==false)

    setTimeout(Main, t);

};

function Fps(lastTime){
fps=1000/(lastTime-fpsTime);
console.log("fps"+fps);
fpsTime=lastTime;
};

Start();
setTimeout(Pause,1000);
```
я сдесь исполюзую рекурсивный setTimeout для выполнения обновлений 60раз в сек. и пытаюсь удержать эту планку вычитая время затраченное на выполнение кода и если выполнение занимает больше времини, чем промежуток между ними, то функция запускаеться сразу, fps становиться меньше и увеличивается нагрузка(может начать подвисать), здесь я хочу написать модуль который бы при значении dt больше 1000/60, то уменьшить стремление к 60кадрам до 48, и при необходимости до 24.

К чему вобщем весь текст выше, есть ли смысл все так усложнять для кода которому это даже может и не потребуеться или просто использовать фиксированный setInterval у которого всегда было бы установленное значение и одинаковый fps.

Иван Ионов около 1 года назадСпасибо 0
2 чел.