In einem MMO versuche ich, Daten über das Benutzerverhalten zu sammeln, um die Spielregeln zu optimieren und maximale Benutzerzufriedenheit zu erzielen.
Eine Möglichkeit, dies zu tun, besteht eindeutig darin, bestimmte Dinge von Hand in eine Anwendung zu rollen, ähnlich wie man sie Console.WriteLine()
zum Anzeigen des Inhalts einer Variablen oder der StopWatch()
Klasse verwenden kann, um zu sehen, wie lange die Ausführung dauert. Sie können jedoch anstelle von StopWatch einen Profiler und anstelle von WriteLine einen Debugger verwenden.
Wie soll ich meine Daten sammeln? Gibt es verallgemeinerte Techniken zum Instrumentieren einer Anwendung zur Beobachtung des Benutzerverhaltens oder irgendeine Form von Code-Instrumentierungstechnik?
Außerdem interessiere ich mich nur für Sammeltechniken; Sie können davon ausgehen, dass ich bereits weiß, wie diese Daten übertragen, gespeichert und analysiert werden.
Die "Technik" ist hier so einfach, dass sie es fast nicht verdient, als solche bezeichnet zu werden: Sie zeichnen nur die Daten von Spielsystemen auf, die Sie für relevant halten.
Wie Sie diese Daten (in einer Datenbank, in Dateien usw.) aufzeichnen, ist zu umfassend, um hier diskutiert zu werden (und die Techniken und Muster sind in keinem Fall besonders spielentwicklungsspezifisch, sodass sie für die Diskussion über SO besser geeignet sind) die Frage, welche Systeme relevant sind. Es gibt keine cleveren automatischen Techniken, um diese Fragen zu beantworten. das wäre ein Kunststück der künstlichen Intelligenz.
Das, was Sie bei einem Spiel sicherstellen möchten, bei dem es eine Serverkomponente gibt, ist, dass der Server alle Protokollierungen durchführen sollte, die er kann. Nichts, was Sie vom Client erhalten, kann als vertrauenswürdig eingestuft werden. Insbesondere wenn Sie diese Daten verwenden, um Änderungen am Spiel anzupassen, möchten Sie nicht, dass die Spieler daran manipulieren können.
Der Client sollte nur Statistiken aufzeichnen und übertragen, auf die der Server normalerweise auch keinen Zugriff hat. Wenn Sie beispielsweise UI-Click-Heatmaps aufzeichnen möchten, ist dies wahrscheinlich nur auf dem Client möglich.
quelle
In einem MMO haben Sie bereits Daten darüber, wohin der Benutzer geht, welche Quests er annimmt und welche Ausrüstung er verwendet, die an den Server gesendet wird.
Andere Daten, die Sie interessieren könnten, sind, wie sie die verschiedenen Guis verwenden, wie lange sie Statistik- und Inventarbildschirme geöffnet halten. Sie können beispielsweise aufzeichnen, wie oft eine Funktion mit der Maus oder der Tastatur aktiviert wurde.
Ein wichtiger Faktor besteht darin, dem Benutzer zu ermöglichen, die (nicht kritische) Datenerfassung zu deaktivieren (oder die Erfassung zu deaktivieren), um den Datenschutzbestimmungen zu entsprechen. Und damit der Server entscheiden kann, welche Daten während der Spielsitzung / der nächsten Stunde aufgezeichnet werden sollen, um Ihren Spielern etwas Bandbreite zu ersparen.
quelle