MMO에서 사용자 행동 데이터를 어떻게 수집해야합니까?


9

MMO에서 최대 사용자 만족도를 달성하기 위해 게임 규칙을 조정하기 위해 사용자 행동에 대한 데이터를 수집하려고합니다.

분명히 한 가지 방법은 특정 내용을 응용 프로그램에 수동으로 롤링하는 것 Console.WriteLine()입니다. 변수의 내용을 보거나 StopWatch()클래스를 실행하는 데 걸리는 시간을 보는 것과 매우 비슷 합니다. 그러나 StopWatch 대신 프로파일 러를 사용할 수 있고 WriteLine 대신 디버거를 사용할 수 있습니다.

데이터를 어떻게 수집해야합니까? 사용자 행동을 관찰하기 위해 응용 프로그램을 계측하는 일반적인 기술이나 코드 계측 기술이 있습니까?

또한 수집 기술에만 관심이 있습니다. 데이터를 전송, 저장 및 분석하는 방법을 이미 알고 있다고 가정 할 수 있습니다.

답변:


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를 수정하여 감사를 끌 수 있습니다.

일을 정리하는 데 도움이됩니다. 현재 각 "중요"명령에 대한 데이터베이스 레코드를 작성합니다. 이것은 우리에게 흥미로운 행동을 추적하는 데 도움이됩니다.

Martin Fowler의 추가 독해
명령 지향 인터페이스


이것은 내가 찾던 것의 정맥에 있습니다. 감사합니다.
Robert Harvey

@RobertHarvey (이를 사용하기로 결정한 경우) 명령 클래스를 작게 유지하면 결국 메소드입니다. 그들은 매우 마른 것으로 간주됩니다.
AturSams

이점은 사용자에게 적용된 버프와 xp / s가 급등했을 때 어떤 몬스터가 싸웠는지 정확히 알 수 있다는 것입니다. 때로는 일부 데이터를 삭제해야하지만 현재 활동이 많지 않아 많은 영향을 미치지 않습니다.
AturSams

7

여기서 "기술"은 너무 단순하여 호출 할 가치가 거의 없습니다. 관련이 있다고 생각되는 게임 시스템의 데이터 만 기록하면됩니다.

이 데이터 (데이터베이스, 파일 등)를 기록하는 방법 은 여기에서 논의하기에는 너무 광범위합니다 (기술과 패턴은 특별한 경우 게임 개발이 아니므로 SO에 대한 토론에 더 적합합니다). 어떤 시스템이 관련 이 있는지에 대한 질문 . 이러한 질문에 대답 할 수있는 영리한 자동 기술은 없습니다. 그것은 인공 지능의 위업 일 것입니다.

서버 구성 요소가있는 게임에서 확인하려는 것은 서버가 가 가능한 모든 로깅을 수행해야한다는 것입니다. 클라이언트로부터 얻은 정보는 신뢰할 수 없으며, 특히이 데이터를 사용하여 게임 변경 사항을 조정하려는 경우 플레이어가 조작 할 수 없도록하려는 경우가 있습니다.

클라이언트는 서버가 일반적으로 액세스 할 수없는 통계 만 기록하고 전송해야합니다. 예를 들어 UI 클릭 히트 맵을 기록하려는 경우 클라이언트에서만 가능합니다.


2

MMO에는 사용자가 어디로 가고 있는지, 어떤 퀘스트를 수행하고 어떤 장비를 사용하여 서버로 전송했는지에 대한 데이터가 이미 있습니다.

관심있는 다른 데이터는 다양한 GUI를 사용하는 방법, 통계 및 인벤토리 화면을 얼마나 오랫동안 열 었는지에 관한 것입니다. 예를 들어 마우스와 키보드로 기능이 활성화 된 횟수를 기록 할 수 있습니다.

중요한 요소 중 하나는 사용자가 (중요하지 않은) 데이터 수집을 옵트 아웃 (또는 수집 옵트 인)하여 개인 정보 보호 규정을 준수하도록하는 것입니다. 또한 서버가 게임 세션 / 다음 시간 동안 어떤 데이터를 기록해야하는지 결정하여 플레이어에게 대역폭을 절약 할 수 있습니다.


1
특정 퀘스트의 성공률과 실패율을 잊지 마십시오. 게임의 일부가 너무 어렵거나 쉬운 지 알 수 있습니다.
jwenting
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.