Edited at

ダーツプレイヤー向けスキルを作ってみた

どうも、ダーツが好きなエンジニアです

少し前ですが、ゼロワンアシスタントなるスキルを作ってみました。

なんとなく気に入らない点などを書いて未来の自分に改修をたくそうと思いました


現状

スキルのページ

ダーツのルールであるゼロワンゲーム、その中でも701ルールをAiアシスタント上で実現したものです。

簡単に解説すると701という数字を最初にぴったり0にした人の価値です。

なのでロジック自体は簡単に実装できました。

ユーザーはアレクサにラウンドごとの点数を言うだけです。


とはいえ使いにくい

実装自体は簡単だったのですが、現状とても使いにくいです。

理由はアレクサの仕様である、応答待機時間が関係しています。

アレクサはユーザーからの応答を待ち、一定時間立つとセッションを閉じ、スキルを終了します。

8秒前後だったはずです。

プレイヤーがダーツを投げる、特典を計算する、アレクサに言う

この過程で余裕でオーバーします。

私の場合、計算が少し遅れると過ぎて終了してしまいます。


対策

延長するインテントを入れようと思ったのですが、場合によっては投げている途中に8秒を超えてしまう場合があります。

投げている途中に視線を変えなくていいとはいえ、リズムを崩すのはできれば避けたいです。

リプロンプトテキストを無駄に長くするのも、開発者の自分以外には意図が伝わらないので避けたいと思いました。

投げている間ずっとアレクサがずっと喋っていると集中できなさそうなので...


じゃあどうすんの?

なんとなく考えたのがSSMLによる音声再生で少し延長する手段です。

ダーツバーなどにありがちな雑音を再生するようにすれば

雰囲気を醸し出しつつも、言葉を垂れ流し続けるよりも自然に延長できる気がしました。

今だと

現ラウンドの残り点数を読み上げ→リプロンプト→8秒ルールでセッションが閉じる

音声を加えることで

現ラウンドの残り点数を読み上げ→音声再生(3-5秒)→リプロンプト→8秒ルールでセッションが閉じる

のようになれば対策できそうな気がします!


まとめ

他の人が8秒ルールの壁にぶち当たったとき、どのように対策しているのか気になりますね。

もし、良い方法をご存知の方がいたら教えていただきたいです。