¿Cómo debo recopilar datos de comportamiento del usuario en un MMO?


9

En un MMO, y estoy tratando de recopilar datos sobre los comportamientos de los usuarios con el fin de modificar las reglas del juego para lograr la máxima satisfacción del usuario.

Claramente, una forma de hacerlo es transferir manualmente cosas específicas a una aplicación, como se podría usar Console.WriteLine()para ver el contenido de una variable, o la StopWatch()clase para ver cuánto tiempo lleva ejecutar algo. Pero puede usar un perfilador en lugar de StopWatch, y puede usar un depurador en lugar de WriteLine.

¿Cómo debo recopilar mis datos? ¿Existen técnicas generalizadas para instrumentar una aplicación para observar el comportamiento del usuario, o alguna forma de técnica de instrumentación de código?

Además, solo me interesan las técnicas de recolección; puede suponer que ya sé cómo transmitir, almacenar y analizar dichos datos.

Respuestas:


14

Estamos utilizando la interfaz / arquitectura orientada a comandos para auditar la actividad del usuario.

Significa que las solicitudes al servidor hacen que el lado del servidor cree instancias de clases que representan comandos (acciones atómicas que el usuario puede preformar).

Por ejemplo, supongamos que el usuario realiza una compra en una tienda de artículos:

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

Ahora agregamos funciones de registro / auditoría cmdExecuterque se aplican a todos los comandos. De esta manera, hay poca o ninguna duplicación de código y podemos desactivar la auditoría, ya sea reconfigurando las constantes de una clase de comando específica y / o modificando el cmdExecuter.

Ayuda a mantener las cosas organizadas. Actualmente creamos un registro de base de datos para cada comando "importante". Esto ayuda a rastrear el comportamiento que es interesante para nosotros.

Lectura adicional
de la interfaz orientada a comandos por Martin Fowler


Esto está en la línea de lo que estaba buscando, gracias.
Robert Harvey

@RobertHarvey (Si decide usar esto) Simplemente mantenga las clases de comando delgadas, son métodos después de todo. Se supone que son muy flacos.
AturSams

La ventaja es que podemos ver exactamente qué beneficios se aplicaron al usuario y qué monstruos luchó cuando hubo un pico en xp / s. A veces necesitamos eliminar algunos datos, pero actualmente no hay mucha actividad, por lo que no nos afecta demasiado.
AturSams

7

La "técnica" aquí es tan simple que casi no merece ser llamada como tal: solo registra los datos de los sistemas de juego que cree que son relevantes.

La forma en que registra esos datos (en una base de datos, en archivos, lo que sea) es demasiado amplia para discutir aquí (y las técnicas y patrones no son particularmente específicos del desarrollo del juego en cualquier caso, lo que los hace más adecuados para la discusión sobre SO), como es La cuestión de qué sistemas son relevantes. No hay técnicas automáticas inteligentes para responder esas preguntas; eso sería una hazaña de la inteligencia artificial.

Lo que quiere asegurarse con un juego donde hay un componente de servidor es que el servidor debe hacer todo el registro que pueda. No se puede confiar en nada de lo que obtiene del cliente, y especialmente si va a utilizar esta información para adaptar los cambios al juego, no desea que los jugadores puedan manipularlo.

El cliente solo debe registrar y transmitir estadísticas a las que el servidor normalmente no tendría acceso también. Por ejemplo, si desea grabar mapas de calor de clics en la interfaz de usuario, eso probablemente solo sea factible en el cliente.


2

En un MMO ya tienes datos sobre dónde va el usuario, qué misiones realiza y qué equipo usa para enviar al servidor.

Otra información que puede interesarle es cómo usan las diferentes interfaces gráficas, cuánto tiempo mantienen abiertas las pantallas de estadísticas e inventario. Por ejemplo, puede registrar la cantidad de veces que se ha activado una función con el mouse y el teclado.

Un factor importante es permitir al usuario optar por no participar (o hacer que la recopilación se suscriba) de la recopilación de datos (no críticos) para cumplir con las normas de privacidad. Y para permitir que el servidor decida qué datos se deben registrar durante la sesión del juego / la próxima hora para ahorrar a sus jugadores algo de ancho de banda.


1
y no olvides las tasas de éxito y fracaso para misiones específicas, una buena forma de averiguar si partes del juego son demasiado difíciles o demasiado fáciles.
Jwenting
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.