WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்

WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
ஒரு சேவையாக மென்பொருள், ஒரு சேவையாக உள்கட்டமைப்பு, ஒரு சேவையாக தளம், ஒரு சேவையாக தகவல் தொடர்பு தளம், ஒரு சேவையாக வீடியோ கான்பரன்சிங், ஒரு சேவையாக கிளவுட் கேமிங் பற்றி என்ன? Google ஆல் சமீபத்தில் தொடங்கப்பட்ட Stadia போன்ற கிளவுட் கேமிங்கை (Cloud Gaming) உருவாக்க ஏற்கனவே பல முயற்சிகள் மேற்கொள்ளப்பட்டுள்ளன. ஸ்டேடியா WebRTC க்கு புதியதல்ல, ஆனால் மற்றவர்கள் அதே வழியில் WebRTC ஐப் பயன்படுத்த முடியுமா?

Thanh Nguyen தனது திறந்த மூல திட்டமான CloudRetro இல் இந்த வாய்ப்பை சோதிக்க முடிவு செய்தார். CloudRetro பியோனை அடிப்படையாகக் கொண்டது, பிரபலமான Go அடிப்படையிலான WebRTC நூலகம் (நன்றி காட்டப்பட்டது இந்தக் கட்டுரையைத் தயாரிப்பதில் உதவியதற்காக பியோன் மேம்பாட்டுக் குழுவிடமிருந்து). இந்த கட்டுரையில், தான் தனது திட்டத்தின் கட்டமைப்பின் மேலோட்டத்தை வழங்குகிறார், மேலும் அவர் என்ன பயனுள்ள விஷயங்களைக் கற்றுக்கொண்டார் மற்றும் அவர் தனது வேலையின் போது என்ன சவால்களை சந்தித்தார் என்பதைப் பற்றி பேசுகிறார்.

நுழைவு

கடந்த ஆண்டு, கூகுள் ஸ்டேடியாவை அறிவித்தபோது, ​​அது என் மனதை உலுக்கியது. இந்த யோசனை மிகவும் தனித்துவமானது மற்றும் புதுமையானது, தற்போதுள்ள தொழில்நுட்பத்தில் இது எப்படி சாத்தியம் என்று நான் தொடர்ந்து ஆச்சரியப்பட்டேன். இந்த தலைப்பை நன்கு புரிந்து கொள்ள வேண்டும் என்ற ஆசை, திறந்த மூல கிளவுட் கேமின் சொந்த பதிப்பை உருவாக்க என்னைத் தூண்டியது. விளைவு வெறுமனே அற்புதமாக இருந்தது. எனது ஆண்டில் பணிபுரியும் செயல்முறையை கீழே பகிர்ந்து கொள்ள விரும்புகிறேன் திட்டம்.

TLDR: சிறப்பம்சங்கள் கொண்ட குறுகிய ஸ்லைடு பதிப்பு

கிளவுட் கேமிங் ஏன் எதிர்காலம்

கிளவுட் கேமிங் விரைவில் கேமிங்கின் அடுத்த தலைமுறையாக மாறும் என்று நான் நம்புகிறேன், ஆனால் கணினி அறிவியலின் பிற பகுதிகளிலும். கிளவுட் கேமிங் என்பது கிளையன்ட்/சர்வர் மாதிரியின் உச்சம். ரிமோட் சர்வரில் கேம் லாஜிக்கை ஹோஸ்ட் செய்வதன் மூலமும், கிளையண்டிற்கு படங்கள்/ஆடியோவை ஸ்ட்ரீமிங் செய்வதன் மூலமும் இந்த மாதிரி பின்தள நிர்வாகத்தை அதிகப்படுத்துகிறது மற்றும் ஃப்ரண்ட்எண்ட் வேலையை குறைக்கிறது. சேவையகம் அதிக செயலாக்கத்தைச் செய்கிறது, எனவே கிளையன்ட் வன்பொருள் வரம்புகளின் தயவில் இல்லை.

Google Stadia முக்கியமாக உங்களை விளையாட அனுமதிக்கிறது AAA கேம்கள் (அதாவது உயர்தர பிளாக்பஸ்டர் கேம்கள்) YouTube போன்ற இடைமுகத்தில். இயக்க முறைமை அல்லது 2D/3D வரைகலை வடிவமைப்பு போன்ற மற்ற கனரக ஆஃப்லைன் பயன்பாடுகளுக்கும் இதே முறையைப் பயன்படுத்தலாம். பல இயங்குதளங்களில் குறைந்த-ஸ்பெக் சாதனங்களில் அவற்றை தொடர்ந்து இயக்க முடியும்.

WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
இந்த தொழில்நுட்பத்தின் எதிர்காலம்: மைக்ரோசாப்ட் விண்டோஸ் 10 Chrome உலாவியில் இயங்கினால் கற்பனை செய்து பாருங்கள்?

கிளவுட் கேமிங் தொழில்நுட்ப ரீதியாக சவாலானது

நிலையான, வேகமான பயனர் பதில் தேவைப்படும் அரிய பகுதிகளில் கேமிங் ஒன்றாகும். எப்போதாவது ஒரு பக்கத்தில் கிளிக் செய்யும் போது 2 வினாடிகள் தாமதம் ஏற்பட்டால், இது ஏற்கத்தக்கது. நேரடி வீடியோ ஸ்ட்ரீம்கள் சில வினாடிகள் தாமதமாக இருக்கும், ஆனால் இன்னும் நியாயமான பயன்பாட்டினை வழங்குகின்றன. இருப்பினும், விளையாட்டு அடிக்கடி 500ms பின்தங்கியிருந்தால், அது வெறுமனே விளையாட முடியாதது. உள்ளீடு மற்றும் மீடியா இடையே உள்ள இடைவெளி முடிந்தவரை சிறியதாக இருக்கும் வகையில் மிகக் குறைந்த தாமதத்தை அடைவதே எங்கள் குறிக்கோள். எனவே, வீடியோ ஸ்ட்ரீமிங்கிற்கான பாரம்பரிய அணுகுமுறை இங்கு பொருந்தாது.

WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
பொது கிளவுட் கேம் டெம்ப்ளேட்

திறந்த மூல திட்டமான CloudRetro

இவ்வளவு இறுக்கமான நெட்வொர்க் கட்டுப்பாடுகள் மூலம் இவை அனைத்தும் சாத்தியமா என்று பார்க்க கிளவுட் கேமின் சோதனை மாதிரியை உருவாக்க முடிவு செய்தேன். நான் கோலாங்கைக் கருத்துச் சான்றுக்காகத் தேர்ந்தெடுத்தேன், ஏனென்றால் அது எனக்கு மிகவும் பரிச்சயமான மொழி மற்றும் பல காரணங்களுக்காக இந்த நடைமுறைக்கு மிகவும் பொருத்தமானது, நான் பின்னர் கண்டுபிடித்தேன். கோ எளிமையானது மற்றும் மிக விரைவாக உருவாகிறது; மல்டித்ரெடிங்கை நிர்வகிப்பதற்கு Go இல் உள்ள சேனல்கள் சிறந்தவை.

திட்டம் CloudRetro.io ரெட்ரோ கேமிங்கிற்கான திறந்த மூல கிளவுட் கேமிங் சேவையாகும். பாரம்பரிய ரெட்ரோ கேம்களுக்கு மிகவும் வசதியான கேமிங் அனுபவத்தை கொண்டு வந்து மல்டிபிளேயரைச் சேர்ப்பதே திட்டத்தின் குறிக்கோள்.
திட்டத்தைப் பற்றி நீங்கள் இங்கே மேலும் அறியலாம்: https://github.com/giongto35/cloud-game.

CloudRetro செயல்பாடு

கிளவுட் கேமிங்கின் ஆற்றலைக் காட்ட CloudRetro ரெட்ரோ கேம்களைப் பயன்படுத்துகிறது. இது பல தனித்துவமான கேமிங் அனுபவங்களைப் பெற உங்களை அனுமதிக்கிறது.

  • விளையாட்டின் பெயர்வுத்திறன்
    • ஒரு பக்கத்தைத் திறக்கும்போது உடனடி பின்னணி; பதிவிறக்கம் அல்லது நிறுவல் தேவையில்லை
    • மொபைல் உலாவியில் வேலை செய்கிறது, எனவே அதை இயக்க மென்பொருள் தேவையில்லை

  • கேம் அமர்வுகள் பல சாதனங்களில் பகிரப்பட்டு, அடுத்த முறை நீங்கள் உள்நுழைய, மேகக்கணியில் சேமிக்கப்படும்
  • விளையாட்டை ஸ்ட்ரீம் செய்யலாம் அல்லது ஒரே நேரத்தில் பல பயனர்கள் விளையாடலாம்:
    • TwitchPlayPokemon போன்ற க்ரவுட் பிளே, அதிக குறுக்கு-தளம் மற்றும் நிகழ்நேரம் மட்டுமே
    • ஆஃப்லைன் கேம்கள் ஆன்லைன். பல பயனர்கள் நெட்வொர்க்கை அமைக்காமல் விளையாடலாம். சாமுராய் ஷோடவுனை இப்போது கிளவுட் ரெட்ரோ நெட்வொர்க்கில் 2 பிளேயர்கள் விளையாடலாம்

    WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
    வெவ்வேறு சாதனங்களில் ஆன்லைன் மல்டிபிளேயர் கேமின் டெமோ பதிப்பு

    உள்கட்டமைப்பு

    தேவைகள் மற்றும் தொழில்நுட்ப அடுக்கு

    திட்டத்தைத் தொடங்குவதற்கு முன் நான் அமைத்த தேவைகளின் பட்டியல் கீழே உள்ளது.

    1. ஒரு வீரர்
    இந்தத் தேவை இங்கே மிக முக்கியமானதாகவோ அல்லது வெளிப்படையாகவோ தோன்றாமல் இருக்கலாம், ஆனால் இது எனது முக்கிய அம்சங்களில் ஒன்றாகும், இது கிளவுட் கேமிங்கை பாரம்பரிய ஸ்ட்ரீமிங் சேவைகளிலிருந்து முடிந்தவரை தொலைவில் இருக்க அனுமதிக்கிறது. நாம் ஒரு ஒற்றை வீரர் விளையாட்டில் கவனம் செலுத்தினால், மையப்படுத்தப்பட்ட சேவையகம் அல்லது CDN இல் இருந்து விடுபடலாம், ஏனெனில் நாம் மக்களுக்கு ஸ்ட்ரீம் செய்ய வேண்டியதில்லை. சிங்க் சர்வரில் ஸ்ட்ரீம்களைப் பதிவேற்றுவதற்குப் பதிலாக அல்லது மையப்படுத்தப்பட்ட WebSocket சேவையகத்திற்கு பாக்கெட்டுகளை அனுப்புவதற்குப் பதிலாக, சேவை ஸ்ட்ரீம்கள் நேரடியாக பயனருக்கு பியர்-டு-பியர் WebRTC இணைப்பு மூலம் வழங்கப்படுகின்றன.

    2. குறைந்த தாமத மீடியா ஸ்ட்ரீம்
    ஸ்டேடியாவைப் பற்றி படிக்கும்போது, ​​சில கட்டுரைகளில் WebRTC குறிப்பிடப்பட்டிருப்பதை அடிக்கடி பார்க்கிறேன். WebRTC ஒரு சிறந்த தொழில்நுட்பம் மற்றும் கிளவுட் கேமிங்கில் பயன்படுத்த ஏற்றது என்பதை உணர்ந்தேன். WebRTC என்பது ஒரு எளிய API மூலம் இணைய உலாவிகள் மற்றும் மொபைல் பயன்பாடுகளுக்கு நிகழ்நேர தொடர்புகளை வழங்கும் திட்டமாகும். இது பியர்-டு-பியர் இணைப்பை வழங்குகிறது, மீடியாவிற்கு உகந்ததாக உள்ளது மற்றும் VP8 மற்றும் H264 போன்ற நிலையான கோடெக்குகளைக் கொண்டுள்ளது.

    உயர்தர கிராபிக்ஸ்களை பராமரிப்பதை விட சிறந்த பயனர் அனுபவத்தை உறுதிசெய்வதற்கு நான் முன்னுரிமை அளித்துள்ளேன். சில இழப்புகள் அல்காரிதத்தில் ஏற்கத்தக்கவை. Google Stadia ஆனது சர்வரில் பட அளவைக் குறைப்பதற்கான கூடுதல் படிநிலையைக் கொண்டுள்ளது, மேலும் ஃப்ரேம்கள் சகாக்களுக்கு அனுப்பப்படுவதற்கு முன்பு உயர் தரத்திற்கு உயர்த்தப்படும்.

    3. புவியியல் வழித்தடத்துடன் விநியோகிக்கப்பட்ட உள்கட்டமைப்பு
    சுருக்க அல்காரிதம் மற்றும் குறியீடு எவ்வளவு உகந்ததாக இருந்தாலும், நெட்வொர்க் இன்னும் தாமதத்திற்கு மிகவும் பங்களிக்கும் தீர்மானிக்கும் காரணியாக உள்ளது. சுற்று-பயண நேரத்தை (RTT) குறைக்க, பயனருக்கு மிக நெருக்கமான சேவையகத்தை இணைப்பதற்கான ஒரு பொறிமுறையை கட்டமைப்பு கொண்டிருக்க வேண்டும். கட்டமைப்பில் 1 ஒருங்கிணைப்பாளர் மற்றும் பல ஸ்ட்ரீமிங் சர்வர்கள் இருக்க வேண்டும்: அமெரிக்கா மேற்கு, அமெரிக்க கிழக்கு, ஐரோப்பா, சிங்கப்பூர், சீனா. அனைத்து ஸ்ட்ரீமிங் சேவையகங்களும் முற்றிலும் தனிமைப்படுத்தப்பட வேண்டும். ஒரு சர்வர் இணையும்போது அல்லது பிணையத்தை விட்டு வெளியேறும்போது கணினி அதன் விநியோகத்தை சரிசெய்ய முடியும். இதனால், அதிக ட்ராஃபிக்கைக் கொண்டு, கூடுதல் சேவையகங்களைச் சேர்ப்பது கிடைமட்ட அளவிடுதலை அனுமதிக்கிறது.

    4. உலாவி இணக்கத்தன்மை
    பயனர்களிடமிருந்து குறைந்தபட்சம் தேவைப்படும்போது கிளவுட் கேமிங் சிறந்ததாக இருக்கும். அதாவது உலாவியில் இயக்க முடியும். கேமிங் அனுபவத்தை பயனர்களுக்கு முடிந்தவரை வசதியாக மாற்ற உலாவிகள் உதவுகின்றன, மென்பொருள் மற்றும் வன்பொருளை நிறுவுவதில் இருந்து அவர்களைச் சேமிக்கின்றன. மொபைல் மற்றும் டெஸ்க்டாப் பதிப்புகளுக்கு இடையே குறுக்கு-தள செயல்பாட்டை வழங்க உலாவிகள் உதவுகின்றன. அதிர்ஷ்டவசமாக, WebRTC பல்வேறு உலாவிகளில் நன்கு ஆதரிக்கப்படுகிறது.

    5. விளையாட்டு இடைமுகம் மற்றும் சேவையின் தெளிவான பிரிப்பு
    நான் கிளவுட் கேமிங் சேவையை ஒரு தளமாக பார்க்கிறேன். எல்லோரும் எதையும் மேடையில் இணைக்க முடியும். இப்போது நான் ஒருங்கிணைத்தேன் LibRetro கிளவுட் கேமிங் சேவையுடன், ஏனெனில் SNES, GBA, PS போன்ற ரெட்ரோ கேம்களுக்கு LibRetro அழகான கேம் எமுலேட்டர் இடைமுகத்தை வழங்குகிறது.

    6. மல்டிபிளேயர், க்ரவுட் பிளே மற்றும் கேமுடன் வெளிப்புற இணைப்பு (ஆழமான இணைப்பு) ஆகியவற்றுக்கான அறைகள்
    CloudRetro ரெட்ரோ கேம்களுக்கான CrowdPlay மற்றும் Online MultiPlayer போன்ற பல புதிய கேம்ப்ளேக்களை ஆதரிக்கிறது. பல பயனர்கள் வெவ்வேறு கணினிகளில் ஒரே ஆழமான இணைப்பைத் திறந்தால், அவர்கள் அதே கேம் இயங்குவதைக் காண்பார்கள், மேலும் அதில் சேரவும் முடியும்.

    மேலும், விளையாட்டு நிலைகள் கிளவுட் சேமிப்பகத்தில் சேமிக்கப்படும். இது பயனர்கள் எந்த நேரத்திலும் வேறு எந்த சாதனத்திலும் விளையாடுவதைத் தொடர அனுமதிக்கிறது.

    7. கிடைமட்ட அளவிடுதல்
    இப்போதெல்லாம் எந்த SAAS ஐப் போலவே, கிளவுட் கேமிங்கையும் கிடைமட்டமாக அளவிடக்கூடியதாக வடிவமைக்க வேண்டும். ஒருங்கிணைப்பாளர்-தொழிலாளர் வடிவமைப்பு, அதிக போக்குவரத்துக்கு சேவை செய்ய அதிக தொழிலாளர்களைச் சேர்க்க உங்களை அனுமதிக்கிறது.

    8. ஒரு மேகத்துடன் இணைப்பு இல்லை
    CloudRetro இன் உள்கட்டமைப்பு வெவ்வேறு கிளவுட் வழங்குநர்களில் (டிஜிட்டல் ஓஷன், அலிபாபா, தனிப்பயன் வழங்குநர்) வெவ்வேறு பிராந்தியங்களுக்கு வழங்கப்படுகிறது. உள்கட்டமைப்பிற்காக டோக்கர் கண்டெய்னரில் இயங்குவதை இயக்குகிறேன் மற்றும் ஒற்றை கிளவுட் வழங்குநருக்குள் பூட்டப்படுவதைத் தவிர்க்க, பாஷ் ஸ்கிரிப்டைப் பயன்படுத்தி நெட்வொர்க் அமைப்புகளை உள்ளமைக்கிறேன். WebRTC இல் NAT Traversal உடன் இதை இணைப்பதன் மூலம், CloudRetroவை எந்த கிளவுட் பிளாட்ஃபார்மிலும் மற்றும் எந்த பயனரின் கணினிகளிலும் பயன்படுத்துவதற்கான நெகிழ்வுத்தன்மையைப் பெறலாம்.

    கட்டிடக்கலை வடிவமைப்பு

    தொழிலாளி: (அல்லது மேலே குறிப்பிட்டுள்ள ஸ்ட்ரீமிங் சர்வர்) கேம்களை பெருக்கி, குறியாக்க பைப்லைனை இயக்குகிறது மற்றும் பயனர்களுக்கு குறியிடப்பட்ட மீடியாவை ஸ்ட்ரீம் செய்கிறது. தொழிலாளர் நிகழ்வுகள் உலகம் முழுவதும் விநியோகிக்கப்படுகின்றன, மேலும் ஒவ்வொரு தொழிலாளியும் ஒரே நேரத்தில் பல பயனர் அமர்வுகளைக் கையாள முடியும்.

    ஒருங்கிணைப்பாளர்: ஸ்ட்ரீமிங்கிற்கு மிகவும் பொருத்தமான பணியாளருடன் புதிய பயனரை இணைப்பதற்கு பொறுப்பாகும். ஒருங்கிணைப்பாளர் WebSocket மூலம் தொழிலாளர்களுடன் தொடர்பு கொள்கிறார்.

    விளையாட்டு நிலை சேமிப்பு: அனைத்து விளையாட்டு நிலைகளுக்கான மத்திய தொலை சேமிப்பு. இந்த சேமிப்பகம் ரிமோட் சேவ்/லோட் போன்ற முக்கியமான செயல்பாடுகளை வழங்குகிறது.

    WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
    CloudRetro இன் உயர்மட்ட கட்டிடக்கலை

    தனிப்பயன் ஸ்கிரிப்ட்

    கீழே உள்ள படத்தில் காட்டப்பட்டுள்ள படிகள் 1 மற்றும் 2 இல் ஒரு புதிய பயனர் CloudRetro ஐத் திறக்கும் போது, ​​ஒருங்கிணைப்பாளரும் கிடைக்கக்கூடிய தொழிலாளர்களின் பட்டியலும் முதல் பக்கத்திற்குக் கோரப்படும். இதற்குப் பிறகு, படி 3 இல் கிளையன்ட் HTTP பிங் கோரிக்கையைப் பயன்படுத்தி அனைத்து வேட்பாளர்களுக்கும் தாமதங்களைக் கணக்கிடுகிறது. இந்த தாமதங்களின் பட்டியல் பின்னர் ஒருங்கிணைப்பாளருக்கு மீண்டும் அனுப்பப்படும், இதனால் பயனருக்கு சேவை செய்ய மிகவும் பொருத்தமான பணியாளரை அவர் தீர்மானிக்க முடியும். கீழே உள்ள படி 4 விளையாட்டை உருவாக்குகிறது. பயனருக்கும் ஒதுக்கப்பட்ட பணியாளருக்கும் இடையே WebRTC ஸ்ட்ரீமிங் இணைப்பு நிறுவப்பட்டுள்ளது.
    WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
    அணுகலைப் பெற்ற பிறகு பயனர் ஸ்கிரிப்ட்

    தொழிலாளிக்குள் என்ன இருக்கிறது

    கேம் மற்றும் ஸ்ட்ரீமிங் பைப்லைன்கள் தொழிலாளிக்குள் தனிமையில் சேமிக்கப்பட்டு, இடைமுகம் மூலம் தகவல்களை பரிமாறிக் கொள்கின்றன. தற்போது, ​​இந்த தகவல்தொடர்பு மூலம் நினைவகத்தில் தரவு பரிமாற்றம் மேற்கொள்ளப்படுகிறது கோலாங் சேனல்கள் அதே செயல்பாட்டில். அடுத்த இலக்கு பிரித்தல், அதாவது. மற்றொரு செயல்பாட்டில் விளையாட்டின் சுயாதீன வெளியீடு.

    WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
    தொழிலாளர் கூறுகளின் தொடர்பு

    முக்கிய கூறுகள்:

    • WebRTC,: சேவையகத்திலிருந்து பயனர் உள்ளீட்டை ஏற்றுக்கொண்டு குறியிடப்பட்ட மீடியாவை வெளியிடும் கிளையன்ட் கூறு.
    • விளையாட்டு முன்மாதிரி: விளையாட்டு கூறு. Libretro நூலகத்திற்கு நன்றி, கணினியானது அதே செயல்முறையில் விளையாட்டை இயக்க முடியும் மற்றும் உள்நாட்டில் மீடியா மற்றும் உள்ளீட்டு ஸ்ட்ரீமை இடைமறிக்க முடியும்.
    • கேம் பிரேம்கள் கைப்பற்றப்பட்டு குறியாக்கிக்கு அனுப்பப்படும்.
    • படம்/ஆடியோ குறியாக்கி: மீடியா பிரேம்களை எடுத்து, அவற்றை பின்னணியில் குறியாக்கம் செய்து, குறியிடப்பட்ட படங்கள்/ஆடியோவை வெளியிடும் குறியாக்கக் குழாய்.

    Реализация

    CloudRetro அதன் முதுகெலும்பு தொழில்நுட்பமாக WebRTC ஐ நம்பியுள்ளது, எனவே Golang செயல்படுத்தல் விவரங்களுக்குள் நுழைவதற்கு முன், WebRTC பற்றியே பேச முடிவு செய்தேன். இது அற்புதமான தொழில்நுட்பமாகும், இது டேட்டாவை ஸ்ட்ரீமிங் செய்வதற்கான துணை-இரண்டாவது தாமதத்தை அடைவதில் எனக்கு பெரிதும் உதவியது.

    WebRTC,

    WebRTC ஆனது எளிய APIகளைப் பயன்படுத்தி சொந்த மொபைல் பயன்பாடுகள் மற்றும் உலாவிகளில் உயர்தர பியர்-டு-பியர் இணைப்புகளை வழங்க வடிவமைக்கப்பட்டுள்ளது.

    NAT டிராவர்சல்

    WebRTC அதன் NAT டிராவர்சல் செயல்பாட்டிற்காக அறியப்படுகிறது. WebRTC ஆனது பியர்-டு-பியர் தொடர்புக்காக வடிவமைக்கப்பட்டுள்ளது. NAT நுழைவாயில்கள் மற்றும் ஃபயர்வால்களைத் தவிர்த்து, பியர்-டு-பியர் தகவல்தொடர்பு மூலம், மிகவும் பொருத்தமான நேரடி வழியைக் கண்டறிவதே இதன் குறிக்கோள். ICE ஐ. இந்த செயல்முறையின் ஒரு பகுதியாக, WebRTC APIகள் STUN சேவையகங்களைப் பயன்படுத்தி உங்கள் பொது ஐபி முகவரியைக் கண்டறிந்து அதை ரிலே சேவையகத்திற்கு அனுப்புகின்றன (இயக்கவும்) ஒரு நேரடி இணைப்பை நிறுவ முடியாத போது.

    இருப்பினும், CloudRetro இந்த அம்சத்தை முழுமையாகப் பயன்படுத்தவில்லை. அதன் பியர்-டு-பியர் இணைப்புகள் பயனர்களிடையே இல்லை, ஆனால் பயனர்கள் மற்றும் கிளவுட் சேவையகங்களுக்கு இடையில். மாதிரியின் சர்வர் பக்கமானது வழக்கமான பயனர் சாதனத்தை விட குறைவான நேரடி தொடர்பு கட்டுப்பாடுகளைக் கொண்டுள்ளது. சேவையகம் NATக்கு பின்னால் இல்லாததால், உள்வரும் போர்ட்களை முன்கூட்டியே திறக்க அல்லது பொது ஐபி முகவரிகளை நேரடியாகப் பயன்படுத்த இது உங்களை அனுமதிக்கிறது.

    முன்னதாக, இந்த திட்டத்தை கிளவுட் கேமிங்கிற்கான கேம் விநியோக தளமாக மாற்ற விரும்பினேன். கேம்கள் மற்றும் ஸ்ட்ரீமிங் ஆதாரங்களை வழங்க கேம் கிரியேட்டர்களை அனுமதிப்பதுதான் யோசனை. பயனர்கள் நேரடியாக வழங்குநர்களுடன் தொடர்புகொள்வார்கள். இந்த பரவலாக்கப்பட்ட முறையில், CloudRetro என்பது மூன்றாம் தரப்பு ஸ்ட்ரீமிங் ஆதாரங்களை பயனர்களுடன் இணைப்பதற்கான ஒரு கட்டமைப்பாகும், இது ஹோஸ்ட் செய்யப்படாதபோது அதை மேலும் அளவிடக்கூடியதாக ஆக்குகிறது. மூன்றாம் தரப்பு ஸ்ட்ரீமிங் ஆதாரங்களில் பியர்-டு-பியர் இணைப்பு துவக்கத்தை எளிதாக்குவதற்கு WebRTC NAT டிராவர்சலின் பங்கு இங்கே மிகவும் முக்கியமானது, இது கிரியேட்டருக்கு நெட்வொர்க்குடன் இணைப்பதை எளிதாக்குகிறது.

    வீடியோ சுருக்கம்

    வீடியோ சுருக்கமானது குழாயின் இன்றியமையாத பகுதியாகும் மற்றும் சீரான ஓட்டத்திற்கு பெரிதும் உதவுகிறது. VP8/H264 வீடியோ குறியாக்கத்தின் ஒவ்வொரு விவரத்தையும் தெரிந்து கொள்ள வேண்டிய அவசியமில்லை என்றாலும், கருத்துகளைப் புரிந்துகொள்வது ஸ்ட்ரீமிங் வீடியோ வேக விருப்பங்களைப் புரிந்துகொள்ளவும், எதிர்பாராத நடத்தையைப் பிழைத்திருத்தவும் மற்றும் தாமதத்தை சரிசெய்யவும் உதவும்.

    ஸ்ட்ரீமிங் சேவைக்கான வீடியோவை சுருக்குவது சவாலானது, ஏனெனில் மொத்த குறியாக்க நேரம் + நெட்வொர்க் டிரான்ஸ்மிஷன் நேரம் + டிகோடிங் நேரம் முடிந்தவரை குறைவாக இருப்பதை அல்காரிதம் உறுதிப்படுத்த வேண்டும். கூடுதலாக, குறியீட்டு செயல்முறை சீரானதாகவும் தொடர்ச்சியாகவும் இருக்க வேண்டும். சில குறியாக்க பரிமாற்றங்கள் பொருந்தாது - எடுத்துக்காட்டாக, சிறிய கோப்பு அளவுகள் மற்றும் டிகோடிங் நேரங்களை விட நீண்ட குறியாக்க நேரத்தை எங்களால் ஆதரிக்க முடியாது அல்லது சீரற்ற சுருக்கத்தைப் பயன்படுத்த முடியாது.

    வீடியோ சுருக்கத்தின் பின்னணியில் உள்ள யோசனை, பயனர்களுக்கு ஏற்றுக்கொள்ளக்கூடிய அளவிலான துல்லியத்தை பராமரிக்கும் அதே வேளையில் தேவையற்ற தகவல்களை அகற்றுவதாகும். தனிப்பட்ட நிலையான பட சட்டங்களை குறியாக்கம் செய்வதோடு கூடுதலாக, அல்காரிதம் தற்போதைய சட்டத்தை முந்தைய மற்றும் அடுத்தவற்றிலிருந்து ஊகிக்கிறது, எனவே அவற்றின் வேறுபாடு மட்டுமே அனுப்பப்படுகிறது. Pacman உடன் எடுத்துக்காட்டில் இருந்து பார்க்க முடிந்தால், வேறுபட்ட புள்ளிகள் மட்டுமே அனுப்பப்படுகின்றன.

    WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
    உதாரணமாக Pacman ஐப் பயன்படுத்தி வீடியோ பிரேம்களின் ஒப்பீடு

    ஆடியோ சுருக்கம்

    அதேபோல், ஆடியோ கம்ப்ரஷன் அல்காரிதம் மனிதர்களால் உணர முடியாத தரவுகளைத் தவிர்க்கிறது. ஓபஸ் தற்போது சிறப்பாக செயல்படும் ஆடியோ கோடெக் ஆகும். ஆர்டிபி (ரியல் டைம் டிரான்ஸ்போர்ட் புரோட்டோகால்) போன்ற ஆர்டர் செய்யப்பட்ட டேட்டாகிராம் புரோட்டோகால் மூலம் ஆடியோ அலையை அனுப்பும் வகையில் இது வடிவமைக்கப்பட்டுள்ளது. இதன் தாமதம் mp3 மற்றும் aac ஐ விட குறைவாக உள்ளது, மேலும் தரம் அதிகமாக உள்ளது. தாமதம் பொதுவாக 5~66,5ms ஆகும்.

    பியோன், கோலாங்கில் உள்ள WebRTC

    அடகு வெப்ஆர்டிசியை கோலாங்கிற்கு கொண்டு வரும் திறந்த மூல திட்டமாகும். வழக்கமான C++ WebRTC நூலகங்களுக்குப் பதிலாக, Pion என்பது WebRTC நெறிமுறைகளில் சிறந்த செயல்திறன், Go ஒருங்கிணைப்பு மற்றும் பதிப்புக் கட்டுப்பாடு ஆகியவற்றைக் கொண்ட WebRTC இன் சொந்த Golang செயலாக்கமாகும்.

    துணை-இரண்டாவது தாமதத்துடன் கூடிய சிறந்த உள்ளமைவுகளுடன் ஸ்ட்ரீமிங்கை நூலகம் செயல்படுத்துகிறது. இது STUN, DTLS, SCTP போன்றவற்றின் சொந்த செயலாக்கத்தைக் கொண்டுள்ளது. மற்றும் சில சோதனைகள் QUIC மற்றும் WebAssembly. இந்த ஓப்பன் சோர்ஸ் லைப்ரரியே சிறந்த ஆவணங்கள், நெட்வொர்க் புரோட்டோகால் செயலாக்கங்கள் மற்றும் சிறந்த எடுத்துக்காட்டுகளுடன் ஒரு நல்ல கற்றல் வளமாகும்.

    வெப்ஆர்டிசி பற்றி நிறைய தரமான விவாதங்கள் நடந்து கொண்டு, மிகவும் ஆர்வமுள்ள படைப்பாளியின் தலைமையில் இயங்கும் பியோன் சமூகம் மிகவும் கலகலப்பாக உள்ளது. இந்த தொழில்நுட்பத்தில் நீங்கள் ஆர்வமாக இருந்தால், சேரவும் http://pion.ly/slack - நீங்கள் நிறைய புதிய விஷயங்களைக் கற்றுக்கொள்வீர்கள்.

    கோலாங்கில் CloudRetro எழுதுதல்

    WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
    Go இல் ஒரு தொழிலாளியை செயல்படுத்துதல்

    கோ சேனல்கள் செயல்பாட்டில் உள்ளன

    Go இன் அழகான சேனல் வடிவமைப்பிற்கு நன்றி, நிகழ்வு ஸ்ட்ரீமிங் மற்றும் ஒத்திசைவின் சிக்கல்கள் பெரிதும் எளிமைப்படுத்தப்பட்டுள்ளன. வரைபடத்தில் உள்ளதைப் போல, வெவ்வேறு GoRoutineகள் இணையாக இயங்கும் பல கூறுகளைக் கொண்டுள்ளன. ஒவ்வொரு கூறுகளும் அதன் நிலையை நிர்வகிக்கிறது மற்றும் சேனல்கள் மூலம் தொடர்பு கொள்கிறது. கோலாங்கின் தேர்ந்தெடுக்கப்பட்ட வலியுறுத்தல் விளையாட்டில் ஒவ்வொரு முறையும் ஒரு அணு நிகழ்வை செயலாக்க வேண்டும் (கேம் டிக்). இதன் பொருள் இந்த வடிவமைப்பிற்கு பூட்டுதல் தேவையில்லை. எடுத்துக்காட்டாக, ஒரு பயனர் சேமிக்கும் போது, ​​விளையாட்டு நிலையின் முழு ஸ்னாப்ஷாட் தேவைப்படுகிறது. இந்த நிலை தொடர்ந்து இருக்க வேண்டும், சேமித்தல் முடியும் வரை உள்நுழைய வேண்டும். ஒவ்வொரு கேம் டிக் செய்யும் போதும், பின்தளத்தில் சேமித்தல் அல்லது உள்ளீடு செயல்பாட்டை மட்டுமே கையாள முடியும், இது செயல்முறை நூலை பாதுகாப்பானதாக்கும்.

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

    ஃபேன்-இன் / ஃபேன்-அவுட்

    இந்த Golang டெம்ப்ளேட் எனது CrowdPlay மற்றும் Multiple Player பயன்பாட்டு வழக்குக்கு சரியாக பொருந்துகிறது. இந்த முறையைப் பின்பற்றி, ஒரே அறையில் உள்ள அனைத்து பயனர் உள்ளீடுகளும் மைய நுழைவுச் சேனலில் கட்டமைக்கப்பட்டுள்ளன. கேம் மீடியா பின்னர் ஒரே அறையில் உள்ள அனைத்து பயனர்களுக்கும் பயன்படுத்தப்படும். இந்த வழியில், வெவ்வேறு பயனர்களின் பல விளையாட்டு அமர்வுகளுக்கு இடையில் விளையாட்டு நிலையைப் பிரிப்பதை நாங்கள் அடைகிறோம்.

    WebRTC இல் திறந்த மூல கிளவுட் கேமிங்: p2p, மல்டிபிளேயர், பூஜ்ஜிய தாமதம்
    வெவ்வேறு அமர்வுகளுக்கு இடையில் ஒத்திசைவு

    கோலாங்கின் தீமைகள்

    கோலாங் சரியானது அல்ல. சேனல் மெதுவாக உள்ளது. தடுப்பதை ஒப்பிடும்போது, ​​கோ சேனல் என்பது ஒரே நேரத்தில் மற்றும் திரிக்கப்பட்ட நிகழ்வுகளைக் கையாள எளிதான வழியாகும், ஆனால் சேனல் சிறந்த செயல்திறனை வழங்காது. சேனலின் அடியில் சிக்கலான தடுப்பு தர்க்கம் உள்ளது. எனவே செயல்திறனை மேம்படுத்த சேனல்களை மாற்றும் போது செயல்படுத்தல், பூட்டுகள் மற்றும் அணு மதிப்புகளை மீண்டும் பயன்படுத்துவதில் சில மாற்றங்களைச் செய்தேன்.

    கூடுதலாக, கோலாங்கில் உள்ள குப்பை சேகரிப்பான் நிர்வகிக்கப்படாமல் உள்ளது, இது சில நேரங்களில் சந்தேகத்திற்கிடமான நீண்ட இடைநிறுத்தங்களை ஏற்படுத்துகிறது. இது நிகழ்நேர ஸ்ட்ரீமிங் பயன்பாட்டில் பெரிதும் குறுக்கிடுகிறது.

    சி.ஜி.ஓ.

    திட்டமானது தற்போதுள்ள திறந்த மூல கோலாங் VP8/H264 லைப்ரரியை மீடியா கம்ப்ரஷனுக்காகவும், லிப்ரெட்ரோவை கேம் எமுலேட்டர்களுக்காகவும் பயன்படுத்துகிறது. இந்த லைப்ரரிகள் அனைத்தும் கோ பயன்படுத்தி சி லைப்ரரியின் ரேப்பர்கள் சி.ஜி.ஓ.. சில குறைபாடுகள் பட்டியலிடப்பட்டுள்ளன டேவ் செனியின் இந்த இடுகை. நான் சந்தித்த பிரச்சனைகள்:

    • Golang RecoveryCrash உடன் கூட, CGOவில் ஒரு செயலிழப்பைப் பிடிக்க இயலாமை;
    • CGO இல் விரிவான சிக்கல்களைக் கண்டறிய முடியாதபோது செயல்திறன் தடைகளை அடையாளம் காணத் தவறியது.

    முடிவுக்கு

    கிளவுட் கேமிங் சேவைகளைப் புரிந்துகொள்வது மற்றும் ஆன்லைனில் எனது நண்பர்களுடன் ஏக்கம் நிறைந்த ரெட்ரோ கேம்களை விளையாட உதவும் தளத்தை உருவாக்குவது என்ற எனது இலக்கை அடைந்தேன். பியோன் நூலகம் மற்றும் பியோன் சமூகத்தின் ஆதரவு இல்லாமல் இந்த திட்டம் சாத்தியமில்லை. அதன் தீவிர வளர்ச்சிக்கு நான் மிகவும் நன்றியுள்ளவனாக இருக்கிறேன். WebRTC மற்றும் Pion வழங்கும் எளிய APIகள் தடையற்ற ஒருங்கிணைப்பை உறுதி செய்தன. பியர்-டு-பியர் (P2P) தகவல்தொடர்பு பற்றி எனக்கு முன் அறிவு இல்லாவிட்டாலும், அதே வாரத்தில் எனது முதல் கருத்தாக்கம் வெளியிடப்பட்டது.

    ஒருங்கிணைப்பின் எளிமை இருந்தபோதிலும், கணினி அறிவியலில் P2P ஸ்ட்ரீமிங் உண்மையில் மிகவும் சிக்கலான பகுதியாகும். பியர்-டு-பியர் அமர்வை உருவாக்க IP மற்றும் NAT போன்ற நீண்டகால நெட்வொர்க் கட்டமைப்புகளின் சிக்கலான தன்மையை அவர் சமாளிக்க வேண்டும். இந்தத் திட்டத்தில் பணிபுரியும் போது, ​​நெட்வொர்க்கிங் மற்றும் செயல்திறன் மேம்படுத்தல் பற்றிய மதிப்புமிக்க அறிவைப் பெற்றேன், எனவே WebRTC ஐப் பயன்படுத்தி P2P தயாரிப்புகளை உருவாக்க முயற்சிக்குமாறு அனைவரையும் ஊக்குவிக்கிறேன்.

    CloudRetro ஒரு ரெட்ரோ கேமராக எனது பார்வையில் நான் எதிர்பார்க்கும் அனைத்து பயன்பாட்டு நிகழ்வுகளையும் வழங்குகிறது. இருப்பினும், நெட்வொர்க்கை மிகவும் நம்பகமானதாகவும் செயல்திறன் மிக்கதாகவும் ஆக்குதல், உயர்தர கேம் கிராபிக்ஸ் வழங்குதல் அல்லது பயனர்களிடையே கேம்களைப் பகிரும் திறன் போன்ற பல பகுதிகளை நான் மேம்படுத்த முடியும் என்று நான் நினைக்கிறேன். இதற்காக கடுமையாக உழைத்து வருகிறேன். தயவுசெய்து பின்பற்றவும் திட்டம் நீங்கள் விரும்பினால் அதை ஆதரிக்கவும்.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்