လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Time_Nanosleep ကို အသုံးပြု. ဂိမ်းကွင်းများတွင်နှောင့်နှေးထိန်းချုပ်မှုကိုအကောင်းဆုံးပြုလုပ်ပါ

Time_Nanosleep ကို အသုံးပြု. ဂိမ်းကွင်းများတွင်နှောင့်နှေးထိန်းချုပ်မှုကိုအကောင်းဆုံးပြုလုပ်ပါ

gitbox 2025-05-29

ဂိမ်းဖွံ့ဖြိုးတိုးတက်မှုတွင်, တိကျသောနှောင့်နှေးမှုထိန်းချုပ်မှုသည်ဂိမ်း၏ချောမွေ့မှုနှင့်တုန့်ပြန်မှုကိုသေချာစေရန်အလွန်အရေးကြီးသည်။ PHP သည် scripting language ဖြစ်ပြီးရိုးရာဂိမ်းဖွံ့ဖြိုးမှုဘာသာစကားမဟုတ်သော်လည်းအချို့သော Mini-Mini-based ဂိမ်းယုတ္တိဗေဒများတွင်မကြာခဏအသုံးပြုလေ့ရှိသည်။ ဤဆောင်းပါးသည် PHP ၏ Time_Nanosleep function ကို Game Loops တွင်ပိုမိုတိကျစွာပိုမိုတိကျစွာပိုမိုတိကျစွာအသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

Time_Nanosleep ဆိုတာဘာလဲ။

Time_Nanosleep သည် PHP မှပေးသော function တစ်ခုဖြစ်ပြီးပရိုဂရမ်ကိုသတ်မှတ်ထားသောစက္ကန့်ပိုင်းနှင့် nanosecond Times များကိုကွပ်မျက်ရန်ခွင့်ပြုသည်။ အိပ်စက်ခြင်း သို့မဟုတ် USLEEP နှင့်နှိုင်းယှဉ်လျှင် Time_Nanosleep သည် ပိုမိုမြင့်မားသောနှောင့်နှေးလိုအပ်ချက်များရှိသောအခြေအနေများအတွက်သင့်လျော်သောပိုမိုမြင့်မားသောတိကျသောနှောင့်နှေးခြင်းကိုထိန်းချုပ်သည်။

function ကိုအဓိပ္ပါယ်ဖွင့်ဆိုချက်ကိုအောက်ပါအတိုင်းဖြစ်သည် -

 bool time_nanosleep(int $seconds, int $nanoseconds)
  • $ စက္ကန့်အနည်းငယ်သည် ခေတ္တဆိုင်းငံ့ထားခြင်း, အနုတ်လက်ခဏာမဟုတ်သောကိန်းဂဏန်းဖြစ်သည်။

  • $ nanoseconds သည် 0 မှ 999,9999999 အထိရပ်တန့်နေသော nanoseconds အရေအတွက်ကိုဆိုင်းငံ့ထားသည်။

အကယ်. ခေါ်ဆိုမှုသည်အောင်မြင်ပါက function သည် မှန်ကန် သည်

Time_NANOSESEP ကိုဂိမ်းကွင်းထဲမှာဘာလို့သုံးရတာလဲ။

ဂိမ်းကွင်းဆက်တွင်တစ်ပတ်လျှင်တစ်စက္ကန့်လျှင် 16.67 မီလီမီတာခန့်မှန်းခြေအားဖြင့် 16.67 မီလီမီတာနှင့်အတူဘောင်တိုင်း၏ကြားကာလ၏ကြားကာလအချိန်ကိုတိကျစွာထိန်းချုပ်ရန်လိုအပ်သည်။ ရိုးရာ အိပ်စက်ခြင်း (1) သို့မဟုတ် USEEP (10000) လုပ်ဆောင်ချက်များသည်တိကျမှန်ကန်မှုရှိသည်။ အထူးသဖြင့် အိပ်စက်ခြင်း သည်ဒုတိယအဆင့်နှောင့်နှေးမှုကိုသာထောက်ပံ့သည် Time_Nanosleep သည် ပိုမိုတင်းကျပ်သောအချိန်ကြားကာလလိုအပ်ချက်များကိုပိုမိုသင့်တော်သော nanosecond-level နှောင့်နှေးမှုကိုထောက်ခံသည်။

ဥပမာ - Time_NANOSESEP ကိုအသုံးပြုပြီးဂိမ်းကွင်းများကိုအကောင်းဆုံးလုပ်ပါ

ဤနေရာတွင်ရိုးရိုး 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);
    }
}
?>

code parsing

  • အချိန်မြင့်မားသောကွဲပြားခြားနားမှုတွက်ချက်မှုကိုလွယ်ကူချောမွေ့စေရန်မြင့်မားသော - တိကျသောလက်ရှိအချိန်ဖြစ်သော 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 ကဲ့သို့သောစနစ်များကဲ့သို့မကောင်းသောကြောင့်ပတ်ဝန်းကျင်ကသက်ရောက်မှုများကွဲပြားနိုင်သည်။

  • အကယ် . သင်သည်ပိုမိုကောင်းမွန်သောထိန်းချုပ်မှုကိုပိုမိုကောင်းမွန်စွာထိန်းချုပ်နိုင်ပါက,

နောက်ထပ်အကောင်းမြင်အကြံပြုချက်များ

  1. dynamically frame rate <br> အတွေ့အကြုံကိုပိုမိုတည်ငြိမ်စေရန်လက်ရှိစနစ်ဝန်နှင့်အညီဇာတ်လမ်းတွဲနှုန်းကို dynamically ကိုညှိပါ။

  2. Segmented နှောင့်နှေးထိန်းချုပ်မှု <br> <br> အချိန်ကြာမြင့်စွာခေတ္တရပ်တန့်ရန်အတွက် time_nanosleep ကို သုံး. Time Control တိကျမှန်ကန်မှုကိုတိုးတက်စေရန် USleep နှင့်ပေါင်းစပ်ပါ။

  3. စစ်ဆင်ရေးကိုပိတ်ဆို့ခြင်းကိုရှောင်ကြဉ်ပါ ဂိမ်းယုတ္တိဗေဒကုဒ်သည်ထိရောက်မှုရှိစေရန်သေချာစေရန်, အလွန်အကျွံပိတ်ဆို့ခြင်းကိုရှောင်ကြဉ်ပါ။

ကိုးကားခြင်း

  • PHP တရားဝင်စာရွက်စာတမ်းများ - Time_Nanosleep

  • မြင့်မားသောတိကျမှုအချိန်ယူရခြင်း - Hrtilt

အထက်ပါနည်းလမ်းများမှတဆင့် PHP အစီအစဉ်များသည် Game Loops ၏နှောင့်နှေးမှုကိုပိုမိုမြင့်မားသောတိကျမှန်ကန်စွာဖြင့်ပိုမိုမြင့်မားခြင်း, PHP Game Loops ၏အချိန်ကိုထိန်းချုပ်ရန်ဤဆောင်းပါးသည်သင်အတွက်အထောက်အကူဖြစ်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။