मुझे एक MMO में उपयोगकर्ता व्यवहार डेटा कैसे एकत्र करना चाहिए?


9

एक MMO में, और मैं अधिकतम उपयोगकर्ता संतुष्टि को प्राप्त करने के लिए खेल के नियमों को ट्विक करने के उद्देश्य से उपयोगकर्ता व्यवहार के बारे में डेटा एकत्र करने की कोशिश कर रहा हूं।

स्पष्ट रूप से ऐसा करने का एक तरीका है कि विशिष्ट चीज़ों को एक अनुप्रयोग में रोल करना, बहुत कुछ Console.WriteLine()एक चर की सामग्री को देखने के लिए उपयोग कर सकता है , या StopWatch()वर्ग को यह देखने के लिए कि कितना समय लगता है। लेकिन आप स्टॉपवॉच के बदले में एक प्रोफाइलर का उपयोग कर सकते हैं, और आप राइटलाइन के बदले डिबगर का उपयोग कर सकते हैं।

मुझे अपना डेटा कैसे एकत्र करना चाहिए? क्या उपयोगकर्ता व्यवहार, या कोड इंस्ट्रूमेंटेशन तकनीक के कुछ रूप का निरीक्षण करने के लिए किसी एप्लिकेशन को इंस्ट्रूमेंट करने के लिए सामान्यीकृत तकनीकें हैं?

इसके अलावा, मुझे केवल संग्रह तकनीकों में दिलचस्पी है; आप यह मान सकते हैं कि मैंने पहले ही कहा कि डेटा को कैसे प्रसारित करना, संग्रहित करना और विश्लेषण करना है।

जवाबों:


14

हम उपयोगकर्ता गतिविधि का ऑडिट करने के लिए कमांड ओरिएंटेड इंटरफेस / आर्किटेक्चर का उपयोग कर रहे हैं ।

इसका अर्थ है कि सर्वर से अनुरोध, सर्वर की ओर से उन कक्षाओं के इंस्टेंसेस को प्रेरित करने का कारण बनता है जो कमांड का प्रतिनिधित्व करते हैं (परमाणु क्रियाएं उपयोगकर्ता को पूर्ववत कर सकती हैं)।

उदाहरण के लिए, मान लें कि उपयोगकर्ता किसी आइटम स्टोर में खरीदारी करता है:

//We could have done something like
someShop.sell(item, player); // This function deducts money from the player
                             // and stores the new item in their inventory

//Instead we do this:
$buyItemCmd = new BuyItemCommand(item); // The player is already known from the sessionId
$cmdExecuter.run($buyItemCmd);

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

यह चीजों को व्यवस्थित रखने में मदद करता है। वर्तमान में हम प्रत्येक "महत्वपूर्ण" कमांड के लिए एक डेटाबेस रिकॉर्ड बनाते हैं। यह व्यवहार को ट्रैक करने में मदद करता है जो हमारे लिए दिलचस्प है।

मार्टिन फॉलर द्वारा आगे पढ़ना
कमांड-ओरिएंटेड इंटेफेस


यह मैं क्या देख रहा था की नस में है, धन्यवाद।
रॉबर्ट हार्वे

@RobertHarvey (यदि आप इसका उपयोग करने का निर्णय लेते हैं) बस कमांड कक्षाओं को पतला रखें, वे सब के बाद के तरीके हैं। वे बहुत पतले होने वाले हैं।
AturSams

इसका फायदा यह है कि हम ठीक-ठीक देख सकते हैं कि उपयोगकर्ता के लिए क्या बफ़र्स लगाए गए थे और xp / s में स्पाइक होने पर उसने क्या राक्षस लड़ा था। कभी-कभी हमें कुछ डेटा हटाने की आवश्यकता होती है, लेकिन वर्तमान में बहुत अधिक गतिविधि नहीं है, इसलिए यह हमें अधिक प्रभावित नहीं करता है।
AturSams

7

यहां "तकनीक" इतनी सरल है कि यह लगभग इस तरह से बुलाया जाने योग्य नहीं है: आप गेम सिस्टम से डेटा को रिकॉर्ड करते हैं जिसे आप प्रासंगिक मानते हैं।

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

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

क्लाइंट को केवल उन आंकड़ों को रिकॉर्ड करना और संचारित करना चाहिए, जो सर्वर के पास सामान्य रूप से नहीं पहुंचेंगे। उदाहरण के लिए, आप यूआई पर क्लिक करके हीट मैप्स रिकॉर्ड करना चाहते हैं, जो कि संभवतः क्लाइंट पर संभव है।


2

एक पैराग्राफ में आपके पास पहले से ही डेटा होता है कि उपयोगकर्ता कहां जा रहा है, वह कौन सा क्वैश्चन लेता है और सर्वर पर भेजे गए कौन से उपकरण का उपयोग करता है।

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

एक महत्वपूर्ण कारक उपयोगकर्ता को गोपनीयता नियमों के अनुपालन के लिए (गैर-महत्वपूर्ण) डेटा संग्रह को ऑप्ट-आउट (या संग्रह को ऑप्ट-इन) करने की अनुमति देना है। और सर्वर को यह तय करने की अनुमति देने के लिए कि आपके खिलाड़ियों को कुछ बैंडविड्थ को छोड़ने के लिए खेल सत्र / अगले घंटे के दौरान क्या डेटा रिकॉर्ड किया जाना चाहिए।


1
और विशिष्ट quests के लिए सफलता और असफलता की दर को मत भूलना, यह पता लगाने का अच्छा तरीका है कि क्या खेल के हिस्से बहुत कठिन हैं या बहुत आसान हैं।
jwenting
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.