खेलों का स्वचालित परीक्षण [बंद]


54

क्या खेलों के स्वचालित परीक्षण के तरीके हैं?

विशिष्ट अनुभवों की सराहना की जाती है, परियोजना के बारे में प्रासंगिक जानकारी जैसे कि मंच और खेल के प्रकार यदि स्पष्टीकरण के साथ मदद मिलती है।

जवाबों:


74

एक व्यक्ति स्वतंत्र खेल। यह विनाशकारी इलाके के साथ एक मल्टीप्लेयर टैंक गेम था, और विनाशकारी इलाके और टक्कर कोड कुछ परतदार साबित हुए।

मैंने कुछ बुनियादी गूंगा एआई ("गूंगा") के साथ हेराफेरी की, मेरा मतलब है "बिल्कुल बेवकूफ" - वे बेतरतीब ढंग से "दुश्मन टैंक की ओर ड्राइव", "दुश्मन टैंक से दूर ड्राइव" और "यादृच्छिक तरीके से ड्राइव" का चयन करेंगे। ", जबकि मुख्य हथियार को बेतरतीब ढंग से फायर करते हुए) और कीप रिकॉर्डिंग करते समय अधिकतम फ्रैमरेट में गेम खेलते हैं। मुझे लगभग 10-15 गुना रियलटाइम मिला। कोड का भारी उपयोग किया गया था, इसलिए यदि कुछ भी गलत हुआ, तो यह त्रुटि रिपोर्ट और प्रारंभिक यादृच्छिक बीज के साथ डिस्क पर पूरे कीप लॉग को डंप कर देगा। मैं तब जाकर केप्ले लॉग को ठीक से स्टेट डुप्लिकेट करने के लिए जा सकता था या त्रुटि रिपोर्ट से डिबग कर सकता था।

मैंने इसे सचमुच महीनों तक लगातार चलाना छोड़ दिया। शुरुआत में यह दुर्घटनाग्रस्त होने के बिना शायद ही एक घंटे का समय मिलेगा - मुझे वहां बैठना पड़ा और इसे एक सप्ताह के लिए दाई करना पड़ा, जिससे प्रति दिन कई अस्पष्ट कीड़े मारे गए। आखिरकार यह उस बिंदु पर पहुंच गया, जहां यह विफलताओं के बीच एक सप्ताह से चल रहा था, जो प्रति दुर्घटना लगभग 1500 खिलाड़ी घंटे का अनुवाद करता है।

यह अमूल्य था और मैं इसे दिल से सुझाता हूं।


1
सच में चालाक! हाँ, कीलॉग शुद्ध जीत है।
डेविड मैकग्रा

1
मुझे भ्रम है: "कुछ बुनियादी गूंगे एआईएस" और "रिकॉर्डिंग कीपेस" को रगड़ते हुए - कौन केसेप्स है? मैंने सोचा कि आप अपने एआई को बिना किसी इंसान के खुद से खेलने दें? क्या आपने वास्तव में अपने एआई को एपीआई फ़ंक्शंस को कॉल करने के बजाय कुंजीशब्दों का अनुकरण करके खेल खेलने दिया था? अब वह चालाक होगा!
डेव ओ।

4
@ हाँ, मैं मानता हूँ कि संभावित रूप से भ्रामक है। एआई को सिम्युलेटेड नियंत्रकों के माध्यम से अपने सभी आउटपुट प्रदान करने के लिए डिज़ाइन किया गया था। उन्होंने गेम स्टेट को इनपुट के रूप में लिया, लेकिन किसी भी फ़ैशन में गेम स्टेट को संशोधित नहीं किया। यह संभवतः माउस यूआई के साथ एक भयानक विचार रहा होगा लेकिन पूरा इंटरफ़ेस गेमपैड के साथ किया गया था, इसलिए यह थोड़ा बदसूरत लेकिन कार्यात्मक था। मैंने AI के वर्चुअल कीबोर्ड को रिकॉर्ड किया, और इसके अलावा, दोस्तों के साथ परीक्षण करते समय एक ही कोड ने वास्तविक कुंजी दर्ज की।
ज़ोरबहट जू

32

एक MMO के लिए मैंने (100ish डेवलपर्स, पीसी केंद्रित) पर काम किया, हमने अलग-अलग सफलता के साथ स्वचालित परीक्षण की एक विशाल विविधता को जोड़ने की कोशिश की। यहाँ क्या काम किया है:

  • हमारी स्वचालित निर्माण प्रक्रिया के दौरान बुनियादी परीक्षण एक बड़ी जीत थे। इसमें एक चरित्र बनाने, नक्शे स्थानांतरित करने, कुछ स्क्रिप्ट योग्य यूआई परीक्षण चलाने और अपेक्षित व्यवहार की तलाश करने जैसे कार्य शामिल थे। इससे पहले कि वे वास्तव में कंपनी के बाकी हिस्सों में पहुंचते, इससे पहले बड़ी संख्या में बग पकड़ लिए।
  • सर्वर के बुनियादी ढांचे के अंत में, हमने अलग-अलग स्वचालित परीक्षणों का एक समूह विकसित किया है, जो विशिष्ट MMO सर्वर लेनदेन का अनुकरण करते हैं। फिर हम प्रदर्शन की तुलना करने या सुरक्षा सुनिश्चित करने के लिए विभिन्न परिस्थितियों में इन्हें वापस खेल सकते हैं। समय के साथ ये परीक्षण अधिक से अधिक सटीक हो गए जब तक कि यह लाइव रिकॉर्ड किए गए डेटा के प्लेबैक में नहीं बदल गया
  • हमने एक "नकली खिलाड़ी" लिखा जो दुनिया भर में बेतरतीब ढंग से घूमता, कूदता, चीजों को मारता और चैट में यादृच्छिक बातें कहता। इसमें भारी संख्या में भौतिकी और बुनियादी ढांचे के मुद्दे पाए गए।

क्या काम नहीं किया:

  • हमने स्वचालित बिल्डर के लिए कुछ बहुत ही विशिष्ट लड़ाकू-उन्मुख स्वचालित परीक्षणों को जोड़ने की कोशिश की, लेकिन यह मूल रूप से कभी काम नहीं किया। कार्यान्वित होने के लगभग 3 दिन बाद तक यह काम करेगा, जब तक कि कोई डिज़ाइनर या कलाकार कुछ बदल न जाए और परीक्षण विफल हो जाए, बिल्ड फेल होने वाले अलार्म को फेंक दें। 90% समय यह एक वास्तविक समस्या नहीं थी। ये परीक्षण बहुत नाजुक थे, और वास्तव में विशिष्ट शक्तियों के साथ एक विशिष्ट मानचित्र पर विशिष्ट गेमप्ले का परीक्षण करना अचूक हो सकता है
  • हमने एक स्वचालित प्रदर्शन परीक्षण लागू करने की कोशिश की, जो ग्राहक के प्रदर्शन (औसत एफपीएस, आदि) की तुलना एक सप्ताह पहले से रिकॉर्ड किए गए प्रदर्शन के खिलाफ करेगा। यह भी काफी नाजुक था क्योंकि जिस डेमो के लिए हमने यह प्रयोग किया था वह काफी हद तक सड़ गया था, और यह पता लगाना मुश्किल था कि क्या प्रदर्शन में कमी या परीक्षण प्रक्रिया के कुछ दुष्प्रभाव के कारण मंदी हुई थी।

18

3 डी से मुकाबला के साथ एक 4x रणनीति के खेल पर काम करना (लगता है कि होमवर्ल्ड मास्टर्स ऑफ ओरियन से मिलता है) कि दुर्भाग्य से कभी दिन की रोशनी नहीं देखी गई क्योंकि कंपनी फंडिंग से बाहर भाग गई थी।

मैंने हमेशा सुनिश्चित किया कि आप मानवीय खिलाड़ियों के बिना खेल खेल सकते हैं ताकि हम रात भर खेल छोड़ सकें।

हम 3 डी का मुकाबला बंद कर सकते हैं (एक यादृच्छिक परिणाम के लिए सरलीकृत) और हमने एआई रणनीति के इंजन को खुद ही खेलना छोड़ दिया। इसमें कई बग और मुद्दे पाए गए। न केवल स्टॉपर कीड़े दिखाते हैं, बल्कि रणनीति कीड़े जहां (जैसे) एआई रणनीतियों का गतिरोध हो जाएगा और "सही" नहीं करने के लिए विभिन्न प्रकार के खर्च होंगे। इस तरह के कीड़े को केवल "गेम खेलने" के लिए स्पॉट करना मुश्किल था।


हम्म, मैंने इसे स्वचालित परीक्षण के रूप में नहीं सोचा होगा - लेकिन मुझे लगता है कि आप सही हैं। मैं कुछ वर्षों से एक ही काम कर रहा हूं, बस कभी इस तरह से नहीं सोचा था।
मिमी जूल

13

पहले व्यक्ति शूटर पर मैंने काम किया (डिसेंट 3 - लिनक्स / मैक / विंडो, ~ 1999 में टीम पर 30 लोग), डेमो रिकॉर्डिंग / प्लेबैक क्षमता बेहद उपयोगी निकली। मैंने एक विकल्प बनाया, जहां आप डेमो को तेजी से प्लेबैक कर सकते थे क्योंकि खेल फ्रेम प्रदान कर सकता था, और चीजों के एक गुच्छा के बाद प्रदर्शन को सत्यापित करने का एक शानदार तरीका बन गया।

यह भी प्रतिपादन प्रणाली से परे कोड का एक बहुत प्रयोग किया, तो यह एक अच्छा पवित्रता की जाँच थी। परिवर्तनों का एक गुच्छा बनाने के बाद मैं सिर्फ 10 मिनट के गेमप्ले का डेमो प्लेबैक चला सकता था। कई बार यह एक ऐसे क्षेत्र में एक बग को पकड़ लेगा जिसे मैंने खुद जांचने के लिए नहीं सोचा होगा।


8

हमारे पास एक ओपनवर्ल्ड शूटर (x360, PS3, पीसी) था जो बिल्ड सर्वर पर एक त्वरित स्मोकेस्ट का उपयोग करता था - यह गेम लोड करता था, सामने के छोर के माध्यम से आगे बढ़ता था, [अवतार] फॉरवर्ड, एक स्क्रीनशॉट को डंप करता था, और बाहर निकलता था। अगर cctray ने पाया कि स्वच्छ निकास निर्माण एक सफलता थी।

हमने इसे परियोजना के अंतिम वर्ष के लिए चलाया, और ~ 100 devs की टीम के आकार के साथ।

यह शोस्टॉपिंग बग्स को पकड़ने में प्रभावी था, लेकिन एक ऐसा निर्माण करना आसान था जो स्मोकेटेस्ट को पारित कर दे, लेकिन अधिकांश "वास्तविक" स्तरों में विफल रहा, या मल्टीप्लेयर में काम नहीं किया, या एआई को नॉबल्ड किया, इसलिए यह सही नहीं था। यह निश्चित रूप से करने लायक था।

मैंने सुना है जब से मैंने छोड़ा है कि उन्होंने धूम्रपान करने वालों की एक बड़ी श्रृंखला को चलाना शुरू कर दिया है, कई पीसी तक खेती की है। जाहिरा तौर पर धूम्रपान करने वालों को बनाए रखना एक मुद्दा है, और एक छोटी सी टीम है जो केवल बिल्ड सर्वर और सॉफ्टवेयर को बनाए रखने के लिए समर्पित है, इसलिए मैं यह नहीं कह सकता कि यह सफल रहा है या नहीं।


6

Crysis 2 के विकास के दौरान स्वचालित परीक्षण के साथ मेरा अनुभव यहाँ उपलब्ध है: http://yetanothergameprogrammingblog.blogspot.com/2010/06/aaa-automated-testing.html

सारांश:

  • स्वचालित परीक्षण ने डिलिवरेबिलिटी स्थिरता में सुधार किया, जिससे कंटेंट क्रिएटर्स और इंजीनियरों दोनों के लिए उत्पादकता बढ़ गई
  • स्वचालित गुणवत्ता कोड गुणवत्ता में सुधार करने और ओवरटाइम काम करने की संभावना को कम करने के लिए एक प्रभावी उपकरण है
  • एक पूरे के रूप में खेल उद्योग सामान्य रूप से बहुत प्रतिक्रियात्मक है, स्वचालित परीक्षण के खिलाफ कई तर्कहीन तर्क मिलते हैं
  • इसे परीक्षण न कहें, इसे कुछ और कहें, लगभग कुछ और (व्यवहार-विकास को देखें)
  • लचीला रहें, अच्छे परीक्षण लिखना कठिन है और ऐसे कौशल की आवश्यकता है जो गेम इंडस्ट्री में व्यापक रूप से उपलब्ध नहीं हैं

2

खेल विकास वास्तव में उन मामलों में से एक है जहां यूनिट परीक्षण मुझे कुछ समझ में आता है, क्योंकि असतत प्रणालियों के बीच बातचीत इतनी आम है। डिज़ाइन-बाय-कॉन्ट्रैक्ट बेशक इसका एक हिस्सा है, और विकास के दिन से ही इसकी योजना बनाई जानी चाहिए, लेकिन मैं यह नहीं देखता कि इसे लागू करने के लिए बाद में यह मानकर इसे लागू क्यों नहीं किया जा सकता।

कठिन हिस्सा, ज़ाहिर है, एकीकरण परीक्षण है। एक खेल के बहुत सारे डेमो-लूपिंग या इसे कुछ-कुछ करके परीक्षण किया जा सकता है, लेकिन यह सामान वैचारिक रूप से डिबग करने के लिए काफी आसान है - जहां मैं अपना समय बिताने में अधिक रुचि रखता हूं वह उन बगों को उजागर कर रहा है जो तब होता है जब कोई खिलाड़ी कुछ करता है, खिलाड़ी बग को कभी नहीं देखता है, इस मानसिकता के साथ, यह स्पष्ट रूप से कम महत्वपूर्ण है कि खिलाड़ी क्या करता है।

जो काफी मुश्किल है, जाहिर है। अन्य अनुप्रयोगों पर काम करने वाले रणनीति (फ़ज़िंग, अपेक्षित-पास / अपेक्षित-असफल, आदि) यहाँ इतनी अच्छी तरह से काम नहीं करते हैं। स्क्रिप्ट करने योग्य प्रणालियों में ऐसा लगता है कि किसी खिलाड़ी को अनुकरण करने के लिए स्क्रिप्ट के एक परीक्षण सेट का निर्माण करने का तरीका है (देखें JZig का जवाब)। लेकिन सामान के लिए विशेष रूप से परीक्षण करना एक खिलाड़ी का सीधे सामना कर सकता है जो मुझे मानव और स्वचालित परीक्षण उद्देश्यों के लिए अपना समय केंद्रित करने के लिए सबसे अच्छी जगह के रूप में प्रभावित करता है।


9
लेकिन खिलाड़ी कभी भी ऐसा नहीं करते हैं जो आप करने की उम्मीद करेंगे। इसीलिए आपको कॉल ऑफ़ ड्यूटी में एलीवेटर ग्लिट्स जैसे सामान दिखाई नहीं देते हैं। क्योंकि वहाँ एक हजार लोग सब कुछ कर रहे हैं कि डेवलपर्स और परीक्षकों ने कभी कोशिश नहीं की। जैसे ही कोई व्यक्ति एक जुनूनी-बाध्यकारी 16 साल के गेमर का सही अनुकरण करता है, हम खेल विकास की विशिष्टता तक पहुँच चुके हैं :)
केसी वैगनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.