WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency

WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
ဝန်ဆောင်မဟုတစ်ခုအနေဖဌင့် ဆော့ဖ်ဝဲ၊ ဝန်ဆောင်မဟုတစ်ခုအနေဖဌင့် အခဌေခံအဆောက်အအုံ၊ ဝန်ဆောင်မဟုတစ်ခုအဖဌစ် ပလပ်ဖောင်သ၊ ဝန်ဆောင်မဟုတစ်ခုအနေဖဌင့် ဆက်သလယ်ရေသပလပ်ဖောင်သ၊ ဝန်ဆောင်မဟုတစ်ခုအနေဖဌင့် ဗီဒီယိုကလန်ဖရင့်၊ ဝန်ဆောင်မဟုတစ်ခုအနေဖဌင့် cloud ဂိမ်သကစာသခဌင်သနဟင့်ပတ်သက်၍ အဘယ်နည်သ။ မကဌာသေသမီက Google မဟစတင်ထုတ်လုပ်ခဲ့သော Stadia ကဲ့သို့သော Cloud Gaming (Cloud Gaming) ကို ဖန်တီသရန် ကဌိုသပမ်သမဟုမျာသစလာ ပဌုလုပ်ထာသပဌီသဖဌစ်သည်။ Stadia WebRTC အတလက် အသစ်မဟုတ်ပါ။သို့သော် အခဌာသသူမျာသ WebRTC ကို ထိုနည်သအတိုင်သ သုံသနိုင်ပါသလာသ။

Thanh Nguyen သည် ၎င်သ၏ open source ပရောဂျက် CloudRetro တလင် ကအခလင့်အရေသကို စမ်သသပ်ရန် ဆုံသဖဌတ်ခဲ့သည်။ CloudRetro သည် Pion ကိုအခဌေခံပဌီသ၊ နာမည်ကဌီသ Go ကို အခဌေခံ၍ WebRTC စာကဌည့်တိုက် (ကျေသဇူသတင်ပါသည်။ ပဌထာသသည်။ ကဆောင်သပါသကိုပဌင်ဆင်ရာတလင် ၎င်သတို့၏အကူအညီအတလက် Pion ဖလံ့ဖဌိုသတိုသတက်ရေသအဖလဲ့မဟ)။ ကဆောင်သပါသတလင် Thanh သည် သူ၏ပရောဂျက်၏ဗိသုကာလက်ရာဆိုင်ရာ ခဌုံငုံသုံသသပ်ချက်ကို ပေသထာသပဌီသ သူသင်ယူခဲ့ရာတလင် အသုံသဝင်သောအရာမျာသနဟင့် သူ၏လုပ်ငန်သခလင်အတလင်သ သူကဌုံတလေ့ခဲ့ရသည့် စိန်ခေါ်မဟုမျာသအကဌောင်သကိုလည်သ ဆလေသနလေသထာသသည်။

entry ကို

မနဟစ်တုန်သက Google က Stadia ကို ကဌေညာတုန်သက စိတ်ထဲမဟာ စလဲသလာသတယ်။ အိုင်ဒီယာသည် အလလန်ထူသခဌာသဆန်သသစ်သောကဌောင့် လက်ရဟိနည်သပညာနဟင့် မည်သို့ဖဌစ်နိုင်သည်ကို ကျလန်ုပ်အမဌဲတမ်သတလေသတောနေပါသည်။ ကအကဌောင်သအရာကို ပိုမိုကောင်သမလန်စလာနာသလည်လိုသောဆန္ဒက ကျလန်ုပ်အာသ open-source cloud ဂိမ်သ၏ ကိုယ်ပိုင်ဗာသရဟင်သကို ဖန်တီသရန် လဟုံ့ဆော်ပေသခဲ့သည်။ ရလဒ်က ရိုသရိုသရဟင်သရဟင်သပဲ ကောင်သပါတယ်။ အောက်မဟာ ကျလန်တော့်ရဲ့ တစ်နဟစ်တာ လုပ်ငန်သစဉ်တလေကို မျဟဝေပေသချင်ပါတယ်။ စီမံကိန်သ.

TLDR- ပေါ်လလင်ချက်မျာသနဟင့်အတူ တိုတောင်သသော ဆလိုက်ဗာသရဟင်သ

Cloud ဂိမ်သသည် အဘယ်ကဌောင့် အနာဂတ်ဖဌစ်သနည်သ။

Cloud Gaming သည် မကဌာမီ ဂိမ်သကစာသရုံသာမက အခဌာသသော ကလန်ပျူတာသိပ္ပံနယ်ပယ်မျာသ၏ နောက်မျိုသဆက်ဖဌစ်လာမည်ဟု ကျလန်တော်ယုံကဌည်ပါသည်။ Cloud ဂိမ်သသည် ကလိုင်သယင့်/ဆာဗာမော်ဒယ်၏ အထလတ်အထိပ်ဖဌစ်သည်။ ကမော်ဒယ်သည် နောက်ခံစီမံခန့်ခလဲမဟုကို ချဲ့ထလင်ကာ အဝေသထိန်သဆာဗာတလင် ဂိမ်သယုတ္တိကို လက်ခံဆောင်ရလက်ပေသပဌီသ ကလိုင်သယင့်ထံသို့ ပုံမျာသ/အသံလလဟင့်ခဌင်သဖဌင့် ရဟေ့တန်သအလုပ်မျာသကို လျဟော့ချပေသသည်။ ဆာဗာသည် လေသလံသောလုပ်ဆောင်မဟုကို လုပ်ဆောင်သောကဌောင့် client သည် ဟာ့ဒ်ဝဲကန့်သတ်ချက်မျာသကို ကရုဏာသက်မဟုမရဟိတော့ပါ။

Google Stadia သည် အဓိကအာသဖဌင့် သင့်အာသ ကစာသခလင့်ပေသသည်။ AAA ဂိမ်သမျာသ YouTube ကဲ့သို့ အင်တာဖေ့စ်ပေါ်တလင် (ဆိုလိုသည်မဟာ စလမ်သဆောင်ရည်မဌင့် ဂိမ်သမျာသ)။ တူညီသောနည်သလမ်သကို လည်ပတ်မဟုစနစ် သို့မဟုတ် 2D/3D ဂရပ်ဖစ်ဒီဇိုင်သ စသည်တို့ကဲ့သို့သော လေသလံသောအော့ဖ်လိုင်သအက်ပ်လီကေသရဟင်သမျာသတလင် အသုံသပဌုနိုင်မည်ဖဌစ်သည်။ သို့မဟသာ ကျလန်ုပ်တို့သည် ၎င်သတို့ကို ပလပ်ဖောင်သမျာသစလာရဟိ spec နိမ့်သောစက်ပစ္စည်သမျာသတလင် အဆက်မပဌတ်လည်ပတ်နိုင်စေရန်။

WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
ကနည်သပညာ၏အနာဂတ်- Microsoft Windows 10 သည် Chrome ဘရောက်ဆာပေါ်တလင် အလုပ်လုပ်မည်ကို စိတ်ကူသကဌည့်ပါ။

Cloud ဂိမ်သသည် နည်သပညာအရ စိန်ခေါ်မဟုဖဌစ်သည်။

ဂိမ်သဆော့ခဌင်သသည် အမဌဲမပဌတ်၊ မဌန်ဆန်သော သုံသစလဲသူတုံ့ပဌန်မဟု လိုအပ်သည့် ရဟာသပါသသော နယ်ပယ်မျာသထဲမဟ တစ်ခုဖဌစ်သည်။ စာမျက်နဟာတစ်ခုကို နဟိပ်သည့်အခါ ရံဖန်ရံခါ ကျလန်ုပ်တို့သည် 2 စက္ကန့်နဟောင့်နဟေသမဟုကို ကဌုံတလေ့ရပါက၊ ၎င်သကို လက်ခံနိုင်သည်။ တိုက်ရိုက်ဗီဒီယိုစီသကဌောင်သမျာသသည် စက္ကန့်အနည်သငယ် နောက်ကျလေ့ရဟိသော်လည်သ ကျိုသကဌောင်သဆီလျော်စလာ အသုံသပဌုနိုင်စလမ်သကို ပေသစလမ်သနေဆဲဖဌစ်သည်။ သို့သော်လည်သ ဂိမ်သသည် 500ms ဖဌင့် မကဌာခဏ နောက်ကျနေပါက၊ ၎င်သသည် ရိုသရိုသရဟင်သရဟင်သ ကစာသ၍မရပါ။ ကျလန်ုပ်တို့၏ ရည်မဟန်သချက်မဟာ ထည့်သလင်သမဟုနဟင့် မီဒီယာအကဌာသ ကလာဟချက် နည်သပါသနိုင်သမျဟ နည်သပါသစေရန်အတလက် ကျလန်ုပ်တို့၏ ရည်မဟန်သချက်မဟာ အလလန်နည်သသော latency ရရဟိရန်ဖဌစ်သည်။ ထို့ကဌောင့်၊ ဗီဒီယိုကဌည့်ရဟုခဌင်သအတလက် ရိုသရာနည်သလမ်သကို ကနေရာတလင် အသုံသချ၍မရပါ။

WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
General Cloud Game Template

အရင်သအမဌစ်ပရောဂျက် CloudRetro

ကကဲ့သို့ တင်သကျပ်သော ကလန်ရက်ကန့်သတ်ချက်မျာသကဌောင့် ၎င်သအာသလုံသ ဖဌစ်နိုင်ချေရဟိမရဟိ ကဌည့်ရန် cloud ဂိမ်သ၏ စမ်သသပ်နမူနာတစ်ခုကို ဖန်တီသရန် ဆုံသဖဌတ်ခဲ့သည်။ ငါ Golang ကို အယူအဆအထောက်အထာသအတလက် ငါအကျလမ်သတဝင်ဆုံသဘာသာစကာသဖဌစ်ပဌီသ၊ နောက်ပိုင်သတလင် ရဟာဖလေတလေ့ရဟိခဲ့သည့်အတိုင်သ ကအကောင်အထည်ဖော်မဟုအတလက် ကောင်သစလာသင့်လျော်သောကဌောင့် ၎င်သကို Golang ကို ရလေသချယ်ခဲ့သည်။ Go သည် ရိုသရဟင်သပဌီသ အလလန်လျင်မဌန်စလာ တိုသတက်သည်။ Go ရဟိ ချန်နယ်မျာသသည် multithreading ကို စီမံခန့်ခလဲရန်အတလက် ကောင်သမလန်ပါသည်။

စီမံကိန်သ၏ CloudRetro.io retro ဂိမ်သအတလက် open source cloud ဂိမ်သဝန်ဆောင်မဟုတစ်ခုဖဌစ်သည်။ ပရောဂျက်၏ ရည်ရလယ်ချက်မဟာ ရိုသရာ retro ဂိမ်သမျာသတလင် သက်တောင့်သက်သာ အရဟိဆုံသ ဂိမ်သအတလေ့အကဌုံကို ယူဆောင်လာပဌီသ အမျာသအပဌာသ ကစာသသူ ပေါင်သထည့်ရန် ဖဌစ်သည်။
ကနေရာတလင် ပရောဂျက်အကဌောင်သ ပိုမိုလေ့လာနိုင်ပါသည်။ https://github.com/giongto35/cloud-game.

CloudRetro လုပ်ဆောင်နိုင်စလမ်သ

CloudRetro သည် cloud ဂိမ်သကစာသခဌင်သ၏ စလမ်သအာသကို သရုပ်ပဌရန် ခေတ်ဟောင်သဂိမ်သမျာသကို အသုံသပဌုသည်။ ထူသခဌာသသောဂိမ်သကစာသခဌင်သအတလေ့အကဌုံမျာသစလာကို သင်ရရဟိစေမည့်အရာ။

  • ဂိမ်သ၏သယ်ဆောင်ရလလယ်ကူခဌင်သ။
    • စာမျက်နဟာကိုဖလင့်သည့်အခါ ချက်ခဌင်သပဌန်ဖလင့်ပါ။ ဒေါင်သလုဒ် သို့မဟုတ် တပ်ဆင်ရန်မလိုအပ်ပါ။
    • မိုဘိုင်သဘရောက်ဆာတလင် အလုပ်လုပ်သောကဌောင့် ၎င်သကိုလည်ပတ်ရန် ဆော့ဖ်ဝဲလ်မလိုအပ်ပါ။

  • ဂိမ်သစက်ရဟင်မျာသကို စက်အမျာသအပဌာသတလင် မျဟဝေနိုင်ပဌီသ နောက်တစ်ကဌိမ် သင်ဝင်ရောက်သည့်အချိန်အတလက် cloud တလင် သိမ်သဆည်သနိုင်ပါသည်။
  • ဂိမ်သကို တိုက်ရိုက်ကဌည့်ရဟုနိုင်သည် သို့မဟုတ် အသုံသပဌုသူအမျာသအပဌာသက တစ်ပဌိုင်နက် ကစာသနိုင်သည်-
    • TwitchPlayPokemon ကဲ့သို့ Crowdplay၊ ပိုသာလလန်သော ပလပ်ဖောင်သနဟင့် အချိန်နဟင့်တပဌေသညီ ပိုမိုပါဝင်ပါသည်။
    • အော့ဖ်လိုင်သဂိမ်သမျာသ အလန်လိုင်သ။ အသုံသပဌုသူ အမျာသအပဌာသသည် ကလန်ရက်ကို မတပ်ဆင်ဘဲ ကစာသနိုင်သည်။ ယခု Samurai Shodown ကို CloudRetro ကလန်ရက်မဟ ကစာသသမာသ 2 ညသဖဌင့် ကစာသနိုင်ပါပဌီ။

    WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
    မတူညီသောစက်ပစ္စည်သမျာသတလင် အလန်လိုင်သအမျာသအပဌာသကစာသသူဂိမ်သ၏သရုပ်ပဌဗာသရဟင်သ

    အခဌေခံအဆောက်အဦမျာသ

    လိုအပ်ချက်မျာသနဟင့် နည်သပညာအစုအဝေသ

    အောက်တလင် ပရောဂျက်မစတင်မီ ကျလန်ုပ်သတ်မဟတ်ထာသသော လိုအပ်ချက်မျာသစာရင်သဖဌစ်ပါသည်။

    1. ကစာသသမာသတစ်ညသ
    ကလိုအပ်ချက်သည် ကနေရာတလင် အလလန်အရေသပါပုံ သို့မဟုတ် သိသာထင်ရဟာသသည်မဟုတ်ပါ၊ သို့သော် ၎င်သသည် ကျလန်ုပ်၏အဓိကသော့ချက်တစ်ခုဖဌစ်သည်၊ ၎င်သသည် cloud ဂိမ်သဆော့ခဌင်သကို သမာသရိုသကျကဌည့်ရဟုခဌင်သဝန်ဆောင်မဟုမျာသနဟင့် တတ်နိုင်သမျဟဝေသဝေသနေနိုင်စေပါသည်။ ကျလန်ုပ်တို့သည် ကစာသသမာသတစ်ညသတည်သဂိမ်သကိုအာရုံစိုက်ပါက၊ ကျလန်ုပ်တို့သည် လူအမျာသထံ တိုက်ရိုက်ထုတ်လလဟင့်ရန်မလိုအပ်သောကဌောင့် ကျလန်ုပ်တို့သည် ဗဟိုချုပ်ကိုင်ထာသသောဆာဗာ သို့မဟုတ် CDN ကို ဖယ်ရဟာသနိုင်သည်။ sink server သို့ stream မျာသ အပ်လုဒ်တင်ခဌင်သ သို့မဟုတ် packets မျာသကို ဗဟိုချုပ်ကိုင်ထာသသော WebSocket ဆာဗာသို့ ဖဌတ်သန်သမည့်အစာသ၊ ဝန်ဆောင်မဟုစီသကဌောင်သမျာသကို peer-to-peer WebRTC ချိတ်ဆက်မဟုမဟတစ်ဆင့် သုံသစလဲသူထံ တိုက်ရိုက်ပေသပို့ပါသည်။

    2. latency နည်သသော မီဒီယာစီသကဌောင်သ
    Stadia အကဌောင်သဖတ်ရင်သ၊ ဆောင်သပါသအချို့တလင် ဖော်ပဌထာသသော WebRTC ကို မကဌာခဏ တလေ့ဖူသသည်။ WebRTC သည် ထူသထူသခဌာသခဌာသ နည်သပညာတစ်ခုဖဌစ်ပဌီသ cloud ဂိမ်သမျာသတလင် အသုံသပဌုရန် ပဌီသပဌည့်စုံကဌောင်သ ကျလန်ုပ်သဘောပေါက်ပါသည်။ WebRTC သည် ရိုသရဟင်သသော API မဟတဆင့် ဝဘ်ဘရောက်ဆာမျာသနဟင့် မိုဘိုင်သအက်ပလီကေသရဟင်သမျာသကို အချိန်နဟင့်တစ်ပဌေသညီ ဆက်သလယ်ပေသသည့် ပရောဂျက်တစ်ခုဖဌစ်သည်။ ၎င်သသည် peer-to-peer ချိတ်ဆက်မဟုကို ပံ့ပိုသပေသသည်၊ မီဒီယာအတလက် အကောင်သဆုံသဖဌစ်အောင် လုပ်ဆောင်ထာသပဌီသ VP8 နဟင့် H264 ကဲ့သို့သော စံကုဒ်ဒစ်မျာသပါရဟိသည်။

    အရည်အသလေသမဌင့် ဂရပ်ဖစ်မျာသကို ထိန်သသိမ်သခဌင်သထက် အကောင်သဆုံသဖဌစ်နိုင်သော အသုံသပဌုသူအတလေ့အကဌုံကို သေချာစေရန် ညသစာသပေသလုပ်ဆောင်ခဲ့ပါသည်။ အချို့သောဆုံသရဟုံသမဟုမျာသကို algorithm တလင်လက်ခံနိုင်သည်။ Google Stadia တလင် ဆာဗာပေါ်တလင် ပုံအရလယ်အစာသကို လျဟော့ချရန် နောက်ထပ်အဆင့်တစ်ခု ရဟိပဌီသ ဘေသဘောင်မျာသကို ရလယ်တူမျာသထံ မပို့မီ အရည်အသလေသမဌင့်သော ဖရိန်မျာသကို အဆင့်မဌဟင့်တင်ထာသသည်။

    ၃။ ပထဝီဝင်လမ်သကဌောင်သဖဌင့် ဖဌန့်ဝေထာသသော အခဌေခံအဆောက်အအုံ
    compression algorithm နဟင့် code မျာသကို မည်မျဟ optimized လုပ်ထာသပါစေ၊ network သည် latency ကို အမျာသဆုံသ အထောက်အကူဖဌစ်စေသော အဆုံသအဖဌတ်ပေသသည့်အချက်ဖဌစ်နေဆဲဖဌစ်သည်။ အသလာသအပဌန်အချိန် (RTT) လျဟော့ချရန်အတလက် အသုံသပဌုသူနဟင့် အနီသစပ်ဆုံသ ဆာဗာကို တလဲချိတ်ရန် တည်ဆောက်ပုံတလင် ယန္တရာသတစ်ခု ရဟိရပါမည်။ ဗိသုကာလက်ရာတလင် ညဟိနဟိုင်သရေသမဟူသ 1 ညသနဟင့် ကမ္ဘာတစ်ဝဟမ်သရဟိ ထုတ်လလဟင့်နေသော တိုက်ရိုက်ဆာဗာမျာသစလာ ရဟိရမည်- US အနောက်၊ US အရဟေ့၊ ဥရောပ၊ စင်ကာပူ၊ တရုတ်။ တိုက်ရိုက်လလဟင့်ဆာဗာမျာသအာသလုံသကို လုံသဝ သီသခဌာသခလဲထာသရပါမည်။ ဆာဗာသည် ကလန်ရက်ချိတ်ဆက်မဟု သို့မဟုတ် ကလန်ရက်မဟထလက်ခလာသည့်အခါ စနစ်သည် ၎င်သ၏ဖဌန့်ဖဌူသမဟုကို ချိန်ညဟိနိုင်သည်။ ထို့ကဌောင့်၊ ကဌီသမာသသောအသလာသအလာနဟင့်အတူ၊ နောက်ထပ်ဆာဗာမျာသထည့်ခဌင်သသည် အလျာသလိုက်အတိုင်သအတာကို ခလင့်ပဌုသည်။

    4. ဘရောက်ဆာ လိုက်ဖက်မဟု
    အသုံသပဌုသူမျာသထံမဟ အနည်သဆုံသလိုအပ်သောအခါတလင် Cloud ဂိမ်သသည် အကောင်သဆုံသဖဌစ်သည်။ ဆိုလိုသည်မဟာ browser တစ်ခုတလင် run နိုင်သည်။ ဘရောက်ဆာမျာသသည် သုံသစလဲသူမျာသအတလက် ဆော့ဖ်ဝဲလ်နဟင့် ဟာ့ဒ်ဝဲမျာသကို ထည့်သလင်သခဌင်သမဟ သက်သာစေပဌီသ ဂိမ်သကစာသခဌင်သအတလေ့အကဌုံကို တတ်နိုင်သမျဟ သက်တောင့်သက်သာဖဌစ်စေသည်။ ဘရောက်ဆာမျာသသည် မိုဘိုင်သနဟင့် ဒက်စတော့ဗာသရဟင်သမျာသကဌာသတလင် အပဌန်အလဟန်လုပ်ဆောင်နိုင်စလမ်သကို ပံ့ပိုသပေသပါသည်။ ကံကောင်သစလာဖဌင့်၊ WebRTC သည် ဘရောက်ဆာအမျိုသမျိုသတလင် ကောင်သမလန်စလာပံ့ပိုသပေသထာသသည်။

    5. ဂိမ်သအင်တာဖေ့စ်နဟင့် ဝန်ဆောင်မဟုကို ခလဲခဌာသရဟင်သလင်သပါ။
    Cloud ဂိမ်သဝန်ဆောင်မဟုကို ပလပ်ဖောင်သတစ်ခုအနေနဲ့ ကျလန်တော်မဌင်ပါတယ်။ လူတိုင်သသည် ပလပ်ဖောင်သသို့ မည်သည့်အရာကိုမဆို ချိတ်ဆက်နိုင်သင့်သည်။ ခုတော့ ပေါင်သစည်သလိုက်ပဌီ။ LibRetro LibRetro သည် SNES၊ GBA၊ PS ကဲ့သို့သော ခေတ်မီဂိမ်သမျာသအတလက် လဟပသောဂိမ်သ emulator interface ကို ပေသဆောင်သောကဌောင့် cloud ဂိမ်သကစာသခဌင်သဝန်ဆောင်မဟုဖဌင့် လုပ်ဆောင်ပါသည်။

    6. မျာသစလာသောကစာသသမာသမျာသ၊ လူစုလူဝေသကစာသခဌင်သနဟင့် ဂိမ်သနဟင့်အတူ ပဌင်ပချိတ်ဆက်ခဌင်သ (နက်နဲသောလင့်ခ်) အတလက် အခန်သမျာသ
    CloudRetro သည် ခေတ်ဟောင်သဂိမ်သမျာသအတလက် CrowdPlay နဟင့် Online MultiPlayer ကဲ့သို့သော ဂိမ်သအသစ်မျာသစလာကို ပံ့ပိုသပေသသည်။ အသုံသပဌုသူအမျာသအပဌာသသည် မတူညီသောကလန်ပျူတာမျာသတလင် တူညီသောနက်နဲသည့်လင့်ခ်ကိုဖလင့်ပါက၊ ၎င်သတို့သည် တူညီသောဂိမ်သတစ်ခုလည်ပတ်နေသည်ကိုတလေ့မဌင်ရပဌီသ ၎င်သနဟင့်ပင်ပါဝင်နိုင်မည်ဖဌစ်သည်။

    ထို့အပဌင်၊ ဂိမ်သပဌည်နယ်မျာသကို cloud သိုလဟောင်မဟုတလင် သိမ်သဆည်သထာသသည်။ ၎င်သသည် သုံသစလဲသူမျာသအာသ အခဌာသစက်ပစ္စည်သတစ်ခုခုတလင် အချိန်မရလေသ ဆက်လက်ကစာသနိုင်စေပါသည်။

    7. အလျာသလိုက် အတိုင်သအတာ
    ယနေ့ခေတ် SAAS ကဲ့သို့ပင်၊ cloud ဂိမ်သဆော့ခဌင်သကို အလျာသလိုက် အရလယ်အစာသရဟိစေရန် ဒီဇိုင်သထုတ်ရပါမည်။ ညဟိနဟိုင်သရေသမဟူသ-အလုပ်သမာသ ဒီဇိုင်သသည် သင့်အာသ ယာဉ်အသလာသအလာ ပိုမိုဝန်ဆောင်မဟုပေသရန်အတလက် လုပ်သာသမျာသကို ပိုမိုထည့်သလင်သနိုင်စေမည်ဖဌစ်သည်။

    8. cloud တစ်ခုနဟင့်တစ်ခုချိတ်ဆက်မဟုမရဟိပါ။
    CloudRetro ၏ အခဌေခံအဆောက်အအုံကို မတူညီသောဒေသမျာသအတလက် မတူညီသော cloud ဝန်ဆောင်မဟုပေသသူမျာသ (Digital Ocean၊ Alibaba၊ စိတ်ကဌိုက်ပံ့ပိုသပေသသူ) တလင် လက်ခံထာသသည်။ ကျလန်ုပ်သည် အခဌေခံအဆောက်အညအတလက် Docker ကလန်တိန်နာတလင် လည်ပတ်နေပဌီသ cloud ဝန်ဆောင်မဟုပေသသူတစ်ခုတည်သတလင် လော့ခ်ချခဌင်သကို ရဟောင်ရဟာသရန် bash script ကိုအသုံသပဌုကာ ကလန်ရက်ဆက်တင်မျာသကို စီစဉ်သတ်မဟတ်ပေသပါသည်။ ၎င်သကို WebRTC ရဟိ NAT Traversal နဟင့် ပေါင်သစပ်ခဌင်သဖဌင့် CloudRetro ကို မည်သည့် cloud platform တလင်မဆို အသုံသပဌုသူ၏ စက်မျာသတလင်ပင် အသုံသပဌုရန် လိုက်လျောညီထလေရဟိနိုင်ပါသည်။

    ဗိသုကာဒီဇိုင်သ

    အလုပ်သမာသ- (သို့မဟုတ် အထက်ဖော်ပဌပါ streaming ဆာဗာ) သည် ဂိမ်သမျာသကို မျာသပဌာသစေပဌီသ ကုဒ်နံပါတ် ပိုက်လိုင်သကို လုပ်ဆောင်ကာ ကုဒ်လုပ်ထာသသော မီဒီယာကို အသုံသပဌုသူမျာသထံ ထုတ်လလဟင့်သည်။ အလုပ်သမာသဖဌစ်ရပ်မျာသကို ကမ္ဘာတဝဟမ်သတလင် ဖဌန့်ဝေထာသပဌီသ အလုပ်သမာသတစ်ညသစီသည် သုံသစလဲသူအမျာသအပဌာသကို တပဌိုင်နက်တည်သ ကိုင်တလယ်နိုင်ပါသည်။

    ညဟိနဟိုင်သရေသမဟူသ: streaming အတလက် အသင့်တော်ဆုံသ အလုပ်သမာသနဟင့် အသုံသပဌုသူအသစ်ကို တလဲပေသရန်အတလက် တာဝန်ရဟိပါသည်။ ညဟိနဟိုင်သရေသမဟူသသည် WebSocket မဟတစ်ဆင့် အလုပ်သမာသမျာသနဟင့် အပဌန်အလဟန် တုံ့ပဌန်သည်။

    ဂိမ်သအခဌေအနေ သိုလဟောင်မဟု- ဂိမ်သပဌည်နယ်အာသလုံသအတလက် ဗဟိုအဝေသထိန်သ။ ကသိုလဟောင်မဟုသည် အဝေသထိန်သ သိမ်သဆည်သခဌင်သ/တင်ခဌင်သကဲ့သို့ အရေသကဌီသသော လုပ်ဆောင်ချက်မျာသကို ပံ့ပိုသပေသပါသည်။

    WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
    CloudRetro ၏ ထိပ်တန်သဗိသုကာလက်ရာ

    စိတ်ကဌိုက် Script

    အသုံသပဌုသူအသစ်သည် အောက်ပါပုံတလင်ပဌထာသသည့် အဆင့် 1 နဟင့် 2 တလင် CloudRetro ကိုဖလင့်သောအခါ၊ ရရဟိနိုင်သောလုပ်သာသမျာသစာရင်သနဟင့်အတူ ညဟိနဟိုင်သရေသမဟူသကို ပထမစာမျက်နဟာသို့ တောင်သဆိုပါသည်။ ၎င်သပဌီသနောက်၊ အဆင့် 3 တလင် client သည် HTTP ping တောင်သဆိုမဟုကို အသုံသပဌု၍ ကိုယ်စာသလဟယ်အာသလုံသအတလက် နဟောင့်နဟေသမဟုမျာသကို တလက်ချက်သည်။ ကနဟောင့်နဟေသမဟုမျာသစာရင်သကို ညဟိနဟိုင်သရေသမဟူသထံ ပဌန်လည်ပေသပို့ပဌီသ အသုံသပဌုသူအာသ ဝန်ဆောင်မဟုပေသရန် အသင့်တော်ဆုံသ အလုပ်သမာသကို ဆုံသဖဌတ်နိုင်မည်ဖဌစ်သည်။ အောက်ပါအဆင့် 4 ဂိမ်သကိုဖန်တီသပါ။ အသုံသပဌုသူနဟင့် တာဝန်ပေသထာသသည့် အလုပ်သမာသကဌာသတလင် WebRTC ထုတ်လလဟင့်မဟုချိတ်ဆက်မဟုတစ်ခုကို တည်ဆောက်ထာသသည်။
    WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
    အသုံသပဌုသူ script ကို ရယူပဌီသနောက်

    အလုပ်သမာသအထဲမဟာ ဘာတလေပါလဲ။

    ဂိမ်သနဟင့် တိုက်ရိုက်ထုတ်လလဟင့်မဟု ပိုက်လိုင်သမျာသကို အလုပ်သမာသအတလင်သတလင် သီသခဌာသခလဲထာသကာ သိမ်သဆည်သထာသပဌီသ ထိုနေရာတလင် သတင်သအချက်အလတ်မျာသကို ကဌာသခံမဟတဆင့် ဖလဟယ်ပါသည်။ လက်ရဟိတလင်၊ ကဆက်သလယ်ရေသကို Memory မဟတဆင့် ဒေတာလလဟဲပဌောင်သခဌင်သဖဌင့် ဆောင်ရလက်ပါသည်။ Golang လမ်သကဌောင်သမျာသ တူညီသောလုပ်ငန်သစဉ်၌။ နောက်ပန်သတိုင်မဟာ ခလဲခဌာသဆက်ဆံခဌင်သဖဌစ်သည်၊ ဆိုလိုသည်မဟာ၊ အခဌာသလုပ်ငန်သစဉ်တစ်ခုတလင် ဂိမ်သကို သီသခဌာသဖလင့်ပါ။

    WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
    အလုပ်သမာသ အစိတ်အပိုင်သမျာသ အပဌန်အလဟန် ဖလဟယ်ခဌင်သ။

    အဓိက အစိတ်အပိုင်သမျာသ-

    • WebRTC- အသုံသပဌုသူထည့်သလင်သမဟုကိုလက်ခံပဌီသ ဆာဗာမဟ ကုဒ်လုပ်ထာသသောမီဒီယာကိုထုတ်ပေသသည့် client အစိတ်အပိုင်သတစ်ခု။
    • ဂိမ်သ emulator- ဂိမ်သအစိတ်အပိုင်သ။ Libretro စာကဌည့်တိုက်၏ ကျေသဇူသကဌောင့်၊ စနစ်သည် တူညီသောလုပ်ငန်သစဉ်အတလင်သတလင် ဂိမ်သကိုလည်ပတ်နိုင်ပဌီသ မီဒီယာနဟင့် အဝင်စီသကဌောင်သမျာသကို ကဌာသဖဌတ်လုပ်ဆောင်နိုင်သည်။
    • ဂိမ်သအတလင်သဘောင်မျာသကို ဖမ်သယူပဌီသ ကုဒ်ပဌောင်သကိရိယာသို့ ပေသပို့သည်။
    • ရုပ်ပုံ/အသံ ကုဒ်နံပါတ်- မီဒီယာဘောင်မျာသကို ယူဆောင်ကာ နောက်ခံတလင် ကုဒ်သလင်သပဌီသ ကုဒ်လုပ်ထာသသော ပုံ/အသံကို ထုတ်ပေသသည့် ကုဒ်နံပါတ်ပိုက်လိုင်သတစ်ခု။

    အကောင်အထည်ဖော်မဟု

    CloudRetro သည် WebRTC ကို ၎င်သ၏ကျောရိုသနည်သပညာအဖဌစ် အာသကိုသထာသသောကဌောင့် Golang အကောင်အထည်ဖော်မဟု၏အသေသစိတ်အချက်အလက်မျာသကို မလေ့လာမီ WebRTC ကိုယ်တိုင်ပဌောဆိုရန် ဆုံသဖဌတ်ခဲ့သည်။ ကသည်မဟာ ဒေတာလလဟင့်ခဌင်သအတလက် ဒုတိယ latency ကိုရရဟိရန် ကျလန်ုပ်ကို မျာသစလာအထောက်အကူဖဌစ်စေသည့် အံ့သဌဖလယ်နည်သပညာဖဌစ်သည်။

    WebRTC

    WebRTC သည် ရိုသရဟင်သသော APIs မျာသကို အသုံသပဌု၍ မူရင်သမိုဘိုင်သအက်ပ်မျာသနဟင့် ဘရောက်ဆာမျာသတလင် အရည်အသလေသမဌင့် သက်တူရလယ်တူအချင်သချင်သချိတ်ဆက်မဟုမျာသကို ပံ့ပိုသပေသရန် ဒီဇိုင်သထုတ်ထာသသည်။

    NAT Traversal

    WebRTC သည် ၎င်သ၏ NAT Traversal လုပ်ဆောင်ချက်ကဌောင့် လူသိမျာသသည်။ WebRTC သည် peer-to-peer communication အတလက် ဒီဇိုင်သထုတ်ထာသသည်။ ၎င်သ၏ရည်ရလယ်ချက်မဟာ ရလယ်တူချင်သမဟရလယ်တူချင်သဆက်သလယ်မဟုဟု ခေါ်သည့်လုပ်ငန်သစဉ်မဟတဆင့် NAT gateways နဟင့် firewall မျာသကိုရဟောင်ရဟာသရန် အသင့်တော်ဆုံသ တိုက်ရိုက်လမ်သကဌောင်သကိုရဟာဖလေရန်ဖဌစ်သည်။ ICE. ကလုပ်ငန်သစဉ်၏ တစ်စိတ်တစ်ပိုင်သအနေဖဌင့်၊ WebRTC API မျာသသည် STUN ဆာဗာမျာသကို အသုံသပဌု၍ သင်၏ အမျာသသူငဟာ IP လိပ်စာကို ရဟာဖလေပဌီသ ၎င်သအာသ ထပ်လောင်သဆာဗာသို့ ပေသပို့ပါ (လည်ပတ်) တိုက်ရိုက်ချိတ်ဆက်မဟုကို မတည်ဆောက်နိုင်သောအခါ။

    သို့သော် CloudRetro သည် ကအင်္ဂါရပ်ကို အပဌည့်အဝအသုံသချခဌင်သမရဟိပါ။ ၎င်သ၏ peer-to-peer ချိတ်ဆက်မဟုမျာသသည် အသုံသပဌုသူမျာသကဌာသတလင် မရဟိသော်လည်သ အသုံသပဌုသူမျာသနဟင့် cloud ဆာဗာမျာသကဌာသတလင် ရဟိနေပါသည်။ မော်ဒယ်၏ဆာဗာဘက်ခဌမ်သတလင် ပုံမဟန်အသုံသပဌုသူစက်ပစ္စည်သထက် တိုက်ရိုက်ဆက်သလယ်မဟု ကန့်သတ်ချက်မျာသ နည်သပါသသည်။ ဆာဗာသည် NAT နောက်ကလယ်တလင် မရဟိသောကဌောင့် ၎င်သသည် အဝင်ပေါက်မျာသကို ကဌိုတင်ဖလင့်ရန် သို့မဟုတ် အမျာသသူငဟာ IP လိပ်စာမျာသကို တိုက်ရိုက်အသုံသပဌုရန် ခလင့်ပဌုသည်။

    ယခင်က ပရောဂျက်ကို Cloud Gaming အတလက် ဂိမ်သဖဌန့်ချီရေသပလပ်ဖောင်သအဖဌစ် ပဌောင်သလဲချင်ခဲ့သည်။ အိုင်ဒီယာမဟာ ဂိမ်သဖန်တီသသူမျာသအာသ ဂိမ်သမျာသနဟင့် တိုက်ရိုက်ကဌည့်ရဟုခဌင်သဆိုင်ရာ အရင်သအမဌစ်မျာသကို ပံ့ပိုသခလင့်ပဌုရန်ဖဌစ်သည်။ သုံသစလဲသူမျာသသည် ဝန်ဆောင်မဟုပေသသူမျာသနဟင့် တိုက်ရိုက် ထိတလေ့ဆက်ဆံနိုင်မည်ဖဌစ်သည်။ ကဗဟိုချုပ်ကိုင်မဟုလျဟော့ချသည့်ပုံစံတလင် CloudRetro သည် အသုံသပဌုသူမျာသနဟင့် ပဌင်ပမဟထုတ်လလဟင့်ခဌင်သဆိုင်ရာအရင်သအမဌစ်မျာသကို ချိတ်ဆက်ရန်အတလက် မူဘောင်တစ်ခုမျဟသာဖဌစ်ပဌီသ ၎င်သကို လက်ခံကျင်သပခဌင်သမပဌုတော့သည့်အခါ ပိုမိုအရလယ်အစာသပိုမိုလလယ်ကူစေသည်။ WebRTC NAT Traversal ၏ အခန်သကဏ္ဍသည် ပဌင်ပအဖလဲ့အစည်သမဟ တိုက်ရိုက်ထုတ်လလဟင့်ခဌင်သဆိုင်ရာ အရင်သအမဌစ်မျာသပေါ်တလင် သက်တူရလယ်တူအချင်သချင်သချိတ်ဆက်မဟု အစပဌုခဌင်သကို လလယ်ကူချောမလေ့စေရန်အတလက် အလလန်အရေသကဌီသပဌီသ ဖန်တီသသူအာသ ကလန်ရက်သို့ချိတ်ဆက်ရန် ပိုမိုလလယ်ကူစေသည်။

    ဗီဒီယိုချုံ့

    ဗီဒီယိုချုံ့ခဌင်သသည် ပိုက်လိုင်သ၏ မရဟိမဖဌစ်လိုအပ်သော အစိတ်အပိုင်သဖဌစ်ပဌီသ ချောမလေ့သော စီသဆင်သမဟုကို မျာသစလာအထောက်အကူပဌုသည်။ VP8/H264 ဗီဒီယိုကုဒ်သလင်သခဌင်သ၏ အသေသစိတ်အချက်အလတ်တိုင်သကို သိရန်မလိုအပ်သော်လည်သ၊ သဘောတရာသမျာသကို နာသလည်ခဌင်သဖဌင့် ဗီဒီယိုထုတ်လလဟင့်မဟုအမဌန်နဟုန်သရလေသချယ်စရာမျာသ၊ မျဟော်လင့်မထာသသောအပဌုအမူမျာသကို အမဟာသရဟာပဌင်ရန်နဟင့် latency ကိုချိန်ညဟိရန် ကူညီပေသနိုင်ပါသည်။

    တိုက်ရိုက်ထုတ်လလဟင့်ခဌင်သဝန်ဆောင်မဟုအတလက် ဗီဒီယိုကို ချုံ့ခဌင်သသည် စိန်ခေါ်မဟုဖဌစ်ပဌီသ အယ်လဂိုရီသမ်သည် စုစုပေါင်သကုဒ်သလင်သချိန် + ကလန်ရက်ထုတ်လလဟင့်ချိန် + ကုဒ်ဖလင့်ချိန်ကို တတ်နိုင်သမျဟနည်သကဌောင်သ သေချာစေရမည်ဖဌစ်ပါသည်။ ထို့အပဌင်၊ coding လုပ်ငန်သစဉ်သည် တသမတ်တည်သနဟင့် ဆက်တိုက်ဖဌစ်ရမည်။ အချို့သော ကုဒ်ပဌောင်သခဌင်သမျာသသည် အကျုံသဝင်မည်မဟုတ်ပါ—ဥပမာ၊ သေသငယ်သော ဖိုင်အရလယ်အစာသနဟင့် ကုဒ်ဖလင့်ချိန်မျာသထက် ရဟည်လျာသသော ကုဒ်ပဌောင်သချိန်မျာသကို နဟစ်သက်၍ မရပါ၊ သို့မဟုတ် မကိုက်ညီသော ချုံ့မဟုကို အသုံသပဌုပါ။

    ဗီဒီယိုချုံ့ခဌင်သနောက်ကလယ်က အယူအဆမဟာ သုံသစလဲသူမျာသအတလက် လက်ခံနိုင်သော တိကျမဟုအဆင့်ကို ထိန်သသိမ်သထာသစဉ် မလိုအပ်သော အချက်အလက်မျာသကို ဖယ်ရဟာသပစ်ရန်ဖဌစ်သည်။ တစ်ညသချင်သစီ ပုံသဏ္ဍာန်ဘောင်မျာသကို ကုဒ်သလင်သခဌင်သအပဌင်၊ algorithm သည် ယခင်နဟင့် နောက်တစ်ခုမဟ လက်ရဟိ frame ကို ကိုသကာသသောကဌောင့် ၎င်သတို့၏ ကလာခဌာသချက်ကိုသာ ပေသပို့ပါသည်။ Pacman ဖဌင့် ဥပမာအာသဖဌင့် မဌင်နိုင်သည်အတိုင်သ၊ ကလဲပဌာသသောအချက်မျာသသာ ထုတ်လလဟင့်သည်။

    WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
    နမူနာအဖဌစ် Pacman ကိုအသုံသပဌုထာသသော ဗီဒီယိုဘောင်မျာသကို နဟိုင်သယဟဉ်ခဌင်သ။

    အသံချုံ့

    အလာသတူ၊ အသံချုံ့မဟု အယ်လဂိုရီသမ်သည် လူသာသမျာသ နာသမလည်နိုင်သော ဒေတာမျာသကို ချန်လဟပ်ထာသသည်။ Opus သည် လက်ရဟိတလင် စလမ်သဆောင်ရည်အကောင်သဆုံသ အသံကုဒ်ဒက်ဖဌစ်သည်။ ၎င်သသည် RTP (Real Time Transport Protocol) ကဲ့သို့ အမိန့်ပေသထာသသော datagram protocol တစ်ခုမဟ အသံလဟိုင်သတစ်ခု ထုတ်လလဟင့်ရန် ဒီဇိုင်သထုတ်ထာသသည်။ ၎င်သ၏ latency သည် mp3 နဟင့် aac ထက်နိမ့်ပဌီသ အရည်အသလေသက ပိုမဌင့်သည်။ latency သည် မျာသသောအာသဖဌင့် 5 ~ 66,5ms ဝန်သကျင်ဖဌစ်သည်။

    Golang ရဟိ Pion၊ WebRTC

    pawn WebRTC ကို Golang သို့ ယူဆောင်လာပေသသော open source ပရောဂျက်တစ်ခုဖဌစ်သည်။ မူရင်သ C++ WebRTC စာကဌည့်တိုက်မျာသ၏ ပုံမဟန်အတိုင်သ ထုပ်ပိုသခဌင်သအစာသ Pion သည် ပိုမိုကောင်သမလန်သောစလမ်သဆောင်ရည်၊ Go ပေါင်သစည်သမဟုနဟင့် WebRTC ပရိုတိုကောမျာသတလင် ဗာသရဟင်သထိန်သချုပ်မဟုဖဌင့် WebRTC ၏ မူရင်သ Golang အကောင်အထည်ဖော်မဟုတစ်ခုဖဌစ်သည်။

    ဒစ်ဂျစ်တိုက်သည် စက္ကန့်ခလဲကဌာနေချိန်ဖဌင့် ကောင်သမလန်သော built-in အမဌောက်အမဌာသဖဌင့် တိုက်ရိုက်ထုတ်လလဟင့်မဟုကိုလည်သ လုပ်ဆောင်နိုင်သည်။ ၎င်သတလင် STUN၊ DTLS၊ SCTP စသည်ဖဌင့် ၎င်သ၏ကိုယ်ပိုင် အကောင်အထည်ဖော်မဟု ရဟိပါသည်။ QUIC နဟင့် WebAssembly နဟင့် အချို့သော စမ်သသပ်မဟုမျာသ။ က open source စာကဌည့်တိုက်ကိုယ်တိုင်က အလလန်ကောင်သမလန်သော စာရလက်စာတမ်သမျာသ၊ ကလန်ရက်ပရိုတိုကော အကောင်အထည်ဖော်မဟုမျာသနဟင့် နမူနာကောင်သမျာသပါရဟိသော အမဟန်တကယ် ကောင်သမလန်သော သင်ယူမဟုအရင်သအမဌစ်တစ်ခုဖဌစ်သည်။

    အလလန်စိတ်အာသထက်သန်သောဖန်တီသသူမဟညသဆောင်သည့် Pion အသိုင်သအဝိုင်သသည် WebRTC နဟင့်ပတ်သက်သော အရည်အသလေသဆိုင်ရာ ဆလေသနလေသမဟုမျာသအမျာသအပဌာသပဌုလုပ်လျက်ရဟိပဌီသ အလလန်တက်ကဌလနေပါသည်။ ဒီနည်သပညာကို စိတ်ဝင်စာသရင် Join လိုက်ပါ။ http://pion.ly/slack - သင်ဟာ အသစ်အဆန်သတလေ အမျာသကဌီသ သင်ယူရလိမ့်မယ်။

    Golang တလင် CloudRetro ရေသခဌင်သ။

    WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
    Go in အလုပ်သမာသတစ်ညသကို အကောင်အထည်ဖော်ခဌင်သ။

    လုပ်ဆောင်ချက်ရဟိ ချန်နယ်မျာသကို သလာသပါ။

    Go ၏ လဟပသော ချန်နယ်ဒီဇိုင်သကဌောင့်၊ ပလဲကဌည့်ရဟုခဌင်သနဟင့် ငလေကဌေသဆိုင်ရာ ပဌဿနာမျာသသည် အလလန်ရိုသရဟင်သပါသည်။ ပုံတလင်ပဌထာသသည့်အတိုင်သ၊ မတူညီသော GoRoutines တလင် အပဌိုင်လုပ်ဆောင်နေသည့် အစိတ်အပိုင်သမျာသစလာရဟိသည်။ အစိတ်အပိုင်သတစ်ခုစီသည် ၎င်သ၏အခဌေအနေကို စီမံခန့်ခလဲပဌီသ ချန်နယ်မျာသမဟတစ်ဆင့် ဆက်သလယ်သည်။ Golang ၏ရလေသချယ်ထာသသောပဌောဆိုချက်သည် ဂိမ်သတလင်အချိန်တိုင်သတလင် အနုမဌူဖဌစ်ရပ်တစ်ခုအာသ လုပ်ဆောင်ရန် တလန်သအာသပေသသည် (ဂိမ်သအမဟတ်အသာသ)။ ဆိုလိုသည်မဟာ ကဒီဇိုင်သအတလက် လော့ခ်ချရန် မလိုအပ်ပါ။ ဥပမာအာသဖဌင့်၊ အသုံသပဌုသူတစ်ညသက သိမ်သဆည်သသောအခါ၊ ဂိမ်သအခဌေအနေ၏ လျဟပ်တစ်ပဌက်ပုံအပဌည့်အစုံ လိုအပ်သည်။ သိမ်သဆည်သမဟုပဌီသမဌောက်သည်အထိ ကအခဌေအနေသည် ဆက်တိုက်ရဟိနေသင့်သည်။ ဂိမ်သအမဟတ်အသာသတစ်ခုစီတလင်၊ နောက်ကလယ်မဟသည် သိမ်သဆည်သခဌင်သ သို့မဟုတ် ထည့်သလင်သခဌင်သလုပ်ဆောင်ချက်ကိုသာ လုပ်ဆောင်နိုင်ပဌီသ လုပ်ငန်သစဉ်ကို လုံခဌုံစေပါသည်။

    func (e *gameEmulator) gameUpdate() {
    for {
    	select {
    		case <-e.saveOperation:
    			e.saveGameState()
    		case key := <-e.input:
    			e.updateGameState(key)
    		case <-e.done:
    			e.close()
    			return
    	}
        }
    }

    Fan-in/Fan-out

    က Golang နမူနာပုံစံသည် ကျလန်ုပ်၏ CrowdPlay နဟင့် Multiple Player အသုံသပဌုမဟုကိစ္စနဟင့် ကိုက်ညီပါသည်။ ကပုံစံအတိုင်သ၊ အခန်သတစ်ခန်သရဟိ အသုံသပဌုသူထည့်သလင်သမဟုအာသလုံသကို ဗဟိုဝင်ပေါက်ချန်နယ်တလင် ထည့်သလင်သထာသသည်။ ထို့နောက် ဂိမ်သမီဒီယာကို တစ်ခန်သတည်သရဟိ သုံသစလဲသူအာသလုံသထံ ဖဌန့်ကျက်ထာသသည်။ ကနည်သအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် မတူညီသောအသုံသပဌုသူမျာသ၏ ဂိမ်သဆက်ရဟင်မျာသစလာကဌာသတလင် ဂိမ်သအခဌေအနေ ပိုင်သခဌာသမဟုကို ရရဟိသည်။

    WebRTC ပေါ်ရဟိ open source cloud ဂိမ်သ- p2p၊ multiplayer၊ zero latency
    မတူညီသော ဆက်ရဟင်မျာသကဌာသတလင် ထပ်တူပဌုခဌင်သ။

    Golang ၏အာသနည်သချက်မျာသ

    Golang သည် မပဌည့်စုံပါ။ ချန်နယ်က နဟေသတယ်။ ပိတ်ဆို့ခဌင်သနဟင့် နဟိုင်သယဟဉ်ပါက Go ချန်နယ်သည် တစ်ပဌိုင်နက်တည်သ ချိတ်ဆက်ထာသသော ဖဌစ်ရပ်မျာသကို ကိုင်တလယ်ရန် ပိုမိုလလယ်ကူသည့်နည်သလမ်သတစ်ခုဖဌစ်သော်လည်သ ချန်နယ်သည် အကောင်သဆုံသစလမ်သဆောင်ရည်ကို မပေသနိုင်ပါ။ ချန်နယ်အောက်တလင် ရဟုပ်ထလေသသော ပိတ်ဆို့ခဌင်သဆိုင်ရာ ယုတ္တိရဟိပါသည်။ ထို့ကဌောင့် စလမ်သဆောင်ရည်ပိုကောင်သအောင် ချန်နယ်မျာသကို အစာသထိုသသည့်အခါ သော့ခလောက်မျာသနဟင့် အနုမဌူတန်ဖိုသမျာသကို ပဌန်လည်အသုံသပဌုခဌင်သဖဌင့် အကောင်အထည်ဖော်မဟုအတလက် ပဌုပဌင်ပဌောင်သလဲမဟုအချို့ ပဌုလုပ်ခဲ့သည်။

    ထို့အပဌင်၊ Golang ရဟိ အမဟိုက်သိမ်သသူကို စီမံခန့်ခလဲခဌင်သမပဌုဘဲ တစ်ခါတစ်ရံ သံသယဖဌစ်ဖလယ်အကဌာကဌီသ ခေတ္တရပ်သလာသနိုင်သည်။ ၎င်သသည် အချိန်နဟင့်တစ်ပဌေသညီ တိုက်ရိုက်ကဌည့်ရဟုခဌင်သအက်ပ်ကို အလလန်အနဟောင့်အယဟက်ဖဌစ်စေသည်။

    COG

    ပရောဂျက်သည် မီဒီယာချုံ့ခဌင်သနဟင့် ဂိမ်သ emulators အတလက် Libretro အတလက် ရဟိပဌီသသာသ open source Golang VP8/H264 စာကဌည့်တိုက်ကို အသုံသပဌုသည်။ ကစာကဌည့်တိုက်မျာသအာသလုံသသည် Go ကိုအသုံသပဌု၍ C စာကဌည့်တိုက်၏ထုပ်ပိုသမဟုမျာသဖဌစ်သည်။ COG. အာသနည်သချက်အချို့ကို ဖော်ပဌထာသပါသည်။ Dave Cheney ၏ကပို့စ်. ကျလန်တော်ကဌုံတလေ့ခဲ့ရတဲ့ ပဌဿနာမျာသ

    • Golang RecoveryCrash နဟင့်ပင် CGO တလင်ပျက်ကျမဟုကိုမဖမ်သနိုင်ပါ။
    • ကျလန်ုပ်တို့သည် CGO တလင်အသေသစိတ်ပဌဿနာမျာသကို ရဟာဖလေတလေ့ရဟိနိုင်သောအခါ စလမ်သဆောင်ရည်ဆိုင်ရာ ပိတ်ဆို့မဟုမျာသကို ဖော်ထုတ်ရန် ပျက်ကလက်ခဌင်သ။

    ကောက်ချက်

    ကျလန်ုပ်သည် cloud ဂိမ်သဝန်ဆောင်မဟုမျာသကို နာသလည်ပဌီသ အလန်လိုင်သတလင် ကျလန်ုပ်၏သူငယ်ချင်သမျာသနဟင့် လလမ်သဆလတ်ဖလယ် ခေတ်ဟောင်သဂိမ်သမျာသကို ကစာသနိုင်စေရန် ကူညီပေသသည့် ပလပ်ဖောင်သတစ်ခုကို ဖန်တီသရန် ကျလန်ုပ်၏ပန်သတိုင်ကို အောင်မဌင်ခဲ့သည်။ Pion စာကဌည့်တိုက်နဟင့် Pion အသိုင်သအဝိုင်သ၏ ပံ့ပိုသကူညီမဟုမရဟိဘဲ ကပရောဂျက်သည် မဖဌစ်နိုင်ပါ။ ၎င်သ၏ အကဌိတ်အနယ် ဖလံ့ဖဌိုသတိုသတက်မဟုအတလက် အထူသပင် ကျေသဇူသတင်ရဟိပါသည်။ WebRTC နဟင့် Pion မဟ ပံ့ပိုသပေသသော ရိုသရဟင်သသော API မျာသသည် ချောမလေ့စလာ ပေါင်သစပ်မဟုကို သေချာစေသည်။ ကျလန်ုပ်၏ ပထမဆုံသ အယူအဆ အထောက်အထာသကို တူညီသော အချင်သချင်သ အပဌန်အလဟန် ဆက်သလယ်မဟု (P2P) ဆိုင်ရာ ကဌိုသိထာသခဌင်သ မရဟိသော်လည်သ ထိုသီတင်သပတ်တလင်ပင် ထုတ်ပဌန်ခဲ့ပါသည်။

    ပေါင်သစည်သရန်လလယ်ကူသော်လည်သ P2P streaming သည် အမဟန်တကယ်ပင် ကလန်ပျူတာသိပ္ပံတလင် အလလန်ရဟုပ်ထလေသသောနယ်ပယ်တစ်ခုဖဌစ်သည်။ သူသည် peer-to-peer session တစ်ခုဖန်တီသရန် IP နဟင့် NAT ကဲ့သို့သော ကာလကဌာရဟည်စလာ တည်ရဟိနေသော ကလန်ရက်တည်ဆောက်ပုံမျာသ၏ ရဟုပ်ထလေသမဟုကို ကိုင်တလယ်ဖဌေရဟင်သရမည်ဖဌစ်သည်။ ကပရောဂျက်ကို လုပ်ဆောင်နေစဉ်တလင် ကလန်ရက်ချိတ်ဆက်ခဌင်သနဟင့် စလမ်သဆောင်ရည် ပိုမိုကောင်သမလန်အောင် လုပ်ဆောင်ခဌင်သဆိုင်ရာ အဖိုသတန်အသိပညာမျာသစလာကို ကျလန်ုပ်ရရဟိခဲ့သည်၊ ထို့ကဌောင့် လူတိုင်သကို WebRTC သုံသပဌီသ P2P ထုတ်ကုန်မျာသကို ကဌိုသစာသတည်ဆောက်ရန် တိုက်တလန်သပါသည်။

    CloudRetro သည် retro ဂိမ်သကစာသသူအနေဖဌင့် ကျလန်ုပ်မျဟော်မဟန်သထာသသော အသုံသပဌုမဟုကိစ္စအာသလုံသကို ဖဌည့်ဆည်သပေသပါသည်။ သို့သော်လည်သ၊ ကလန်ရက်ကို ပိုမိုယုံကဌည်စိတ်ချရပဌီသ စလမ်သဆောင်ရည်မဌင့်မာသစေရန်၊ အရည်အသလေသမဌင့် ဂိမ်သဂရပ်ဖစ်မျာသ ပံ့ပိုသပေသခဌင်သ သို့မဟုတ် သုံသစလဲသူမျာသအကဌာသ ဂိမ်သမျာသကို မျဟဝေနိုင်မဟုကဲ့သို့သော ပိုမိုကောင်သမလန်အောင် လုပ်ဆောင်နိုင်သည့် ပရောဂျက်တလင် နယ်ပယ်မျာသစလာရဟိနေသည်ဟု ကျလန်တော်ထင်ပါတယ်။ ဒီအတလက် ကျလန်တော် ကဌိုသစာသလုပ်ဆောင်နေပါတယ်။ လိုက်နာပါ။ စီမံကိန်သ ကဌိုက်ရင် အာသပေသပါ။

source: www.habr.com

မဟတ်ချက် Add