人に自作 hitbox を作ってあげた。あと連射性能の計測をした。

1ヶ月に1回は更新したい本blogは、無事3ヶ月更新が空きました。
今年もよろしくおねがいします。

で、以前に自作 hitbox を作ったというエントリを書いたのですが、その後友人にほぼ同様のものを実費+おこづかいで作ってあげました。
少しミスもあったんですが、全体的に自分用のものを作ったときと比べて随分工作精度が上がった気がします。
ソフトウェアも使い回せるし、作れば作るほどうまくなっていって良さそうなのでは?という気持ちがあります。

ボタンの色がなんかスゴイですが、友人の希望によりこの色です。すでに友人の手元にこれは行ったのですが、気に入ってくれているようです。よかった。

で、最近、STEAM版の Mr.Driller アンコールのフレーム落ちの対策ができて、またやる気が高まってきたので、コントローラーの連射速度の調整をしました。

やはり以前のエントリで、コマンドの入力フレームを計測するために、Unityでソフトを書いたという内容を書いたのですが、これを改造して、秒間何回連射しているのか計測できるようにしました。

コントローラーの中には sparkfun pro micro を用いており、タイマー用のライブラリには MsTimer2 を使っています。
MsTimer2 でタイマを設定するインタフェース MsTimer2::set(unsigned long ms, void (*f)()) では、割り込み周期のミリ秒単位での指定と、タイマが切れた際に呼び出す関数の指定ができるようになっています。
ゲームでは60フレームが用いられることがありますが、 60フレームの際の 1フレームの時間は、おそよ16.6666ms であり、ボタンの on と off をそれぞれのフレームで交互に入力するためには、その2倍の 33.3333ms 周期でボタンの押し下げと離しを行う必要があります。しかし、MsTimer2::set(unsigned long ms, void (*f)())の時間は ms 単位であるため、正確に指定することはできず、やむなく 34ms としました。

34msごとにボタンを押すと、1秒あたりおよそ 29.41 回の連射になるのですが、これが正しく unity で書いたソフトから検出することができ、pro micro や OS のレベルで遅延が起こり、入力が抜けてしまうということはないということが確認できました。

これ以上速度をあげようと思うと、ライブラリを用いず、自力でタイマーを叩く必要が出てくるので、そのへんはおいおいやるかもしれないしこれで満足してやらないかもしれないです。
どうしようかなぁ。

レバーレスコントローラー(hitbox あるいはガフロコンって呼ばれるもの)を作った。格ゲーにおける優位性をちょっと測定した。

ふと、手元にあった、ピンの少ない Sparkfun Pro Micro 互換機で、ゲーム用のコントローラーを作ってみたらそれなりに作れたので、通常通りにピンが付いている Sparkfun Pro Micro を買ったり、ドリルを買ったりホールソーを買ったり、ボタンを買ったりしてレバーレスコントローラー自作してみました。


本 blog エントリではこの自作したレバーレスコントローラを自作レバーレスコントローラーと呼びます。また、製品として売られているレバーレスコントローラである HitBox を hitbox と呼びます。

普通、レバーレスコントローラーを作る場合には、あり物のコントローラーの基板を乗っ取ったり、あるいは Brook の UNIVERSAL FIGHTING BOARD を基板として使うのが定番のようです。Brook の UNIVERSAL FIGHTING BOARDは12000円くらいします。でも今回は、既存のコントローラーの基板やBrook の UNIVERSAL FIGHTING BOARD の代わりに Sparkfun Pro Micro とこれの上で動く自作のプログラムで代用したので、2000円くらいで済ますことができました。もしも Pro Micro 安い互換機を使えば更に安くすることができますね。

ちなみに、今回作った自作レバーレスコントローラーで使ったSparkfun Pro Micro は2000円くらいで、それ以外のボタンやケースやら配線のためのもろもろが6000円で、合計8000円くらいでした。ちなみに、 PC と Nintendo Switch で使えることは確認済みでです。一方 PS4 では使えないことを確認しています。でも、PS4でそんなにゲーム遊ばないから、今回はこれで良いということにしています。

レバーレスコントローラーと SOCD (Simultaneous Opposite Cardinal Direction/反対方向同時入力)

今回、わざわざ Pro Micro を使ったのは、安く仕上げるためであると同時に、コントローラーの挙動を細かく変更するためでもあります。

レバーレスコントローラーの作成にあたっては、SOCD(Simultaneous Opposite Cardinal Direction/反対方向同時入力)に対する考慮が必要となります。
SOCDとは、通常、レバーや十字キーでは入力できない、左右の同時押しあるいは上下の同時押しをどのように扱うかについてのアルゴリズムのことです。

格闘ゲームにおける SOCD

hitbox では、左右同時押しは横方向はニュートラルとして扱い、上下の同時押しは上入力として扱われます。格闘ゲーム向けのにおいては、この hitbox の SOCD の扱いが、デファクトスタンダードとなっているようです。
Brook の UNIVERSAL FIGHTING BOARDは、ジャンパピンを用いた設定により、hitbox と同等とすることが可能です。

レバーレスコントローラーの格闘ゲームプレイ上の利点の定量化

格闘ゲームにおいて、レバーレスコントローラーによる操作は、一部レバーを用いた従来のコントローラーよりも高速に可能であるとして、多くのプレイヤーが現在利用していることがインターネットを検索することによって確認できます。
しかしながら具体的にはどの程度有利であるかについては、レバーレスコントローラと従来のレバーによるコントローラそれぞれの操作の習熟度に伴い個々人で異なること、またその簡易な計測方法が存在しないことといった理由で、計測が行われてこなかったのではないかと考えました。

そこで今回、キーディスプレイおよび各入力の継続フレームの表示のみを行うプログラムを unity を用いて作成し、これを用いて測定を行える環境を作りました。

まだ十分な回数をこなせておらず、統計として不十分なので、いくつかの測定結果及び感想を書いておきます。
なお、自作レバーレスコントローラーの SOCD は、hitbox に準拠した設定としています。また、比較対象に使っている通常のレバーありコントローラーには、 RAP V4 隼を用いました。

計測対象 自作レバーレスコントローラー レバーありコントローラー
←ため→ のニュートラル経過フレーム数 0フレームあるいは1フレーム 1から3フレーム。8割くらい2フレーム。
標準的な昇龍拳入力開始から完成まで(623入力) 7フレームくらい 7フレームくらい
昇龍拳のhitbox 向け入力開始から完成まで(639入力) 大体6フレームくらいだけど4フレームで完成したときもあった やってない

回数をこなした統計は、また追々測って行こうと思います。

あと、すでにレバーレスコントローラーの操作になれた人のフレーム情報も見てみたいので、汎用的な作りにして配ったりしたい。
今は、とりあえず図り始められる環境を作ることを優先して、PC環境依存でベタ書きになっていて人に配れたものではないので。

格闘ゲーム以外における SOCD

現在、製品として入手可能な hitbox を始めとするレバーレスコントローラーは格闘ゲーム用に使うことを想定している事が多いですが、もちろん他のゲームに使うことも出来ます。
ただし、他の種類のゲームに用いるときには、 SOCD の扱いは格闘ゲームとは別の考え方をするべきなのではないかと考えています。
通常 SOCD は、左右の同時押しあるいは上下の同時押しを考慮しますが、斜めの入力を行う必要がなく上下左右の4方向の入力のみを想定するテトリスなどのパズルゲームでは、格闘ゲームでの利用を想定した SOCD とは異なるアルゴリズムがより適しているのではないかと考えていました。例えば、上下左右の4方向をすべて排他し、最後に押されたものを優先するのが良いのではないかと考えました。
このような SOCD についての挙動の変更は、既存のコントローラの基板や Brook の UNIVERSAL FIGHTING BOARD では実現不可能であるため、これを自由にコントロールするために、Pro Microで自作する必要がありました。

格闘ゲーム以外においてはどうするのが良いのかについても追々考えていきたいですね。

ミスタードリラーアンコール(Steam版)のワールドトリルツアーで世界記録を出した (2020年8月14日時点)

2020年6月11日に、SwitchとSteamでミスタードリラーアンコールが発売された。
日本ではミスタードリラーアンコールという名称だが、海外ではミスタードリラー ドリルランドという名称で販売されており、内容としては2002年にゲームキューブ向けに発売されたミスタードリラー ドリルランドの移植である。
Steamの方はSwitchを始めとする据え置き型ゲーム機のように世代交代により遊べなくなる可能性が低く、かつPCで利用可能なアケコンがすでに手元にあるという理由で、自分はSteam版を購入した。

ミスタードリラーアンコールには、現代向けに難易度を低く調整したカジュアルモードと、2002年のドリルランドと同様の難易度になっているクラシックモードがある。
自分は、カジュアルモードとクラシックモード両方のワールドドリルツアー Level2 (1000m) で1位を取ることができた。

一度 6月27日にクラシックモード ワールドドリルツアー Level2 (1000m) で1位になった。このときには、PS3用の連射付きのFighting Commander 3 Pro というパッドで遊んでいた。

で、寝て起きたら2位になっていた。
パッドで遊ぶのは辛いと分かっていたので、サンワのレバーを取り寄せて、RAP V4 隼という普段使っているアケコンののレバーを交換し、4方向にガイドを設定してこれを使うようになった。
RAP V4 隼は、隼レバーと呼ばれるレバーが使われているのだけれど、これは8方向専用のレバーであり、サンワのレバーのようにガイドを回転させて4方向にしたりできない。きょう日アケコンを買うのなんて格ゲー遊ぶ人が大部分といえばそりゃまぁそうなんだけど、なんだかパズルゲーム勢がないがしろにされているようで辛いよ。
↓はお家に届いたサンワのレバー。

で、1位まで220点差まで詰めたものの

その後、更に高いスコアを出した人が現れ3位に転落。
で、この頃から体調が非常に悪くなり、ゲームに対するモチベもじゃんじゃん下がって、仕事以外では布団に寝そべって youtube を眺めるばっかりの生活がしばらく続いた。
なお、youtube では最近は Bad Gear というグルーブボックス的な音楽機材を扱うやつばかり見ている。
あと、最近は各ゲーマーがtwitchなどでストリーミングしたもののバックアップが youtube に上がっていたりして、それを見たりもしていた。
最近はウメハラ氏が、Hit Box というレバーを廃して、上下左右をボタンで入力するコントローラーを使っている、みたいな情報が入ってきたりして、ふーん。と思ったりしていた。

8月に入って体調も改善してきた。
ドリラーを遊びたいけど、わざわざPCのキーボードを机の上から退けて、アケコンを机の上に置くのが面倒だな、という気持ちになっていた。
そんなとき、ふとウメハラ氏が使っているという Hit Box のことを思い出した。
いっそのことキーボードで遊んじゃえばいいじゃん、Hit Box みたいなもんじゃん。と思った。
アケコンを4方向レバーに換装したとはいえ、方向を変える度に何フレームかニュートラルに入った状態になりロスが生じている。でも、キーボードで遊べばそのロスを減らせる可能性があるのでは?と気づいた。

自分は ergodox ez というファームウェアが書き換え可能なキーボードをかれこれ3年弱使っている。なので、ファームウェアを書き換えて、ゲームを遊びやすい配置にキーをアサインし直した。あと、掘りボタンの連射速度が早くなるようにギリギリまで調整した。(ergodox ez のファームウェアであるところの qmk において、キーの自動連射を実装したくて、かつ日本語を読める人は殆ど存在しないと思うのでこれについてはここでは詳しく説明しません。興味ある人はtwitterで聞いてください。)

で、キーボードによる1回目のクリアで2位になり、2回目のクリアで1位になった。

その後、1位になった時の記録は超えていないけど、4方向レバーに換装したアケコンを使っていたときと比べて平均的にスコアが伸びている感じはあるので、キーボードでのプレイに移行したのには効果があったのかな、と思っている。

あと、カジュアルモード ワールドドリルツアー Level2 (1000m) も初回のクリアで1位を取った。

一番ベーシックなモードであるワールドドリルツアーの1000mでいいスコアが出れば個人的にはもう思い残すことはないので、このあとはのんびり色々遊んでいこうと思う。

自分の好きなゲームが発売されて、それを思い切り遊ぶためにアケコンのレバー取り替えたり、キーボードのファームウェアいじったりと工夫して、それでちゃんとスコアも伸ばすことができて、なんだかいい人生だなって思ったよ。

XDJ-1000mk2 を買った

ずーっと前から、居間にDJ機材を置いていて、子どもが触りたがったときには高さ40cm くらいの踏み台に立たせてレコードを触らせていたんだけど、上の5歳の娘が、PCの中にアイカツの boot remix がおいてあることに気づき、それ以降 PCDJ を触りたがるようになった。
5 歳に PC の操作は難しいけど、でも娘が触りたいタイミングで触れるようにしてあげたいってのと、標準的ではない PCDJ の UI になれさせてしまうとちょっともったいない気がする、ということで悩んだ結果、XDJ-1000mk2 を 2 台買った。

ちなみに、自分はかれこれ13年くらいずっと traktor を使っていたのだけど、これを期に rekordbox に環境を移行した。

普段は DJM-900nxs2 と XDJ-1000mk2 は子どもたちに合わせて高さ 50cm ほどのメタルラックの上においてある。

自分が立って触りたいなぁと思ったときには、メタルラックを組み換えて 5 分程度で自分が触りやすい高さに変えられるようにした。

XDJ-1000mk2 は、CD ドライブもついてないのになんでそんなに値段が高いんだとか思っていたのだけど、手元において触ってみたら、たしかにこの値段になる程度には複雑な機械だなぁ、という気持ちになった。

自分が PCDJ で管理していたライブラリを USB メモリに書き出して、 XDJ-1000mk2 に挿しっぱなしにしてあるので、電源を入れたらとりあえずすぐ大量のライブラリにアクセスして音楽を流すことができる。
これは、ターンテーブルにレコードを置く必要があること、CD を CDJ に入れる必要があること、PCをAUDIO IFないし DJM の USB 端子 に繋ぐ必要があることと比べると、ちょっと触ってみようと思うハードルが低くて、結構新鮮な気持ちになった。

また、ネットワーク越しに起動している rekordbox のライブラリを XDJ-1000mk2 から読むこともできるので、作りかけの曲をバウンスして、その PC にインストールしてある rekordbox のライブラリに追加すると、 XDJ-1000mk2 からすぐに流すことができるので、作りかけのもののつなぎ心地の確認のハードルも随分下がった気がする。

気軽に日々触っていこうと思う。

僕と2歳の息子と子猫とダイバーシティの価値のわかりやすい一例

1ヶ月に1回くらいは何か書きたいという気持ちがあるので書く。

数ヶ月前に近所で野良の子猫が生まれた。
このコロナ禍の影響で、近所に出かけること自体が減ってしまったのだが、その子猫が住んでいる近くを通るときには、いつも会えることを楽しみにしている。
でも、最近、夏も近づき暑くなってしまったせいか、今までとは居る場所が少し変わってしまったらしく、見かける機会がとんと減ってしまった。

数週間前、2歳の息子と2人で散歩をしていた。
散歩をおおよそ終えて、家に戻る途中、子猫の住処の近くを通った。

今日も子猫は居ないなぁと思って、その場を離れようとしたとき、息子が「ねこさん、いるねぇ〜」と言った。

子猫は、近くに停めてある車の下に居た。
車の下に居たので、身長168cmの大人の自分には見つけられず、身長80cmの2歳の息子には苦もなく見つけることができた。

以来、そこを通るときには、しゃがみこんで車の下に子猫が居ないか確認するようになった。