R6S ランダムチーム分けシステム作ってみた Python X JavaScript

友達に勧められて買ったレインボーシックスシージ。
対人が苦手な私にはあまり勝てず楽しめなかった。
しかし、カスタムゲームというシステムがあり、時間制限やその他もろもろ自分の好きな設定にして、特定の人たちだけで遊ぶこともできる。
時間設定を長めにして、ゆっくり攻め方を考えてやるのはなかなか面白かった。
しかし、いつも集まるのが三人なので、なんと2対1という構図が生まれてしまう…
少しでもバランスを取ろうと標準搭載のサイコロなどを使っていたが、偏りがひどい…。
というわけで、チーム編成からオペレーターの選択、そして一人側には多少有利な条件を搭載したチーム分けシステムを作成しました。
ゲームネタですが、中身はプログラミングネタですw


どんなシステムなの?

簡単に言ってしまえば、チーム分けシステム専用のサイトを作り、メンバーはそのサイトに接続して自分のアカウントへログイン後、リーダーがチーム分けサイコロを振ると自動で全てが決まると言ったもの
サイトはPythonのFlaskライブラリを使用して作成します。
そしてクライアント側はもちろんJavaScriptで作成します。

簡単に搭載機能を挙げる

今回作成するシステムには以下のような機能を盛り込みました。

  • 自動シャッフル機能
    メンバーの攻防分けと、その後のオペレーターをランダムに選択する機能がついています。

  • サイコロ機能
    自分のオペレーターをサイコロでランダムで変更することができます。
    また、履歴式シャッフルとでも呼称しましょうか、過去に当たったオペレーターの履歴を取っておき、最近当たったものほど、当たりづらくするようなシステムを搭載しています。
    ランダム性は多少失われますが、まんべんなくオペレーターを使うことができます。

  • 手動選択機能
    自分のオペレーターを自動で選択することができます。

  • オペレーター公開機能
    自分が二人側の場合、かつ好きなオペレーターを選んだ場合、相手チームに何を選んだのかが公開されます。
    これにより多少のハンデが生まれます。

  • 攻防入れ替え機能
    ボタンひとつで攻防を入れ替えることができ、さらに自動でサイコロを振る優れものです。

  • 自動同期機能
    最近よくある共同編集のウェブアプリのように、特に操作しなくても変更された内容が随時更新されます。

使い方

データ構成は以下のようになっています。

  • hasop
    各個人が所持しているオペレーターを記述したテキストファイルです。
    これにより持っていないオペレーターは当たらなくなります。

  • images
    オペレーターのアイコン画像です。
    なくてもいいですが、文字だけだと分かりづらいのであった方が便利です。

  • Rcathtmls.py
    Webサーバーテンプレートで前提で必要としているファイルです。あんまり今回は関係ないですが、ないと立ち上がりません。

  • ランダムピッカー
    ツール本体です。これを起動することで、オペレーターランダムピックシステムが起動します。

  • randompick.html
    ウェブサイトの画面用です。
    javascriptはこちらがメインになります。

  • users
    ログイン画面でユーザーアカウントを作ると生成されます。

Pythonサーバー側

Pythonの方は以下のライブラリを使用しています。
テンプレートは使い回しているので、色の暗い文字になっているライブラリは使用していません
全てのライブラリがそろっていない場合は必要ないものを削除してしまってください。

全てのライブラリが揃っていれば、以下のようにして起動するはずです。
IPアドレスが表示されていますね。これをコピペして接続してみましょう。

アクセスして使う

トップページはリンクしかないので、そのリンクをクリック

ユーザーを判別するため、ログインを使用します。

ユーザーアカウントがない場合は、右側のアカウント作成ボタンを押して、そこのフォームから作成することができます。

ユーザーを作成したらまずやることがあります。
hasopフォルダの中に所持オペレーターリストを記述する必要があります。
以下のように"ユーザー名.txt"でテキストファイルを作成し、記述してください。

全てがきちんと揃っていると以下のようになります。

操作画面は右上のコントロールの表示ボタンを押すことで表示することができます。

  • 移動
    攻防のチームを移動することができます。

  • シャッフル
    攻防のチームをシャッフルします。

  • サイコロを振る
    自分のオペレーターをランダムできめます。

  • オペレーターを選ぶ
    自分のオペレーターを好きなものから選択します。
    なお、自分一人でない場合、相手にオペレーターが公開されます。

  • 交代
    攻防のチームを入れ替えします。
    その時、同時にサイコロも振ります。

  • 終了
    このボタンを押すと全員のオペレーターが公開されます。

他のメンバーが入っているとこのような感じで表示されます
特徴としては、自分の名前は太字で表示され、仲間のオペレーターは公開され確認することができます。
相手側のオペレーターは公開されていない限り、別の画像に置き換えられます。画像の指定は自由ですので、面白い画像にでも差し替えておきましょう。
適当な画像を使い回してるので、名前と画像だけはモザイクで勘弁してください…

相手側から見るとこんな感じ。

自分が二人側にいるので、マエストロを選ぶとこのように相手側に何を選んだか公開されます。
操作したことはインフォメーションで全員に共有されるため、好きなのが出るまでサイコロを転がすとばれてしまいますw

解説

気が向いたらシステムを解説予定

ツールの配布

ぶっちゃけ需要あるのかわからないが、とりあえずデータは配布しておきます。
以下のリンクからダウンロードしてください。
なお、ダウンロードにはパスワードが必要です。それについてはダウンロードページで案内していますのでご確認ください。

https://script.google.com/macros/s/AKfycbysRqb7488rvLGPqOOhGlr0w513zIHC67BEPzJtPAKrAc4lKfDCmsB0mVL1Ha5BY5P0/exec?name=シージランダムチーム分けシステム


情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。