要約
Valorantでスキルのジャンプ投げの入力精度を測定するWeb appを作った。
緊急速報
— 🦓JUNiOR@ZETA DIVISION⚡️ (@junior27015) March 9, 2024
ジャンプ投げを100msに出来ているかどうかを確認するソフトの開発者、二人も現れる。
プロの仕事に感謝。
ヴァロラントのジャンプ投げは100ms以内に入力したら全部同じ飛び方をします
オンライン上で出来るやつ https://t.co/m8HH6xsEIq
cmdファイルでローカル環境で出来るやつ… pic.twitter.com/gBfqyMX7nz
上手くいくとjuniorさんが褒めてくれます。
経緯
「こんなソフトがあったらいいのにな~」というPostを目撃。
こんなソフトがあったらいいのにな~チラシの裏(ソフトウェア作成依頼じゃないよ☆)
— 🦓JUNiOR@ZETA DIVISION⚡️ (@junior27015) March 9, 2024
【ヴァロラントのジャンプ投げチェッカー】
スペースキーとクリックの同時押しが100ms以内だったらジャンプ投げの距離が一定になります。…
じゃあ作るかwくらいのノリで作った。
実装
やっつけ仕事で作成したので実装はかなりシンプルです。スペースキーと左クリックのタイミングを次のコードで取得して、引き算した結果を表示するだけ。
function handleMousedown(event) {
if (measuring && event.button === 0 && !clickTime) { // 左クリックの場合
= performance.now(); // マウスボタンが押された時刻を記録
clickTime checkCompletion();
}
}
function handleKeydown(event) {
if (measuring && event.code === 'Space' && !spacePressedTime) {
= performance.now(); // スペースキーが押された時刻を記録
spacePressedTime checkCompletion();
} }
いくつかつまずいたポイントを残しておく。
Date.now()では不正確な結果が得られる場合がある
雑に時刻を取得して差分取ればいけるかな~くらいの気持ちで実装したが、明らかに同時押ししていても値がずれてしまう(一敗)。どうやらOSから時刻を引っ張ってくる仕様らしく、順序も担保されないらしい[1].Date.now()からperformance.now()に修正したらいい感じに動くようになった。
クリックやキーにはdownとupがある
知っている人にとっては当たり前ですね(一敗)。ゲームの仕様と合わせて実装する部分ですが、一般的なfpsの多くはKeydownをトリガーとしている場合が多そうです。テストプレイで長押ししてみたらkeyupするまで計測が終わらないことに気付けたので修正。ラピッドトリガー搭載のキーボードを使っている人だとkeyupをトリガーにしても気づかない場合がありそう。
感想
大体ChatGPTが書いてくれたので特になにもしていない。弱小アカウントなのでプチバズしてすこしびびったりしました。