💃
DenoでGather.townを操作
- リモートコミュニケーションツールとしてGatherを利用しています。
- Gatherは基本機能以外の仕掛けが沢山あり、その中の1つにSocket APIがあり、プログラムでGather上の操作が可能です。
- 今回はそれらをDenoから利用してみる方法を記録いたします。
環境
- macOS 13.0
- deno 1.33.4
- ※未インストールの場合はこちら
準備
- 操作する対象のGatherのスペースを用意してください。
- 用意後、そのスペースのスペースIDをメモしておいてください。
- ※スペースIDはスペースURL(https://app.gather.town/app/xxxx/yyyy)の「xxxx/yyyy」です。
手順
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についてお話を伺うことはできますでしょうか?