[Gather.town]リアクションをトリガーにしてテキストステータスを操作する方法

2023.02.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

  • t_o_dと申します。
  • 円滑なリモートコミュニケーションの促進の一環としてGather.townを利用しています。
  • Gather.townは基本機能以外の仕掛けが沢山ありますが、その中の1つがブラウザコンソールで扱えるSocket APIの存在です。
  • 「現在位置の取得」や「参加者情報の取得」など豊富に存在しており、それらを適切に組み合わせることで色々な操作を行うことが可能です。
  • 今回はその中からリアクションをトリガーにしてテキストステータスを操作する方法方法を記録いたします。

結果

  • Gather.townは以下のように現在のステータス(状態)をテキストで設定できます。

  • 現在の状態を表すのに便利ですが、定型文のため今回はリアクション一発でステータス更新を行えるようにしたいです。

  • 以下の数行をChromeコンソール画面に入力して実行すると、リアクションをトリガーにしてテキストステータスを操作することができます。

    • ※実行には権限が必要です。
game.subscribeToEvent('playerSetsEmoteV2', (data, context) => {
    if(context.playerId !== gameSpace.id) return;
    switch(data.playerSetsEmoteV2.emote){
        case '?':
            game.setTextStatus('休憩');
            break;
        case '?':
            game.setTextStatus('');
            break;
        default:
            break;
    }
})
  • 実行後、以下のリアクションでテキストステータスが書き換わることを確認します。
    • ? : テキストステータスが「休憩」に更新
    • ? : テキストステータスが初期化
    • その他 : 何も起こらない

内容

  • 上記のスクリプトは以下のGather.townで用意されているSocket APIを利用しています。
    • game.subscribeToEvent(イベント,ハンドラ) : 指定のイベントが起こった時のイベントハンドラ。
    • game.setTextStatus(テキスト) : テキストステータスの更新
  • まずリアクションが起こった時のイベントハンドラを登録します。
    • その他のイベント一覧はこちらを参考
  • その際に発火条件に「自身のリアクションのみ」として指定します。
  • 最後に、特定の絵文字がリアクションが付いたら、テキストステータス更新を行うというスクリプトとなっております。

補足

  • 他の操作の情報はこちらのサイトから確認できます。
  • より詳細な情報を知るためには、以下のようにコンソール画面で「game」「gameSpace」を入力して実行すれば確認できます。

まとめ

  • こうした基本機能以外に提供されているものを利用してより良いリモートコミュニケーションの促進につながると実感しました。
  • 今回扱った機能以外にも豊富なメソッドやプロパティがあるので、適切に組み合わせて節度ある利用を行おうと思います。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。