ဂိမ်းဖွံ့ဖြိုးတိုးတက်မှုတွင်, တိကျသောနှောင့်နှေးမှုထိန်းချုပ်မှုသည်ဂိမ်း၏ချောမွေ့မှုနှင့်တုန့်ပြန်မှုကိုသေချာစေရန်အလွန်အရေးကြီးသည်။ PHP သည် scripting language ဖြစ်ပြီးရိုးရာဂိမ်းဖွံ့ဖြိုးမှုဘာသာစကားမဟုတ်သော်လည်းအချို့သော Mini-Mini-based ဂိမ်းယုတ္တိဗေဒများတွင်မကြာခဏအသုံးပြုလေ့ရှိသည်။ ဤဆောင်းပါးသည် PHP ၏ Time_Nanosleep function ကို Game Loops တွင်ပိုမိုတိကျစွာပိုမိုတိကျစွာပိုမိုတိကျစွာအသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။
Time_Nanosleep သည် PHP မှပေးသော function တစ်ခုဖြစ်ပြီးပရိုဂရမ်ကိုသတ်မှတ်ထားသောစက္ကန့်ပိုင်းနှင့် nanosecond Times များကိုကွပ်မျက်ရန်ခွင့်ပြုသည်။ အိပ်စက်ခြင်း သို့မဟုတ် USLEEP နှင့်နှိုင်းယှဉ်လျှင် Time_Nanosleep သည် ပိုမိုမြင့်မားသောနှောင့်နှေးလိုအပ်ချက်များရှိသောအခြေအနေများအတွက်သင့်လျော်သောပိုမိုမြင့်မားသောတိကျသောနှောင့်နှေးခြင်းကိုထိန်းချုပ်သည်။
function ကိုအဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုအောက်ပါအတိုင်းဖြစ်သည် -
bool time_nanosleep(int $seconds, int $nanoseconds)
$ စက္ကန့်အနည်းငယ်သည် ခေတ္တဆိုင်းငံ့ထားခြင်း, အနုတ်လက်ခဏာမဟုတ်သောကိန်းဂဏန်းဖြစ်သည်။
$ nanoseconds သည် 0 မှ 999,9999999 အထိရပ်တန့်နေသော nanoseconds အရေအတွက်ကိုဆိုင်းငံ့ထားသည်။
အကယ်. ခေါ်ဆိုမှုသည်အောင်မြင်ပါက function သည် မှန်ကန် သည် ။
ဂိမ်းကွင်းဆက်တွင်တစ်ပတ်လျှင်တစ်စက္ကန့်လျှင် 16.67 မီလီမီတာခန့်မှန်းခြေအားဖြင့် 16.67 မီလီမီတာနှင့်အတူဘောင်တိုင်း၏ကြားကာလ၏ကြားကာလအချိန်ကိုတိကျစွာထိန်းချုပ်ရန်လိုအပ်သည်။ ရိုးရာ အိပ်စက်ခြင်း (1) သို့မဟုတ် USEEP (10000) လုပ်ဆောင်ချက်များသည်တိကျမှန်ကန်မှုရှိသည်။ အထူးသဖြင့် အိပ်စက်ခြင်း သည်ဒုတိယအဆင့်နှောင့်နှေးမှုကိုသာထောက်ပံ့သည် ။ Time_Nanosleep သည် ပိုမိုတင်းကျပ်သောအချိန်ကြားကာလလိုအပ်ချက်များကိုပိုမိုသင့်တော်သော nanosecond-level နှောင့်နှေးမှုကိုထောက်ခံသည်။
ဤနေရာတွင်ရိုးရိုး PHP ဂိမ်းကွင်းဆက်ဥပမာတစ်ခုဖြစ်ပြီးရည်မှန်းချက်သည် 60 fps ဖြစ်ပြီး Time_Nanosleep ကို frame_nanosleep ကိုထိန်းချုပ်ရန်အတွက် time_nanosleep ကို အသုံးပြုသည်။
<?php
$fps = 60;
$frameTimeSec = 1;
$frameTimeNano = (int)(1e9 / $fps); // စက္ကန့်တိုင်း
while (true) {
$start = hrtime(true); // လက်ရှိမြင့်မားသော - တိကျစွာအချိန်ကိုရယူပါ,nanoseconds အတွက်ယူနစ်
// ဂိမ်းယုတ္တိဗေဒအပြောင်းအလဲနဲ့
// ...
$end = hrtime(true);
$elapsed = $end - $start; // ဒီ frame အချိန်ကိုစားသုံး(nonoseconds)
// အိပ်ရန်အချိန်ကိုတွက်ချက်ပါ
$sleepTime = $frameTimeNano - $elapsed;
if ($sleepTime > 0) {
// 拆分成秒和nonoseconds传入 time_nanosleep
$sec = intdiv($sleepTime, 1e9);
$nano = $sleepTime % (int)1e9;
time_nanosleep($sec, $nano);
}
}
?>
အချိန်မြင့်မားသောကွဲပြားခြားနားမှုတွက်ချက်မှုကိုလွယ်ကူချောမွေ့စေရန်မြင့်မားသော - တိကျသောလက်ရှိအချိန်ဖြစ်သော Nanoseconds ကိုရရှိရန် HRTITITE (TRUN) ကို သုံးပါ။
ဥပမာအားဖြင့်ဘောင်နှုန်းကိုစားသုံးသင့်သည့် Nanoseconds အရေအတွက်ကိုတွက်ချက်ပါ။ ဥပမာ 1 စက္ကန့် / 60 = 16,666,6666 nanoseconds ။
ဤ frame frame ၏ ယုတ္တိ စာချုပ်အချိန်ကိုတွက်ချက်ပါ, ပြီးနောက်ကျန်ရှိသောအချိန်ကိုတွက်ချက်ပါ။
Frame Interval တစ်ခုချင်းစီသည်ကြိုတင်သတ်မှတ်ထားသောအချိန်ကိုသေချာစေရန်ကျန်ရှိသောအချိန်ကိုတိကျစွာခေတ္တရပ်တန့်ရန် time_nanosleep ကို သုံးပါ။
Time_Nanosleep စနစ်စီစဉ်ခြင်းသို့မဟုတ်အခြားဖြစ်စဉ်များကြောင့်မပြည့်စုံသောအိပ်စက်ခြင်းအချိန်နှင့်အချို့သောအမှားများကိုသည်းခံရန်လိုအပ်နေဆဲဖြစ်သည်။
Time_Nanosleep သည် အကွာအဝေးထက်ကျော်လွန်သောအနုတ်လက်ခဏာနံပါတ်များသို့မဟုတ်သတ်မှတ်ချက်များကိုမပံ့ပိုးပါ။
Windows ပတ် 0 န်းကျင်တွင် Nanosecond တိကျမှန်ကန်မှုသည် Linux သို့မဟုတ် Unix ကဲ့သို့သောစနစ်များကဲ့သို့မကောင်းသောကြောင့်ပတ်ဝန်းကျင်ကသက်ရောက်မှုများကွဲပြားနိုင်သည်။
အကယ် . သင်သည်ပိုမိုကောင်းမွန်သောထိန်းချုပ်မှုကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်နိုင်ပါက,
dynamically frame rate <br> အတွေ့အကြုံကိုပိုမိုတည်ငြိမ်စေရန်လက်ရှိစနစ်ဝန်နှင့်အညီဇာတ်လမ်းတွဲနှုန်းကို dynamically ကိုညှိပါ။
Segmented နှောင့်နှေးထိန်းချုပ်မှု <br> <br> အချိန်ကြာမြင့်စွာခေတ္တရပ်တန့်ရန်အတွက် time_nanosleep ကို သုံး. Time Control တိကျမှန်ကန်မှုကိုတိုးတက်စေရန် USleep နှင့်ပေါင်းစပ်ပါ။
စစ်ဆင်ရေးကိုပိတ်ဆို့ခြင်းကိုရှောင်ကြဉ်ပါ ဂိမ်းယုတ္တိဗေဒကုဒ်သည်ထိရောက်မှုရှိစေရန်သေချာစေရန်, အလွန်အကျွံပိတ်ဆို့ခြင်းကိုရှောင်ကြဉ်ပါ။
PHP တရားဝင်စာရွက်စာတမ်းများ - Time_Nanosleep
မြင့်မားသောတိကျမှုအချိန်ယူရခြင်း - Hrtilt
အထက်ပါနည်းလမ်းများမှတဆင့် PHP အစီအစဉ်များသည် Game Loops ၏နှောင့်နှေးမှုကိုပိုမိုမြင့်မားသောတိကျမှန်ကန်စွာဖြင့်ပိုမိုမြင့်မားခြင်း, PHP Game Loops ၏အချိန်ကိုထိန်းချုပ်ရန်ဤဆောင်းပါးသည်သင်အတွက်အထောက်အကူဖြစ်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။