हर रिलीज़ से पहले अपना गेम 100 बार खुद खेलना बंद करें—रोबोट को उबाऊ काम करने दें जबकि आप मज़ेदार हिस्सों को शानदार बनाते रहें।
मुझे वह सटीक क्षण याद है जब मुझे एहसास हुआ कि हम गलत कर रहे थे। रात के 2 बजे थे, और मैं उसी इन्वेंट्री स्क्रीन पर तीन सौवीं बार क्लिक कर रहा था, यह जाँचते हुए कि एक “मामूली” इंजन अपडेट के बाद तलवार का आइकन अब भी सही दिखता है या नहीं। मेरे लीड ने आकर कहा, “पता है, इसे ऑटोमेटेड गेम टेस्टिंग को संभालना चाहिए, है ना?” गेम चेंजर।
आप उस डूबती हुई सी अनुभूति को जानते हैं जब कोई शानदार नया फीचर गलती से ट्यूटोरियल में गहरे छिपी किसी चीज़ को तोड़ देता है? मैनुअल क्यूए आवश्यक है, लेकिन इंसान थक जाते हैं, एज केस चूक जाते हैं, और सच कहें तो उन्हें अजीब खिलाड़ी व्यवहारों की खोज करनी चाहिए, न कि यह सत्यापित करना चाहिए कि 300 आइटम अब भी सही ढंग से स्टैक होते हैं। यहीं पर टेस्ट स्क्रिप्ट लिखना आपकी समझदारी बचाता है।
मुख्य बदलाव? अपने गेम कोड को किसी भी अन्य सॉफ़्टवेयर प्रोजेक्ट की तरह मानें जो मज़बूत गेम डेवलपमेंट टेस्टिंग टूल्स का हकदार है। अधिकांश इंजन अब बिल्ट-इन या समुदाय-समर्थित गेम टेस्टिंग फ्रेमवर्क के साथ आते हैं, इसलिए हर बिल्ड को बिना किसी सुरक्षा जाल के चलाने का कोई बहाना नहीं है। चाहे आप Unity में हों या Unreal में, आपके पास ऐसे टेस्ट का सूट हो सकता है जो आपके कॉफी पीते समय चलता रहे। आइए बात करें कि इसे वास्तव में कैसे किया जाए, स्क्रिप्ट से लेकर निरंतर एकीकरण तक, रचनात्मक चिंगारी खोए बिना।
गेम्स के लिए टेस्ट स्क्रिप्ट कैसे लिखें, यह पहला कदम अजीब तरह से औपचारिक लगता है: आप ऐसा कोड लिख रहे हैं जो आपका गेम खेलता है। छोटे से शुरू करें। पूरे ड्रैगन बॉस फाइट का परीक्षण करने के बजाय, एक स्क्रिप्ट लिखें जो सिर्फ मुख्य मेनू खोलती है, जाँचती है कि “New Game” बटन मौजूद है, और उसे टैप करती है। Unity में, यह टेस्ट फ्रेमवर्क का उपयोग करके एक प्लेमोड टेस्ट (playmode test) है। आप [UnityTest] एट्रिब्यूट के साथ एक मेथड लिखते हैं, SceneManager.LoadScene का उपयोग करते हैं, और फिर यह एसर्ट करते हैं कि टाइटल स्क्रीन लोड होने के बाद, सही टैग वाला कोई GameObject सक्रिय है। बूम—आपकी पहली स्वचालित सैनिटी जाँच। जैसे-जैसे आप सहज होते जाएँगे, आप तुच्छ जाँचों से आगे बढ़कर दुश्मन पैदा करने, इनपुट सीक्वेंस सिम्युलेट करने, और यह सत्यापित करने लगेंगे कि जब स्लाइम हमला करता है तो खिलाड़ी का स्वास्थ्य ठीक उतनी ही मात्रा में गिरता है।
Unity ऑटोमेटेड टेस्टिंग अब आश्चर्यजनक रूप से सुलभ है। पैकेज एडिटर के साथ आता है, और आप Edit Mode टेस्ट (तर्क, कोई सीन नहीं) और Play Mode टेस्ट (रनटाइम, पूर्ण सिमुलेशन) बना सकते हैं। मैं अक्सर Edit Mode में इन्वेंट्री सिस्टम को अलग करके शुरुआत करता हूँ: एक आइटम जोड़ें, वजन जाँचें, डुप्लिकेट यूनिक आइटम जोड़ने की कोशिश करें—यह सब बिना कोई भारी सीन लोड किए। फिर Play Mode टेस्ट विज़ुअल फीडबैक संभालते हैं। एक आम तरकीब है अपने टेस्ट में UnityEngine.InputSystem रैपर का उपयोग करके गेमपैड या कीबोर्ड इवेंट सिम्युलेट करना, ताकि आप सचमुच प्रोग्रामेटिक रूप से गेम “खेल” रहे हों। एक हेल्पर लिखें जो दरवाज़े के पास ‘E’ दबाता है, फिर एसर्ट करें कि खिलाड़ी का ट्रांसफ़ॉर्म नए कमरे में बदल गया। आपको ऐसे पैटर्न दिखाने वाले दर्जनों गेम क्यूए ऑटोमेशन ट्यूटोरियल मिलेंगे—एक बार लय दिख गई, तो समझ आ जाता है।
Unreal engine टेस्ट ऑटोमेशन एक समान रास्ता अपनाता है लेकिन अपने अलग अंदाज़ में। UE का Automation System आपको सीधे एडिटर में Functional Tests लिखने देता है, अक्सर Blueprints का उपयोग करके यदि आप विज़ुअल स्क्रिप्टिंग पसंद करते हैं। C++ वालों के लिए, आपके पास FAutomationTestBase क्लास है। मुझे एक लेवल में “Functional Test Actors” रखना, क्रियाओं का एक क्रम जोड़ना (यहाँ जाओ, वहाँ देखो, फायर करो), और फिर सफलता की शर्तें सेट करना पसंद है। यह एक बहुत आज्ञाकारी अभिनेता को निर्देश देने जैसा है। और चूँकि Unreal प्रोजेक्ट विशाल होते हैं, आप मैप या टैग के आधार पर फ़िल्टर करके टेस्ट चला सकते हैं, फिजिक्स या रेप्लिकेशन में रिग्रेशन को पकड़ सकते हैं इससे पहले कि कोई मानव परीक्षक बैठे। गेम टेस्टिंग की कुछ सर्वोत्तम प्रथाएँ जो मैंने देखी हैं, उनमें इन्हें Gauntlet ऑटोमेशन फ्रेमवर्क के साथ जोड़ना शामिल है मल्टीप्लेयर स्ट्रेस टेस्ट के लिए, दर्जनों डमी खिलाड़ियों को सहजता से एक सेशन में शामिल होने का सिमुलेशन करना।
अब, एक बार जब आपके पास ढेर सारे टेस्ट हो जाते हैं, तो अगर आप उन्हें केव











