2018年1月21日日曜日

iOS版東方BGM on VGS(再公開)

iOS版の東方VGSを再公開しました。
ただし、AppStoreではなくGitHubでOSSとして。
https://github.com/suzukiplan/tohovgs-ios

※お手持ちのiPhoneへインストールするにはMac+XCODEが必要になります

流石にこれではあんまりなので、代行公開をOKにしようかとも考えたのですが、様々なリスクが考えられるのでそれについては原則NG(正確には事前許諾が必須)としています。

ImageViewで色を乗算方式で変える方法(programmatically)

AndroidのImageViewで色をプログラム的に変えたいと思って調べると、だいたい「元画像が単色」の場合の変更方法しか出てこない。マテリアルデザインの場合、原則アイコンは単色(tint-color)でデザインするのが基本だから仕方ないですね。

ここでは、元画像が複数色のものを全体的に色調を変える方法を書きます。
オリジナル ⇒ 全体的に色調を変更
(素材はいらすとやから借用)
ImageView#setColorFilter を使えば色を変更できるらしいという情報は、ググれば沢山出てくるのですが、全体的に色調を変える場合は、第二引数のModeに PorterDuff.Mode.MULTIPLY を指定してあげるだけで良いです。

上図のような全体的に緑がかった感じにする場合は、

imageView.setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY);

でOK。

実際にAndroid上で動かせるようにしたものをGitHubにアップロードしておきました。
https://github.com/suzukiplan/ImageViewTest

2018年1月14日日曜日

音ゲーの譜面を暗譜する方法

ガルパにせよデレステにせよ、音ゲーの譜面を暗譜するのはほぼ無理だと思っています。

音ゲーなんかより遥かに鍵盤数が多いピアノの暗譜なんて人間技じゃない・・・という風に思うかもしれませんが、ピアノの暗譜は音ゲーのそれと比べると遥かに易しい。
ピアノに限らず楽器全般の暗譜は、楽譜を完全に脳内にコピーしている訳ではなく、単に脳内で音を再現できる状態に過ぎないので。
「脳内で音を再現できる状態」とは、例えば、好きな歌を鼻歌でふふ~んと歌うことができる状態のことを言います。(これなら誰でも出来るはず)
そして、楽器演奏は音に紐づく動作を繰り返す運動行為(例えばギターなら一番低いEの音であれば、フレットを抑えずに1弦を弾くといった感じ)で、鳴らしたい音に紐づく動作が記憶できていれば、脳内で再生している音楽に対応づく動作パターンへの変換を行うだけで暗譜演奏ができるという事になります。(実際に楽器をやってみると分かることですが、これは想像するよりも遥かに簡単に誰でも出来ることです)

スマホの音ゲーで暗譜がほぼ無理な理由は、楽譜自体の形を暗譜しなければいけない為です。もちろん、出来ている人も居るかもしれませんが。(速度1でフルコンできるタイプの人は恐らくそれです)

ゲーム側に次のようなオプションがあれば、暗譜が簡単に出来るようになる筈。

(1)FX音のPANを左側と右側で変える
※FX音 = タップやスライド等で鳴る音のこと

こうすることで、音と動作(左の方を叩くとか右の方を叩く)を紐付けて記憶できるようになるので、音による暗譜が可能になります。

(2)FX音の音程を左側と右側で変える

左側の音程=低い、右側の音程=高いという感じ。
ただし、曲によってはFX音と合わなくなる可能性があるかも。
(その代わり(1)だけの場合と比べて圧倒的に記憶し易くなる筈)

なんでデレステにもガルパにもそういうオプションが無いのか?(特許絡みの何かがあるのか、あるいは単純に開発会社にそういう発想が無いのか)

まぁ、アプリの改修なんて期待してもしょうがない(こうしてネットで晒しておけばワンチャンあるかも程度の期待は無くはない)ので、ローカルフィックス案も一応あります。
それは、
①イヤフォンは使わない
②FX音をoffにする(アプリ設定)
です。
物凄くアナログですが、要するリアル打鍵音でプレイ。
これなら(1)はアナログ的に何となく実現できます。
まぁ、かなり微量ではありますが0とnone 0の間には大きな隔たりがあることを実感できるかと思います。
ついでに、デレステもガルパも実際にデバイスを叩いたタイミングと音が鳴るタイミングに微妙にズレがある(これは恐らく技術的には改修不可能だと思う)のですが、それも完全に無くなるというメリットもあります。

この分野を純粋に突き詰めていくと、曲の音声もOFFにするのがベストだったりする(完全なサイレントにすることでスライドのこすれる音も構成要素として成立するようになる)のですが、そこまでいくと「なんで、このゲームプレイしてるんだろ」という哲学的な感じになってきます。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...