ฉันจะรวบรวมข้อมูลพฤติกรรมผู้ใช้ใน MMO ได้อย่างไร


9

ใน MMO และฉันพยายามรวบรวมข้อมูลเกี่ยวกับพฤติกรรมของผู้ใช้เพื่อวัตถุประสงค์ในการปรับแต่งกฎของเกมเพื่อให้ผู้ใช้พึงพอใจสูงสุด

เห็นได้ชัดว่าวิธีหนึ่งที่จะทำได้คือการม้วนสิ่งที่เฉพาะเจาะจงลงในแอปพลิเคชันเช่นเดียวConsole.WriteLine()กับที่ใช้ในการดูเนื้อหาของตัวแปรหรือStopWatch()คลาสเพื่อดูว่าจะใช้เวลาดำเนินการนานแค่ไหน แต่คุณสามารถใช้ profiler แทน StopWatch และคุณสามารถใช้ดีบักเกอร์แทน WriteLine

ฉันควรรวบรวมข้อมูลของฉันอย่างไร? มีเทคนิคทั่วไปสำหรับการใช้งานแอพพลิเคชั่นเพื่อสังเกตพฤติกรรมของผู้ใช้หรือบางรูปแบบของเทคนิคการใช้เครื่องมือรหัสหรือไม่?

นอกจากนี้ฉันสนใจเทคนิคการสะสมเท่านั้น คุณสามารถสันนิษฐานได้ว่าฉันรู้วิธีส่งจัดเก็บและวิเคราะห์ข้อมูลดังกล่าวแล้ว

คำตอบ:


14

เราใช้ส่วนต่อประสาน / สถาปัตยกรรมคำสั่งเพื่อตรวจสอบกิจกรรมของผู้ใช้

หมายความว่าการร้องขอไปยังเซิร์ฟเวอร์ทำให้ฝั่งเซิร์ฟเวอร์ยกตัวอย่างอินสแตนซ์ของคลาสที่แสดงคำสั่ง (การกระทำของอะตอมที่ผู้ใช้สามารถ preform)

ตัวอย่างเช่นสมมติว่าผู้ใช้ทำการซื้อในร้านค้าไอเท็ม:

//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 อีกครั้ง

ช่วยจัดระเบียบสิ่งต่าง ๆ ขณะนี้เราสร้างระเบียนฐานข้อมูลสำหรับแต่ละคำสั่ง "สำคัญ" สิ่งนี้ช่วยติดตามพฤติกรรมที่น่าสนใจสำหรับเรา

การอ่านเพิ่มเติม
Inteface เชิงคำสั่งโดย Martin Fowler


นี่คือเส้นเลือดของสิ่งที่ฉันกำลังมองหาขอบคุณ
Robert Harvey

@RobertHarvey (หากคุณตัดสินใจที่จะใช้สิ่งนี้) เพียง แต่รักษาคลาสคำสั่งให้เพรียวบางมันเป็นวิธีหลังจากทั้งหมด พวกเขาควรจะผอมมาก
AturSams

ข้อได้เปรียบคือเราสามารถเห็นได้ว่าบัฟถูกนำไปใช้กับผู้ใช้อย่างไรและสัตว์ประหลาดที่เธอต่อสู้เมื่อมีสไปค์ใน xp / s บางครั้งเราจำเป็นต้องลบข้อมูลบางส่วน แต่ในปัจจุบันมีกิจกรรมไม่มากจึงไม่ส่งผลกระทบต่อเรามากนัก
AturSams

7

"เทคนิค" อยู่ที่นี่ง่ายมากจนแทบไม่สมควรถูกเรียกเช่นนี้: คุณเพียงแค่บันทึกข้อมูลจากระบบเกมที่คุณคิดว่ามีความเกี่ยวข้อง

วิธีที่คุณบันทึกข้อมูล (ไปยังฐานข้อมูลไปยังไฟล์อะไรก็ตาม) นั้นกว้างเกินกว่าจะอภิปรายได้ที่นี่ (และเทคนิคและรูปแบบนั้นไม่เฉพาะการพัฒนาเกมโดยเฉพาะในกรณีใด ๆ คำถามที่เกี่ยวข้องกับระบบ ไม่มีเทคนิคอัตโนมัติที่ชาญฉลาดในการตอบคำถามเหล่านั้น นั่นน่าจะเป็นฝีมือของปัญญาประดิษฐ์

สิ่งที่คุณต้องการตรวจสอบให้แน่ใจด้วยเกมที่มีส่วนประกอบของเซิร์ฟเวอร์คือเซิร์ฟเวอร์ควรทำการบันทึกทั้งหมดที่ทำได้ ไม่มีอะไรที่คุณได้รับจากลูกค้าที่สามารถเชื่อถือได้และโดยเฉพาะอย่างยิ่งถ้าคุณกำลังจะใช้ข้อมูลนี้เพื่อปรับแต่งการเปลี่ยนแปลงของเกมที่คุณไม่ต้องการให้ผู้เล่นสามารถแก้ไขได้

ลูกค้าควรบันทึกและส่งสถิติที่เซิร์ฟเวอร์ไม่สามารถเข้าถึงได้เช่นกัน ตัวอย่างเช่นคุณต้องการบันทึก UI การคลิกแผนที่ความร้อนนั่นอาจเป็นไปได้สำหรับลูกค้าเท่านั้น


2

ใน MMO คุณมีข้อมูลเกี่ยวกับสถานที่ที่ผู้ใช้ไปซึ่งเควสต์ที่เขาใช้และอุปกรณ์ที่เขาใช้ส่งไปยังเซิร์ฟเวอร์

ข้อมูลอื่น ๆ ที่คุณอาจสนใจคือวิธีที่พวกเขาใช้ guis ต่างๆนานแค่ไหนที่พวกเขาเปิดหน้าจอสถิติและสินค้าคงคลัง ตัวอย่างเช่นคุณสามารถบันทึกจำนวนครั้งที่เปิดใช้งานฟีเจอร์ด้วยเมาส์และคีย์บอร์ด

ปัจจัยหนึ่งที่สำคัญคือการอนุญาตให้ผู้ใช้ยกเลิก (หรือทำให้การรวบรวมไม่เข้าร่วม) ของการรวบรวมข้อมูล (ไม่สำคัญ) เพื่อให้สอดคล้องกับข้อกำหนดความเป็นส่วนตัว และเพื่อให้เซิร์ฟเวอร์สามารถตัดสินใจได้ว่าข้อมูลใดที่ควรบันทึกในช่วงเซสชั่นเกม / ชั่วโมงถัดไปเพื่อสำรองแบนด์วิธของผู้เล่นของคุณ


1
และอย่าลืมอัตราความสำเร็จและความล้มเหลวสำหรับเควสที่เฉพาะเจาะจงวิธีที่ดีในการค้นหาว่าบางส่วนของเกมยากหรือง่ายเกินไปหรือไม่
jwenting
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.