संपादित 3 महीने पहले द्वारा ExtremeHow संपादकीय टीम
यूनिटीमल्टीप्लेयरनेटवर्किंगखेल विकासऑनलाइनलैन्सस्क्रिप्टिंगसी#सर्वरक्लाइंटफोटॉनमिररविंडोमैकलिनक्स
अनुवाद अपडेट किया गया 3 महीने पहले
यूनिटी वीडियो गेम विकसित करने के लिए सबसे लोकप्रिय प्लेटफार्मों में से एक है, और मल्टीप्लेयर कार्यक्षमता सेट अप करने से खिलाड़ियों को एक-दूसरे के साथ इंटरैक्ट करने की अनुमति देकर गेमिंग अनुभव को बढ़ाया जा सकता है। इस विस्तृत गाइड में, हम यूनिटी में मल्टीप्लेयर सेट अप करने की प्रक्रिया को शुरू से अंत तक कवर करेंगे। यह गाइड शुरुआती और मध्यम स्तर के यूनिटी डेवलपर्स के लिए है जो मल्टीप्लेयर गेम सेट अप में नए हैं।
मल्टीप्लेयर गेम्स कई खिलाड़ियों को एक ही गेम वातावरण में इंटरैक्ट और खेलना संभव बनाते हैं, चाहे वे एक ही डिवाइस पर हों या इंटरनेट से जुड़े हों। यूनिटी में मल्टीप्लेयर सेट अप करते समय, हमें जरूरी मूलभूत घटकों जैसे नेटवर्किंग, सिंक्रनाईज़ेशन और खिलाड़ी संचार को समझना होगा।
शुरू करने से पहले, यह महत्वपूर्ण है कि आप अपने प्रोजेक्ट के लिए एक नेटवर्किंग समाधान चुनें जो सबसे उपयुक्त हो। यूनिटी नेटवर्किंग के लिए कई विकल्प प्रदान करता है, जिनमें से प्रत्येक के अपने फायदे हैं:
इस गाइड के लिए, हम यूनिटी के लिए गेम ऑब्जेक्ट्स का नेटकोड का उपयोग करेंगे क्योंकि यह एक सीधी विधि प्रदान करता है और यूनिटी के मौजूदा सिस्टम्स के साथ अच्छी तरह से एकीकृत होता है।
नया यूनिटी प्रोजेक्ट बनाकर शुरू करें। यूनिटी हब खोलें, नया प्रोजेक्ट बटन पर क्लिक करें, एक टेम्पलेट चुनें जो आपके खेल के लिए उपयुक्त है (2D या 3D) और अपने प्रोजेक्ट को नाम दें।
अपने प्रोजेक्ट को बनाने के बाद, आपको यूनिटी के लिए गेम ऑब्जेक्ट्स का नेटकोड पैकेज इंस्टॉल करना होगा:
com.unity.netcode.gameobjects
दर्ज करें और जोड़ें पर क्लिक करें।नेटकोड पैकेज इंस्टॉल करने के बाद, आप मूलभूत नेटवर्किंग इन्फ्रास्ट्रक्चर सेट अप करना शुरू करेंगे। नेटवर्किंग लॉजिक को संभालने के लिए एक स्क्रिप्ट बनाकर शुरू करें।
NetworkManager
आपके मल्टीप्लेयर गेम की स्थिति और लॉजिक को प्रबंधित करने के लिए आवश्यक है। एक नई स्क्रिप्ट बनाएँ जिसका नाम NetworkManager
हो:
// NetworkManager.cs
using Unity.Netcode;
using UnityEngine;
public class NetworkManagerScript : MonoBehaviour {
private void Start() {
Debug.Log("नेटवर्क मैनेजर प्रारंभ।");
}
public void StartHost() {
NetworkManager.Singleton.StartHost();
}
public void StartClient() {
NetworkManager.Singleton.StartClient();
}
public void StartServer() {
NetworkManager.Singleton.StartServer();
}
}
यह स्क्रिप्ट खेल को होस्ट, सर्वर या क्लाइंट मोड में शुरू करने के लिए विधियाँ प्रदान करती है। इस स्क्रिप्ट को आपके दृश्य में एक गेम ऑब्जेक्ट, उदाहरण के लिए, एक गेमकंट्रोलर पर अटैच करें।
एक मल्टीप्लेयर गेम में, खिलाड़ियों और वस्तुओं को सभी क्लाइंट्स और होस्ट्स के बीच सिंक्रोनाइज किया जाना चाहिए। एक खिलाड़ी प्रीफैब सेट करें जिसे गेम में शामिल होने वाले प्रत्येक खिलाड़ी के लिए इंस्टेंशिएट किया जाएगा:
Assets
फोल्डर में घसीटकर Prefab
बनाएं।NetworkObject
घटक जोड़ें।NetworkManagerScript
को अटैच किया है।नेटवर्क प्रीफैब्स
सूची में असाइन करें।मल्टीप्लेयर वातावरण में खिलाड़ियों के बीच इंटरैक्शन के लिए, हमें मूवमेंट और नेटवर्क पर उस मूवमेंट को सिंक्रनाइज़ करना आवश्यक है। एक स्क्रिप्ट बनाएँ जो खिलाड़ी के मूवमेंट को संभाले और इसे अपने खिलाड़ी प्रीफैब में अटैच करें:
// PlayerMovement.cs
using UnityEngine;
using Unity.Netcode;
public class PlayerMovement : NetworkBehaviour {
public float moveSpeed = 5f;
private void Update() {
if (IsOwner) {
float moveX = Input.GetAxis("Horizontal");
float moveZ = Input.GetAxis("Vertical");
Vector3 move = transform.right * moveX + transform.forward * moveZ;
transform.position += move * moveSpeed * Time.deltaTime;
}
}
}
इस स्क्रिप्ट में, यदि खिलाड़ी ऑब्जेक्ट का मालिक है तो उसे मूव करने की अनुमति है, यह सुनिश्चित करते हुए कि केवल सही खिलाड़ी ही अपने चरित्र को नियंत्रित कर सकता है।
एक बार खिलाड़ी चल सकें, यह महत्वपूर्ण है कि मूवमेंट और क्रियाएँ नेटवर्क के सभी पीयर्स में सिंक्रोनाइज हों। यूनिटी का नेटकोड नेटवर्क ट्रांसफॉर्म्स और आरपीसी (रिमोट प्रोसीजर कॉल) के माध्यम से क्षमताएँ प्रदान करता है।
NetworkTransform
घटक स्वचालित रूप से स्थिति परिवर्तन को सिंक्रोनाइज करने की अनुमति देता है। इस घटक को अपने खिलाड़ी प्रीफैब में जोड़ें:
रिमोट प्रोसीजर कॉल्स (आरपीसी) विधियाँ हैं जिन्हें रिमोट क्लाइंट या सर्वर पर कॉल किया जाता है। इन्हें घटनाओं के लिए उपयोग किया जाता है जिन्हें तत्काल निष्पादित करने की आवश्यकता होती है, जैसे कि खिलाड़ी कार्य या इंटरैक्शन।
// एक आरपीसी कॉल का उदाहरण
[ServerRpc]
void PerformActionServerRpc() {
// उदाहरण कार्य जो संभवतः किसी आइटम की स्थिति को अपडेट कर सकता है
Debug.Log("सर्वर कार्रवाई कर रहा है।");
}
सर्वर आरपीसी क्लाइंट द्वारा शुरू किए जाते हैं और सर्वर पर निष्पादित होते हैं, जिससे वे कार्यों को सत्यापित करने या सभी खिलाड़ियों को परिवर्तन प्रचारित करने के लिए आदर्श बनते हैं।
मूल नेटवर्किंग सेट अप के पूरा होने के बाद, मल्टीप्लेयर कार्यक्षमता का परीक्षण करें। यूनिटी नेटवर्क मैनेजर UI प्रदान करता है ताकि आप अपने मल्टीप्लेयर गेम का आसानी से परीक्षण कर सकें।
अपने खेल के कई उदाहरण बनाएँ और चलाएँ ताकि होस्ट और क्लाइंट खिलाड़ियों का सिमुलेशन हो सके:
एक बार मूल मल्टीप्लेयर सेट अप सही तरीके से काम कर रहा हो, उन्नत विषयों पर विचार करें जैसे कि मैचमेकिंग, डेडिकेटेड सर्वर, और नेटवर्क ऑप्टिमाइजेशन।
मैचमेकिंग मल्टीप्लेयर गुमों में खिलाड़ियों की जोड़ीबंदी करना शामिल है। इसके लिए यूनिटी की मैचमेकिंग सेवा या तृतीय-पक्ष सेवाओं जैसे कि फोटोन क्लाउड का उपयोग करने पर विचार करें।
डेडिकेटेड सर्वर का उपयोग कई लाभ प्रदान करता है, जैसे बेहतर स्थिरता और कम विलंबता। आप ग्राहक के लिए अपने सर्वर लॉजिक को अलग से परिनियोजित कर स्केलेबिलिटी के लिए कर सकते हैं।
यूनिटी में मल्टीप्लेयर सेट अप करने के लिए नेटवर्किंग, सिंक्रनाईज़ेशन की मूल बातें और खिलाड़ी इंटरैक्शन का कुशल प्रबंधन समझना आवश्यक है। इस गाइड का पालन करके, आपने खिलाड़ी मूवमेंट और परीक्षण घटकों के साथ एक मूलभूत मल्टीप्लेयर परियोजना सेट अप करना सीखा है। अपने विशेष गेम की जरूरतों के आधार पर अपनी सेट अप को फाइन-ट्यून करें और एक समृद्ध मल्टीप्लेयर अनुभव के लिए यूनिटी की व्यापक नेटवर्किंग क्षमताओं का पता लगाना जारी रखें।
यदि आपको लेख की सामग्री में कुछ गलत लगता है, आप कर सकते हैं