Подробнее об обработке данных
1. Очистка данных: - Сначала данные очищались от лишних символов, ссылок и нормализовались для удобства анализа.
2. Вес источников: - по каждому типу данных был присвоен вес, который влиял на общий результат. Например, реплеи и сообщения чата имели больший вес, чем данные из HLStats или SourceBans. Также вес зависел от качества и количества данных.
3. Обработка: - Для самого анализа использовалась кастомная модель FastText, которая определяла языки с учётом веса каждого источника. Она была не единственная, но основная. Если язык не определялся или уверенность ответа была ниже 80%, я подключал другую модель lingua. Если и она не определяла язык, запись помечалась как ненадёжная и отправлялась на дополнительный анализ через Google Translate API и GPT. Некоторые записи так и остались неопределёнными, так как не удалось найти достаточно информации для точного определения, либо их общий вес оказался очень мал.
4. Подсчет: - После определения языка для каждого поля составлялся массив по игроку с количеством сообщений на каждом языке. Здесь я уже мог сделать выводы о языке игрока. Для каждого игрока я считал среднее значение по всем языкам и выбирал наиболее вероятный язык. Если уверенность была ниже 90% или источников оказалось очень мало - я финально отмечал запись как ненадёжную, а игроку присваивался статус "неизвестный".
Результаты по играм
Данный список составлен из открытых профилей, где есть доступ к играм. Результаты показывают количество копий игры, а не сами игры, откуда пришли игроки.
- Counter-Strike 2 - 488,502
- Deadlock - 429,828
- PUBG: BATTLEGROUNDS - 299,479
- Dota 2 - 292,088
- Apex Legends - 271,514
- Terraria - 231,634
- Tom Clancy's Rainbow Six Siege - 221,669
- Grand Theft Auto V - 208,577
- Team Fortress 2 - 208,222
- Garry's Mod - 205,086
- Wallpaper Engine - 201,039
- Left 4 Dead 2 - 192,809
Источники данных
Реплеи Deadlock:
- Основным источником данных стали игровые реплеи. Из-за отсутствия официального API был разработан собственный парсер мета из GC, позволивший извлечь данные из тысячи матчей.
- Я собрал 2,748,523 матчей собрал и проанализировал 1,710,462 (62%).
- С реплеев извлекались сообщения чата, которые использовались для определения языка.
Сообщения из Dota 2:
- Сообщения из матчей Dota 2 использовались как дополнительный источник текстовых данных.
- Зная как можно собирать сообщения из реплеев по прошлому опыту, я решил использовать этот метод и для Deadlock.
- К сожалению (или к счастью), покрывающей процент сообщений из Доты составил 12,74%, что неплохо на самом деле. Но я ожидал, что будет больше.
Данные HLStats и SourceBans:
- HLStats очень древняя платформа, которая собирает статистику по игрокам в различных онлайн-играх.
- SourceBans - на текущий момент самая популярная платформа для банов в играх на движке Source.
- Данные с этих платформ также использовались для анализа, так как многие проекты CS:GO, CS:S, Garry's Mod, TF2 и другие используют их для сбора статистики.
- Всего я спарсил порядка 100 проектов.
- ~9,000,000 записей из HLStats (покрытие 7.69% → 144,010 перекрестных записей)
- 550,000 записей из SourceBans (покрытие 0.34% → 6,423 перекрестных записей)
Информация с FACEIT:
- Данные с FACEIT оказались очень полезными, так как эта платформа предоставляет и регион и язык игрока.
- Покрытие составило 27,93% (522,677) записей.
Профили и комментарии Steam:
- Это довольно простой способ, на самом деле. Как и в прошлый раз я собирал профили и комментарии игроков, друзей и их профили, комментарии в Steam, что стало самым простым этапом сбора.
- Я также использовал данные с платформ, которые хранят историю о профилях Steam, такие как SteamDB, SteamRep и другие.
- Покрытие 100% записей.
Анализ языкового распределения игроков в Deadlock
Наконец у меня дошли руки до написания статьи об этом исследовании. В отличии от прошлой истории с Dota 2, я решил определять язык, а не страну.
В целом цель исследования — определить языки, которые чаще всего используют игроки Deadlock, и построить статистику их распределения. Для этого я использовал данные из реплеев, сообщений чата, а также дополнительные данные из HLStats и SourceBans. Всего было проанализировано 1,871,556 игроков - это то количество, которое я собрал за 4 месяца активного сбора данных.
Результаты
Английский язык оказался доминирующим среди игроков. В целом это и неудивительно.
Английский - 54.82%
Русский - 30.46%
Китайский - 3.99%
Португальский - 3.03%
Неизвестно - 2.01%
Испанский - 1.55%
Вот я и закончил свое исследование "распределение игроков по языкам в Deadlock".
Английский преобладает, на втором месте русскоязычные игроки. Вместе эти языки составляют >90%.
Как именно происходило совмещение игрока с языковой принадлежностью будет позже.
Продолжая на тему дедлока, я решил посмотреть какие именно игры содержатся у новоприбывших.
Я сделал срез на 1,85кк профилей стима, из них только 60% дают посмотреть свои игры. Ну и дополнительное условие > 10 часов наиграно
1.5 месяца назад решил собрать статистику по deadlock, думаю на этот раз я буду группировать по языкам.
К слову дедлок опробовало уже 1.85 миллиона игроков.
I’ll repeat my tweet: the percentages are not exact. I based them on several parameters, such as in-game chat messages, Steam comments and reviews, game region, guild and party, etc. Each parameter has its own weight in the overall assessment, but it doesn’t provide a complete picture. For example, Belarusians use Russian for communication and often play on Russian servers, so they were counted in the RU region. Some Russian players don’t chat, but may indicate in their guild or profile that they’re in Japan. Peruvians and other South American players often speak Spanish, which makes accurate calculations difficult due to regional cultural nuances. Ultimately, it was easier to estimate based on language rather than countries.
Короче говоря на днях решил сделать статистику по доте. 30.0% игроков - из России. Конечно, зачем делать патчи быстрее, если почти треть игроков не может покупать пиксели? 😅 #dota2
For example, if someone is in a Japanese guild and plays on Japanese servers, they’ll be counted as Japanese. Many players don’t specify their profile details but still play on Japan/Singapore servers. The algorithm categorizes these players as regional based on their server activity.
Конечно! Но сразу предупрежу: проценты явно не точные. Я опирался на несколько параметров, таких как сообщения в игровом чате, комментарии и отзывы игрока в Steam, регион игры, гильдия и пати и т.д. Каждый параметр имеет свой вес в общей оценке, но это не даёт полной картины. Например, белорусы используют русский язык для общения и часто играют на русскоязычных серверах, поэтому у них указывался ру регион. Некоторые ру игроки не пишут в чате, но в гильдии или профиле могут указывать, что находятся в Японии. Перуанцы и жители других стран Южной Америки часто общаются на испанском, что затрудняет точные расчёты из-за особенностей региональной культуры. В итоге было проще сделать оценку на основе языковых признаков, а не по странам.