💃

DenoでGather.townを操作

2023/05/23に公開1
  • リモートコミュニケーションツールとしてGatherを利用しています。
  • Gatherは基本機能以外の仕掛けが沢山あり、その中の1つにSocket APIがあり、プログラムでGather上の操作が可能です。
  • 今回はそれらをDenoから利用してみる方法を記録いたします。

環境

  • macOS 13.0
  • deno 1.33.4
    • ※未インストールの場合はこちら

準備

  • 操作する対象のGatherのスペースを用意してください。
  • 用意後、そのスペースのスペースIDをメモしておいてください。

手順

APIキーの取得

  • APIキーを取得するために https://app.gather.town/apikeys にアクセスします。
  • 以下の「generate new key」ボタンをクリックするとAPIキーが生成されます。

  • 生成後に以下の画面が表示されるため、赤枠で囲んでいる部分のキーをメモしておきます。

プログラム記述

  • スペースID及びAPIキーが揃ったのでプログラムを書いていきます。
  • ローカルの任意のディレクトリにjsファイルを作成します。
# 任意のjsファイルを作成
touch denoGather.js
  • 作成後、jsファイルの中身を以下のように記述します。
import { Game } from 'npm:@gathertown/gather-game-client'

/**
 * Gather APIキー
 * 生成 : https://app.gather.town/apikeys
 */
const API_KEY = 'xxxxxx'

/**
 * GatherスペースID
 * 参照 : https://app.gather.town/app/xxxxx/yyyyy
 */
const SPACE_ID = 'xxxxx\\yyyyy'

// 接続
const game = new Game(SPACE_ID, () => Promise.resolve({ apiKey: API_KEY }));
game.connect();

game.subscribeToConnection((connected) => {
  console.log(`connected: ${connected}`)

  // ダンス
  game.move(4, true)

  // 入室時の処理
  game.subscribeToEvent('playerJoins', () => {
  })
})
  • 記述後、プログラム内のAPI_KEY及びSPACE_IDの部分をメモしたものに置き換えます

実行

  • 記述後、実行してGather上で操作が可能か確かめます。
  • 以下のコマンドで実行します。
deno run -A denoGather.js
  • 実行後、以下のようにログ出力及びGatherスペース上でのダンスが確認できれば成功です。
    ※失敗の場合はスペースIDやAPIキー等を再度確認してみてください。

  • また補足として、Denoのcompile機能で生成された実行ファイルを実行しても動作しました。
# コンパイル
deno compile -A --unstable denoGather.js

# 実行
./denoGather

  • 以上です。

補足

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

参考

Discussion

ヒラオヒラオ

GatherAPIについて情報収集している者です。ネットで色々調べていますがまだ情報が少なく、この記事を投稿していただき大変ありがたいです。
大変勝手なお願いなのですが、個人的にGather APIについてお話を伺うことはできますでしょうか?