यह मूल रूप से एक प्रक्रिया बनाम थ्रेड प्रश्न है, दोनों बहुत अलग नहीं हैं, कभी-कभी थ्रेड को हल्के प्रक्रियाओं कहा जाता है। सबसे बड़ा अंतर यह है कि एक अलग प्रक्रिया में इसका स्वयं का पता स्थान होता है लेकिन अन्य अंतर हैं (1):
प्रति प्रक्रिया
- पता स्थान
- सार्वत्रिक चर
- खुली फ़ाइलें
- बाल प्रक्रिया
- लंबित अलार्म, इंटरप्ट और सिग्नल हैंडलर
प्रति धागा
- कार्यक्रम गणक
- रजिस्टर
- ढेर
- राज्य
इन भिन्नताओं के आधार पर सर्वर और क्लाइंट थ्रेड को एक ही प्रक्रिया में रखना आसान हो सकता है ताकि आप फ़ाइल हैंडल और वैश्विक चर साझा कर सकें। यह 'एक ही प्रक्रिया' दृष्टिकोण के लिए एक तर्क होगा, एक और (छोटा) तर्क यह होगा कि आपको प्रति प्रक्रिया केवल एक 'विंडोज फ़ायरवॉल' पॉप-अप मिलता है। 'अलग प्रक्रिया' दृष्टिकोण के लिए एक तर्क यह होगा कि एक व्यक्ति कई क्लाइंट को चलाने के बिना कई सर्वर चला सकता है। यह सेट-अप की तरह एक समर्पित मेजबान के लिए आदर्श होगा और एक दृष्टिकोण है जिसे हम आमतौर पर पहले व्यक्ति निशानेबाजों में देखते हैं।
अब के रूप में विचार के लिए एक सर्वर प्रक्रिया या थ्रेड-लाइन खेलने के लिए धागा (और शायद एकल-खिलाड़ी के लिए भी) यह एक महान विचार है जो व्यवहार में बहुत उपयोग किया जाता है। आप लोडिंग स्क्रीन को देखकर बहुत सारे गेम कर सकते हैं, 'प्राप्त' जैसे छोटे संकेत इसे दूर कर देंगे। ऐसा करना तर्कसंगत है क्योंकि यदि आप एक मल्टी-प्लेयर बनाने जा रहे हैं तो अधिकांश गेम नियमों को सर्वर द्वारा नियंत्रित किया जाएगा, तो इसने उन्हें एकल-खिलाड़ी के लिए नियंत्रित क्यों नहीं किया है? यह आपके द्वारा लिखे गए कोड को कम कर देता है और क्लाइंट और 'गेम' के बीच एक स्पष्ट अलगाव देता है जो आपके कोड की गुणवत्ता में सुधार करेगा।
अब प्रक्रियाओं और धागों के बीच संवाद कैसे हो? क्रॉस प्रोसेस कम्युनिकेशन बहुत तरीकों से किया जा सकता है, (नाम-) पाइप, साझा मेमोरी, COM, यह वास्तव में आपके द्वारा उपयोग की जाने वाली तकनीक पर निर्भर करता है। हालाँकि, यदि आप एक सर्वर बना रहे हैं, तो आप संभवतः सॉकेट और टीसीपी की पसंद का उपयोग करके एक नेटवर्किंग संस्करण के साथ जाना चाहेंगे, यह निश्चित रूप से है जहां LIDGREN काम में आएगा।
इनमें से बहुत सी तकनीकें क्रॉस थ्रेड कम्युनिकेशन के लिए भी मान्य हैं। लेकिन यह आपके द्वारा उपयोग की जा रही तकनीकों पर और भी अधिक निर्भर करता है। आप फिर से टीसीपी के साथ जा सकते हैं, लेकिन शायद एक सरल प्रणाली भी इवेंट और कुछ मार्शलिंग होगी, हालांकि यह आपके गेम लूप को निर्धारक (2) बना सकता है।
सूत्रों का कहना है
- ऑपरेटिंग सिस्टम डिजाइन और कार्यान्वयन (MINIX पुस्तक), एंड्रयू एस। टेनबाम द्वारा तीसरा संस्करण
- ग्लेन फिडलर द्वारा अपना टाइमस्टेप ठीक करें: http://gafferongames.com/game-physics/fix-your-timestep/