魂の喝采!!

https://github.com/Yanai1005/aro2026

JavaScript

不義遊戯

Yanai

推しアイデア

喝采

作った背景

馬鹿げたものを作りたかった

推し技術

Discord APIにしとこう

プロジェクト詳細

勝手に裏ハックツハッカソン(6/20-21)

勝手に裏ハックツハッカソンとは?

かつてイッチという男から始まった物語(?) である。

参考(ハッカソンについて): https://topaz.dev/projects/6ad4b818de38495f3e5f

アロカップのテーマは 「うん」

「うん」からパチンコ→秤金次→呪術廻戦→東堂葵 を連想し、東堂の術式 「不義遊戯」 をモチーフにしました。 不義遊戯は運的要素もあるのかと

手を叩くことで任意の2人の場所を入れ替えるあの技、Discordに実装しました。

術式概要

DiscordのVCサウンドボードで特定のサウンドを流すと、VCにいる術師が2人ランダムに選ばれてスワップされるBot。

VC内でサウンドを鳴らす → 手を叩く(ブギウギ発動)→ 2人の居場所が入れ替わる、という流れです。

術式の効果

  • 特定のサウンドID(呪符)が再生されたとき発動
  • サーバー全VCの術師プールからランダムに2人選択
  • 2人を異なるVCへ入れ替え
  • 30秒の術式反動(連打防止)
  • 反動中はテキストチャンネルに残り秒数を通知

発動イメージ

VC-1: Aさん、Bさん VC-2: Cさん → ブギウギ発動 VC-1: Aさん、Cさん(BとCが入れ替わった) VC-2: Bさん

呪具(使用技術)

  • 言語: JavaScript (Node.js 22)
  • ライブラリ: discord.js v14
  • 環境構築: DevBox (Nix)
  • Discord API: Gateway API VOICE_CHANNEL_EFFECT_SEND イベント

術式

展開パターン

「2人を入れ替える」だけに見えて、状況によって3パターンの展開が必要でした。

「純正交換」── 2人が別々のVCにいる(通常ケース)

純粋な位置交換。これが不義遊戯の本来の姿。

Before: AさんはVC-1 / BさんはVC-2 After: AさんはVC-2 / BさんはVC-1

「強制分散」── 2人が同じVCにいる(VCが3つ以上)

移動先が複数あるため、それぞれ異なるVCへ分散。2人を引き離す。

Before: A・BともにVC-1 After: AさんはVC-2 / BさんはVC-3

「片道便」── 2人が同じVCにいる(VCがちょうど2つ)

移動先が1つしかないため、片方だけ移動。半分だけの術式。

Before: A・BともにVC-1(VC-2は空) After: AさんはVC-1のまま / BさんはVC-2へ

縛り

VOICE_CHANNEL_EFFECT_SEND イベントはBotが対象VCに参加していないと受信できない、という縛りがありました。 術師(Bot)が戦場(VC)に降り立つことで初めて術式を行使できる

デモ

拍手の音乗ってなかったの悲しい(気分で撮り直します)

https://youtu.be/pHcix008dBE

追伸

個人スポンサーやる気満々だったんですが、遊びすぎてお金なくなりましたのでこれを供養 (今年のどこかのハックツに現れますので)

Yanai

@Yanai1005