1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オンラインゲームの人間関係をネットワークで可視化しようとしてみた

1
Posted at

はじめに

他の人が誰と友達か、気になりませんか?僕はめちゃくちゃ気になります!

ログレスというオンラインゲームをやっているんですが、このゲームのプレイヤーのつながりをネットワークで可視化しました!
→ https://denlgrs.github.io/logres-network/

こんな感じで、つながりがある(と推定される)プレイヤー同士の間に線が引いています。
image.png
image.png

丸がプレイヤーです。
仲の良さそうなプレイヤーたちがかたまりになっていたりして、眺めているだけでも楽しいです。

では、これをどうやって作るのかを見ていきます。
……といきたいところですが、長くなるので今回は前半戦です。
まずは、とりあえずそれっぽいネットワークを作るところまでやります。

どうやったら仲がいいかどうか分かるのか?

仲がいい人同士をデータから見つけるにはどうすればいいでしょうか?
正直、そんなの直接は分かりません。仲の良さを返してくれるAPIは存在しないので...。

なので、所属グループを見ます。

例えば学校で考えてみます。
同じクラスにいる人同士って、めちゃくちゃ仲がいいわけじゃなくても、少なくとも顔は知っていそうですよね。このように、「同じ集まりにいる」というだけでも、ある程度の関係はありそうです。

というわけで今回は、「同じグループにいる人同士は、ある程度仲がいい」という単純な仮定を置いて勧めます。

ゲームのグループからネットワークを作る

このログレスというゲームにはグループという機能があります。イメージとしてはLINEグループみたいなものです。
同じグループのプレイヤーとチャットすることができます。雑談やパーティ集め、攻略情報の共有などに使われています。

ここで重要なのは、プレイヤーは複数のグループに入れるということです。
image.png

この図では、オレンジがグループ、青がプレイヤーです。「ルーシー」や「ケミカル」などが複数のグループに入っていることが分かります。

中には170個以上のグループに入っている人もいます。とんでもない社交性ですね!

こうした人が、グループをまたいで人をつなげるので、
自然とネットワーク構造ができあがります。

これを使うと、例えばこんなことが分かります。

  • だれが中心的なのか(=スーパースターは誰か)
  • どんな仲良しのかたまりがあるか
  • いろんなプレイヤーをつないでいるのは誰か

つまり、ネットワークにすると人間関係がちょっと分かるということです!
というわけでネットワークを作っていきましょう。

必要なデータはシンプルです。

  • グループのリスト
  • 各グループに所属しているプレイヤー

そして嬉しいことに、このゲームはうまいことやるとこのデータが取れてしまいます(少なくともこの記事を書いている時点では)。

まずはそのままつなぐ

集めたデータを使って、まずは素直にネットワークを作ります。やることは簡単で、グループとプレイヤーを線でつないでいきます。
つまり、プレイヤー → グループ → プレイヤーという構造になります。

nibu_network.png

これでプレイヤーとグループのネットワークが作れます。

でも、グループ自体にはあまり興味がないです。知りたいのは「プレイヤー同士がどうつながっているか」です。
なので、グループを消してしまいます。
そして、同じグループに所属しているプレイヤー同士を直接つなぐように変換します。

ichibu_network.png

これでプレイヤーだけのネットワークができました!やっと、人間関係(っぽい)ものが見えるようになります。

ちなみにこの変換はPythonのnetworkxライブラリを使えば簡単にできます。最悪、AIに聞けば全部教えてくれます。便利ですね!

実際に作ったネットワーク

これが実際に作ったネットワークです!
player_graph_full_edge.png

何やら、カラフルな"かたまり"に分かれているのが見えますね。これはプレイヤーのサーバごとに色分けしています。

このゲームはもともとワールドと呼ばれるサーバに分かれていて、別のサーバのプレイヤーとは交流できませんでした(今は半分統一されています)。

つまり昔は、同じサーバーの人としかグループを作れなかったわけです。その名残でかたまりができています。
ゲームの歴史がネットワークからうかがえて、なかな興味深いです。

ズームしてみる

さて、全体像はなんとなく分かりました。
でも本当に知りたいのは、もっと細かいところです。もっと個人間のつながりが知りたいです。つまり、誰と誰が仲良しなのかです。

なので、ズームしてみましょう。
image.png
名前付きの丸がプレイヤーで、背景のカラフルな線がつながりです。

...どうでしょう?
分かります?
ぶっちゃけ、線が多すぎて何も分からん

実は、同じグループの人同士を単純につなぐだけではうまくいきません。

ネットワークが密すぎる

このネットワークは線が多すぎて、誰と誰がつながっているのか全然分かりません。ちなみに線の数は21万個あります。

この問題の原因はシンプルです。
「同じグループに入っていたら仲がいい」と単純に仮定している。
そしてさらに、同じグループの人を全員平等につないでいるからです。

これを学校で例えると、「同じクラス=全員友達」とみなしているようなものです。クラスには、話したことがないどころか、名前も怪しい人、いますよね。僕はいました。
そういう人たちまで、がっつりつながってしまっています。これではさすがに無理がありますね。

じゃあどうする?

このままでは使い物になりません。

  • 線が多すぎる
  • 本当に仲がいい人が埋もれる
  • 何も読み取れない

という悲しい状態です。

なので、改良が必要です。
次回は、「仲の良さ」に強弱をつけることで、もっと見やすいネットワークにしていきます。

まとめ

・オンラインゲームのグループとプレイヤーの関係からネットワークを作った
・同じグループに所属しているプレイヤー同士をつないだ
・グループとプレイヤーの対応からネットワークを作った
・サーバごとの“かたまり”が見えて、ゲームの歴史も反映されていた
・ただし、このままだと線が多すぎて何も分からない
つまり、「マクロな構造は見えたけど、ミクロな関係は何も分からない」という状態です。次回はこれをなんとかしていきます。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?