5
1

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 / 8

この記事は…

方向けの内容です!

※また 身の回りの困りごとを楽しく解決! by Works Human Intelligence Advent Calendar 2024 の 14 日目の方の記事が投稿されてなかったので代わりに投稿しました 🙏


はじめに

Gather Town や MetaLife などの仮想オフィスでは、会議や相談のためにコールボタンを押すのではなくその場所へアバターを移動させる必要があります🏃🏃💨

※もちろん退出する場合も移動が必要

それが醍醐味なのか不便なのかはともかく、瞬間移動するためのソリューションがこれまでいくつか開発されてきました。
今回はデスクトップ版の Gather Town でも瞬間移動ツールを作れないか試してみました 🙌


できたもの

手元に Alfred と Node.js の実行環境があったのでそれらで動くツールを作ってみました ⚒️

主な機能は以下のとおり

  1. Gather Town のプレイヤーや場所の名前が用いられた移動用シェルスクリプトファイル を自動で任意のパスの下に作成する機能
  2. 自身のアバターの現在地に名前をつけて保存(上記のファイルを作成)する機能
  3. 指定された マップIDマップ座標(X,Y) の場所へ移動する機能
  4. 指定された プレイヤーID のプレイヤーの マップ座標(X,Y) を取得しその場所へ移動する機能

これらの機能と Alfred が組み合わさることでサクッと移動できます ✨️


デモ動画 (gif)

Alfred から Gather Town のプレイヤーや場所の名前が用いられた移動用シェルスクリプトファイル を実行しその場所へ移動する様子↓ 🥷💨🥷

demo.gif

より詳しい使い方は README をご確認ください :bow:


使った技術・はまったことなど ①

@gathertown/gather-game-client

今回は Gather Town のソケット API のハンドラーとしてこちらのクライアントライブラリを使ってみました。
API との接続が確率してから自身を含むプレイヤーの情報が利用できるようになるまで少し時間が掛かるので待機する処理が必要でした。

const getPlayers = async () => {
  while (!Object.keys(gather.players).length) {
    await wait(100);
  }
  return gather.players;
};

使った技術・はまったことなど ②

sanitize-filename

渡された文字列に対して、ファイル名やディレクトリ名・パスとして無効な文字を削除/置換するなどし安全に使えるようサニタイズしたものを返してくれるライブラリです。
実際によろしくないプレイヤー名の方が社内にいたわけではないのですが念の為使ってみました 🙌

const shFileForAlfred = path.join(shFilesDirForAlfred, `gt-${sanitizeFilename(placeName, { replacement: '_' })}.sh`);
fs.writeFileSync(
  shFileForAlfred,
  `#!/bin/bash\n${process.argv[0]} ${process.argv[1]} teleport ${player.map},${player.x},${player.y}`,
);

さいごに

今回はデバック中に神出鬼没な存在となってしまったりと楽しく開発できて嬉しかったです! 🥳🥳🥳
殆ど Alfred や便利なライブラリのおかげですがサクッと作れたところも良かったです 💪
今後は Electron で Alfred やシェルスクリプトを挟まずもっと速く動くように改善できたらなと思います 💪💪
ここまで、ご高覧ありがとうございました!

5
1
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
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?