Bagaimana cara saya mengumpulkan data perilaku pengguna dalam MMO?

9

Dalam MMO, dan saya mencoba mengumpulkan data tentang perilaku pengguna untuk tujuan mengubah aturan permainan untuk mencapai kepuasan pengguna maksimal.

Jelas salah satu cara untuk melakukannya adalah dengan menggulung hal-hal tertentu ke dalam suatu aplikasi, seperti yang mungkin digunakan Console.WriteLine()untuk melihat konten suatu variabel, atau StopWatch()kelas untuk melihat berapa lama waktu yang diperlukan untuk mengeksekusi. Tetapi Anda dapat menggunakan profiler sebagai pengganti StopWatch, dan Anda dapat menggunakan debugger sebagai pengganti WriteLine.

Bagaimana saya harus mengumpulkan data saya? Apakah ada teknik umum untuk menginstruksikan aplikasi untuk mengamati perilaku pengguna, atau beberapa bentuk teknik instrumentasi kode?

Juga, saya hanya tertarik pada teknik pengumpulan; Anda dapat berasumsi bahwa saya sudah tahu cara mengirim, menyimpan, dan menganalisis data tersebut.

Robert Harvey
sumber

Jawaban:

14

Kami menggunakan Antarmuka Berorientasi Perintah / Arsitektur untuk mengaudit aktivitas pengguna.

Ini berarti bahwa permintaan ke server, menyebabkan sisi server membuat instance instance dari kelas yang mewakili perintah (aksi atom yang dapat dilakukan pengguna sebelumnya)

Misalnya, katakanlah pengguna melakukan pembelian di toko item:

//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);

Sekarang kami menambahkan fitur logging / audit dalam cmdExecuteryang berlaku untuk semua perintah. Dengan cara ini ada sedikit atau tidak ada duplikasi kode dan kita dapat mematikan audit, baik dengan mengkonfigurasi ulang konstanta kelas perintah tertentu dan / atau memodifikasi cmdExecuter.

Ini membantu untuk mengatur segalanya. Kami saat ini membuat catatan basis data untuk setiap perintah "penting". Ini membantu melacak perilaku yang menarik bagi kami.

Bacaan Lebih Lanjut
Command-Oriented Inteface oleh Martin Fowler

AturSams
sumber
Ini sesuai dengan apa yang saya cari, terima kasih.
Robert Harvey
@ RobertTarvey (Jika Anda memutuskan untuk menggunakan ini) Jaga agar kelas perintah tetap ramping, mereka semua adalah metode. Mereka seharusnya sangat kurus.
AturSams
Keuntungannya adalah kita bisa melihat persis apa buff yang diterapkan pada pengguna dan monster apa yang dia lawan ketika ada lonjakan xp / s. Kadang-kadang kita perlu menghapus beberapa data tetapi saat ini tidak ada banyak kegiatan sehingga tidak banyak mempengaruhi kita.
AturSams
7

"Teknik" di sini sangat sederhana sehingga hampir tidak layak disebut demikian: Anda hanya merekam data dari sistem permainan yang menurut Anda relevan.

Bagaimana Anda merekam data itu (ke database, ke file, apa pun) terlalu luas untuk dibahas di sini (dan teknik dan pola tidak khususnya pengembangan game spesifik dalam hal apa pun, menjadikannya lebih cocok untuk diskusi tentang SO), seperti halnya pertanyaan tentang sistem mana yang relevan. Tidak ada teknik otomatis yang pintar untuk menjawab pertanyaan-pertanyaan itu; itu akan menjadi prestasi kecerdasan buatan.

Hal yang Anda ingin pastikan dengan permainan di mana ada komponen server adalah bahwa server harus melakukan semua pencatatan yang dapat dilakukannya. Tidak ada yang Anda peroleh dari klien yang bisa dipercaya, dan terutama jika Anda akan menggunakan data ini untuk menyesuaikan perubahan pada gim yang Anda tidak ingin para pemain dapat merusaknya.

Klien hanya harus merekam dan mengirimkan statistik yang biasanya tidak dapat diakses server. Misalnya Anda ingin merekam peta panas klik UI, itu mungkin hanya layak pada klien.


sumber
2

Dalam MMO Anda sudah memiliki data tentang ke mana pengguna akan pergi, pencarian apa yang ia ambil dan peralatan apa yang ia gunakan dikirim ke server.

Data lain yang Anda mungkin tertarik adalah bagaimana mereka menggunakan berbagai gui, berapa lama mereka membiarkan layar stat dan inventaris terbuka. Misalnya, Anda dapat merekam berapa kali fitur diaktifkan dengan mouse vs. keyboard.

Salah satu faktor penting adalah untuk memungkinkan pengguna untuk memilih keluar (atau membuat pengumpulan memilih) dari pengumpulan data (tidak kritis) untuk mematuhi peraturan privasi. Dan untuk memungkinkan server memutuskan data apa yang harus direkam selama sesi permainan / jam berikutnya untuk memberi Anda bandwidth pemain.

aneh ratchet
sumber
1
dan jangan lupa tingkat keberhasilan dan kegagalan untuk pencarian tertentu, cara yang baik untuk mengetahui apakah bagian dari permainan terlalu sulit atau terlalu mudah.
jwenting